When I started my career in IT, one of the first things that interested me was automation — having things done for me without me having to do tedious, repetitive tasks. It always amazed me that many people were OK with doing the same thing over and over again, while a solution for automating the tasks existed just a few clicks away. This goes beyond the field of IT as well, and it seems as if many fields, such as manufacturing has figured a lot of these things out already.
However, when companies deliver code, people get stressed and sweaty and scared of things going wrong. A person logs the servers, copy over their code, run the magic script created 5 years ago by an employee no longer working at the company and then pray to the programming gods that things go well. Better yet, this entire process could be done by a person that has no idea what the code even does or what the project is about.
I've seen it first hand and heard multiple stories about how entire systems went down for hours due to minor misconfigurations, databases that would become corrupted, and "the guy" had to be called in to fix it. I would also be very rich I got a penny for all the "oh, so you are updating the servers on Friday" I've overheard over the years. Each company I've talked to or worked with, pushing code to production, was not a solved issue.
Sometime after graduating, I got the chance to be in charge of a project; this was my chance to create an automatic deployment solution and solve the horror stories that I had heard of I though. After a few days of tinkering and deep-diving into the world of automation tooling such as Ansible, I had my masterpiece. An automated script for blue-green deployments.
I was pretty pleased with myself, and most of the time, things were working splendidly. But then came the corner-cases, database migrations, backup restorations, scaling issues, server failures, SSL certifications, and getting others to understand my beautiful creation. But by then, I was hooked; solving these issues was now something that I wanted to do, something I found fun — a place where I can help other developers so that they don't need to think about this.
Men (in black) Paul and Frank behind the DevOps team.
How to build a DevOps solution
So here we are, a few years later, we now have tooling and solutions that were still in their infancy when I first created my half-hacky scripts. We have containers such as Docker; we have container orchestrators such as Kubernetes. Things that mostly solves scaling and deployments of simple applications with a couple of commands or clicks of the mouse. Fantastic stuff. But pushing things to production is not as easy as it could, or should be.
For this reason, we at Anders wanted to take a stab at the problem. We know looked around and found many tools that made deploying applications easier, such as ready-made continuous deployment tools and "auto DevOps" tools. Many of them solved the problems that we were seeing, but they were either too complicated, not flexible enough, or had a strong vendor lock-in. So we did what any insane group of people would do, and created our own, but different, toolset.
Instead of creating a service or a new CI/CD SaaS product, we created a library and tools that were flexible enough to run on already existing CI/CD tools, such as GitLab CI/CD, CircleCI, and GitHub Actions. The only prerequisites that we made were that Docker application container of choice, and Kubernetes the place where an application would finally run.
Kólga for everyone
What started as a learning experience quickly became something that would handle our internal test deployments, to then getting traction within the City of Helsinki and now in the hands of companies such as Visma. We found it to be so useful why not share the fun? So we open-sourced it for everyone to enjoy. You can find it here: https://github.com/andersinno/kolga.
The tooling, together with DevOps practices of combining the efforts of both developers and operations. Has led to us having a joint team that strives to deliver software in the best possible way with the least amount of hassle for everyone.
Are you also interested in getting the most out of your software development efforts? Do you want to get things into production without jumping through all of the painful hoops that might arise? Don't let the world of continuous deployment scare you, say goodbye to no-deploy-Friday, and take back the control of your deployments! Let us help! Anders offers DevOps training, setups, automated testing experts, and much more.
I'm more than happy to discuss more about DevOps and our own solutions. Feel free to contact me in LinkedIn or contact via email. Read more about DevOps and our solutions.
Chief Technology Officer