Microservices & Agile Architecture

Gael-Jurin NKOUYEE
3 min readNov 7, 2021

After many years working on evolution and maintainability of our software architecture, I want to share with you some fundamentals points we found aligned with our vision and practices, from the book of Rajesh R V “Becoming an Agile Software Architect”.

1- Agile means quick and easy “as long as value is continuously delivered” : While reducing BUFD (Big Upfront Design), the microservices are helping to have an appropriate ratio of Architecture upfront according to the MVP (Minimum Viable Product).

How much Up-front ? The Microservices Dimension

2- Principles of Agile Architecture

Architecture needs a collective effort : By using techniques like Shared nothing Architecture and Screaming Architecture in designing and building Microservices, It is easy to empower Collective knowledge, intelligence, and ownership.

Agile Collaboration Triangle

Architecture is continuous : The mix of Intentional Architecture and Iterative Emergent design helps us to address product releasing with an hybrid approach illustrated in the following pictures :

The first one is from an interesting paper describing perfectly the 3 methodologies we are using and the facts that their intersection is what matter the most.

Credits : https://perspectives.mobilelive.ca/blog/value-of-tdd-bdd-ddd

Hybrid practice can refer to many activities depending of the goal and the team. For us It represents the Emergent Design as a practice and below a description.

One of the Microservices Architecture advantage used here is supporting iterative or incremental modernization.

Architecture is lean and efficient : No source of wastage, by using the capability of multiple technology cohabitation. We are combining usage of specialized frameworks and languages as long as they are addressing the technical & business requirements.

Test and Learn Architecture early and often : The microservices Decomposition patterns contributes enough in this part. We have chosen the decomposition by business capability which facilitates the learning path in our organization.

Architecture enables agility : Microservices helps to reduce the blast radius in cases of issues or changes.

3- Microservice as an Agile product

Here is an illustration of the common principles to maintain technical alignment and cohesion.

An Agile product : The Microservice

4- Architecting for Quality with Quality Attributes

Understanding quality is the first requirement as Quality is influenced by 3 forces (Environment, Usage and Business Context). Microservices patterns are good as they are naturally organized in the Systems thinking approach :

Decomposition Patterns -> Design of the service components and service boundaries.

Integration Patterns, Database Patterns -> Design of service components interactions.

Cross-Cutting Patterns, Observability Patterns -> Design of the service components environment and evolving context.

Once the quality attributes have been identified, we can then apply a built-to adapt strategy using some Microservices architecture principles : Scalability, Resiliency, Availability, Flexibility, Auto-provisioning, …

References
[1] Becoming an Agile Software Architect Book by Rajesh R V

[2] https://perspectives.mobilelive.ca/blog/value-of-tdd-bdd-ddd

[3] https://dzone.com/articles/design-patterns-for-microservices

--

--