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 [...]

Testing the microservices. Our approach to API testing.

Testing microservices versus testing monoliths There are numerous advantages of using microservices over the monolithic application structure. Microservices, though, unlike monoliths don't have the established development patterns. A lot of problems are still unsolved and we yet to witness the emergence of de-facto standards of "the microservices way" of development. Testing is not an [...]

Review of Habitat.sh

In the announcement video, Adam Jacobs, the CTO and co-founder of Chef, claims that for companies who want to move towards a devops organization, everything depends on how people in an organization work together, and how their tools enable them to have an efficient build, deploy and manage process. If the tools are insufficient, your tech stack will fight you and devops will be just a nice idea [...]

All Hail the New Docker Swarm

Unfortunately, I'm not able to attend DockerCon US this year, but I will be keeping up with the announcements. As part of the Docker Captains program, I was given a preview of Docker 1.12 including the new Swarm integration which is Docker's native clustering/orchestration solution (also known as SwarmKit, but that's really the repo/library name). And it's certainly a big change. In this post [...]

Automated branding with the logo generator

Automated branding At Container Solutions, we've been building Mesos Frameworks. All our frameworks can be found at mesosframeworks.com. Besides the experience, this has brought us many interesting projects, like minimesos for testing, and Mesos Starter for quickly bootstrapping these frameworks. This means it’s now much easier than before to create your own frameworks. Branding these [...]

Service discovery in minimesos using Consul

At Container Solutions, we’ve been working hard on minimesos, our testing infrastructure for Mesos frameworks. To make it easier for frameworks to find their components, and for the Mesos master and agents to find Zookeeper, we’re adding service discovery. Our first experiment uses Hashicorp’s Consul and Gliderlabs’ Registrator. Consul is a great service discovery catalogue. We [...]