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
Category Archives: Microservices
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
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
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
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
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
Raspberry Pi Setup – Part II: IoT API Platform
Intro This is the second part in a series of posts on setting up a Raspberry Pi to fully utilize the Software & Hardware functionality of this platform to build interesting internet of things (IOT) applications. Part-I is here https://techiecook.wordpress.com/2016/10/10/raspberry-pi-ssh-headless-access-from-mac-and-installing-node-processing/ … this covered the following: Enable SSH service on the Pi Connect to Pi without a display or router –…More
Complex Form Evaluation with Drools
Introduction Complex business rules are best implemented using a ‘Rules Engine’. Drools is an open source Business Rules Management Product. See here In this blog we will cover a few basics of using the Drools rule engine, specifically using a Domain Specific Language (DSL) which is a language that is more user focused. The…More
Why is this not an API contract?
Why is this … my Swagger UI, generated from code not a contract? It describes my service, therefore it must be a Service Provider Contract. No? This was a common theme for a few of our clients with mobile/web teams as consumers of enterprise services. Service providers generated contracts, and would sometimes create a contract…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