Tom Wang - Fotolia
For modern developers, there is no shortage of cloud services they can use to build and deploy applications. The challenge is in selecting a cloud provider that will fit all of their needs.
The major public clouds offer similar types of services, but they vary significantly in terms of usability, scalability, cost efficiency and more. Still, there are a core set of features that every developer should look for when they choose a cloud provider or service:
- Performance. Developers should look for the ability to "turbocharge" cloud workloads by paying extra for high performance when needed.
- Configuration choice and flexibility. Developers should not be locked into a cloud service that works only with Windows and not Linux, for example, or one that limits their ability to configure the geographical locations where data or applications live.
- Support for many programming languages. The languages used to write applications today may change tomorrow. Customers want confidence that the cloud provider they rely on can support their applications, even if they change to a new language.
- Integrated deployment pipelines. The cloud enables developers to write, test and deploy code all in one place. Search for a cloud service that offers fully integrated and fully hosted deployment toolchains.
- Freedom from lock-in. Ensure that a migration is possible if necessary, even if users don't have plans to migrate to a different cloud in the foreseeable future.
- Cost predictability. Look for cloud services with reasonably straightforward and predictable pricing structures.
Choose a cloud service
To put these core features into context, let's explore several prominent types of cloud services and what customers should prioritize when making their selections.
The top three public clouds offer their own flavor of serverless computing services: AWS Lambda, Azure Functions and Google Cloud Functions. At a high level, all of these services work the same. However, they differ in some critical respects, and developers need to choose the service that best meets their needs.
For example, AWS Lambda directly supports a relatively small number of programming languages. Also, for price-conscious developers, Azure Functions pricing is arguably more straightforward and easy to predict using an online calculator.
On the other hand, AWS offers a special version of Lambda, called Lambda@Edge, which can deliver better performance under certain conditions. Azure Functions currently lacks an equivalent feature.
It's difficult to navigate public cloud container services since each cloud provider offers multiple ways to deploy containers. In addition to giving users the options to run containers in DIY fashion on VM instances, each cloud also has at least one specialized container service. They all also provide Kubernetes services for users who want to deploy containers and an orchestration layer as part of the same fully managed service.
However, AWS offers the most ways to deploy containers. In addition to its managed Kubernetes service and its standard container service -- Amazon Elastic Kubernetes Service and Amazon Elastic Container Service, respectively -- it also offers Fargate. This low-touch service is for developers who want to run containerized applications with minimal setup. Azure Container Instances works similarly, but is not as tightly integrated with Azure's standard container service.
Cloud-based AI services are increasingly important for developers who want to integrate AI or machine learning into their applications. And, once again, AWS has the most deployment options. With services such as Rekognition and Personalize, AWS has the largest set of distinct AI and machine learning services that can integrate directly into applications.
For developers that prefer open source options, Microsoft supports more open source machine learning frameworks than AWS or Google. This broad support can be particularly advantageous for developers wary of lock-in, because applications built on open source frameworks are easier to migrate than those that depend on a specific cloud vendor's AI service.
Integrated development environments (IDEs) that run in the cloud have emerged as popular tools for developers. Not only do they eliminate the need to install IDEs locally, but they can make it easier to deploy code in the cloud because it's all handled in the same place.
Public cloud providers vary when it comes to cloud IDEs. Amazon's offering, Cloud9, caters to the broadest set of use cases. Microsoft doesn't offer a cloud IDE per se, but it has Azure DevOps, a suite of services that, when combined, makes it possible to build a complete deployment pipeline in the cloud. That said -- there is a risk of becoming dependent on these Azure services, so developers should ensure this type of integration best fits their needs. Google also lacks its own IDE, but it integrates with several other cloud IDEs, which may be the best approach for developers worried about vendor lock-in and overdependence.