Noobmaster
Writing working code is only part of the battle.
Somehow, that code needs to get to live servers. The pipelines, integration checks, and failover mechanisms are a huge part of the application.
Have you ever experienced the challenges of trying to deploy something?
Have you seen what deployment looks like at scale?
It’s an entire job. From my perspective, the work that goes into deployment is just as hard, if not harder, than writing the code.
Software developers need a healthy respect for the team that owns deployment. At most companies, that’s a group of DevOps engineers who specialize in this sort of thing.
Their job is a challenging tightrope:
-- Orchestrate complex restarts for all the application architecture when a deploy runs
-- Do those restarts with little to no downtime for users, so that the company can deploy many times per day
-- Make the tools easy for developers to use, so that the details are abstracted away when the average software engineer merges code
One of the major challenges for the DevOps team is they need to know a little bit about everything that’s happening at the company.
Team A needs DevOps to bump their webserver count to handle more load.
Team B wants to add asynchronous tasks and needs a message broker plus new worker servers.
Team C is having trouble with the CI jobs that run their test suite.
Team D needs to store secrets securely somewhere they can pull down.
Team E wants to set up a new subdomain that points to different resources for users.
In all these cases, the DevOps team is involved to help sort out the requests. They make sure the needs are legitimate and well thought through. Then, they assist with implementation to orchestrate the changes.
On large engineering teams, the DevOps deployment pipeline quickly moves toward infrastructure as code.
Gone are the days of manually running servers, installing new server racks for increased load, and monitoring that everything is healthy. Engineers of yesteryear might have needed physical networking skills. Today, DevOps is all about provisioning cloud resources.
To do so, teams can use a UI interface. But more likely, they’re implementing infrastructure-as-code.
If you’re a software with no idea how your code gets to production, listen up!
Infrastructure as code is incredibly powerful. It allows us to standardize the deployment and resource allocation process.
But it’s also easy to get wrong. Setting up such a system takes tons of time, skill, and heartache. Debugging infrastructure problems can be incredibly tedious.
DevOps is essential to getting code to production.
When something goes wrong with the deploy pipeline, work is blocked for all the engineering teams in the organization.
More often than not, DevOps gets pulled into production incident response as well. Even if they didn’t cause the problem, they’ll know about the resources at play and can help with the hotfix.
As such, they’re constantly on-call. Changes from other teams can lead to DevOps getting paged to help clean up the mess.
But in my experience, DevOps engineers are the kindest, calmest, and most easy-going among all of us. While everyone else is freaking out about some problem, they’re quietly fixing it.
If you’re a DevOps engineer reading this, thank you for your work!
I’m convinced that it’s way harder than writing application code. There are all kinds of complexities in integration, testing, building, deploying, and rollbacks.
It boggles my mind every time I get to see a great DevOps engineer at work.
I write something new for software developers every day. Get on the daily list to receive updates.
A Wise Programmer | Amateur Developer | Athlete | Dreamer | Geek | Humorous | Writing Lover | Reader of Science Fiction | Sleepy Nut | Everything Enthusiast | Building From Scratch Enjoyer| He/Him.