When designing solutions in the cloud, there is (almost) always more than one alternative for achieving the same goal.
One of the characteristics of cloud-native applications is the ability to have an automated development process (such as the use of CI/CD pipelines).
In this blog post, I will compare serverless solutions for developing and hosting web and mobile applications in the cloud.
Why choose a serverless solution?
From a developer's point of view, there is (almost) no value in maintaining infrastructure β the whole purpose is to enable developers to write new applications/features and provide value to the company's customers.
Serverless platforms allow us to focus on developing new applications for our customers, without the burden of maintaining the lower layers of the infrastructure, i.e., virtual machine scale, patch management, host machine configuration, and more.
Serverless development and hosting platforms allow us CI/CD workflow, from Git repository to the build stage, and finally deployment to the various application stages (Dev, Test, Prod), in a single solution (Git repos is still outside the scope of such services).
Serverless development and hosting platforms allow us to deploy fully functional applications at any scale β from a small test environment to a large-scale production application, which we can put behind a content delivery network (CDN), and a WAF, and be accessible for external or internal customers.
Serverless development platform workflow
Below is a sample workflow for developing and deploying an application based on a Serverless platform:
- A developer writes code and pushes the code to a Git repository
- A new application is configured using AWS Amplify, based on the code from the Git repository
- The AWS Amplify pulls secrets from AWS Secrets Manager to connect to AWS resources
- The new application is configured to connect to Amazon S3 for uploading static content
- The new application is configured to connect to Amazon DynamoDB for storing and retrieving data
- The new application has been deployed using AWS Amplify
Note: The example below is based on AWS services, but can be configured similarly to other cloud platforms mentioned in this blog post.
Service Comparison
The table below provides a high-level comparison of commonly used Serverless development and hosting platforms, from the major cloud providers:
Service comparison (development languages, framework, and platform support)
The table below provides a comparison of development languages and frameworks supported by Serverless development and hosting platforms, from the major cloud providers:
Service comparison (security features)
The table below provides a comparison of security features supported by Serverless development and hosting platforms, from the major cloud providers:
Summary
Serverless development and hosting platforms offer us an alternative for automating the development lifecycle of cloud-native applications, with built-in integration with cloud providers' eco-system.
For simple web or mobile applications, I recommend considering using one of the services discussed in this blog post, as compared to the alternative of having to learn and maintain an entire suite of services for running a CI/CD pipeline, and the requirement to decide where to deploy and host applications to production (from VMs, containers platforms, and other hosting solutions).
Reference documentation
About the author
Eyal Estrin is a cloud and information security architect, and the author of the books Cloud Security Handbook and Security for Cloud Native Applications, with more than 20 years in the IT industry.
You can connect with him on social media (https://linktr.ee/eyalestrin).
Opinions are his own and not the views of his employer.
Top comments (0)