June 15, 2018

Notes: Multi Stage Docker Build

Docker Multi-Stage Builds Multi-stage builds are a new feature requiring Docker 17.05 or higher on the daemon and client. Multi-stage builds are useful to anyone who has struggled to optimize Dockerfiles while keeping them easy to read and maintain. Things to remember: - Dockerfile adds a layer to the image for each instruction Multi-stage builds are helpful to reduce image-size, maintain readability, and reduces the need to have two Dockerfiles (one for dev and one for production, aka the builder pattern). ... Read more

June 15, 2018

Shared: How to Migrate Existing Microservices to Serverless

When you have a set of microservices running on VMs or inside Docker containers, consider moving some of them to serverless. Here are some commonly cited reasons: Cost: Services with low traffic, or cron jobs, are cheaper with serverless. This is because you don’t pay for them when they’re idle. Time to market: You get more done, faster. Free yourself of the undifferentiated heavy lifting of managing infrastructure. Focus on your users’ needs instead. ... Read more

June 8, 2018

Everything is Software

Perhaps it’s just nostalgia but I love listening to talks from old conferences and meetups I have been to. When attending you have one frame on mind and depending on the environment or situation you were in when attending, you receive the information one way but as time goes on you arrive at a different place. How do those conclusions change when you revisit them? In 2015, I had been working on a large scale modernization project for a customer. ... Read more

October 13, 2017

Experimenting With Go Plugins Using Docker

I was learning about the plugin package from a number of sources and decided to follow along with this article - Writing Modular Go Programs with Plugins One of the things that immediately hit me was that there is a caveat to using Go plugin. As of version 1.8, the Go plugin only works on Linux. Well I am not one to be deterred by something like “only works on Linux. ... Read more

July 23, 2017

Kubernetes: Resource Requests, Limits, and Quality of Service

Caution, opinion ahead. Let me first state that I believe Kubernetes to be one of the most well designed projects in the open source community today. The depth of documentation and the understanding that goes into features and architecture is rare. We adopted Kubernetes as a platform a little over a year ago. Things have been running very smoothly and have had zero major incidents and a few maintenance issues (very minor) for the duration. ... Read more

November 15, 2016

AWS API Gateway with Kubernetes Ingress Map

Working on large scale unified APIs seems to be a popular trend. Recently I was working with Microsoft’s Graph API, which is their unified API. It is not unreasonable to think that many different teams contribute to the different resources available; mail, calendars, contacts, directories. However many resources, the idea is to have all of them referenced from the same endpoint. Ideally each team could use whatever language, whatever technology best worked for them. ... Read more

September 11, 2016

Raft for Dummies and those like me.

This is going to be my very feeble attempt to explain the Raft consensus algorithm. The very least I will accomplish is sharing the material I have read about Raft and how I have come to understand it. Raft is used in popular pieces of software such as RethinkDB, etcd, and a number of Hashicorp products.(1) What is Raft? Raft was developed in the hopes of creating an easy to understand consensus algorithm. ... Read more

September 10, 2016

Using Consul with Registrator

Service discovery is not new, but I still see plenty of shops storing their configuration in the form of configuration files or hardcoded objects. Connecting to an instance of MySQL or Redis and hard coding connection strings beforehand doesn’t allow one to take full advantage of dynamic resources and also doesn’t allow for treating them as backing resources. We are going to take a quick walk through setting up a consul cluster using docker-machine and have registrator dynamically create entries in consul’s service catalog. ... Read more

September 7, 2016

Benchmarking Amazon's Aurora

I saw this study by the folks over at Google and their 2nd Generation Cloud SQL. The results they posted didn’t exactly mirror what I saw when running the benchmarks for myself. You can get the raw data here @ Github. Everything was stood up using Terraform, the benchmark tests were conducted using Sysbench, and all data was plotted using R. Since we didn’t have access to Google’s original data, we provided some overlays in the post as an easy visual comparison. ... Read more

March 31, 2016

Free advice from a Terraform user

Firstly a huge thank you goes out to @mipsytipsy for this awesome post mortem on what appears to be or what could have been one of the worst outages of her career. Some context: our terraform config had been pretty stable for a few weeks. After I got it set up, I hardly ever needed to touch it. This was an explicit goal of mine. (I have strong feelings about delegation of authority and not using your orchestration layer for configuration, but that’s for another day. ... Read more

© Lars Cromley 2017