Enterprise integration solutions these days tend to span multiple platforms across Cloud and On-Premise locations to deliver large complex programs. The management of these platforms needs to be fast, precise and continuous to ensure there are no bottlenecks to delivery as the solution development flows through its lifecycle This means creating environments across multiple platforms,…More
Category Archives: distributed systems
On Measuring Software Design
Good design leads to good engineering quality and products that are useful, fun to use, simple, efficient and safe. But what is a good design? Is it purely subjective and opinionated or are there specific attributes of a design that lend themselves to introspection and measurement? Why measure? Measuring helps us quantify something at a…More
Iterative Domain Model Design: How to stay autonomous
One key question that I hear with Domain Modelling is how do you know if you have your transaction boundary right (so that you build the right aggregate)? Hidden in this is another question – what if we got our domain aggregate wrong? We can take this further and ask In an agile world, given change…More
Domain Driven Design (DDD): Core concepts and Enterprise Architecture
If you are building or designing APIs, Microservices or integrating systems then Domain Driven Design (DDD) offers a valuable design technique for mapping business domains to build software services of value Using DDD is incredibly useful when designing services because it helps you rationalise the granularity of your software, the ownership boundaries and model interactions…More
DDD Context Mapping By Example: Customer Management and Customer 360
In the continuation from the previous post, here we look at how to do context mapping from sample real-world examples. In this post we look at how to model Customer Management from a customer support perspective and how Customer 360 would look like as a context map With this post, I hope to give you…More
DDD Context Mapping by example: Policy Management
DDD context mapping can be confusing without real-world examples. In this post we will model sample implementations for two scenarios using bounded context maps and learn to analyse the relationships from the maps. With this post, I hope to give you a fair idea of how to do apply DDD into build good distributed features…More
Capturing the essence of your software with diagrams: Techniques for the engineer, designer and architect
Pictures are “worth a a thousand words” and in the software industry they can save time and help inspire the collective imagination A good picture about a software system at right level can convey the right details. It is about what you leave out as much as what you put in and structure – there…More
Messaging, Events and Data-in-Motion: Asynchronous communication patterns
When integrating systems we often end-up writing asynchronous messaging interfaces for mostly system-to-system communications. This conversation technique is great because it does not require the sender and receiver to stay connected to each other in a session at the same instance in time, it is non-blocking and often brokered (like the post office which brokers…More
Single Entity, Multiple Master: Manage Complexity with Domain Services Integration Pattern
We often think of enterprise systems as the master systems for one or more enterprise data entities. We believe the lifecycle of the entity is contained and managed by users in a system in an encapsulated and convenient manner. However, there are scenarios where multiple systems master an entity and this is often because they…More
From Project to Product Teams: Implementing the Inverse Conway Move for better Software
Modern software engineering techniques within organisations deliver “distributed features” using agile techniques. These features are distributed across different systems and integrated to provide an end-to-end experience. Traditional project delivery brings in members from different system oriented teams to deliver these features in a loose and ad-hoc fashion and dis-bands the team after a project is…More
Coordinating Distributed Software: Choreography vs Orchestration
There are 2 ways of coordinating distributed systems and services to achieve an end-to-end outcome More
Tackling complexity: Using Process maps to improve visibility of integrated system features
“Entropy always increases “– second law of thermodynamics Enterprise systems are similar to isolated physical systems, where the entropy or hidden-information always increases. As the business grows, our technology footprint grows as new systems are implemented, new products and cross-functional features are imagined and an amazing network of integrations emerge Knowing how information flows and…More