My Take on Micro-Services and why we need them?



With evolution of Hybrid Cloud, Hadoop and requirement for real time data processing enterprises were exploring mechanism providing on-demand scalability and ease of deployment and use. They were looking to solve problems within business domain and deploy application within their Hybrid infrastructure "on-demand"(public, private, on-premise). Moving big monolithic applications meant to solve all problems not serving purpose for solving small business problem or serve specific business domain. 
Need for application as collection of small autonomous services, modelled around a business domain led to use of micro-service architectural style. Or we can say each service is self-contained and implements a single business capability. 
Image result for Microservices architectureWith real time processing requirement clients exploring solutions to keep application running and update with no downtime. Or may be update partially or even scale based on time of day or flow driven. They are looking for plug-n-play services to combine and solve different set of problems e.g client try to use different services like search, build, configure and other management capabilities to solve larger problem.  These independently running components are called micro-services or replacing monolithic applications or so-called service. I am not criticising or discussing pros and cons of monolithic applications as they served their purpose over years and served well. Now may be around their expiry with changing requirements and technology evolution.
Micro-Services Features
Services within the system are decoupled based on their domains and functionalities and are further allotted to individual micro-services. Or we can say how monolithic applications decomposed into small feature oriented micro applications (independent components) which can be easily packaged, shipped, deployed, altered and scaled independently. They focus on single business capability (e.g. "ToUpper" or "AscendingSort") and use anywhere.
Image result for microservices advantagesSupport real agile methodology and provide autonomy where different teams can work independently and deliver their service (solution) and support frequent releases or continuous delivery of software, through systematic automation of software creation, testing, and approval 

Microservices do not focus on applications as projects. Instead, they treat applications as products for which they are responsible. With agile adoption and continuous delivery focus is also on using the right tool for the right job. That means there is no standardised pattern or any technology pattern. Developers have the freedom to choose the best useful tools to solve their problems. 
Advantages of Microservices - Why we need them
All micro-services can be easily developed (independent development) based on their individual functionality provide complete independence from rest of complexity within business domain. Similarly they can be easily deployed (independent deployment) based on their services, they can be individually deployed in any application.
Even if one service of the application does not work, the system still continues to function providing complete fault isolation. Development tams need not to learn different technologies with every new project. Different languages and technologies can be used to build different services of the same application supporting mixed technology stack.  Individual components can scale as per need (granular Level), there is no need to scale all components together 

If we discuss technical aspects, each microservices is a standalone process providing an end-point (API) to access its feature. It can be used or modified or scaled up/down independent of rest of the application.

-Ritesh
Disclaimer: “The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions.”