Comparing GCP and AWS Serverless


Deployed a simple app using serverless solutions on both AWS (App Runner) and GCP (Cloud Run). Written from the perspective of someone with significant programming experience (Game Dev), but working in the web development paradigm, using these types of services and deploying an app for the first time.

Intro

A few months ago, when I began my web development journey, one of my early goals was to deploy something on the internet. I had prior experience working with a bare metal server, where I hosted my website and personal email, but deploying an app with more complex logic that needed to communicate with other services was uncharted territory for me.

After some exploration and architecting, I settled on using GCP. Learned a bunch - how to navigate and use its essential services, deploy real-world applications and handle various intricacies. I deployed my apps using Cloud Run and hosted my DBs outside GCP, on managed platforms like Upstash and Supabase.

Nonetheless, I remained curious about AWS - wondering how different (for better or for worse) the experience would be and how well my GCP knowledge would translate.

Eventually got around to it with go-plate, a project where my goal was to create a generic Go REST backend solution that consolidated everything I had learned, serving as a foundation for future projects.

One of the key components was setting up ready-to-use GitHub Actions to automate deployments to both GCP and AWS environments.

And so, I dove into AWS.

Comparision

My immediate first impression navigating AWS UI was how much cleaner and responsive it felt as a web app. Having used GCP, I had grown accustomed to its slow, clunky, and occasionally unresponsive interface. I didn’t think much of it when I first started with GCP, considering how complex such an app must be, but AWS clearly delivered a significantly superior experience.

Navigating AWS services also felt much easier in terms of visual communication and flow. Admittedly, I already had an idea of where to go and what tasks to perform, assuming a workflow similar to GCP - creating a user in IAM, granting permissions, setting up a repository for images, configuring and deploying the app on App Runner, and so on.

Even with this prior knowledge, I still feel that AWS did a better job guiding me to where I needed to be.

Overall I could just move and do stuff faster.

However, I was surprised by how slow the actual deployment step was. I chose the lowest specs on App Runner, but I didn’t expect it to have such a significant impact on the time it took for the service to start (Maybe it did not even matter, and this is a fixed cost). In comparison, GCP provided a better experience - it wasn’t instant, but it was noticeably faster and still quite smooth.

Writing a CI/CD workflow for Github Actions also felt easier with AWS. The workflow was much simpler and the deploy step can be even avoided, as the App Runner service can be configured to automatically deploy if a new image is pushed.

One thing to note about App Runner’s configuration is that it has a minimum instance of 1, which can impact billings. Sure, you don’t suffer from cold starts, but you don’t even have the agency to decide that on AWS App Runner.

Nowadays, it is also very common to resort to LLM’s when seeking guidance in developing and deploying something. I found ChatGPT and Claude to be more usefull in providing assistance for AWS related tasks compared to GCP. They provided clearer and more concise responses that were less prone to hallucination.

Regarding documentation, AWS outshines GCP by a significant margin. I’ve worked with a quite a few languages, environments, libraries, game engines, etc, yet some of the worst documentation experiences I’ve had have been with Google products, namely GCP, the Maps API and Android Studio (it’s also totally possible that, maybe, I’m just bad).

My experience with both platforms has been relatively brief and hobbyist-level, and there’s so much more to consider in a comprehensive comparison - such as pricing (especially transparency and communication), scalability, security, monitoring, support, and community.

That being said, I do think AWS provided a significantly better developer experience, which would only help me focus on my code and product more and ultimately deliver a better experience. And at the moment, that’s what matters most to me.

For future projects and experiments, I’ll continue with AWS and move away from GCP.