Understanding What DevOps Is
Succeeding in DevOps requires a very broad range of skills that covers both IT operations and software development. However, not all DevOps roles are equal in the eyes of startups and large enterprise. Some believe the role to be that of a senior developer who understands operations, while other’s believe the opposite to be true — highly skilled operators the understand software development.
No two organizations define the role of DevOps the same. However, fear not, for we will attempt to highlight the skills required to succeed no matter which way the pendulum swings in an effort prepare you for a future career in today’s highly sought-after role.
Scripting and Programming
No skill is more important to succeed in DevOps than having the ability to do some level of programming. Whether you’re writing simple scripts or laying down complex tooling in your language of choice, automation is an essential skill you will need. Choose a language popular with automation and study it enough to automate common tasks.
Popular languages:
- Python
- Ruby
- Golang
Configuration Management
Long ago in a grey beard’s datacenter, in a galaxy far, far away, administrators could count the number of servers they maintained on one hand — two if you were really talented. With automation tooling maturing and being adopted by more and more large enterprise companies, expectations are that an individual systems administrator is responsible for hundreds, sometimes thousands of servers. To satisfy this requirement you will need to introduce yourself to configuration management tools.
Popular tools:
- Puppet
- Chef
- Ansible
- Salt
Continuous Integration, Continuous Deployment, and Continuous Delivery
The life-cycle of an application is the following: add new features > Analyse code > Build > Deploy > Deliver. To conquer any Agile environment and become king of DevOps, you’ll need to understand each of the three main concepts.
Continuous Integration relates to the ability of your developers to integrate new code into an application’s code base. To accomplish the new code will be put through a barrage of tests, ranging from simple syntax checks to unit tests with high code coverage, and lastly, complete a successful build before it can be merged into production code.
Continuous Deployment is the ability to successfully create new artifacts — packages of your application — that can be delivered to your servers on request.
Continuous Delivery is the ability to deliver your applications to production servers on a continuous basis.
Popular tools:
- Version Control: Git, Subversion
- Build: Jenkins, Bamboo, CircleCI
- Code Analyse:
- Artifact Repository: Artifactory, Nexus
- Project Management: Maven, Gradle