Practical Lessons in Containers, Source Control, and Continuous Integration
If you’ve spent time learning any software tools, DevOps or otherwise, you’ve been on that treadmill. First you buy five books, then spend hours reading. Next up- watch hours of YouTube videos. Sleep sit attentively through a webinar or two. If you’re lucky, you might get your employer to spring for training. Then, after all that…
You forget 99% of it within a few days.
It’s not your fault. Software tools are complex, and DevOps tools are no exception. Each tool is practically an ecosystem unto itself. How can anyone learn tools like that without using each of them every day?
You can’t, unless...
You practice! Our brains are wired to learn through repetition. Practice is what gets those neurons to line up behind an idea, a skill, or a tool. Repeated practice is the very best way to learn something and get it to stick.
The concepts behind DevOps Katas are:
DevOps is many things.
The term "DevOps" is a portmanteau of the words "Development" and "Operations."
The relationships within IT departments, between those that write software (Development,) and those that support the systems that run software (Operations,) tend to be fraught with misunderstanding and conflicting goals. One of the original stated goals of DevOps was to bring those two groups together, to improve their collaboration and reduce waste in the process of software delivery.
DevOps is people and culture. Research has proven that a healthy, generative culture can foster innovation, improve morale, and lead directly to a healthy bottom line, at enterprises of any size.
DevOps is process. DevOps is a peer to Agile software development processes like Scrum and Kanban. Agile and DevOps share the same spiritual heritage in Lean Manufacturing and Lean IT.
DevOps is technology. DevOps isn't a product that can installed or purchased, but it does depend heavily on automation. Software delivery automation requires tools.
DevOps Katas is about the technology of DevOps: three of the most popular tools used to develop software, and automate its delivery.
The term kata comes from martial arts, karate in particular. The katas in martial arts are physical movements, called forms, designed to be practiced repeatedly. Each individual movement is simple, and can be repeated many times in a short period. The kata practitioner focuses on making small improvements with each repetition.
The “Code Kata” is an adaptation of the kata concept to software development. The Software Craftsmanship movement adapted katas to create short coding exercises. Code katas are designed to help software developers practice programming.
DevOps Katas combine DevOps tools with the Code Kata concept. The difference is that DevOps Katas don't teach programming. The goal is to learn how to use DevOps tools, so all of the exercises are code-free.
DevOps Katas are exercises that are designed to teach the function and usage of three widely-used DevOps tools. Katas are made of steps. A kata step is just a few commands. They’re short by design, so each step takes only takes about a minute to run.
DevOps Katas: Hands-On DevOps is a collection of katas focused on three DevOps tools:
Docker is the container system that is revolutionizing software delivery and infrastructure.
Jenkins is the de-facto industry standard in Continuous Integration.
While there are many more tools than these in the DevOps world, these three are at the center. DevOps Katas: Hands-On DevOps will teach you how to use them, individually and together.
DevOps isn’t just for Development, Operations, or Systems Administrators. If you’re involved in software delivery in any way- as a manager, business analyst, or executive, you can benefit from DevOps Katas. You’ll make better-informed decisions about DevOps strategy with a solid grounding in the tools that provide and enable DevOps Automation.
You don't have to be a software developer to pratice DevOps Katas. The exercises teach you how to use the command-line and web-based tools of Docker, Git, and Jenkins. No coding experience is necessary.
If you’re reading this on a Mac or PC, you’re set. You’ll need about 3 - 5GB available hard drive space, and a relatively new operating system:
Windows 7/8/10 with at least 8GB RAM
OSX 10.10.3 Yosemite or later and at least 8GB RAM
All the software you’ll need is free.
If you’re pursuing a certification, you can certainly use DevOps Katas as a starting point, to get hands-on experience with the tools in DevOps Katas. You’ll then want to dive deeper with official test preparation materials to prepare for testing.
Each kata is broken into a series of steps. The first full run of a kata will take about an hour, more or less. Once you have executed a full kata, the rest is practice.
Each kata has a practice page, which is a list of the commands you execute in the kata. Kata practice is simply executing the commands. This practice will remind you of the details of the kata. If you need a refresher on the details, just refer back to the kata chapter.
Remember the work you put into learning to ride a bike, or getting that chord just right, or throwing a ball farther than ever before? The work you put in with practice pays off. Short, intense practice sessions are proven to lead to better retention than long hours of studying.
The katas in DevOps Katas build on each other, so it doesn't take long to start seeing real progress. By the time you've finished all the katas, you will have built a complete Continuous Delivery pipeline.
Dave Swersky is 20+ year veteran of the IT industry. He's an experienced software developer and TOGAF-certified Enterprise Architect. Dave discovered DevOps at a conference in 2014. Gene Kim handed him a copy of The Phoenix Project, and Dave was instantly hooked.
Since then, Dave has focused on DevOps as a central part of his work as an Architect and software developer. He has worked with major banks, energy companies, consulting firms, and the US Government on DevOps strategies and transformations.
Dave has presented on DevOps at conferences: