So you've just graduated from university and some business has offered you a DevOps position.
Congratulations! But, coming from university, you have no idea what this word means, let alone what it entails as a job, right?
Okay, don’t worry.
Grab a coffee, sit down, and have a read of this blog for a personal insight into my DevOps journey, which has landed me at an excellent workplace at SEED, where I run the DevOps department.
Coming from the University of Melbourne into this job, I had learnt the basics of computer science, but nothing could prepare me for what I will cover in this blog below.
The best way I could describe it was like moving to a foreign country and trying to learn the language.
You can be guaranteed that the first six months will be painful. It will be okay, and if you survive you will be stronger for it.
Firstly, I have found that DevOps is many things and is perhaps best summed up in the following poetic Haiku:
Ahh, DevOps my friend.
When you are good you are good
But sometimes, you suck.
Less poetically defined, DevOps is the marriage of development and operations for software.
It was birthed in the 'agile movement' out of the desire for harder, better, faster and stronger software (yes that is a Daft Punk song reference).
Okay, that’s all good and nice, but what does that mean?
DevOps lets you do two key things in software development:
This means you are streamlining the entire delivery process of your software, namely; planning, coding, building, testing, packaging, releasing, configuring and monitoring – and making it repeatable with the click of a button.
Get used to words like 'continuous delivery', 'deployment pipelines', 'continuous integration (CI)', 'automation' and accepting that Martin Fowler is now your oracle.
The role of DevOps within a business basically means you are critical to the one metric that matters most – delivering value quickly to your customers.
Where time, updates, new releases and bug fixes are the wreck-it-Ralph of your humble computer world, you are the fix-it-Felix of all things nerdy, and critical to delivering your product.
With your magical hammer of computer skills, you can revive the crumbling complexities around you and ensure momentary stability.
Also, get ready to wear many hats.
Some of the hats and titles that I have acquired at SEED are; Mr DevOps, SysAdmin, Cloud Captain, Database Maintenance Guy and Monitoring Man.
Essentially, someone who works in DevOps can be summed up as a 'Super Full Stack Cloud, Automation Developer'.
Get ready to also have many Napoleon Dynamite skills to go with the hats you wear.
The DevOps tools that I use at SEED are:
That seems like a lot and I can assure you, it is.
The use of each one of these incredible products is a blog in itself. But I won’t go into detail now.
Currently, I am in charge of about 20 servers in the cloud and all deployment to those servers at SEED.
In addition to server deployments for clients like iBackpacker and Alice McCALL, we also deploy one or more times each week to the Apple app store for apps that we are developing for some of our startup clients.
We have set up our DevOps and CI process from the bottom up.
The following are some tidbits I’ve learned along the way:
Things will break! It happens. Facebook recently went offline, AWS has outages, Github has been unavailable to the point where you want to cry. These things happen. It's part of the fallen world we live in, so have a fallback strategy.
When (not if) your servers go down or your updates do not go as you planned, relax, breath and put on some Jack Johnson, or worship music, or whatever brings you peace and fix it with that backup plan you put in place.
I have once had a rollback fail after an update failed due to database changes. I thought I was going to die. But here I am, still alive and still happy.
Don’t compare yourself. You will see tutorials and blogs from the programming community and think that everyone else has all the answers. But, just remember, these people got to where they are because they worked hard and overcame their failures, then wrote about them.
All you have to do is work hard and, as Bill and Ted say, “be excellent to yourself" and you too will rise to the top.
Things evolve over time, so get used to change. Your product is always changing, which means your code base is always changing. In fact, the moment you download a new version of an application is probably the moment a new release will come out. Consider it a blessing and curse in this cutting-edge, open source community.
You will have to problem solve. There are things that you will not find on the Stack Overflow website or any other forums. It will be okay, you can fix it. Go back to first principles and use your logs.
Software is messy. Most software may have a shiny face, but can be a mess on the back side. That is why we need DevOps and why you have been offered a job to do this.
When things go wrong, consider it a test of your character. True character comes out in times of difficulty.
Docker is amazing, but be weary of images built on other images. This can give you some serious headaches later on. Especially in the fast-paced world of releases. Stick to making your own images from official images. It gives you more control over failures.
Always link your DNS name to an elastic IP address or load balancer if using AWS. IP addresses change if the instance goes down, and a new IP address is issued when it comes back up. This means your website is no longer connected to the IP address it was before. Yikes!
I truly enjoy running the DevOps department for SEED and the challenges it brings each day.
If you're thinking about accepting a DevOps position and think it's something for you, I would encourage you to take the step, hold on and enjoy the ride.
Hopefully this blog has brought some insight into what you will be doing and how you can be the best at what you do.
(Main photo: Silicon Valley/HBO)
Want some help on building your startup, growing your business and creating products/services that your customers will love? Contact SEED to make an inquiry.