Everything changes, IT is no the exception of course. The role of the system administrator (or sysadmin) as we knew has evolved in something that we call Infrastructure Developers. The sysadmin should develop a new set of skills to face the challenges in the present and the near future (and beyond). The DevOps Culture is a term the defines among other things that collaboration and communication are the key for IT teams to perform properly. When you are operating infrastructure you are in a very special position. You are in the middle of everything:
- PM requesting changes in the infrastructure.
- Developers that needs new environments to test their code that you should deploy.
- Information Security that defines politics that you need to apply.
- Servers that requires networking properly to provides its services.
- and more.
In all of those points and a lot of more that we forgot to mention the sysadmin is involved. If you can’t manage communication properly, your life and the life of the team will be hard. You definitely should be a team player. You need to be prepared to work in a collaborative environment. Once you are comfortable with this, you ready to the next. The tools to manage your infrastructure.
Infrastructure as Code is about to define, deploy and manage you servers in programatically. This is not about installing and configuring services manually anymore. You should be ready to replicate, scale, rebuild, ready to move faster. This requires to manage your infrastructure in a similar way the developers creates software. You should code your infrastructure and that means that you need to have programming skills. It’s not necessary advanced concepts, you should manage scripting languages like shell, Python and Ruby (specially the last two, we think that shell scripts should be deprecated).
Coding your infrastructure in text files and using version control systems gives you the possibility to track changes, to be able to rollback them, to create branches to test new stuff and to do whatever the developers do with software. Automation and orchestration should be part of daily activities. This create a flow to move in a agile way, to be prepared to anything.
A new scenario
The Infrastructure Developer should be very familiar with that escenario and the concepts on it.
- Continuous Integration: Developers upload their code to the repository, usually a version control system like Git, Mercurial, SVN, etc. This code to be usable needs to be compiled and mixed with external dependencies like libraries, modules, etc. This process should be done continuously to be sure that the software is never broken. Or if it’s broken, to notify to the involved people to fix it.
- Continuous Testing: Once all the pieces to build the software are integrated they should be tested. Developers should write tests to verify the code and DevOps engineers could write additional tests (like functional tests) to verify that everything works smoothly. The result of this process is a notification of the current status via email, a web page, etc.
- Continuous Delivery: If the software integration works properley, if the test pass, we should be able to deliver the code to the servers to be visible to all the members of the team: developers, proyect managers, testers, end users, etc.
- Continuous Deployment: If all this process works as expected, is an exercise that give us the ability to deploy code to production in a painless way.
The most important of all this processes is to be always in Continous Improvement.