Back to School: Why Did Microservices Appear, and Where Did Polyglot Architecture Come From?
When people talk about microservices, you will often hear a story like this:
Microservices appeared because different teams wanted to use different programming languages, different databases, and generally work independently.
It sounds reasonable, but historically that is not quite what happened.
Microservices emerged as a response to the challenges of scaling large systems and large organizations. Concepts such as Polyglot Programming, Polyglot Persistence, and eventually Polyglot Architecture came later as a natural consequence of that evolution.
First, There Was the Monolith
For a small team, a monolith is often an excellent solution:
- simpler development;
- simpler testing;
- simpler deployment;
- less infrastructure;
- fewer network interactions;
- lower operational complexity.
This is why most successful products started as monoliths. Even today, many architects, including Martin Fowler, regularly point out that a monolith is often the best place to start.
The challenges appear later:
- the product grows;
- the number of teams increases;
- different parts of the system evolve at different speeds;
- releases begin to interfere with each other;
- coordination costs become significant.
At that point, organizations start looking for ways to reduce coupling and distribute ownership more effectively.
Conway's Law
To understand the origins of microservices, it helps to revisit Conway's Law.
In 1967, Melvin Conway observed:
Organizations design systems that mirror their own communication structures.
In practice, this means:
- a single small team often produces a monolith;
- multiple semi-independent teams tend to produce semi-independent subsystems;
- over time, software architecture starts reflecting organizational boundaries.
This is why many practitioners view microservices not only as an architectural pattern, but also as an organizational one.
Amazon and Autonomous Teams
One of the most famous examples comes from Amazon.
Amazon popularized the concept of Two-Pizza Teams. The idea was not really about team size. It was about autonomy. Each team should have all the skills and authority required to own and evolve a specific business capability without relying on constant coordination with other groups.
Such a team:
- owns a specific business capability;
- makes its own technical decisions;
- deploys its own services;
- supports those services in production;
- is accountable for business outcomes.
This led to the famous principle:
You build it, you run it.
When a team owns an entire business domain, it becomes natural to package that domain as an independently deployable service.
This is where microservices enter the picture.
Technology Diversity
In their classic article on microservices, James Lewis and Martin Fowler describe Technology Diversity as one of the characteristics of a microservice architecture.
Different services can use different:
- programming languages;
- frameworks;
- data storage technologies.
For example:
- the payments platform may run on Java;
- the recommendation engine may be built in Python;
- a high-performance API may be written in Go;
- frontend applications may use TypeScript.
As long as the services communicate through stable contracts and well-defined APIs, the implementation details are largely independent.
This is where the whole "polyglot" story begins.
Polyglot Programming
Back in 2006, Neal Ford introduced the term Polyglot Programming.
The idea was straightforward:
Complex systems can benefit from using multiple programming languages because different languages excel at different kinds of problems.
For example:
- Python is a natural choice for machine learning;
- Go is great for network services;
- Rust excels where performance and memory safety are critical;
- TypeScript dominates modern web development.
Instead of forcing every problem into a single technology stack, engineers choose the most appropriate tool for each job.
It is important to note that Polyglot Programming predates the widespread adoption of microservices. However, microservices made it much easier to apply this idea at scale.
Polyglot Persistence
The next step was Polyglot Persistence, a concept heavily promoted by Martin Fowler.
The underlying principle is the same, but applied to data storage.
Instead of using a single database for an entire system, organizations select different storage technologies for different needs:
- PostgreSQL for transactional workloads;
- Redis for caching;
- Elasticsearch for search;
- ClickHouse for analytics;
- Neo4j for graph relationships.
The mindset shifts from:
"How do we store everything in one database?"
to:
"Which storage technology is best suited for this specific type of data and workload?"
Microservices fit naturally into this model because each service can own and manage its own data store.
Finally: Polyglot Architecture
When you combine:
- autonomous teams;
- microservices;
- multiple programming languages;
- multiple data storage technologies;
you arrive at what is commonly called Polyglot Architecture.
This is not a formal architectural style with a strict definition.
Rather, it is the natural outcome of independent teams selecting the technologies that best support their business problems and operational requirements.
Conclusion
If we simplify the historical progression, it looks something like this:
Growing Product
↓
Growing Number of Teams
↓
Conway's Law
↓
Autonomous Product Teams
↓
Microservices
↓
Technology Diversity
↓
Polyglot Programming
↓
Polyglot Persistence
↓
Polyglot Architecture
So the most accurate way to tell the story is this:
Microservices did not emerge because developers wanted different programming languages and different databases. They emerged as a way to scale software development, system ownership, and organizational complexity. Polyglot Programming, Polyglot Persistence, and Polyglot Architecture followed as natural consequences of giving autonomous teams the freedom to choose the most effective tools for their problems.
Further Reading
Martin Fowler — Microservices
https://martinfowler.com/articles/microservices.htmlMartin Fowler — Microservices Guide
https://martinfowler.com/microservices/Martin Fowler — Conway's Law
https://martinfowler.com/bliki/ConwaysLaw.htmlMartin Fowler — Polyglot Persistence
https://martinfowler.com/bliki/PolyglotPersistence.htmlMartin Fowler — Two Pizza Team
https://martinfowler.com/bliki/TwoPizzaTeam.htmlSam Newman — Monolith to Microservices
https://samnewman.io/books/monolith-to-microservices/