The Evolution of AI-Led Engineering: From Auto-Complete to Spec-Driven Development

AI is reshaping our software engineering practice in successive waves, it started with auto completion and predictive text, we the drove into prompt engineering, and more recently into context engineering, and is now we are evolving/narrowing towards spec-driven development to create new software and understand and modernise legacy software with greater accuracy, speed and higher…More

Beyond CRUD: Choosing the Right API Style

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

We have worked with Integration and Data platform owners and are observing their needs converge as business owners are looking beyond the initial integration usecase to more real-time business analytics and insights to respond to the market pressures, customer needs, risks and compliance imperatives faster It is with this need we see Chief Data Officers…More

Java Tools and Tips

Here is the latest in Java tools and libraries we have been haing through 2024 and into 2025. JaCoCo and Gatling have been staple as we continue to shift left with QA, we are yet to do Mutation testing in anger Tools: Architecture: ArchUnit: A library for checking the architecture of Java codebases. Documentation: https://www.archunit.org/userguide/html/…More

Streaming Design Patterns

In the previous post, we compared streaming, messaging, and orchestration, delineating their distinct roles and applications in modern data architecture. Building on that foundation, this post zeroes in on streaming and its design patterns. Streaming, a critical component in handling real-time data, is not a monolith; it encompasses various design patterns each suited for specific…More

Understanding Streaming Concepts for Microservices

The evolution of data processing in microservices architecture has brought to the forefront three pivotal concepts: streaming, messaging, and orchestration. Each plays a unique role in the way modern applications handle data and interactions. This post is dedicated to demystifying these concepts, offering insights into their functionalities and applicabilities As microservices continue to reshape the…More

10 Lessons from Building a Full-Stack SaaS Product: It was fun!

I have always been passionate about rapidly solving problems for businesses, so when I learned of the challenges my friend’s business was facing due software constraints, I was inspired – especially since I was on holidays I had 2-weeks of break during my 1.5 month long vacation where socialising and travel would be low. I…More

Kubernetes vs. Serverless: Choosing the Right Architecture

As we journey through our comprehensive series on Kubernetes, we’ve explored its foundational aspects, intricate design patterns, and its pivotal role in the realm of containerization Now, as we approach the final chapter of our series, we turn our attention to a critical comparison – Kubernetes versus Serverless computing. This exploration is key for anyone…More

Mastering Containerization: Kubernetes at the Forefront

As we continue our exploratory series on Kubernetes and its pivotal role in shaping microservices, we’ve covered its foundational aspects and essential design patterns. Now, we delve into the details of containerization – the very heart of Kubernetes. This post will illuminate how Kubernetes is not just facilitating but mastering the art of containerization, offering…More

Kubernetes for Developers: Streamlining Microservices Deployment

Introduction In our ongoing series exploring the pivotal role of Kubernetes in microservices, we have unearthed its foundational significance and delved into the essential design patterns. Continuing this journey, we now turn our focus to developers. This post is crafted for developers aiming to streamline their workflow in the microservices domain. With Kubernetes, the complexities…More

Design Patterns in Kubernetes: Blueprint for Robust Microservices

Introduction In the previous post we introduced Kubernetes and containerization for microservices. In the world of microservices, Kubernetes emerges not only as a platform but as a harbinger of design patterns that revolutionize how we build, deploy, and scale applications. In the second post of the series, we talk about Kubernetes Design patterns as there…More

Unraveling Kubernetes: The Gateway to Efficient Microservices

Kubernetes, often hailed as the cornerstone of modern microservices architecture, stands as a beacon of efficiency and scalability in the ever-evolving landscape of software development. In a series of posts I will be describing key concepts and comparing with other technologies for microservice engineers The posts will cover Introduction In this digital era, where rapid…More

Is Your Software Release Strategy Up to Date? Feature Toggling vs Direct Release

Feature toggling is a dynamic method to manage software features, allowing developers to turn features on or off without deploying new code. This technique provides flexibility in controlling the availability of features in your application, especially useful in a continuous delivery environment. Why Use Feature Toggling? Feature toggles offer several benefits: Releasing to Specific IPs…More

Choosing the Right Architecture: Comparing Serverless, Containers, and Platform-as-a-Service (PaaS) for Microservices Applications

As 2023 draws to a close, the world of Microservices continues to evolve rapidly, bringing with it an array of buzzwords and technologies that are as fascinating as they are complex. You’ve likely encountered terms like ‘Serverless’, dabbled in the dynamic world of Containers, and casually mentioned ‘K8s’ and ‘Container Registry’ in tech discussions. Even…More

Quality Distributed Solution Architecture: Part 1 – Static and Untested Architecture drives Outcomes in Current State

In the rapidly evolving landscape of technology and business needs, solution architecture plays a pivotal role in aligning IT strategies with business objectives. However, the prevailing approach to solution architecture and design is notably static, characterized by upfront planning and decision-making. In this 3 part series, we explore the current processes for solution design, their…More

Mastering the Dual: Strategic Data Synchronization in Domain API Architecture

Introduction: In the intricate tapestry of information systems, Domain APIs emerge as critical enablers of seamless read, command, and event processes. As we continue our exploration of digital transformation in different industry sectors (with insurance domain as our common example), it’s imperative to address the complexities that arise when multiple systems—old and new—coexist, particularly when…More

Beyond Read Stores: Handling Commands and Events in Mature Domain APIs

Introduction: Domain APIs play a critical role in integration, offering a single point of aggregation for a common view of queries, commands, and events. Domain API implementations can often be poor especially when they are pass-through with no domain logic or just providing pure “read stores”. In this post we talk about how to amplify…More

Navigating the Digital Shift: A Playbook for Insurance System Transformation

Introduction As the digital age reshapes industries, the insurance sector stands at the forefront of a significant transformation. Leading this charge, I am steering a digital transformation program designed to blend the rich heritage of traditional insurance systems with the efficiency and innovation of modern cloud-based technologies. This is a journey of integration and evolution,…More

The Power of Adapters in Service Architecture:

When building a service architecture, understanding the significance of each component is paramount. Among these components, the Adapter stands out as an element that often prompts contemplation and inquiry. Questions arise: “Is this additional layer truly necessary?” “Does it introduce undue complexity?” “How does it fit within the overarching structure?” Drawing from extensive experience and…More

OData vs. REST: The Integration Dance with DataHub

In our earlier post, we delved deep into how data hubs, especially when organized by business domains, are revolutionizing the way we handle data. We also touched upon the challenges faced when integrating with a data hub and how consumers ingest this data. If you missed it, give it a read here. Today, we’re back…More

Signal Over Noise: Best Practices in Event-Driven Architecture Design

As event-driven platform take off ✈️ with modern integration practices such as data-in-motion, organisations are integrating significantly large number of data and event streams 📈 without deliberate and up front design these growing streams are contributing to noise, complexity and coupling leading to higher implementation (CAPEX) and operating (OPEX) costs. In this post we look…More

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

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

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