Microservice betewen reality and fiction

Although the term “microservices” has likely been used in various forms for many years, its association with a particular way of building software stems from a meeting attended by a handful of software architects. This group identified several commonalities in how a particular set of companies created software and gave it a name.

Monoliths vs. Microservices

A monolithic application is built as a single unit. Enterprise applications are built in three parts: a database (which typically includes multiple tables in a relational database management system), a client-side user interface (composed of HTML and/or JavaScript pages running in a browser), and a server-side application.

In contrast, microservices capabilities are officially expressed with business-oriented APIs. They encapsulate a core business capability and, as such, are valuable assets for the business. The implementation of the service, which may involve integrations with recording systems, is completely hidden as the interface is defined solely in business terms.

Reuse and Business Longevity

The same service can be reused in more than one business process or across different business channels or digital touchpoints, as needed. Dependencies between services and their consumers are minimized by applying the loose coupling principle. By standardizing contracts expressed within business-oriented APIs, consumers are not affected by changes in the service implementation.

The World of Microservices is Different

Instead of having a process engine or ESB controlling a small number of large services, we have many small services that can potentially send and receive messages or respond to events from other services. It’s more like a web. A message or event initiating a particular service could trigger the exchange of several hundred messages between microservices before the initial request is considered complete.

Microservices are Ideal for Large Systems

The common theme among the problems people faced was related to size. This is significant because it underscores a particular feature of the microservices style: it is designed to solve problems for systems that are large. But size is a relative measure, and it’s hard to quantify the difference between small, normal, and large. You could of course find a way to decide what constitutes large versus small, perhaps using averages or heuristic measures, but that would miss the point. What the architects at this gathering were concerned about wasn’t a matter of the size of the system. Instead, they were addressing a situation where the system was too large. What they identified is that systems that grow in size beyond the limits we initially define pose particular problems when it comes to modifying them. In other words, new problems arise due to their scale.

Microservices Architecture is Goal-Oriented

Microservices architecture is not about identifying a specific collection of practices, but it’s a recognition that software professionals are trying to solve a similar goal using a particular approach. There may be a set of common characteristics that result from this style of software, but the focus is on solving the initial problem of systems that are too large.

Microservices are Reuse-Oriented

The revelation that microservices are really about replaceability is the most enlightening aspect of the story. This idea that driving towards replacing components rather than maintaining existing components lies at the very heart of what makes the microservices approach distinctive.

How Microservices Can Effectively Address Business Opportunities

Microservices offer several advantages that enable them to effectively and quickly address business opportunities:

  • Modular and Scalable: Microservices allow for modular development, enabling teams to work on different parts of the system independently. This modularity also makes it easier to scale specific parts of the system as needed.
  • Agility and Speed: Due to their small size and loosely coupled nature, microservices enable rapid development, deployment, and iteration. This agility allows businesses to respond quickly to market changes and customer demands.
  • Flexibility and Innovation: Microservices architecture encourages innovation by allowing teams to experiment with new technologies and approaches within their service boundaries. This flexibility enables businesses to stay ahead of competitors and adapt to evolving market trends.
  • Fault Isolation and Resilience: Microservices are designed to be resilient to failures. If one service fails, it does not necessarily impact the entire system, as other services can continue to function independently. This fault isolation ensures that critical business functions remain operational even in the event of failures.
  • Enhanced Customer Experience: By breaking down complex applications into smaller, specialized services, microservices architecture enables businesses to deliver more personalized and responsive customer experiences. This can lead to increased customer satisfaction and loyalty, ultimately driving business growth and profitability.
 

Leave a Reply

Your email address will not be published. Required fields are marked *