#📚reference
Microservice architecture is a special type of [[modular architecture]] in which the main engineering element is a microservice - an independently deployed module with a stable [[API]].
Microservices are useful when a software product has multiple parts with different deployment requirements that vary over time.
> [!note]
> It is important to distinguish services as a general term from microservices as a concept within the mentioned paradigm. Many companies have their software products split into several parts but they do not pursue the goals of microservice architecture.
In recent years, the term microservices has become a buzzword. This may, in part, be attributed to some successful companies adopting microservice architecture.
What evangelists of this approach usually forget to mention is that microservices are mostly only useful at a large scale. Microservices are extremely good if you are Netflix or Spotify. But for several hundreds of thousands of users with modest computational demands, investments into microservice architecture may distract from the key business goals. For just thousands of users, microservices could become a dangerous burden.
Microservice architecture requires two main things for success: observability and discovery. The former allows engineers to monitor and debug their vast infrastructure. Imagine you have a streaming platform that stopped working on Fridays, and you have no idea why. The latter allows microservices to discover each other and act properly when other services are unavailable (ex. preventing a chain reaction of failing microservices up to the authentication system when chat widget temporarily goes down during redeployment).
---
>[!tip] We've worked with microserveices
We have expertise in designing, building, and deploying microservices. We know how to identify scenarios when neither microservices nor microservice architecture are suitable (we've learned the hard way). Meanwhile, we are excited to stumble upon those rare, but interesting business cases where microservice architecture is a key to success.
---
<font style="color: #F86759">Contributors:</font> *[[Mykhailo]]*
<font style="color: #F86759">Last edited:</font> *2024-03-27*