Tricks of the Captains – DockerCon Talk

At DockerCon 2017 in Austin, Texas, I gave a talk entitled "Tricks of the Captains" in the community theatre track. The talk covered various tips and tricks for using Docker, compiled from the brains in the Docker Captains program. The tricks included: Configuring docker ps output Don't bust the build cache Cleaning up with docker prune Properly starting and stopping [...]

The Average Dev, Containers and Security

At the recent #INGLovesIT event in Bucharest, I gave a talk about Container Security. I went into details about features of Docker and the Linux kernel. This led Simon Brown (who gave a great keynote on the relationship between Agile and software architecture) to tweet: Listening to @adrianmouat talking about Docker and security; scary stuff, another reason why your average dev shouldn’t [...]

Running Habitat Supervisors on top of Kubernetes

In the last two months, I've worked together with Chef to evaluate Habitat from a cloud native developer perspective. This is the second blog in a series of three where I'll share my experiences. The first blog is about the build system, and the last will be about how to create a High Available Redis cluster with automatic failover on top of kubernetes. TL;WR: Setting up habitat supervisors [...]

Monitoring Kubernetes with DataDog

Monitoring is a crucial part of any production application, and it’s importance is increasing as we move towards cloud native. For all the benefits of distributed, microservice applications, there are challenges which come along as well. The complexity of the system has increased considerably. The number of pieces involved (applications, datastores, services, etc) has multiplied, and they are [...]

Accidental Rewrite of a Microservice

This is a guest post by Robert Hensing. In this blog post, I describe my experience adapting a microservice for use with AWS' DynamoDB. Background The Sock Shop is Weave Works' reference microservice implementation. For their customers, they want to demonstrate that their cloud solutions for deployment, monitoring and more work well on Amazon Web Services. Therefore the task is to [...]

Surprise at Golang Thread Scheduling

A few days ago I had a problem with high CPU usage in one of my Go-based microservices. The microservice has evolved into two distinct components: a HTTP web-app and a batch processing service. At some point, we'll probably split these out. But in its current guise, we were seeing HTTP request latencies of greater than ten seconds. It turns out that the reason is due to the Go scheduler not [...]

Multi-arch Docker Images

Although the promise of Docker is the elimination of differences when moving software between environments, you'll still face the problem that you can't cross platform boundaries, i.e. you can't run a Docker image built for x86_64 on a arm board such as the Raspberry Pi. This means that if you want to support multiple architectures, you typically end up tagging images with their arch (e.g. [...]

Running a Secure Registry on Kubernetes

Once your shiny new Kubernetes cluster is up-and-running, one of the first things you'll want to add is a local registry for storing private images. This is typically achieved using the official Kubernetes registry addon. Unfortunately, the official addon has a few shortcomings, especially with regards to security. In this post, I'll describe these shortcomings, how they can be addressed, and [...]

Adding Self-signed Registry Certs to Docker & Docker for Mac

The Docker registry image has over 10 million pulls on Docker Hub, so it's safe to say that a lot of people out there are making use of it. When running a registry, it's essential to make sure your clients can access it easily and securely. If your registry isn't running on a public domain, you're probably using a self-signed certificate for this purpose. This post will look into some of the [...]

An Introduction to stream processing systems: Kafka, AWS Kinesis and Azure Event Hubs

Stream Processing Systems are one of the most powerful tools you can include in a microservice infrastructure, but from conversations I have had, many developers adopting microservices have not really tackled the subject.  This was no fault of the developers, but more a result of documentation that was platform specific and differing terminologies for underlying concepts that are very [...]

The .NET experience with microservices (.NET Core/Docker/Kubernetes/WeaveNet/Azure)

The .NET experience with microservices (.NET Core/Docker/Kubernetes/WeaveNet/Azure) A few of our recent posts featured WeaveWorks’ Sock Shop demo application - an educational project that demonstrates how to build a complex microservice application that not only looks good, but also does something useful. The educational value of the application lies in its architecture. It is unusual to [...]

Continuous Integration of deployment of micro-services to different platforms

In this blog post, I describe how we created DeployDocs to improve the continuous integration of the micro-services in the Socks Shop and the platforms it can be deployed to. Background Weave's Socks Shop is a reference micro-service application, to which Container Solutions has contributed quite a bit. The shop can be deployed on a number of platforms, including your local machine via [...]

Running Kontena in the Google Cloud

In this blog post we'll set up Kontena on top of CoreOS on GCE. In the previous blog, I described Kontena's architecture. Register an account We'll use the authentication service hosted by kontena. To register an account, we need to install the command line interface. It's packaged at the moment as a ruby gem, so make sure that ruby is installed. I personally use this trick to install gems [...]

Kontena: an alternative container orchestrator

Some weeks ago, I encountered Kontena. It is an open source project for containerized application orchestration, that does things a little different compared to the currently big players, such as Kubernetes and Mesos. Before we continue with looking at what makes Kontena different, you should know about the architecture of Kontena. Kontena's Architecture   The architecture of [...]

An argument against REST in microservices

Rest has become a widely accepted standard for API’s.  There are a few reasons for this, it is easy to follow, works very much like a web browser does, and as such uses common tools to digest the service. But REST brings baggage with it  that can create complex, hard to maintain coupling when working in a diverse microservice environment. URLs URLs are one of the biggest issues with REST [...]