Scripts to Rule Them All

Problem Recently at work we have started to redo our Continuous Integration pipeline by relying more heavily on Docker, docker-compose and Jenkins. Previously we had a mashup of custom scripts and while we still used Docker and Jenkins, there was no standardized process when it came to setting up a new codebase for CI. This worked OK when there was only a handful of codebases, but as we are making the move towards more and more microservices, each project requiring it’s own custom setup for CI simply does not scale. »

Kafka for Rubyists - Part 2

This is part 2 of my post describing Kafka and how you can use it in your Ruby projects. Check out part 1 here. In part 1 we went over the basics of Kafka and how it operates as well as it’s basic architecture. In this post I am going to cover why you may want to use Kafka for your next project by describing some of it’s benefits such as durability and fault tolerance. »

Kafka for Rubyists - Part 1

If you are a frequent visitor to sites like HackerNews or Lobsters or follow new software development technologies, you may have read something about a messaging framework developed at LinkedIn called Kafka. Kafka is a very popular distributed message queue that is used as the backbone of many applications and services throughout the world. I’ve been trying to learn as much as I can about Kafka for an upcoming project at work, and so I thought I would try to write a post describing the basics of how it is used and works that will hopefully help others that are just getting started with Kafka, or at least would like to learn more about it. »

Engines Before Services

If you’ve ever worked on a poorly designed, monolithic Rails application you know how messy they can get. Fat controllers referencing models nested in folder structures three layers deep, filters used in base controllers that inherit from other base controllers, etc. Logic becomes strewn every which way because of entangled dependencies. If you change one thing you break another completely unrelated part of the system. Applications are not designed this way from the beginning. »