DevOps Through Minecraft

What is DevOps?

Development + Operations aka DevOps has been a buzz word for some quite some time now. Most people in the Technology industry probably have some idea of what it is or what they perceive it to be. Kelsey Hightower has once called it "Support groups for sysadmins" which isn't entirely untrue. A more specific definition can be found here from Red Hat:

DevOps is an approach to culture, automation, and platform design intended to deliver increased business value and responsiveness through rapid, high-quality service delivery. This is all made possible through fast-paced, iterative IT service delivery. DevOps means linking legacy apps with newer cloud-native apps and infrastructure. https://www.redhat.com/en/topics/devops

mineOps - Exploring DevOps through Minecraft

Throughout this series, we will explore DevOps in a few ways. First of which, we will see what scenarios would make us want to adopt DevOps tooling and methods. Secondly, we will explore the progression from manual installations all the way up to deploying to Kubernetes and using GitOps to maintain said deployment. There is a long way to go from manual installs to using ArgoCD. Let's take a look at the technologies that will be used and discussed in this series.

Technology Overview

  • Minecraft Server - Java Game Server
  • Ansible - Configuration Management
  • Git - Version Control System
  • Containers (Docker/Podman) - Application Deployment
  • Kubernetes - Scheduled and Manages Containerized Workloads
  • ArgoCD - Declarative, GitOps continuous delivery tool for Kubernetes.

Each of the above technologies have a unique place in the world of IT. Some of them are powerful in their own right even if not combined with others in this list. Git for instance is used by writers and others not even in the technology field, while others on this list can do nothing without other items on the list (ArgoCD for example only working with Kubernetes).

Principles of this series

Focusing on using modern automation tools to deploy and manage Minecraft Server(s) through the lens of a business. This business will be attempting to grow by deploying and managing Minecraft Servers for their customers. Here are some of the questions we hope to answer throughout this series:

  • What are the shortcomings of manual deployment/installations?
  • How does automation helps solve this?
  • Why version control your configurations?
  • How do containers help this effort?
  • Why add GitOps into the DevOps mix?

One of the other key points I'd like to point out is that this series (as with most) will primarily focus on the "Ops" side of DevOps. Some of the principals learned through this will undoubtedly apply to the "Dev" side, but Ops will be the focus, hence the name of this series: "mineOps".

The end focus of all of this will be showing the DevOps journey a business might take and the trials therein.

Conclusion

This series hopes to bring examples on "how to" manage an application most people can relate to. Tutorials can be found everywhere regarding a basic HTTP application that says "Hello World" and gets changed to "Hello <something else>". Not everyone relates to those changes or sees the value in what is being presented. I myself was one of those people years ago and the hope of this series is to showcase a real world application (Minecraft Servers) in a DevOps focused way.

For those who wish to skip ahead or follow along, the main GitHub repository for all files and documents being used can be found here: https://github.com/KyWa/mineOps