top of page

Design principles for microservices

Introduction


Every architecture is based on certain design principles and the Microservices are no different. This article is not going to talk about what Microservices is. There are already many articles and blogs to do this. In this article, I will talk about what is needed to create an architecture based on microservices. Let's take a look at some of the design principles that must be taken into account to design applications based on Microservices.


Isolation


The services must be designed to function in isolation. When you divide a monolithic system into a set of services, it is necessary that these services be dissociated from each other, become more cohesive and self-sufficient. Each service must be able to handle its error without breaking the entire application or system. Isolation and decoupling allow the service to recover from the fault condition very quickly. The service's isolation feature has the following benefits: easy adoption of continuous delivery, better sizing, effective monitoring and testability.


Autonomous


Isolation opens the way to autonomy. The services must be designed to be autonomous. Must be cohesive and able to fulfill its function independently. Each service can be invoked independently using a well-defined API (URI). The API, in a way, identifies the service function. The autonomous service must also manage its own data. The most popular term is polyglot persistence, in which each service has its own persistence storage. Autonomy also guarantees resilience. An autonomous service has the following benefits: efficient orchestration and coordination of services, better sizing, communication through a well-defined API, faster and more controlled implementation.


Single responsibility


The service must be designed to be highly cohesive. A single principle of responsibility is when the service only plays an important role. The aspect of unique responsibility is well combined with the term "micro". Micro means, in reality, small, fine and relevant only within your scope of responsibility. The sole responsibility resource has the following benefits: The composition of services is perfect, better sized, reusable, extensible and maintainable.



Bounded Context


How big or small should your services be? Question of a million dollars? Well, the answer is in what is called as principal of Bounded Contextdesign. It is a key standard when creating a DDD (Domain Driven Design) modeling approach. Limited context is all about defining a context in which your Microservices will be providing your services. It is about evaluating its domain model and identifying discrete limits and, consequently, projecting its microservices to make it more cohesive and autonomous. This also means that communication between borders becomes more efficient and their service in a limited context does not have to depend on service in another limited context for many things.


microservices
microservices


Asynchronous communication


When designing discrete limits and designing services with their own delimited context, it is necessary that the service communication beyond the limits be asynchronous. The asynchronous mode of communication naturally leads to a weak coupling between services and allows for better escalation. With synchronous communication, you are blocking a call and waiting for the answer. A service in a blocking state can not perform another task until the response is received and the underlying chaining is released. This leads to network congestion and affects both the latency and the transfer rate. Asynchronous communication can also bring the notion of implementing a well-defined pattern of integration or communication to obtain a logical workflow that involves different services.


Location Independent


Microservices, by design, are good candidates to be implanted in a virtualized environment or Docker containers. With the advent of cloud computing, we can have innumerable service instances that can take advantage of the dynamic sizing environment. Services can be run on multiple nodes in small or large clusters. The services themselves can be relocated depending on the availability or efficiency of the underlying computing resource. You must manage or locate the service independently of the place. Often, different research discovery patterns can be used to consume your service. The customer or consumer of the service does not have to worry about where a particular service is implemented or configured. It only uses some kind of logical or virtual address to locate the service. For more information about the discovery of services, see the article Service Discovery Standards.


Microservices are not a technology, structure or solution. It is an architectural style that provides an approach or methodology to deal with the complex nature of a monolithic application. The approach begins with the principles of previous design that you can use to design the application based on Microservices.



 
 
 

Recent Posts

See All
From Java 8 to Java 11

Switching from Java 8 to Java 11 is more complicated than most updates. Here are some of my notes on the process. Modules Java 9...

 
 
 

Comments


SUBSCRIBE
  • Facebook Social Icon
  • Google+ Social Icon
  • Twitter Social Icon
  • LinkedIn Social Icon
LOCATION

Besant Technologies - Velachery Branch
Plot No. 119, No.8, 11th Main road, Vijaya nagar,
Velachery, Chennai - 600 042
Tamil Nadu, India
Landmark - Reliance Digital Opposite Street

+91-996 252 8293 / 996 252 8294

OPENING HOURS

© 2023 by Prickles & Co. Proudly created with Wix.com

bottom of page