Resilient Transactions

It is very desirable for microservices to embrace the ACID 2.0 paradigm, where transactions can come in out of order, and the end result will still be in the same state as if the transactions were processed in the correct order. Imagine you have an update transaction come in for a Person’s name.  If that … Read more

Spiderwebs in the Corner

We recently came across a piece of our application that hasn’t been working for two years or more.  I would say, that since it hasn’t been working for so long, and obviously it hasn’t been a high enough priority to fix, that we should just remove that crusty old code.  However, instead of doing that, we are … Read more

Versioning Microservice APIs

Let’s start with a simple question.  Do you need to version microservice APIs?  I think the near-unanimous answer here is ‘yes’.  You need to version microservice APIs, because each service is independent, you can’t update all the services that call a certain API all at once.  You need a mechanism to introduce some new functionality, … Read more

A Clean Workspace

In woodworking, a project will not come along very quickly if you constantly have to pause the current project you are working on in order to clean up the next tool you need to use, ore pick up remnants of the last project from the workbench.  If your workspace isn’t clean, it will take you … Read more

Tearing Down the Straw Man

I have been watching many salesmen lately, and I realize that all they do is construct a Straw Man argument for you as to why you should not buy their product, and then they tear down that Straw Man right in front of you, hoping you believe their argument and consequential dismantling of it.  The good salesmen … Read more

Bring the Experience to the Customer

For many years, the question for web designers was always “what can we do to bring users to our site”. Now, the question has become “how do we take our (app/experience/thing customers will pay for) to our customers”. These are the integrations with chat bots, home speaker integrations, mobile notifications, etc. It is the idea … Read more

Using the Right Tool

One weekend, I had to cut down a tree in our yard. So I got out the chainsaw and went to work. It was very slow going, a little bit of saw-dust and a lot of smoke everywhere. My chainsaw wasn’t cutting well at all. The teeth on the chainsaw blade were not sharp at … Read more

Sizing Up Microservices

How big should microservices be? Should their size be based on lines of code? Developer hours? REST endpoints? Data entities? About the only real solid guiding principle you can find is “it should do one thing, and do it well.” But what is that “one thing” for a microservice? Is it that it can handle … Read more

Mocking in Groovy

In unit tests, sometimes you just need to do some simple work with a mock.  Something like setting an identifier on an argument that is passed in to the mock. Imagine a service interface where this is one of the methods: Now imagine that on that same interface there are many other methods that you … Read more