What is composable architecture? Composable architecture is a software design pattern that allows you to build loosely coupled applications by composing independent services together. “With a composable stack, you have the freedom to test and adapt as you progress,” as stated by a digital solution expert, Uniform. In addition, it can help your organization address more complex problems while reducing the cost and time needed to develop new features.
Bounded Contexts are a key component of composable architecture. They are one way to organize the model of your system and avoid over-engineering. Bounded Contexts help you define what belongs in a single, cohesive context and what doesn’t belong. This helps you keep each component focused on its job, making it easier to reason about them individually.
Service Collaboration and Communication
Service collaboration and communication are the ability to combine services. It’s the ability to communicate with other services or integrate them. In fact, service collaboration and communication enable you to do all three: combine, communicate with and integrate—which can be done in sequence or concurrently.
Integration Events and Messaging Infrastructure
An integration event is a request to create, update or delete something in your system. These could be requests from a user, or another system might trigger them. For example, you may have integration events that correspond to a user clicking “Add” on an order page or when the IBM Watson cognitive services platform sends a message with some new data.
Integration events are sent through a messaging infrastructure and then processed by code called handlers which are responsible for handling messages that match certain criteria (e.g., only handle messages when they come from specific services).
The handler determines which bounded context should be invoked to process the event further and which services it should call to do so if necessary! This can be done in a number of ways depending on how you’ve designed your architecture. Still, ultimately, it will involve using service discovery tools like Consul so that you don’t need hard-coded references anymore.
Domain events are a way of representing business events. Domain events have been used for decades to model the behavior of a system in a way that is independent of its implementation. They are effective data structures describing something that happened in the system, such as an order being placed or an account being created.
Because they’re not tied to any particular mechanism or programming language, domain events can be implemented using an object-oriented design pattern or via a relational database table. However, if you decide to use domain events as part of your composable architecture, there are some things you need to keep in mind:
External Systems Interactions
External systems are the other systems that a system interacts with. They can be internal or external to your organization, and they may live within the same technology realm, or they may be in different realms. Examples of common external systems include:
- Employee data repository
- Customer relationship management (CRM) system
- Enterprise resource planning (ERP) application
- Supply chain management software
In this article, composable architecture is introduced and how it can help you achieve great things. Now you have a better understanding of what composable architecture is, why it matters, and how to get started with it.