What Is a Monolith? Why Your First App Should Be One.
You have been building with Claude, ChatGPT, Cursor, or Bolt and at some point you encountered the terms monolith and microservices. Maybe in a blog post…
You have been building with Claude, ChatGPT, Cursor, or Bolt and at some point you encountered the terms monolith and microservices. Maybe in a blog post, maybe in a conversation with a developer, maybe your AI mentioned them. Microservices tend to get described as the modern, sophisticated approach. Monoliths get described as old-fashioned or simple. Neither characterisation is accurate, and for most vibe coders the distinction is important to understand because it affects real decisions about how to structure your app.
What a Monolith Is
A monolith is an app where all the code lives in one place and runs as a single unit. The frontend, backend, database logic, business rules, and everything else are part of the same codebase, deployed together, and run as one process.
A one-sentence definition: a monolith is an app where all components live in a single codebase and run together as one deployable unit.
Almost every app starts as a monolith. Most small and medium-sized apps stay as monoliths forever. Monoliths are not the naive starting point before you graduate to something better. They are a valid, often preferable architectural choice.
What Microservices Are
Microservices are the alternative: splitting your app into multiple small, independent services that each handle one specific part of the functionality. A user service. An order service. A payment service. A notification service. Each runs independently, communicates over APIs, and can be deployed separately.
The benefits are real: each service can be scaled independently, different services can use different technologies, and teams can work on different services without affecting each other.
The costs are also real: you now have multiple codebases to maintain, multiple deployment pipelines, network communication between services that can fail, much more complex debugging, and significantly higher infrastructure costs.
Why Your First App Should Almost Always Be a Monolith
Netflix, Amazon, and Uber are often cited as microservices success stories. What is less often mentioned is that all of them started as monoliths, ran as monoliths for years, and only moved to microservices when the complexity of their scale genuinely required it.
Microservices solve problems that come with enormous scale and large teams. If you have a small app and one or two people working on it, you do not have those problems. Adding microservices architecture adds the costs without providing the benefits.
For a vibe-coded app built with AI tools, a monolith is almost certainly the right choice:
- One codebase to maintain and debug
- One deployment to manage
- No network communication between services to fail
- Much simpler to understand and iterate on
Your AI writes monolithic code by default for exactly this reason. It is the right pattern for the apps most vibe coders are building.
When to Think About Splitting Things Up
Consider splitting your monolith when:
- Your app has grown to a scale where one part is significantly more resource-intensive than others and needs to scale independently
- You are working with a larger team where different groups need to deploy independently
- A specific part of your app needs a different technology than the rest
For most vibe-coded apps, that moment is far in the future, if it ever comes. Build the monolith, ship the product, and refactor if and when scale actually demands it.
The One Thing to Remember
A monolith is an app where all the code lives in one place and runs as one unit. Microservices split the app into independent services. Monoliths are not simple or outdated. They are the correct architectural choice for most apps at most stages of growth. Build a monolith first. Netflix started as a monolith. You can too.
Want your monolith app running reliably in production? → Snapdock
New here? These might help: Hosting vs deploying. What is the difference? → What is serverless? And is your app already using it? →