;

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

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