Introduction Most engineers begin their API journey with CRUD. It teaches how to expose resources, wire endpoints, and push data in and out. But in production systems, APIs do more than shuttle JSON: they enforce contracts, define system boundaries, and dictate performance envelopes. The style and protocol you choose for an API ripple through developer…More
Category Archives: API
Reviving the Data Hub Strategy: Why Integration matters in Data Management
The Gartner iPaaS magic quadrant for 2023 is out ([1]) 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 Systems: Applying Domain Driven Design (DDD) for modern software re-achitecture
In this post we focus on modernisation focussed on monolithic databases 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…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
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
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
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
Domain Service Design and Patterns
Domain services implement core logic for a business domain and are a relied upon by experience and consumer services. Domain services can be self contained and store the business logic and state or rely on an external provider system (translating from a “raw system format” to a “canonical” domain format) In this post we look…More
Building strategic public and partner API experience: The power of experience adapter and an abstraction layer
As organisations look to take their offerings to the world outside for specific customers, partners or general public and grow their business, they must balance the risk of opening the door to internal mission-critical systems vs value provided. These offerings also must deliver the right experience, requiring an abstraction over the internal organisation services to…More
Salesforce Integration: Context and Patterns
Integrating with Salesforce be in a Marketing or Customer management context is the norm these days. Salesforce offers a lot of flexibility for information exchange, storage and for capturing events on change This post lists the interaction patterns we observe with Salesforce, the usage contexts, issues and best-practise Salesforce Inbound Patterns How do we create…More
Common Service Caching Patterns
Caché implies to hide something. In a technology context this is “some service hides some data for a period of time (minutes to years)” A cache is a bit of information we stash away to better serve the clients using our service. Some of the questions cache implementers face are: Cache expiry and invalidation Mechanism…More
The difference between Open APIs and an Open API Specification
RESTful APIs can be internal (your company’s only) or public facing (Twitter). Thus internal APIs are called “Private APIs” and open to the public APIs are called “Open APIs” Now, while building an API accelerator for our clients I was asked by a well meaning colleague if this was an Open API; the intent was…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
Domains, Sub-Domains and Bounded Contexts: Explained with example from industry
The Domain Driven Design (DDD) book and community use the language of Domains and Bounded Contexts. Often there is confusion around what is a Domain, Sub-Domain, Bounded Context and how do we tell the difference between one or other when we are in the trenches. This confusion can lead to poor design where our domain…More
Observations in building Domain oriented services: How to think about building the right service for your enterprise
APIs are the abstractions over technical services. Good APIs mirror strategic thinking in an organisation and lead to better customer experience by enabling high-degree of connectivity via secure mechanisms Too much focus is on writing protocols & semantics with the desire to design good APIs and too little on business objectives. Not enough questions are…More
A Pandemic, Open APIs and Citizen Science: Its 2020 baby!
Human societies have been hit by pandemics through the ages and relied on the central governing authorities to manage the crisis and disseminate information. I believe this time around with COVID-19, our societies have access to more information from our governments because we have the internet If this pandemic is an evolutionary challenge, then our…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
History of web services: Monolith to Microservices
If you have struggled with decisions when designing APIs or Microservices – it is best to take a step back and look at how we got here. It helps not only renew our appreciation for the rapid changes we have seen over the past 10-20 years but also puts into perspective why we do what…More
De-mystifying the Enterprise Application Integration (EAI) landscape: Actors, terminology, cadence and protocols
Any form of Enterprise Application Integration (EAI) [1] work for data synchronization, digital transformation or customer self-service web implementation involves communication between the service providers and service consumers. A web of connections grows over time between systems, facilitated by tools specialising in “system-integration”; this article covers how the clients, services and integration tools communicate and…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
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
Systems Integration Design: Picking the right patterns and building a robust solutions
Systems Integration is key to building good distributed solutions as software modules are spread across network within and outside the organisation. Knowing where we are building a solution, the key requirements for interaction, data, consistency etc can help pick the right integration patterns Here is my list of what I look for when integrating systems…More
Microservices with Docker and Spring Boot
This guide is for someone interesting in quickly building a micro-service using the Spring Boot framework. Works great if you have prior JAX-RS / Jersey experience Step-by-step guide Add the steps involved: Create a Maven Project Final Structure Pom ( Attached here ) Include Spring Boot Dependencies in your pom Parent Project <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>…More
API Performance Testing with Gatling
The Problem “Our API Gateway is falling over and we expect a 6-fold increase in our client base and a 10-fold increase in requests, our backend service is scaling and performing well. Please help us understand and fix the API Gateway” Tasks It was pretty clear we had to run a series of performance tests simulating…More