The system administrator role is one of the most diverse and complex roles in IT. A sysadmin needs to know about operating systems, networks, and databases, but also about budget, support, and operations.
"Your network is secure, your computer is up and running, and your printer is jam-free. Why? Because you've got an awesome sysadmin (or maybe a whole IT department) keeping your business up and running." ~SysAdminDay.com
The sysadmin position has been evolving as organizations evolve too. In recent years, organizations have been incorporating new models to bring products to the market quickly that permits them to keep pace with world innovation.
Historically, sysadmins and developers have taken different positions about how to push products to production environments.
- Sysadmins are responsible for keeping the production environment up and running and dealing with Service Level Agreements (SLA).
- Developers want to push new versions to production as soon as possible to incorporate new features into applications.
- Those new features could break production systems and have an impact on SLAs.
It is for this reason that new approaches like DevOps are better positioned to deal with those problems.
Modern sysadmins need to be aware of DevOps practices in order to take advantage of those approaches and participate in the general improvement of their organizations to produce better applications and reduce their software products' time to market.
DevOps is intended to be a cross-functional mode of working, that brings together different teams and breaks silos into the organization.
It is important to identify the key aspects of DevOps for development and delivery processes, which permit to incorporate short iterations to push code frequently to production supported by automated processes with the goal of increasing the quality of code and reduce negative impacts.
The following figure shows the DevOps lifecycle and represents the continuous integration, continuous delivery, and continuous deployment processes.
To facilitate DevOps adoption and transition between each phase, it is important to be aware of the following DevOps values, principles, and practices.
- Culture represented by human communication, technical processes, and tools
- Automation of processes
- Measurement of KPIs
- Sharing feedback, best practices, and knowledge
- Develop and test against a production-like environment
- Deploying with repeatable, reliable processes
- Monitor and validate operational quality
- Amplify feedback loops
- Self-service configuration
- Automated provisioning
- Continuous build
- Continuous integration
- Continuous delivery
- Automated release management
- Incremental testing
Key aspects to take into consideration
Transitioning from sysadmin to DevOps involves a learning curve to develop new skill sets or improve existing ones. As a general reference, the DevOps Roadmap provides a step by step guide for DevOps or any other operations role. It is intended to give you an idea about the landscape and not to encourage you to pick what is hip and trendy.
In the next sections, we will explore some key aspects that could help to succeed in this transition.
Git and version control
As a sysadmin, you are producing code and documentation on a daily basis. Maybe you already use a versioning control system, but if not, git is a great option.
There are several implementations that you can use online for hosting your repository, such as GitHub, GitLab, and Bitbucket. Also, if you need to install an internal service on-premises, Gitlab Community Edition could be a good option as well.
You can find a lot of resources online to get started with git, like this simple guide.
The basic idea is to keep all your code and documentation in a version control system, which permits you to have all the history about your changes and be able to roll back changes easily in case necessary.
Another advantage of a control version system is that it will help you to deploy the right version of code at scale, and it will contribute to implementing infrastructure as code and automation.
From pets to cattle
Changing focus from pets to cattle is a core mind shift about how to organize and interact with infrastructures. The analogy of Pets vs. Cattle has become one of the core concepts of a DevOps service model. Pets are each vitally important, but Cattle are interchangeable.
This alludes to the concept of immutable infrastructure, a paradigm in which servers are never modified after they're deployed. If something needs to be updated, fixed, or modified in any way, new servers built from a common image with the appropriate changes are provisioned to replace the old ones.
The benefits of an immutable infrastructure include more consistency and reliability in your infrastructure and a simpler, more predictable deployment process.
Logs and observability
When scaling services, centralized logging becomes more important because storing logs and metrics externally allows debugging even when shell access is restricted or after a server has been destroyed. Also, it contributes to improving security while preserving traces in the event of a server being compromised.
Observability is a term from control theory. "In control theory, observability is a measure of how well internal states of a system can be inferred by knowledge of its external outputs. The observability and controllability of a system are mathematical duals." - Wikipedia.
In the world of software products and services, observability means you can answer any questions about what's happening on the inside of the system just by observing the outside of the system, without having to ship new code to answer new questions.
Sometimes there is a debate around observability vs. monitoring. The "Monitor" section of the DevOps loop provides the all-important feedback that drives future iterations. Monitoring and observability are in a symbiotic relationship, summarized by the following statement.
"If you are observable, I can monitor you."
After you've made the system observable, and after you've collected the data using a monitoring tool, you must perform analysis either manually or automatically.
Idempotency and automation
Idempotence is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application.
If we apply this to programming, idempotency means that the end state remains the same, no matter how many times the code is executed. This concept has been usefully implemented into configuration management tools.
Configuration management tools enable changes and deployments to be faster, repeatable, scalable, predictable, and able to maintain the desired state, which brings controlled assets into an expected state.
There are a variety of configuration management tools available, and each has specific features that make it better for some situations than others. Ansible is a very interesting tool and a good starting point.
"Cloud-native' is more than 'cloud-only.' It means bringing cloud-centric best practices to software and IT generally, whether that be in the cloud or on-premises." - Jason Bloomberg
Automation is the ultimate need for DevOps practice, and 'automate everything' is the key principle of DevOps. Automation in DevOps ultimately encapsulates everything right from building, deploying, and monitoring.
Some automation advantages:
- Removes manual errors
- Team members are empowered
- Increases the number of deliveries
- Reduces the lead time
- Increases frequency of releases
- Provides faster feedback
- Enables speed, reliability, and consistency
As you can see, automation has several advantages that can and actually help you to manage your infrastructures, but also it is important to keep in mind that automation can induce errors at scale also, so you need to be prepared and plan in advance how to deal with those scenarios.
"Fueled by data and empowered by automation, IT can operate in real-time, be predictive and rely on detailed data to have a true seat at the table, delivering strategic value for their organization and for their customers." - Joseph Bradley
Security by default
Information security consists basically of being aware of the value of our information assets, identifying the threats and vulnerabilities that they are exposed to, and reducing the risk level, implementing countermeasures with the goal of preserving confidentiality, integrity, and availability.
"Cyber-Security is much more than a matter of IT." - Stephane Nappo
There are standards that could help to accomplish this goal. Keep in mind that information security is an important process that needs to be part of our organization and be incorporated in every aspect of software development and infrastructure operations, including security automation.
Security by default, in software, means that the default configuration settings are the most secure settings possible. Some other references that you could be interested in are the 20 CIS Controls & Resources and CIS Benchmarks, where you can find security controls and practical hardening guides for several operating systems and applications.
"Cybercrime is the greatest threat to every company in the world." - Ginni Rommety
Sysadmin to DevOps transition could be easier or harder depending on your current background and practices; for sure, it will have a cost in time and effort but will be worth it if you foresee the future benefits of the new skills, tools, and mindset that will bring to you.
The most important part of this transition is to keep learning and discovering during the process.
"DevOps represents a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and culture) and seeks to improve collaboration between operations and development teams. DevOps implementations utilize technology — especially automation tools that can leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective." - Gartner
[ Want more on DevOps? Download the open source guide to DevOps monitoring tools. ]