Member-only story
Resiliency in a nutshell. Part: 2 Traditional Engineering — Architectural patterns
All of my stories are free. If you aren’t a member, you can read it here.
Part 1: Introduction
Part 2: Traditional Engineering — Architectural patterns (this)
Part 3: Traditional Engineering — Programming patterns
Part 4: Traditional Engineering — Testing strategies and coding standards
Microservices
Microservices are an architectural pattern that structures an application or service as a collection of smaller, loosely coupled services that operate together to achieve a common goal.
Because they work independently, they can be added, removed, or upgraded without interfering with other parts of the bigger application.
Although I am not a fan of the complexity that often comes with deployments and managing infrastructure for a multitude of service, we can look at this pattern for dividing our application into smaller bounded contexts. Although Bounded contexts typically are used when using/talking about DDD, I think the nomenclature fits very well intro overall architecture as well. I am quite fond of thinking about application architecture in terms of Bounded Contexts, rather than “microservices”, which to me at least, has a notion of “make the smallest possible building block” which is not always the best choice. The below Benefits fits well either way however.
Benefits
- Easier deployment
- Testing
- Improved productivity
- Flexibility
- Scalability
Disadvantages
- Requires seamless method of communication to operate as one larger application.
- Requires deeper knowledge about application states for scalability.
While microservices have become a popular approach to building distributed systems, there are situations where it can be beneficial to think of service architecture in bounded contexts rather than microservices. Bounded contexts provide a higher-level abstraction that defines the scope and boundaries of a particular domain (problem space), allowing for a more cohesive and aligned service architecture. Thinking in bounded contexts can help ensure that services are designed and implemented based on the…