Microservices Application is a development practice to build large application as a suite of modular services (i.e. loosely coupled components). Each component supports a specific business function and uses a simple, well-defined interface to communicate with other sets of services.
Consider an example of online retail portal, customer can browse the services through browser and can add products to the cart, order a product, authorize payments, and track shipments. These are different components built based on Micro services model. Each component as a separate loosely coupled service depending on the business requirement. Network established to have communication between all these service components but works as independent code base.
Micro services Architecture deploy these components into separate unit of application code in separate compute platform.
Below listed each service component has its own code deployment:
- Catalog – Listing Products inventory
- Order – Takes customer order and process it
- Payment – Manage Payments through payment gateway
- Shipment – Manage Shipping the product
- Tracking – Showing the Product Shipment status
Below Architecture describes the “Microservices Architecture” view of deploying all service components in separate compute platform with separate artifact(.war)
- Micro services are flexible to integrate with continuous integration and continuous deployment pipelines.
- It is easy to deploy code changes as each service component has its own artifact .war for deployment
- Development can be done by multiple contributors as each developer can take ownership of each service module and can develop independently and expose the functionality as API to integrate with other services.
- Maintenance is easy as each component code base is relatively small and easy to understand.
- Application load time is faster hence performance of the whole application is improved.
- If any specific bug in the code that impacts that individual service component and other services are continue working without any issues.
- Easy to migrate software framework or upgrade to the latest technology versions that the dependency with that specific component.
- Easy to provision compute resources as per the requirement of each component in the same application.
- Micro services following distributed application architecture hence, developers require some efforts to understand the distributed environment for integrations.