AWS minus AWS

March 14, 2024
Comic of John talking to himself, it's garfield minus garfield
Garfield minus Garfield

The Omnipresent Companion

AWS is a behemoth. There’s a service for everything. As the giant in cloud computing, it commands over a third of the market share. If it can be distributed and someone wants to buy a managed version, AWS will be happy to sell it to you. Even better when Amazon can wrap an open-source project and sell it back to you as a managed service, RIP ElasticSearch. When I find myself facing an inevitability, like using AWS, I start to imagine a reality without it. Every piece of software needs a CPU, some working memory, and some data storage. These needs have been served without AWS before and there are valid complaints against the cloud. What if we find a version of AWS minus AWS?

Same comic as above, but now Garfield is in every panel. Showing that the comic does not change meaning with him there

The Siren Song of Managed Services

Now, the cloud's got this allure, promising to take the grunt work off our hands. AWS loves to talk about "undifferentiated heavy lifting". Sounds great, but there's a catch. For every smooth experience out there, there's a bunch of us behind the scenes, tweaking, tuning, and sometimes wrestling with the cloud to make it all work. It's like being Jon Arbuckle in a world where Garfield's decided to nap indefinitely—we're left dreading existentialism, dealing with the antics, and talking to a cloud that doesn't always talk back.

Your code has to live and run somewhere, so why not put it on the biggest platform? To AWS’s credit, if you’re account is big enough, the customer service is quite good. AWS found itself innovating beyond hosting and making gains on other people’s margins. The stand-out services that I use are S3, API Gateway, Lambda, EventBridge, and DynamoDB—sprinkled in with the obligatory CloudFront and virtual networking services.

The Serverless story has been good for a lot of folks. Explicitly designed to maximize “undifferentiated” work done by AWS. Anyone with a credit card can get a global-scale distributed system in minutes. No requisitions, no leases, no capacity planning, just pay for what you use like a commodity. The “value” is unlocked when your team can ship features faster with less overhead and fewer maintenance obligations. Why build a web server that has to run 24/7/52, when you can designate a specific lambda function on a specific route which won’t affect the rest of the system during a failure? It’s nice to have a programming model that allows me to opt into a service when needed. Instead of provisioning a cluster of machines to run Kafka, I can configure a standardized event object and put it onto an EventBridge bus with the existing SDK.

Feeling the Void

Going all in on AWS gives developers a strong platform, but nothing is perfect. You still have to understand your requirements and carefully evaluate the service limits. A native event bus is very convenient until your object is larger than 256kb. There’s also a limit of 100 event buses per region per account. Every service has quotas, limits, exceptions, and quirks. It is foolish to think that AWS solves every problem, but they do tend to improve services over time, by raising limits, increasing speeds, and decreasing costs. AWS also does a good job committing to its APIs and rarely deprecates low-level interfaces unexpectedly.

As much as AWS has revolutionized cloud computing, diving into its ecosystem reveals a steep learning curve. A prime hurdle for many of us venturing into AWS territory is the billing system. It's notoriously easy to rack up unexpected charges, given the billing structure's complexity. This opacity often feels like AWS has little motivation to make understanding costs straightforward for its users.

Then there's the labyrinth that is AWS's Identity and Access Management (IAM). IAM is the backbone of security on AWS, a system designed to create users and assign them permissions through roles and policies. Every action, whether performed by a human or a piece of code, goes through IAM. Setting it up—defining organizations, users, roles, policies, and all the monitoring, auditing, and compliance that comes with it—is no small feat. It's a one-time setup, thankfully, but it underscores the complexity embedded in AWS's powerful platform.

To narrow down the scope of our discussion, we’ll be considering services that provide the following needs of a web app:

  • Serving up static assets and client-side code,
  • Crunching numbers and logic on the server side,
  • Opening doors for data with server-side entry points,
  • Stashing away data in persistent storage,
  • Weaving together the vast web of networking – think CDNs, DNS, Load Balancers, and so on,
  • And, of course, orchestrating the ballet of build processes, deployments, and code repos, along with juggling at least two environments: development and production.

Sure, AWS throws its hat into the ring for each of these requirements, offering a tool or service for just about everything under the digital sun. But here's the catch – it's up to you to piece it all together. AWS hands you tools like SAM, Amplify, and CDK, which help stitch patterns into place but still leave you needing an AWS account and a good chunk of AWS savvy to get the ball rolling.

Exploring a World Without AWS

With the benefit of time, we can recognize AWS's omnipresence but also see it's not the only game in town. The key abstraction fueling competition is Infrastructure as Code (IaC), a programming model that lets developers wield their infrastructure with the precision and control of code. IaC transforms cloud computing into a spectrum of possibilities, empowering developers to choose the "cloud compiler" that best suits their project's needs.

As technology evolves, so too does the complexity of the systems we build. It's almost a law of digital nature: systems expand in complexity until a new abstraction layer emerges to make the complex accessible again. This cycle drives innovation and opens the door for competitors. Take Amazon S3, for example. When it went general availability (GA) in 2006, it revolutionized how we store and access data on the web, setting a new standard with its pay-as-you-go pricing model. From costing $0.15 per GB in 2006 to just $0.02 per GB a decade later, S3 not only became ubiquitous but also set the expectation for object storage as a fundamental resource in cloud computing.

This cycle of complexity and simplification has catalyzed the emergence of new platforms that aim to carve out their niches in the cloud landscape. These newcomers, sometimes literally building upon the groundwork laid by AWS, offer the same robust capabilities while improving the quality of life for developers. They provide what AWS either cannot or will not. Developers can effectively 'program' their cloud environments building new abstractions on top of AWS. This is exciting because we have options to deal with complicated billing or account configuration. As an industry, we’re expected to try new things, make improvements, and try to save ourselves from an overwhelming nightmare. Here are some platforms that look like AWS minus AWS.

Frontend Focus with Vercel and Netlify

Netlify, a pioneer of the JAMStack architecture, revolutionized the way developers approach git-based deployments. Beyond simplifying deployments, Netlify enriches content-heavy sites with serverless functions, image hosting, and seamless CMS integrations, laying the groundwork for modern web development.

Vercel, originally known as Zeit and its flagship product "Now," made waves in 2016 by simplifying the deployment of full Node applications to a single command. With its stewardship of the Next.js framework, Vercel excels in optimizing React applications, offering an ecosystem replete with SaaS examples, drop-in SDKs, and even database solutions, catering to a broad spectrum of web development needs.

Full Stack Simplified with Ampt and Begin

Begin offers a streamlined path for deploying serverless applications using the Architect framework. By abstracting away the complexity of AWS, Begin provides developers with tools like a DynamoDB client for effortless data persistence, without the need for a direct AWS account.

Ampt emerges as a cutting-edge platform enabling developers to launch applications on AWS seamlessly. It abstracts the AWS complexity, allowing developers to focus on innovation rather than infrastructure management.

Innovative Runtimes and Languages with Deno and Winglang

Winglang introduces a novel approach by merging Infrastructure as Code (IaC) with application logic, tailored for AWS. While it streamlines development, it still necessitates an AWS account, blending traditional and innovative cloud programming paradigms.

Deno, a modern JavaScript/TypeScript runtime, offers developers a cloud model that fits like a glove. Used by Netlify Edge Functions, Deno includes features like a built-in key-value (KV) store, signifying a leap towards more integrated and efficient cloud services.

Bonus - Specialized Hosting with Streamlit

Streamlit caters to Python enthusiasts, providing a robust platform for hosting data-driven applications. It simplifies the deployment of Python scripts as web applications, offering a seamless bridge from data science to web deployment.

Bonus - Val.town

Val.town stands out as a uniquely indie platform that makes AWS Lambda functions both fun and accessible. It's a testament to the growing diversity in cloud services, offering developers new, enjoyable ways to build and deploy functions in the cloud.

The Next Phase in Cloud Programming

Exploring cloud computing beyond AWS, inspired by "Garfield minus Garfield," reveals a landscape rich with alternatives. This journey isn't just about finding replacements; it's about discovering platforms that offer new ways to work with the cloud—simpler, more focused, and tailored to different needs.

Infrastructure as Code (IaC) emerges as a key player, allowing us to manage cloud resources with the same ease as writing code. This shift towards IaC introduces us to tools like Vercel, Netlify, and others, each providing unique benefits, from streamlined frontend deployment to flexible serverless backends.

The essence of looking at AWS alternatives is not about discarding AWS entirely but about enriching our toolkit. As we move forward, the cloud computing field is set to become more diverse. This diversity encourages us to experiment and find the best fit for our projects, maybe sparking an idea for a new adaptation.

The future of cloud programming is bright and varied. By embracing the range of options available, we open up new possibilities for innovation and efficiency in our work. Let's step into this future with an open mind, ready to explore and make the most of the cloud computing ecosystem's full potential. Lasagna.

Access free book

The dream team

At Serverless Guru, we're a collective of proactive solution finders. We prioritize genuineness, forward-thinking vision, and above all, we commit to diligently serving our members each and every day.

See open positions

Looking for skilled architects & developers?

Join businesses around the globe that trust our services. Let's start your serverless journey. Get in touch today!
Ryan Jones
Founder
Speak to a Guru
Edu Marcos
Chief Technology Officer
Speak to a Guru
Mason Toberny
Head of Enterprise Accounts
Speak to a Guru

Join the Community

Gather, share, and learn about AWS and serverless with enthusiasts worldwide in our open and free community.