'Microservices' is the latest of the buzzwords to arrive at software architecture right now. Microservices is a distant cousin to Services Oriented Architecture (SOA). This sort of architecture is a based on a design wherein a complex application is composed of multiple, small, independent parts that talk to each other using APIs. By doing so, they are highly focused on the task at hand and are decoupled from the ground up. It subscribes to the philosophy of "Do one thing at a time and do it well".
Why does this matter?
Microservices architecture forces us to think differently about how we architect our applications. Microservices architecture focuses on separation of concerns at the root level. When building a microservices architecture, we separate application by major functionalities, dividing it into self-contained complete applications (or processes).
Advantages of Microservices Architecture
- Different applications can be built, tested and supported by completely different teams with no dependence on each other.
- Different applications can use different technologies, programming languages and completely isolated logic.
- Deployment of these applications can be done differently without interfering with one another.
- Such an architecture also enables us to reuse complete functionalities across multiple applications without rewriting them.
- Microservices further enable us to replace parts of the application without affecting each other.
- This architecture provides a way to build processes around continuous delivery.
Challenges with Microservices Architecture
Some of the precautions to use with Microservices are:
- Well defined architecture and services design.
- Thorough unit testing and business logic testing.
- API versioning.
- Implementation of authentication and authorization.
- Transaction control across distributed services.
- Failure recovery.
The Road Ahead
We think Microservices architecture make sense. Microservices are going to be an important architecture for software companies especially at companies looking at cloud architecture and how to build resilient, scalable applications. Companies adopting microservices will see significant advantages of using this approach.