visit
Individual microservices are only independent and decoupled if they can evolve independently. Isolation is a prerequisite for autonomy. Only when services are isolated can they be fully autonomous and make decisions independently, act independently, cooperate, and coordinate with others to solve problems.This gives each service the freedom to represent its state in any way it wants, and store it in the format and medium that is most suitable. Some services might choose a traditional RDBMS, some a NoSQL databases, some a Time-Series database, and some to use an Event Log through techniques such as and .Also, if synchronous communication is used between the services — even if it is only for a subset of the services — you are introducing strong coupling and are putting yourself in the hands and mercy of the other systems you work with. For example, REST is most often synchronous which makes it not a suitable default protocol for inter-service communication. So asynchronous boundary between services is necessary in order to decouple them, and their communication flow, in time — allowing concurrency, and in space — allowing distribution and mobility. This is a major problem with distributed systems — the complexity of asynchronous communication while some services may not be available. Using it we are moving from the ACID world (Atomicity, Consistency, Isolation, Durability) to the BASE world (Basically Available, Soft state, Eventual consistency).As you can imagine, the deployment of dozens of small services involves much higher overhead than delivering a monolith. Each service requires load balancing, separate CI/CD pipelines, logging, and process monitoring — the same things you would configure once for a monolith. This becomes even more complex and confusing when you have to scale services independently and have different technology stacks. This leads to incredible levels of flexibility, responsiveness, and efficiency, but at the same time, it also comes with huge operating costs in terms of support. However, with the rise of containerization, the advent of k8s and the development of Platform-as-a-Service, creating a reliable and manageable platform for microservices has become very simple. Without al those new tools even a single service can take over entire teams of IT operations specialists.“This is the Unix philosophy: Write programs that do one thing and do it well. Write programs that do one thing and do it well.” — Doug McIlroy
Thank you for reading!
Any questions? Leave your comment below to start fantastic discussions!Check out or come to say hi 👋 on or subscribe to . Plan your best!