- A microservice architecture style is an approach to developing one application as a suite of small services.
- Each runs in its own process and communicates with lightweight mechanisms, often an HTTP resource API.
- Microservice do have a distinct advantage:
- Microservice architecture is typically better organized
- Each microservice features a really specific job, and it isn’t concerned with the roles of other components.
- Decoupled services are also easier to vary, update, and re-configure to serve the requirements of varied types of apps
- They also leave fast, independent delivery of individual parts within a much bigger, integrated system.
- Under the right circumstances, microservices can also have a performance advantage relying on how they’re organized.
- It’s possible to isolate hot services and scale them independently of the rest of the app.
- Cloud-native applications are built as a system of microservices. the overall idea of this style of architecture is to implement a system of multiple, relatively small applications. These are called microservices.
- They work together to supply the general functionality of your system. Each microservice realizes;
- Exactly one functionality
- Have a well-defined boundary and API( Application programming interface-used for communication).
- Gets developed and operated by a comparatively small team
Benefits of microservices
- During a microservices architecture, services are fine-grained and thus the protocols are lightweight.
- Services are organized around business capabilities.
- Services are small in size, messaging-enabled, bounded by contexts, autonomously developed, independently deployable.
- This makes the appliance easier to understand, develop, test, and become more resilient to architecture erosion tons easier to implement and understand a smaller application that provides one functionality, instead of building an outsized application that does everything.
- That accelerates development and makes it tons easier to adapt the service to changed or new requirements.
- Since microservices are implemented and deployed independently of each other, i.e. they run within independent processes, they’re going to be monitored and scaled independently.
- You would wish to stress tons less about unexpected side effects of a seeming chicken feed, and you will specialize in the event task at hand.
- It also allows you to scale more efficiently.
- And albeit you merely use a little a neighborhood of the monolith, you still need to acquire additional resources for the other, unused parts but during a cloud environment, you purchase the usage of hardware resources.
Challenges Using Micro Services
- There is a saying: There’s no such thing as a Free Lunch. Microservices remove some complexity from the services themselves and provide better scalability, but you’re now building a distributed system.
- That adds a lot more complexity on the system level.
- To make sure that dependent services find each other and communicate efficiently it’s a challenging task when a number of micro-services are many.
- We also need to handle slow or unavailable services so that they don’t affect the complete system.
- The distributed nature of our system also makes it a lot harder to monitor and manage our system in production.
- Instead of a few monoliths, we now need to monitor a system of microservices and for each service, there might be several instances that run in parallel.