Contrary to popular belief, microservices are not millions of services that make up a single application. Microservices are a network of individual systems that do one thing, and one thing really well. A system built using microservices is a system that is built up of small, lightweight services, where each performs a single function.
Tom Huston with SmartBear says it best in the article What is Microservices Architecture, “Essentially, microservice architecture is a method of developing software applications as a suite of independently deployable, small, modular services in which each service runs a unique process and communicates through a well-defined, lightweight mechanism to serve a business goal.”
Many modern day developers are looking to design their application using a microservices architecture. Here’s a quick pro’s and con’s list as to why you should be using microservices:
Reasons to use a microservice architecture:
- Microservices create flexibility when it comes to choosing which tool or technology one wants to use when solving problems.
- Microservices can deal with code churn. Integration can be challenging especially when it is handled by a third party. The risk of breaking integrations is lessened when microservices are used because they are very adaptable.
- Microservices are scalable, they can be used to split systems allowing more defined skill sets.
- Microservices help isolate the unknown. By using microservices your team can have the tools they need to defer issues that can make a software's architecture change and unable to respond to business requirements.
Reasons not to use a microservice architecture:
- More integration work. Microservices can cause additional work because integrating services with each other and other technologies takes time. You have to be cautious not to overload and break the microservices.
- Deployment. Deploying multiple services is more challenging than deploying a single service.
- Cognitive Complexity. It can make it nearly impossible to trace logging or issue tracking data across service boundaries. The network complexity has the potential to tarnish the integrity of the services true purpose.
“Micro-services have given us a substantial boost to our flexibility in the face of uncertainty. Flexibility, though always comes at a cost” - David Morgatini, Micro-services Introduction
Microservices like anything have pros and cons. Although it may take more time to integrate the microservices and to deploy all of them, they are extremely beneficial. It is important to build services that are flexible and scalable allowing your product to adapt to changes in your business.