AWS Lambda vs Google Cloud Run: What are the differences?
Developers describe AWS Lambda as "Automatically run code in response to modifications to objects in Amazon S3 buckets, messages in Kinesis streams, or updates in DynamoDB". AWS Lambda is a compute service that runs your code in response to events and automatically manages the underlying compute resources for you. You can use AWS Lambda to extend other AWS services with custom logic, or create your own back-end services that operate at AWS scale, performance, and security. On the other hand, Google Cloud Run is detailed as "Run stateless HTTP containers on a fully managed environment or in your own GKE cluster". A managed compute platform that enables you to run stateless containers that are invocable via HTTP requests. It's serverless by abstracting away all infrastructure management.
AWS Lambda and Google Cloud Run belong to "Serverless / Task Processing" category of the tech stack.
Some of the features offered by AWS Lambda are:
- Extend other AWS services with custom logic
- Build custom back-end services
- Completely Automated Administration
On the other hand, Google Cloud Run provides the following key features:
- Simple developer experience
- Fast autoscaling
"No infrastructure" is the primary reason why developers consider AWS Lambda over the competitors, whereas "Pay per use" was stated as the key factor in picking Google Cloud Run.
Run cloud service containers instead of cloud-native services
- Running containers means that your microservices are not "cooked" into a cloud provider's architecture.
- Moving from one cloud to the next means that you simply spin up new instances of your containers in the new cloud using that cloud's container service.
- Start redirecting your traffic to the new resources.
- Turn off the containers in the cloud you migrated from.
When adding a new feature to Checkly rearchitecting some older piece, I tend to pick Heroku for rolling it out. But not always, because sometimes I pick AWS Lambda . The short story:
- Developer Experience trumps everything.
- AWS Lambda is cheap. Up to a limit though. This impact not only your wallet.
- If you need geographic spread, AWS is lonely at the top.
Recently, I was doing a brainstorm at a startup here in Berlin on the future of their infrastructure. They were ready to move on from their initial, almost 100% Ec2 + Chef based setup. Everything was on the table. But we crossed out a lot quite quickly:
- Pure, uncut, self hosted Kubernetes — way too much complexity
- Managed Kubernetes in various flavors — still too much complexity
- Zeit — Maybe, but no Docker support
- Elastic Beanstalk — Maybe, bit old but does the job
It became clear a mix of PaaS and FaaS was the way to go. What a surprise! That is exactly what I use for Checkly! But when do you pick which model?
I chopped that question up into the following categories:
- Developer Experience / DX 🤓
- Ops Experience / OX 🐂 (?)
- Cost 💵
- Lock in 🔐
Read the full post linked below for all details