Skip to content
DevMeme
4827 of 7435
AWS says “break up the monolith” while secretly rebuilding one
AWS Post #5287, on Jun 30, 2023 in TG

AWS says “break up the monolith” while secretly rebuilding one

Why is this AWS meme funny?

Level 1: Practice vs Preach

Imagine a friend who always tells you, “Don’t eat junk food, it’s bad for you,” but then you catch them secretly eating a whole bag of candy when no one’s looking. You’d probably giggle at how they’re not following their own advice. That’s exactly the kind of situation happening here with Amazon. They’ve been telling everyone else to do something in a fancy new way, but quietly they decided to do it the old, simple way for themselves because it works better. It’s funny for the same reason: the one giving the advice isn’t practicing what they preach, and everyone can see it. In other words, “do as I say, not as I do” never fails to get an eye-roll and a laugh — whether it’s a friend with candy or a tech giant with its software design.

Level 2: Double Standards

Let’s break down the joke in simpler terms. Amazon Web Services (AWS) is the cloud platform of Amazon that sells computing resources to companies. AWS often advises modern best practices for building software, like using microservice architecture and serverless architecture. These are big buzzwords, so let's define them:

  • Monolithic architecture (monolith): This means building your application as one single unified program or service. For example, imagine a big web application where all features (user login, payments, video streaming, etc.) run together in one codebase and are deployed as one unit. It’s one big piece.
  • Microservices architecture: This means breaking that big application into many smaller independent services. Each microservice focuses on one thing (say, one service just for user accounts, another just for payments, another just for video processing). These services communicate with each other over a network (often by calling web APIs). So instead of one big program, you have a bunch of little programs working together in concert.
  • Serverless: This is a style of cloud computing where you write small pieces of code (often called functions) and the cloud provider runs them on demand, automatically managing the servers for you. Serverless doesn’t literally mean “no servers” – it means you don’t have to worry about the servers. AWS manages them behind the scenes. You just provide your code, and it runs when triggered (for example, an image upload could trigger a function to process the image). AWS Lambda is a popular serverless service. Serverless is kind of an extreme form of microservices: very small units of code that scale automatically and only run when needed.

Now, AWS has been telling companies, “if you have a monolith, you should split it up into microservices or go serverless to be more scalable and modern.” They even call it “cloud-native maturity” – implying your software system grows up by adopting those patterns. This advice is everywhere in AWS’s marketing and guides.

However, in this meme we learn that Amazon’s own team decided to go from serverless back to a monolith for a specific project (monitoring video streams). Translation: they found that having one well-structured service was actually better for that case (perhaps faster, cheaper, or easier to maintain) than having it chopped into many serverless micro-pieces. That’s the opposite of the usual cloud mantra from AWS!

So the top part of the meme shows an AWS advertisement about “Evolve from monolith to microservices,” while right next to it is an article headline saying Amazon “dumps microservices for... monolith.” It’s a total flip-flop situation.

The big text in the middle basically calls out this contradiction: Amazon is moving from serverless to monolithic architecture while telling other companies to evolve from monolith to serverless. In plain language, Amazon is telling everyone else to do one thing, but they themselves are doing the reverse. That’s the double standard being highlighted.

The bottom part with the two-buttons meme illustrates this with a cartoon. In that classic meme template, a character (a sweating cartoon superhero) has to choose between two red buttons but is stressed out because both choices are tricky. Here, one button is labeled “Adopt Monolithic Architecture” and the other says “Promote Serverless.” The character is labeled “AMAZON,” indicating it’s Amazon facing this dilemma. Pressing the “Adopt Monolithic Architecture” button would mean Amazon admits that using a monolith (the one-big-piece approach) is okay (since they did it themselves). Pressing the “Promote Serverless” button means Amazon sticks to their public advice. The joke is that Amazon wants to press both – they want to quietly use a monolith internally and keep promoting serverless to everyone else. But doing both makes them look hypocritical, hence the cartoon character is sweating and panicking, unable to decide.

For a newer developer, it helps to understand why this situation even happens:

  • Why does AWS push microservices/serverless? Because those architectures often require using lots of cloud services. If you split an app into 100 microservices, you might end up using dozens of AWS resources (compute instances, databases, message queues, Lambda functions, etc.). This can tie you into AWS’s ecosystem quite deeply (this is sometimes called vendor lock-in, meaning you become very dependent on that one cloud vendor’s platform). Also, many big tech companies genuinely believe these architectures help them scale and organize their teams better. AWS presents microservices and serverless as the modern, efficient way to build applications.
  • Why would Amazon go back to a monolith? Sometimes, a single, well-optimized program is simpler and faster for a given job. Running everything in one place can reduce the overhead of services talking to each other over a network. In their video monitoring system, all those separate serverless components might have been adding too much network latency or costing too much money. By centralizing the functionality into one service (a monolith), they likely improved performance and made the system easier to manage. In short, they chose what was practical for their needs over what was trendy.

To visualize the difference, consider a simple operation in both architectures:

# In a monolithic application (one big service):
result = processOrder(order_id)  # direct function call within the same application

# In a microservices/serverless approach:
result = call_service("OrderService", order_id)  # network call to another service in the cloud

In the monolith example, processOrder might call other functions or modules in the same codebase to do all the work, but it’s all within one application and one process. In the microservice version, call_service("OrderService", ...) means our program sends a request over the network to a separate service (or triggers a Lambda function) dedicated to processing orders. The second approach can be more scalable if tons of orders are coming in (because you can run many instances of that Order service), but it’s also more complex. There’s network delay in that call, and if that external service is down or slow, our request fails or waits. In a monolith, everything is in one place, so function calls are just in-memory, which is very fast and reliable as long as the single application is running.

The meme is funny to developers because it highlights this gap between what cloud providers preach and what they sometimes practice. It’s like catching someone saying, “You should really eat only healthy salads,” while they’re secretly gulping down a cheeseburger. We all recognize that kind of scenario. Here, Amazon has been preaching the high-tech, cloud-native way (lots of little services, serverless functions, etc.), but ended up using a basic, old-school approach themselves when it made sense. It’s the irony of “not practicing what you preach” that makes us smirk. For a junior dev, the takeaway is: architecture decisions (monolith vs. microservices vs. serverless) all have pros and cons. Don’t just follow the hype or one-size-fits-all advice blindly. Even the experts (Amazon in this case) sometimes reverse course when a fancy solution doesn’t fit the problem. And yes – even a huge tech company can end up in an awkward spot where their public advice doesn’t match their own internal choices. That contrast is exactly what gives this meme its punchline.

Level 3: The Monolith Strikes Back

Welcome to the reality behind the buzzwords. The meme juxtaposes two contradictory messages from Amazon:

  • On one side (top-left of the collage), AWS is literally advertising a “Cloud-Native Maturity Guide” urging companies to Evolve from monolith to microservices. This is AWS marketing 101: encouraging clients to embrace microservice architecture and serverless architecture, which conveniently means using more AWS products (Lambda, DynamoDB, API Gateway – you name it). Breaking up the monolith generally leads to spinning up dozens of cloud resources, and guess who profits from that? AWS.
  • On the other side (top-right), we have a headline about Amazon’s own team doing the exact opposite: “Return of the Monolith: Amazon Dumps Microservices for Video Monitoring.” This refers to a real internal decision where Amazon engineers moved a system (for Prime Video’s monitoring, reportedly) from a fancily distributed serverless setup back to a simpler, monolithic architecture. In plainer terms, they un-microserviced their application to solve performance and cost problems.

Now, below those clippings, the meme spells out the irony in bold text: “Amazon moving from serverless to monolithic architecture while telling other companies to evolve from monolith to serverless.” It's a classic case of corporate hypocrisy. Amazon’s cloud division is saying one thing publicly, while Amazon’s product teams are doing almost the opposite internally. This is where the comedic tech industry irony hits hard: the very company that pioneered microservices (remember, Amazon famously had a mandate that “everything must be a service” years ago) is now consolidating services, after telling all of us that monoliths are passé.

For senior engineers, this scenario triggers a knowing smirk (if not an eye-roll). We’ve seen this architectural whiplash before. One year it’s “monoliths are bad, break everything into microservices for ultimate agility!” The next year, it’s “uh-oh, we have 500 microservices and a distributed mess – maybe a well-structured monolith wasn’t so bad after all.” This meme captures that pendulum swing. There's even a meme within the meme: the two-buttons format shows a panicked superhero labeled “Amazon” sweating over two irreconcilable choices:

  1. Adopt Monolithic Architecture – i.e. do what’s practical (what their engineering teams chose internally to improve reliability and cut costs).
  2. Promote Serverless – i.e. stick to the official AWS narrative and keep telling customers to go cloud-native with microservices and serverless to be modern.

Amazon (the character) is sweating because pressing one button betrays the other. If they admit monolithic architecture is sometimes better, it undercuts years of cloud evangelism. If they keep preaching serverless as the one true path, they look two-faced given the leaked reality of their own systems. The humor here is basically: “Do as I say, not as I do” on an industrial scale. And believe me, experienced developers have a whole bookshelf of these stories.

This kind of double standard isn’t unique to Amazon, but AWS is a prime example because of how aggressively they've sold the monolith vs. microservices narrative. They even package it as a maturity model – implying your startup isn’t “mature” until it’s slicing itself into dozens of independent pieces. Many of us have sat through conference talks or whitepapers essentially saying “if you’re not all-in on microservices and serverless, you’re behind the times.” Meanwhile, behind closed doors, even Amazon’s engineers are acknowledging the same architecture trade-offs we all know: microservices can bring flexibility and team autonomy, but they also introduce latency, complexity, and lots of moving parts. More moving parts = more things that break at 3 AM. (Ask anyone who’s been on call debugging a cascade of failing services or a mysterious Lambda timeout – fun times.)

So, the meme strikes a chord because it confirms a cynical suspicion: that big tech companies might preach certain design patterns publicly for their own benefit (and to stoke our FOMO), all while quietly choosing whatever architecture best meets their needs (and protects their bottom line). It’s a “gotcha!” moment. For those of us who’ve lived through fad after fad – from SOA to microservices to serverless, and now seeing the cycle swing back – the cloud humor practically writes itself. We find it hilarious (and a bit vindicating) that even Amazon’s solution to a problem was essentially “make it simpler” while their marketing department insists “make it more complex (on our cloud)”.

In summary, the meme’s joke lands because it exposes the gap between Amazon’s promotional narrative and their practical reality. It’s poking fun at a real-life two-buttons dilemma: Amazon trying to decide which architectural button to push. And as any veteran dev will tell you, this isn’t the first time a company has had to eat a slice of humble pie after overhyping a trend. With AWS, though, it’s particularly amusing because so many companies have restructured their entire tech stack based on AWS’s advice. Seeing AWS essentially say “well, actually, a single well-optimized service might work better here” is the ultimate facepalm moment for all the true believers in microservice-land. It validates the skeptics and gives everyone else a reason to chuckle (or cry) about the fickle nature of tech trends.

Level 4: The Distributed Dilemma

At the deepest technical level, this meme hints at the inherent limitations of distributed systems that even a cloud titan like Amazon can’t escape. When AWS encourages everyone to break applications into microservices, they’re pushing an architecture that inherently runs up against the CAP theorem. The CAP theorem reminds us that in any distributed system you can only have two of three guarantees: Consistency, Availability, and Partition Tolerance. Splitting a formerly monolithic application into networked services introduces partitions by design (different servers, regions, or Lambda functions). Something like a video monitoring pipeline that spans many microservices might struggle to keep data consistent in real-time and highly available when pieces can fail independently. Amazon’s internal team likely found that maintaining strong consistency and low latency across dozens of microservices was theoretically and practically hard – a direct echo of CAP’s harsh trade-offs. By reverting to a monolithic design (all-in-one), they essentially removed the network partition element, making it easier to guarantee consistency and performance. It’s a case of theory influencing practice: sometimes the only way to eliminate the impossible problems of distributed computing is not to distribute the problem in the first place.

Another fundamental factor is Amdahl’s Law, which puts an upper bound on the speed-up you get by parallelizing parts of a system. If certain processing steps in Amazon’s video pipeline had to happen sequentially, breaking those steps into separate microservices could add overhead instead of speeding anything up. Each service call brings serialization, network transmission, and waiting for responses. Those extra milliseconds of latency (the ones cloud evangelists pretend don’t exist) accumulate. The fallacies of distributed computing – such as assuming the network is reliable or latency is zero – lurk behind every microservice architecture. Serverless functions (like AWS Lambda) are great, but if you chain 50 Lambdas in a sequence, you’ve essentially built a very expensive, latency-laden monolith with worse debugging. There’s even a saying for that scenario: a “distributed monolith” – meaning you broke up a system in name, but all the pieces are still tightly coupled, only now with network calls (spoiler: that’s worse than a normal monolith). The meme’s humor hides a nerdy truth: no matter what the cloud-native marketing says, you can’t cheat computer science. Data locality, network physics, and coordination complexity always win. Amazon finding solace in a single, simpler codebase reveals the architecture trade-offs at play – you can distribute work for scalability and resilience, but you pay in complexity and overhead. When even the king of cloud quietly opts for a monolith in some corner, it’s a nod to the fact that these theoretical constraints aren’t just ivory-tower talk; they bite in the real world too.

Description

The meme is a vertical collage. At the top left is an AWS Marketplace banner in teal and green that reads: “CLOUD-NATIVE MATURITY GUIDE - Evolve from monolith to microservices - Download now.” Adjacent to it is an article screenshot entitled “Return of the Monolith: Amazon Dumps Microservices for Video Monitoring.” Below, large black text states: “Amazon moving from serverless to monolithic architecture while telling other companies to evolve from monolith to serverless.” The bottom half uses the classic “two red buttons” comic panel: the left button is labeled “Adopt Monolithic Architecture,” the right one “Promote Serverless.” A sweating, white-gloved cartoon superhero hesitates, and the final frame shows the blurred-out hero’s face with the caption “AMAZON.” The humor highlights the architectural whiplash and marketing hypocrisy senior engineers often observe when vendors advocate microservices while internally reverting to simpler, cheaper monoliths

Comments

14
Anonymous ★ Top Pick Somewhere in Seattle a team just filed a Jira ticket titled: “Re-introduce single-process cron job - call it AWS Lambda Classic.”
  1. Anonymous ★ Top Pick

    Somewhere in Seattle a team just filed a Jira ticket titled: “Re-introduce single-process cron job - call it AWS Lambda Classic.”

  2. Anonymous

    The real microservice here is Amazon's ability to decompose their architectural principles into independently deployable marketing messages that can scale horizontally across conference keynotes while their own engineering teams quietly merge everything back into a monolith for that sweet 90% cost reduction

  3. Anonymous

    Nothing says 'cloud-native best practices' quite like Amazon quietly rewriting Prime Video's monitoring from distributed microservices back to a monolith for 90% cost savings - while simultaneously selling you a 'Cloud-Native Maturity Guide' on evolving from monoliths to microservices. It's the architectural equivalent of a fitness influencer caught at McDonald's: technically they're not wrong about the benefits of exercise, but the optics are *chef's kiss*. Turns out the real serverless was the operational overhead we accumulated along the way

  4. Anonymous

    Fifty “independently scalable” Lambdas give you 99.9^50 availability and a tracing bill bigger than egress - sometimes the most cloud-native move is one deployable

  5. Anonymous

    AWS: Serverless for your vendor lock-in, monoliths for our trillion-user perf

  6. Anonymous

    The cheapest service mesh is a function call - when p95 cost beats p95 latency, even Amazon reaches for a monolith

  7. Kademlia 3y

    Engineering vs Marketing

  8. @maggelia 3y

    Well I mean if you actually read the blog post, they did not back out from microservices on Amazon prime, they just switched to a monolith in a particular implementation which didn't make sense to begin with

    1. @oljimenez 3y

      And the new implementation either

    2. @lybitel_popochek 3y

      Agree, here is the post for those who didn't read: https://www.primevideotech.com/video-streaming/scaling-up-the-prime-video-audio-video-monitoring-service-and-reducing-costs-by-90?utm_source=thenewstack&utm_medium=website&utm_content=inline-mention&utm_campaign=platform

  9. @deerspangle 3y

    Yeah, some of that shit is devs writing nanoservices which do a tiny facet, and then getting everything bogged down in network overhead. There's always a healthy balance between the two sides

    1. @SamsonovAnton 3y

      JavaScript guys create a module for each trivial function. Why not create a microservice for each one of them? 😁

      1. dev_meme 3y

        Separate functions will struggle hard to create such an amount of overhead as something like "microservice for each and every endpoint"

        1. @SmirnGreg 3y

          Great idea!

Use J and K for navigation