Sagas and distributed transactions

Controversial opinion I haven't ever had any useful discussion about sagas with anyone at any company I've ever worked with. I've found the people who bring sagas up and make a song and dance about them, are generally the same people who tend to over-engineer solutions and have difficulty 'keeping it simple'. I'd like to … Continue reading Sagas and distributed transactions

How to Design Decoupled Systems

Decoupled architecture is one of the biggest enablers of agility, speedy delivery, and high quality; yet many software designers have limited experience of what decoupled looks like. I hear people talk about different amounts of indirection and API layers, without understanding that these don't inherently decouple. I've been confronted with the insistence that because there's … Continue reading How to Design Decoupled Systems

Open vs Closed Distributed Processes

Distributed processes fall into two categories: open and closed. Open processes are started in one service and will finish in another after passing through any number of services in between. Closed processes are driven by one particular service from start to finish, and while other services may be involved, the originating service is in overall … Continue reading Open vs Closed Distributed Processes

Microservices with AWS Lambda

I've been building microservices for several years. I've mostly used DotNet, DotNet Core, and Ruby on Rails to build them, and I've generally deployed them either into AWS EC2, or Azure Service Fabric. I've found most enterprises aren't ready for managing microservices in containers, either in the cloud or their own data centres. Keeping things … Continue reading Microservices with AWS Lambda

Integration Testing Behaviour with Mountebank

Developer's machine > dev shared environment > staging environment > UAT > production. Probably not exactly how everyone structures their delivery pipelines but probably not that far off. It allows instant feedback on whether what a developer is writing actually works with the code other developers are writing. And that's a really good thing. Unfortunately, it misses something... Each environment … Continue reading Integration Testing Behaviour with Mountebank

Going Deep Enough with Microservices

Moving from a monolith architecture to microservices is a widely debated process, with many recommendations and nuggets of advice available on the web in blogs like this. There are so many different opinions out there mainly because where an enterprise finds their main complexities lay depends on the skillsets of their technologists, the domain knowledge … Continue reading Going Deep Enough with Microservices