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:
-
Plan
While planning your project, you should consider all phases of your products life cycle, not just development.
-
Code
Developers want to code. They don't want to reinvent wheels or spend a day setting up the project and its databases.
-
Build
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.
-
Test
Most Tests can be automated. Our goal is to reduce, but also improve your manual tests.
-
Release
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.
-
Deploy
This is probably the most popular case. Manual deployments can take so much time. Once you automate them, you will never look back.
-
Operate
Most systems do not need routine maintenance. But they do require automated backups, SSL certificate renewals, software updates and emergency plans.
-
Monitor
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.
Top comments (1)
😼 cheers ⭐⭐⭐