Event-driven microservices with Kafka
Near the end of 2020 I started working at Tucows, and at Tucows our software
stack is largely backed by Kafka. The closest thing to event-driven development
I have worked with before was
NOTIFY in Postgresql so this was quite the
learning experience. I have had a bit of experience working with microservices
before, having been trying to adapt a monolithic Django application at my
previous company into a more focused microservices before quitting, so it has
been nice to continue thinking on things in these terms with even more focus.
Many things initially seem harder when working with event-driven microservices:
Things happen asynchronously, so the things patterns like request/response become very difficult to emulate.
Things can happen out of order (at least between different topics).
The system as a whole is more difficult to visualize.
On the other hand a bunch of things initially seem a lot easier:
Each service handles a small, specific function. This becomes easy to build, test, document and even replace as requirements change.
Horizontal scaling is simple, as you can run more instances of any particular service with ease as Kafka distributes the workload.
Data integrity and discovery can be made easier with a schema registry, enforcing stronger data guarantees than you would typically get with a mesh of RESTful interfaces.
Interfacing services from various developers is just publishing and subscribing to the right topics.
Overall it has been a learning curve with mistakes made along the way, but the pros do seem to outweigh the cons. I look forward to continuing to learn the best ways to manage microservices in this way.
Docker all the things
I moved most of my self-hosted websites to a free ARM VPS from Oracle, and switched to running everything under Docker. It was pretty easy to migrate everything over to the new VPS, and the new style of running applications. Having a simple and reproducible environment for my various projects has also helped for the few minor changes I have made since.
I also have used Docker to run some things on my NAS as I discussed in an earlier blog post. Its safe to say I am a fan of running things in containers now, despite what an even earlier post had said.
Memorable games of the year
In no particular order, here are some of the favourite games I started playing in 2021.
I don’t know why I put this off for so long, it was a great platformer with solid controls and nice pixel-art graphics. I might try and 100% it later.
I think I picked this up through a Humble Bundle or something, but it caught my attention pretty well and I very quickly put quite a few hours into it.
Sort of like a modern day SWAT 4, its great to play with friends. I have only ever played the mode vs bots though so I have no idea how good the PvP is.
Kind of like an anime Dark Souls, but not really as hard and with a more obnoxious story. Combat didn’t vary as much as Dark Souls, but it was still fun.
Snake, with power-ups and enemies. Its strangely addictive and fun to play in bursts.
Like Civilization. Some parts it does better than Civilization 6 and others it does worse. Still a great game.
Record of Lodoss War-Deedlit in Wonder Labyrinth
A very long name, for a very short game. This is a Metroidvania-style game and I think I beat it in around 4 hours. Those 4 hours were solid fun though.