Microservices is an architectural pattern where software is designed as composition of small independent services that communicate over well-defined APIs. The services could be owned by one team or several small independent teams. The advantage of microservices is since each service is independent it can be updated or replaced and redeployed without affecting other services. It is quite easy to scale a micro-service as compared to complex set of services. If we consider the business user of the application then it makes lot more sense to use microservices for those areas where business needs to deliver enhancements with short turnaround time.
Since I am working on Healthcare Platform let me take example of a traditional healthcare application developed as a monolithic architecture. This has a significant drawback in limiting the reuse of components in the development of other solutions. For example, if you have a healthcare application targeting people with type 2 diabetes and you want to adapt that solution for managing patients with Chronic Obstructive Pulmonary Disease (COPD) which is linked to diabetes , there is likely a significant portion of your original diabetes solution that you could reuse, but that would be difficult to do.
Using a chronic disease platform built as microservices, for example, you could replace the component that interfaces and manages data from connected devices. The services that communicated with a companion healthcare mobile application, or service that captures insights from an Amazon Alexa virtual assistant, would be reusable service in these cases. Implementing a microservices architecture provides a number of advantages in architecting back-end solutions while offering particular benefits in developing digital and connected healthcare solutions.
So 2 key characteristics of microservices pattern are
1) The microservices is specialized services and addresses one specific problem
2) Each component service can be updated or replaced ,redeployed and scaled without affecting other services.
Benefits of Microservices
Service Agility
Microservices Architecture enables small, independent development teams that take ownership of their services. Teams work independently and deliver faster . This shortens development cycle times and business benefits because of fast turn around time..
Highly Scalable Services
Microservices allow each service to be independently scaled to meet demand for the application feature it supports. This enables teams to right-size infrastructure needs, accurately measure the cost of a feature, and maintain availability if a service experiences a spike in demand.
Swift Deployment
Microservices enable continuous integration and continuous delivery, making it easy to try out new ideas and to roll back if something doesn’t work. The low cost of failure enables experimentation, makes it easier to update code, and accelerates time-to-market for new features.
Technological Freedom
Microservices architectures enables development teams to choose the best tool and technology to solve the specific problems. As a consequence, teams building microservices can choose the best language and tool for each service component.
Reusable Code
Dividing software into small, well-defined modules enables teams to use functions for multiple purposes. A service component written for a certain functionality can be reused to deliver another component. This promotes service reuse.
Application Resilience
Service independence increases an application’s resistance to total failure. In microservices architecture, applications handle total service failure by degrading functionality and not crashing the entire application. In a monolithic architecture, if a single component fails, it may lead to entire application failure.