We frequently talk about IT careers here on TechGenix. Why? Because we IT pros and IT managers and devs live in a rapidly changing world where everything is in flux in our profession. So we share tips on certifications and tech sales and rules for success and we focus in on new areas of opportunity like Big Data and blockchain and AI and IoT. So along these lines, we’re going to look today at another potentially fruitful IT career path that is especially important for you to consider if you’re an IT pro living and working down in the trenches of day-to-day administration of a business or organization: infrastructure developer. The reason this article is so important is because — in case you haven’t noticed — your job is rapidly changing!
Being an infrastructure developer engineer used to be about installing hardware and software and managing them on your network. Now with the cloud, however, many of the day-to-day tasks you used to wrestle and sweat over can be performed with a few mouse clicks or a couple of lines of code. How can one ride the wave of these changes to keep your IT career surfing along without getting swept by a wave or drowned in the tide? Mike Pfeiffer, a technical architect, author and speaker based out of Phoenix, Ariz., has some answers to this and I’ve asked him to share some of these suggestions below so you can keep paying those mortgage payments. I interviewed Mike here on TechGenix a couple of years ago about directions in IT training and he agreed to bring us up to date on this new topic by sharing his thoughts for our readers’ benefit. So let’s listen to him now, and see if infrastructure developer is a part of your future.
The changing landscape
Public and private cloud platforms have changed the IT landscape. With virtualization and cloud computing, it’s easier than ever to spin up a fully functional application environment with a single button click or API call. The world of server deployment and administration is much different from it was ten years ago, and it will never be the same.
This is great news because businesses can now move much faster than ever before. And the reality is, many of them must do so in order to keep up with their competitors.
The challenge is, you’ll need to start thinking like a software developer if you plan to stay in the trenches over the long-term in the tech industry.
Here’s why: most technologies are shifting to a new paradigm where software development practices are being applied to infrastructure. Speed, agility, consistency, and predictability are all characteristics of platforms that power modern-day applications. In other words, infrastructure engineers of the future will be expected to have deep automation expertise.
IT pros who want to thrive in the tech industry in the coming years need to learn the core principles of infrastructure development. Those who do will hold in-demand skills in a world where almost everything is software defined.
Here are four areas to focus on to start building infrastructure development skills.
Infrastructure as code
Imagine being able to click a button in a web console, and like magic, you have a fully built server environment, complete with Domain Controllers, SQL servers, and a new SharePoint farm ready to serve users.
Sounds far-fetched, but this is something that you can do today using an Azure Resource Manager (ARM) template.
Here’s how it works. All the infrastructure required to power the servers is declared in a plain text file. Technically, it’s a JSON template, which means it’s really just a set of key/value pairs. Think of it as a list of resources with their required settings. For example, in the file, there are blocks of code that describe the virtual network, storage, servers, and along with all of their detailed settings.
All of the infrastructure for the deployment is referenced in the template. It’s human readable, and anyone with a basic understanding of the syntax can look at the template and understand it’s intent.
These templates can be deployed interactively in a web browser, or via an API call as part of an automated process.
With infrastructure written in code, you always know exactly how the environment is supposed to be configured. You literally have a blueprint of the entire environment that you can execute if you ever need to rebuild it.
Imagine the possibilities this opens up when you want to test something.
Your first step to becoming an infrastructure developer is to start learning the basics of infrastructure as code. If you’re working with Azure, start educating yourself about ARM templates. Try to build one that does something simple, like building a standalone server.
Servers that are launched from an infrastructure template also need to be configured. They need software installed and configured, and there needs to be a mechanism to keep them in their desired state. That’s where configuration management comes into play.
For example, that ARM template that spins up the SharePoint environment is mostly focused on building the server infrastructure. It’s creating the virtual network, storage, VM’s, and so on. The servers actually boot with a plain operating system.
Once the servers are up and running, a configuration management solution is used to bootstrap the applications. In this case, the technology happens to be PowerShell DSC.
Most configuration management solutions follow similar patterns. Like infrastructure templates, configuration management code tells each server what software should be installed, and how it should be configured.
As an infrastructure developer, you’ll need skills with a configuration management solution like PowerShell DSC. The good news is that once you’ve learned one, it’ll be easier to pick up another. For example, DSC implements many patterns used in other configuration management tools like Chef, Puppet, and Ansible, to name a few.
Infrastructure as code templates, along with startup scripts or configuration management scripts, can provide an end-to-end automated solution for an application and all of its dependencies.
When developers build applications, they typically do so in teams. To make life easier for everyone, the code is typically stored in a central location, like a version control repository.
It’s a common practice for developers to make very small, incremental changes to the code base for an application. Those changes get committed into the main line of the code base in the version control repository. If there’s an issue, the change can be reverted easily, since it was a small change.
Each time code is committed to the repository, meaningful notes are included about the change. This gives everyone a clear picture of what changed from one version to the next. Teams can even compare the new version of the code with the previous one side-by-side to see what was done.
This is exactly what infrastructure developers need to do as well. All of your infrastructure templates and configuration management scripts should live in a version control repository. Git-based version control systems, like GitHub, are widely used.
As an infrastructure developer, you’ll want to learn how to use Git, which is a version control tool. You can use it to store your code in a repository on GitHub, which is simply a platform for hosting git-based version control repositories.
Continuous integration and continuous delivery (CI/CD)
When a software developer commits a small code change to a version control repository, that change is often tested. For example, if it’s a C# application, an automated process can take the code and make sure it compiles without any errors. It can also run other tests to make sure the code was written correctly. This process is known as continuous integration (CI).
The idea with CI is that developers get fast feedback whether or not their changes are working. If they get build errors or the tests fail, they know they need to address thing right away.
Once the code has passed through those basic checks, it might be useful to perform further analyses, like performance or user interface tests. This, of course, requires infrastructure to run the code.
As a next step in the process, the team could invoke an infrastructure as code template to build a clone of the production environment. Once the servers are up and running, the latest version of the code can be deployed and tested.
If everything checks out, the team knows they have a known-good version of the code that is production ready, which is the basis for Continuous Delivery (CD).
As an infrastructure developer, you’ll want to be able to work with software developers and understand their world. To do that, learn the basics of the CI/CD release pipeline workflow. It’s simply a chain of events that takes code committed in version control to being fully validated and considered ready for production use. Azure focused infrastructure developers will want to look into the newly announced Azure DevOps platform.
Infrastructure developer: The road ahead
There’s a lot to learn as an infrastructure developer. The good news is that most organizations are still in the very early stages of figuring out how to do this efficiently. There will be big opportunities for those who decide to take advantage of this shift in the industry.
Featured image: Shutterstock
More IT Career Guide articles
- IT job spotlight: Architecture application manager
- Most promising computer science jobs for the next decade
- Weathering the storms: What you need to succeed in your IT career in good times and bad
- Key skills you need to grab a machine learning job in 2019
- IT employee monitoring: 5 reasons you should do it — and 5 you shouldn’t