Tuesday, May 11, 2021

A maturity model for microservice architecture goals and benefits

A microservice is an independently deployable component of bounded scope that supports interoperability through message-based communication. Microservice architecture is a style of engineering highly automated, evolvable software systems made up of capability-aligned microservices.

From these comments, it is clear that microservice applications share some important characteristics:

  • Small in size
  • Messaging enabled
  • Bounded by contexts
  • Autonomously developed
  • Independently deployable
  • Decentralized
  • Built and released with automated processes


Microservices are ideal for big systems

The common theme among the problems that people were facing was related to size. This is significant because it highlights a particular characteristic of the microservices style—it is designed to solve problems for systems that are big. But
size is a relative measure, and it is difficult to quantify the difference between small, normal, and big. You could of course come up with some way of deciding what constitutes big versus small, perhaps using averages or heuristic measurements, but that would miss the point. What the architects at this gathering were concerned with was not a question of the size of the system. Instead, they were grappling with a situation in which the system was too big. What they identified is that systems that grow in size beyond the boundaries we initially define pose particular problems when it comes to changing them. In other words, new problems arise due to their scale.

Microservice architecture is goal-oriented

Something else we can derive from James’ recollection of the day is the focus on a goal rather than just a solution. Microservice architecture isn’t about identifying a specific collection of practices, rather it’s an acknowledgment that software professionals are trying to solve a similar goal using a particular approach. There may be a set of common characteristics that arise from this style of software development, but the focus is meant to be on solving the initial problem of systems that are too big.

Microservices are focused on replaceability

The revelation that microservices are really about replaceability is the most enlightening aspect of the story. This idea that driving toward replacement of components rather than maintaining existing components get to the very heart of what makes the microservices approach special.

Benefits
  • Agility allows organizations to deliver new products, functions, and features more quickly and pivot more easily if needed.
  • Composability reduces development time and provides a compound benefit through reusability over time.
  • Comprehensibility of the software system simplifies development planning, increases accuracy, and allows new resources to come up to speed more quickly.
  • Independent deployability of components gets new features into production more quickly and provides more flexible options for piloting and prototyping.
  • Organizational alignment of services to teams reduces ramp-up time and encourages teams to build more complex products and features iteratively.
  • Polyglotism permits the use of the right tools for the right task, thus accelerating technology introduction and increasing solution options.
  • Greater efficiency in the software system reduces infrastructure costs and reduces the risk of capacity-related service outages.
  • Independent manageability contributes to improved efficiency, and also reduces the need for scheduled downtime.
  • Replaceability of components reduces the technical debt that can lead to aging, unreliable environments.
  • Stronger resilience and higher availability ensure a good customer experience.
  • Better runtime scalability allows the software system to grow or shrink with the business.
  • Improved testability allows the business to mitigate implementation risks.


No comments: