Cloud Platform Engineering, DevOps, SRE, Kubernetes, KOPS

Kubernetes, Docker, Kops, Istio - Tech related blog posts

Kubernetes, Prometheus and Pager Duty: engineering 24/7 ops capabilities for larger teams
Engineering 24/7 ops capabilities for larger teams has its own set of challenges in terms of scalability. Enabling teams to be self-served can work quite well. Especially for organisations with small platform engineering or SRE teams. In this post I'm going to show you an example setup that's suitable for an organisations with similar profile. Read More ›

Containerisation done right: reduce infrastructure TCO and product time to market. Part 2
This is continuation of Containerisation done right: reduce infrastructure TCO and product time to market. Part 1 where we started a journey toward operationally efficient, robust and resilient infrastructure build on containers. In that part I touched on few whys such as “Why microservices?” and “Why containerisation?”. I also went through creating a first container, defining basic supporting infrastructure for building and storing container images, and how to scale up to multiple services at ease. Read More ›

Containerisation done right: reduce infrastructure TCO and product time to market. Part 1
In a modern age of microservices, cloud based IT infrastructure, continuous integration and deployment, importance of containerising infrastructure is of particular importantance. If done correctly from the outset you will save precious DevOps resources. Here is the key thing to make it work for you: consistency and automation. With a consistent and automated method of defining resources, monitoring, alerting, building and testing, adding a new microservice or testing environment becomes a magnitude easier that in the non-containerised world. In a non-containerised world it is necessary to spin-up virtual machines and do lot’s of interaction with cloud providers over their APIs, something that is both complex and time consuming. Let me take you for a journey and explain the steps along the way. It’s a journey from a single service to a complete IT infrastructure up and running. Read More ›

Sharing Kubernetes clusters. Different approaches
Here’s a thing: in some senses Kubernetes abstracts physical infrastructure where services run. Just like with physical infrastructure there may be a clash between different teams or organisational units competing for resources or stepping on each others feet whilst “doing stuff”. Without getting into the details of how such issues were solved in past, let’s discuss how this could be solved in a modern infrastructure setup. As stated in pretty much each of my posts: no one solution fits all, thus you need to adapt it to your needs. Read More ›

Are you production ready? Going live!
Releasing a brand new IT project or introducing a major change to an existing IT system is usually a challenge. Such tasks require careful planning and preparation. Successful release may have a big, positive impact on the organisation. A release which results in unstable, flakey or unavailable system can negatively impact reputation, sales, performance of the organisation and so on. Read More ›

Out of disk space in KVM guest – easy to increase
If you are running your VMs on KVM and badly need to increase available disk space on one of the VMs there is a good news, it’s super easy. If your guest instances are using LVM then whole process becomes pretty much seamless. Read More ›

Fast and stateless API authentication with Spring Security
Spring Security is very mature and widely used security framework for Java based web applications. It works perfectly with minimal configuration and following successful login returns JSESSIONID cookie which allows to re-authenticate client’s consecutive calls as long as session doesn’t expire. Read More ›

Unit testing and Date equality
Date equality is one of those things which could be painful to deal with when writing unit tests. If you are reading this post, I guess you came across this problem at some point in time 🙂 There are different approaches that could be taken to make tests pass consistently when java.util.Date is used as part of a model object. To make examples more clear, assume you are working with a system that records some sort of Events and Event has a variable createdOn of type java.util.Date. Read More ›

Transactions (mis)management: how to kill your app
In this article I’m going to write about transactions propagation. I will demonstrate how poorly designed application and misunderstanding of transactions propagation may cause your application to crash. Well, in fact I should say how to saturate connection pool and deadlock your database layer, but there is no much difference. The effect would be same – application would become unresponsive when trying to access and DB resource until locked connections are timed out. Read More ›

Vagrant and Puppet: testing and prototyping infrastructure
In this post I’m going to show you how to provision multiple VMs with Vagrant and Puppet. This post is useful for your if you either want to learn Puppet in safe environment or already running Puppet in production and would like to learn how to test it before applying changes or new modules to production. Read More ›

Provisioning multi-VM infrastructures with Vagrant and shell provisioner
There are different ways of creating virtual machines (VM) for either dev, qa or production environments. If you need to create one-off VM, doing it manually with VirtualBox, KVM or any other virtualization software is pretty straight forward. Read More ›