Revisiting GCP
Pretty much all my professional experience with cloud providers has been with Amazon Web Services, but I have played around with Google Cloud Platform on my own. Somebody recently told me that GCP has a different paradigm for their APIs, and that is why sometimes their services are easier to use compared to AWS.
From the surface, the functionality is essentially the same between the two. AWS has EC2 instances as the bread and butter, which is essentially their computing server option. GCP has Cloud Compute instances. Then getting a bit more serverless and abstracting away, AWS has lambda functions and GCP has cloud functions. Both serve to do a single kernel computation, with high scalability and parallelism.
Fargate vs Cloud Run #
And then to what I've been trying out most recently, AWS Fargate vs GCP Cloud run. These days Docker containers have become my defacto choice for developing and deploying new projects. Locally this is very quick and easy to do, but my largest hurdle is always finding a good deployment solution. AWS Fargate offers this ability, but in my experience, the configuration for a simple single container application is far from easy or quick.
Cloud run on the other hand, is relatively straight forward and easy to navigate with the gcloud
cli. GCP for me seemed way more intuitive to move from local image/container, into a cloud deployed cloud run instance. The steps are essentially:
- build and deploy image to gcloud
- deploy cloud run container from image
This came be orchestrated from a single cloudbuild.yaml
file, resulting in a deployed auto scaled, auto application and served to a publically accessible URL.
Whereas for Fargate, you need to figure out a bunch of configurations first, like a load balancer, subnet and namespace. This DevOps work means that it slows down rapid prototyping, which is usually why I'm reaching for cloud services to begin with. The benefit of Fargate is that it supports multi container environments. But so far, I've found Cloud Run much more developer friendly, and quicker to deploy prototypes.
So far to me, lambda functions and cloud functions aren't any different. But I do think that the gcloud
cli is more intuitive for developers.