DevOps. This buzzword is thrown around a lot and can be hard to understand at first. So what does it mean?
Within this series I’m want to break it down for fellow developers step-by-step:
What is DevOps and how can you get started?
The name DevOps says a lot, as it’s a combination of “Development” and “Operations”.
It basically stands for a mindset of embracing the entire software development process. Including planning, releasing and operating the software product.
Sounds like a lot of work? That’s why DevOps Engineers automate anything they can.
As an example, here are a few things I implement within my projects to embrace DevOps:
- PowerShell scripts to install tools and setup your project
New co-workers don’t have to waste 1-2 days installing software and configuring their system. Get to the fun parts!
- Deployment scripts
These can be small local PowerShell scripts that upload your website via FTP or they can be actual build scripts in a system like Azure DevOps, GitHub Actions or Travis.
- File conversion scripts
Do colleagues need to convert lots of files? E.g. sound files from .ogg to .wav? I’ll create a script using ffmpeg for that. Start the script, have a cup of coffee, 100 sound files converted. No tedious clicking.
- Monitoring alerts
Is your server becoming crowded? I like getting an e-mail when we reach 60% load. This gives me enough time to plan ahead without checking monitoring systems manually.
- Define Processes
Do you have a step-by-step guide for releases, user tests and other processes? I highly recommend them. A wiki is the best place to document them.
This is a small taste of what we will learn during this series, but let’s take a step back.
The DevOps Lifecycle
The DevOps mindset can be applied throughout the entire lifecycle of your projects. You’ve probably come across this image online already:
As you can see, the only prerequisite to implementing DevOps is working in iterations.
I have broken down the DevOps Lifecycle into chunks and will offer a deep look at each one of them:
While planning your project, you should consider all phases of your products life cycle, not just development.
Developers want to code. They don’t want to reinvent wheels or spend a day setting up the project and its databases.
Build Systems speed up and simplify your build process. However they can also provide additional services, such as static code analysis or uploading binaries for your testers.
Most Tests can be automated. Our goal is to reduce, but also improve your manual tests.
A release is much more than just uploading your built software. There is much to plan: You have to validate your built software, plan your release (frontend and backend), migrate your databases to the new version, and more. Let’s optimize it all.
This is probably the most popular case. Manual deployments can take so much time. Once you automate them, you will never look back.
Most systems do not need routine maintenance. But they do require automated backups, SSL certificate renewals, software updates and emergency plans.
Of course we can monitor our servers and see if they are still running. However, we can answer many more questions: How many users are using our servers? How is our growth? When do we need to scale? And can we scale automatically?
I will also include excursions where I see them as useful (expect a crash course on cross-platform scripting).
Are there any DevOps topics you would like me to write about?
I’m open for questions and suggestions on our Discord, Facebook or Twitter.