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

Stubs, Mocks, Fakes, Dummy

What is the difference between a Stub, a Fake, and a Dummy?  Well, as a refresher from Gerard Meszaros’s Test Double Patterns and Martin Fowler’s Mocks Aren’t Stubs: Mock – Sets expectations on how it is used by the sut Stub – Provides canned responses Fake – Has a real, but light-weight ‘shortcut’ implementation Spy – Records information about … Read more

Making fluentd, journald, Kubernetes, and Splunk Happy Together

The Requirements Our requirements are simple.  We run microservices in Docker, using Kubernetes as our deployment platform.  We want all of our logs in Splunk.  So the requirements are simply to take the logs from our microservice containers, and the logs from Kubernetes itself, and the logs from the host OS, and ship them to … Read more

Blogger Import

I am scheduling out the posts that I have imported from Blogger at a set cadence. This gives me time to do some quick edits and updates to many of the posts, as well as build up a backlog of new posts to schedule out for the future.