Today, enterprises are adopting technologies like analytics, mobility, social media, IoT and smart embedded devices to change customer relationships, internal processes, and value propositions. Industry leaders recognize the need for innovation, agility and quick turnaround time in their digital enterprise business and increased customer demand. This leads to the adoption of Microservices and reduction in the dependency on monolithic applications, as they slow down the addition of incremental improvements to applications and underlying platforms in response to market demands. Microservices acts as building blocks for building modern distributed enterprise systems and become one of the enablers in the digital transformation journey.
Gartner defines a Microservice as a tightly scoped, strongly encapsulated, loosely coupled, independently deployable and independently scalable application component. 
Global Microservice Architecture Market anticipated accreting to USD 33 Billion by 2023, at a striking double digit CAGR of 17 % between 2017-2023. 
NGINX reported 68% of organizations are using or investigating Microservice architectures. Without a doubt, industry change will lead to accelerated interest in Microservices as time moves forward. 
Companies like Airbnb, Disney, Dropbox, GE, Goldman Sachs and Twitter have seen development lead times cut by as much as 75% when using Microservices. 
The implementation of Microservices by the enterprises is still at the innovation stage of the technology adoption. The architecture model, standards, and patterns are still evolving, and Microservices Technology Market is immature. However, reasonably good number of enterprises started adopting Microservices in the following domain areas:
- Financial Services
- Insurance Services
- Logistic Services
- IoT Solutions
- Video streaming solutions
- Social media solutions
Therefore, there is a need of a Matured Framework for the adoption of Microservices Architecture, established design patterns and tools to develop these artifacts. These are areas that we need to focus on ASAP as they take at least a year to establish.
Enterprise Adoption of Microservices
Microservices Architecture provides the extreme agility, reliability, maintainability, high scalability and deployability that support enterprises through their digital transformation process. It enables the Enterprise in achieving the following factors,
- Enhanced customer experience
- Agility, enterprises can introduce new products or enhancements into the market quickly
- Business focused
- Reliability, If a service is down, the customer will not be able to use the functionality provided by that specific service, but the rest of the system is still usable
- Scalability, the system can be configured to auto-scale (up / out) and during off-peak hours, it can go back to its normal configuration resulting in a better customer experience and cost-savings for the customer
- Developing highly scalable and distributed systems
- Business and IT alignment
Guidelines to Architects for adopting Microservices
Microservices are a strategy for building large distributed systems and are loosely coupled and deployed independently of one another. Architects need to adopt the following guidelines while designing the services of Microservices based Architecture.
- Lightweight: To facilitate smaller memory footprints and faster start-up times
- Reactive: Applicable for services with concurrent loads or longer response times
- Stateless: Services scale better and start faster as there is no state to be passivated on shutdown or activated on start-up
- Atomic: helps to do the smallest business unit of work that can be done independently
- Externalized Configuration: externalize the configurations in the config server, so that it can be maintained in hierarchical structure per environment
- Consistent: Services should be written in a consistent style as per the coding standards and naming convention guidelines
- Resilient: Service should handle exceptions arising from technical reasons (connectivity, runtime), and business reasons (invalid inputs) and not crash
- Reporting: Usage statistics, number of times accessed, average response time, etc. via JMX API
- Versioned: Support multiple versions for different clients, till all clients migrate to higher versions
Benefits of Microservices
Microservices are generally built using lightweight framework, open source technologies. The major benefits of an enterprise that adopts Microservices are as follows:
- Provides business agility, supports Continuous Delivery
- The time to market, enterprises can have a quick turnaround for changes to business
- Distributed development
- Eliminates long-term commitment to a single technology stack
- Technology heterogeneity or polyglot programming
- Improved ROI with reduced TCO
- Scalability, Services can be elastic
Microservices: Not for Every Business
While Microservices look promising, not every business can leverage on the Microservices architecture. It requires advanced architecture skills, mature agile processes, and solid DevOps practices. Enterprises that have the requirements of high Agility and Scalability should consider adopting the Microservices Architecture. Enterprises need to make sure that the business is capable enough to manage it.
The following are the factors which negate the usage of Microservices:
- Scenarios where monolithic and centralized application architecture make more sense (for more simple, small and low available application development)
- For applications where consistency has a high priority over eventual consistency
- Small enterprises with homogeneous network and technology confined to the single vendor.
- Scenarios where standards-based integration not needed. The solution might be simple data exchange between applications and external systems.
- When there are no frequent releases because of changing requirements
- Non cloud-based development
- Redesigning data platforms. If service relies upon a system of record (Mainframe, Oracle database, SAP system, and others), then Microservices do not fit the definition.
- When a cultural shift in enterprise (from project to product) or team autonomy not possible
- Long-term commitment to a technical / product stack is not possible or not required.
Finally, do not be caught up in the technology hype, and do not feel compelled to adopt the Microservices model just because it is new and everyone is talking about it. Microservices are not a product, framework, or platform. It is a strategy for building Enterprise distributed systems. Microservices based System Design is an ongoing story. It is not something that has to do once and immediately. With the right people, processes, and tools, Microservices can deliver faster development and deployment, easier maintenance, improved scalability, and freedom from long-term technology commitment.
Microservices architecture can offer enterprises many advantages, from independent scalability of diverse application components to faster, easier software development and maintenance. Open-source communities are developing frameworks and platforms that simplify adoption of the Microservices architecture. As a result, Microservices reduce vendor lock-in, eliminate long-term technology commitment, and helps to choose the tools required to meet IT and business goals. However, while Microservices are maturing rapidly, complete and robust mainstream platforms development shall be the focal point for the upcoming years.