The Gartner iPaaS magic quadrant for 2023 is out (https://www.gartner.com/doc/reprints?id=1-2BSDJCBH&ct=221122&st=sb) and while we shred the infographic and debate the best in breed etc, one key observation from someone in the integration domain has been that we have become quite good at building and delivering system integration solutions through mature platforms, tools and processes The advent…More
Modernising Monolithic Systems: Applying Domain Driven Design (DDD) to Monolithic Database Refactoring
Data stores within an organisation can over time grow in complexity especially as engineers/database admins and business look to use the same data store in multiple ways for cost-effective solutions. We find that organisations optimise for cost by using common data stores to add on new extensions in the form of new tables, relationships, attributes…More
Accelerate Complex Delivery with Platform APIs & Orchestration
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
Microservices Boundaries and Cross-Cutting Solutions Problem: How do we stay bounded?
One huge problem with building microservices is how they are used in new solutions without gradually turning the shiny, separated, autonomous services into slow-to-change, hard-to-regression test, inter-dependent big balls of mud There is this temptation to wire things up and make changes to expand our services to fit a new solution, however this can quickly…More
Strategic DDD Outcomes: Top Domain model to Team Topologies
Over the past couple of years, I have been working with architecture and engineering teams to teach and apply strategic and tactical domain driven design. I will come back with lessons learned in a future post, but this one covers the outcome of these teaching plus consulting engagements for strategic DDD Remember, strategic DDD is…More
Technology Services Modernization (Part II): Why design-first approach with DDD delivers greater value
In the previous post (here) we looked at 3 ways to modernize technology services and concluded the best strategic approach was to start with the why, map business domains, capabilities, services and modernize through good internal practices that make software teams aligned to capabilities, autonomous and therefore nimble to respond to new challenges Great! How…More
Business Services and APIs: 101
Business oriented service design and implementation is becoming increasing popular with organisations looking to move beyond traditional systems integration led services. This top-down approach needs to start with business domain owners and their processes, documenting the core and supporting business capabilities they present to their customers so that they can be analysed to produce technology…More
How does having an API Catalogue accelerate Business Integration?
An API Catalogue is a view of your business products expressed as technical services as visible to internal and external consumers to facilitate fast and self-service integration to deliver richer value to end customers and deliver it faster An API Catalogue lets your customers view and interact with your product brouchre A catalogue item can…More
Mapping Business Capabilities to Services
One of the key questions around API strategy we get asked is how do we map business capabilities to services. An approach is to use domain driven design and build domain services, in this post we will look at what this looks like Capabilities Businesses domains offer capabilities. Given domains are classified into core, supporting…More
Software Monoliths
Companies need to modernize software and engineering to scale to reach new customers. Many find it increasingly hard to deliver outcomes safer and faster in a rapidly changing business ecosystem because of internal complexity from existing practices, systems and integrations. One cause is “shared” collaboration of resources between teams and in this post we explore these monoliths and monolithic practices 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
Coordinating Distributed Software: Choreography vs Orchestration
There are 2 ways of coordinating distributed systems and services to achieve an end-to-end outcome More
Design-first API Contracts: Key to accelerating Integration and Improving API Quality
Service specifications along with developer documentation are key to turning your APIs into products. A well written and standards based API contract can not only make it faster and easier to integrate but also to test and deliver a solution faster Good API contracts help improve key software delivery metrics such as lead time through…More
10 steps to DevSecOps: Engineering your software better
My top-10 things to do when starting out on a project to improve code quality and security through DevSecOps About 7 years ago I was frustrated with the industry practices where it took us 6 months to provision environments, projects were delayed due to environment issues, manual deployments (UI based code uploads), long deployment times…More
Technology Service Modernization (Part I): 3 Approaches to Modernization
Welcome to 2022. While I was in a blogging hiatus, my time was spent closing out conversations with business and technology leaders looking to modernize their technology solutions as they were looking to adapt them new market needs and challenges. I thought Web3.0 was the big buzz word but it looks like Modernization is the…More
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
Sustainability as a key Software Architecture Choice
As an architect my day-to-day involves helping my clients solve wicked problems while delighting their customers and staying profitable and sustainable as a business. I do this by obsessively reasoning about software architecture and design choices. As an architect circa 2021 growing climate crisis has me concerned especially as the software industry and the solutions…More
The Domain Stories Series: Search Story
A common story we often hear is related to searching for information. This is a powerful capability to provide through your technology services as the user is keen to interact with your offering and the richer and performant it is, the more value the consumer draws from this. Google it! When analysing the search story,…More
Domain Model != Data Model
One of the smells when practicing DDD (Domain Driven Design) is when you are presented with a Data Model (extracted from an existing set of tables or constructed through rigorous but confirmed hypotheses) and asked to consider this as your Domain Model Domain Model is not the same as a Data Model This is an…More
DDD Anti-patterns: 5 things we get wrong with Domain Driven Design in practice
As a software architect I have been using various design techniques including Domain Driven Design (DDD) which has been incredibly useful for building APIs and Microservices and for strategic architecture consulting engagements requiring discovery/mapping of socio-technical organisation structure and in documenting an API strategy I have also been training architects across organisations to understand and…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
Ubiquitous Internet of Things: How ESP32s are changing the game
I have been tinkering with IoT devices for over 10 years now, starting with micro controllers with ethernet ports (later bulky wifi-shields) that were cumbersome to scale out and put onto things. For a true internet of things, we needed low-cost, connectivity enabled, sensor packed devices we would attach to things easily and then read…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
Single view of Customer from Distributed Software: Part II
In the previous post we discussed how to identify some of the challenges around a single view of the customer. In this post we look at some of the ways we manage customer contacts in the enterprise systems and relate them to Domain Driven Design context mapping Patterns 1. Separate ways: We all have our…More