A monolith in software architecture a term used to describe some service that is large, complex and shared across different business functionalities. Changing any aspect of this can be daunting not just from an engineering standpoint but from a testing, delivery and release standpoint as well As teams look to decompose monolithic software into domain…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
3 Key Asynchronous Communication Patterns: Ways to talk offline
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, is non-blocking and you can make it reliable through message persistence, incremental…More
Domain Service Architecture: The good, bad and ugly
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
Why Experience APIs are key to taking your business public
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
How to build APIs with the right abstraction: Lessons in being less leaky
Leaky abstractions can be bad, especially in the context of APIs we expose to the world. Here are some thoughts on how to be less leaky and achieve more self-service with the APIs you build Modern software is built over the network with systems hooked-up either privately within the internal enterprise eco-system or with a…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
Choosing the right tool for Stateful orchestration: Embedded Process Engines vs Serverless Step Functions
Just based on recent experience, I am going to put this out there – AWS Step Functions are great for technical state machines which move from one-activity to another but not really designed for stateful process orchestration and definitely not for implementing SAGA Serverless Step Functions from AWS or BPMN Engines? When building microservices, the…More
Identifying and Computing hidden complexity within your distributed systems: Integration Entropy is like Molasses
Hello! This one is going to be short and less formal a post. I want to get these questions out there before they eluded me and then come back later to this post (or another) and answer some of these I have been thinking about how we are putting out more integrated solutions now than…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 and Bounded Contexts By Example: An Insurance
Domain Driven Design is a really good tech A domain can be a business domain at the highest level (e.g LifeInsurance, Vehicle Insurance) or a sub domain within the business domain (e.g Life Insurance Claim, Motor Insurance Claim, Vehicle Insurance Claim etc) Notice some domains are core to your business, i.e. they hold the secret-sauce…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
Microservices for orchestration: How to apply the stateful process adapter pattern
What are stateful microservices? Microservices holding state while performing some longer-than-normal execution time type tasks. They have the following characteristics They have an API to start a new instance and an API to read the current state of a given instance They orchestrate a bunch of actions that may be part of a single end-to-end…More
Observability in distributed systems: Monitoring, Logging, Auditing and Historical analysis
“Knowing the quality of your services at any given moment in time before your customers do and using this information to continuously improve customer experience is part of modern software delivery and critical to the success of organisations” In this post, we present why it is important to observe and manage our systems and solutions proactively and…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