In this article, you come to know about DevOps and Job Responsibilities.
What is DevOps?
DevOps is a Software Development approach which involves Continuous Development, Continuous Testing, Continuous Integration, Continuous Deployment and Continuous Monitoring of the software throughout its development life cycle. These activities are possible only in DevOps, not Agile or waterfall, and this is why Facebook and other top companies have chosen DevOps as the way forward for their business goals. DevOps is the preferred approach to develop high-quality software in shorter development cycles which results in greater customer satisfaction. Check out the below video on What is DevOps before you go ahead.
DevOps engineer as ‘a company changer’
“DevOps engineers ensure the system is running smoothly and being monitored, and they can respond to issues as they arise. The DevOps engineer ensures that your developers are never doing repetitive tasks and that the infrastructure is kept up to date as the stack evolves. As processes change and the company grows, the DevOps engineer automates as much as possible to accelerate work. Because of DevOps, developers can focus on their core work so you can deliver products earlier and more reliably.”
The secret to becoming a top-class DevOps Engineer has not been fully discovered yet, organizations worldwide have begun identifying a few skills, a mix of which can help you evolve into an indispensable DevOps Engineer. These include:
- Business Process Re-engineering
A top-class DevOps Engineer should ideally possess the following qualities in order to have a flourishing career:
- Ability to use a wide variety of open source technologies and tools
- Ability to code and script
- Experience with systems and IT operations
- Being comfortable with frequent, incremental code testing and deployment
- Strong grasp of automation tools
- Data management skills
- Understanding and focus on business outcomes
- Understanding and efficiency in collaboration, open communication and reaching across functional borders
I think if you want to get into DevOps, my suggestion would be this:
– Learn at least one platform independent scripting language fairly well (e.g. Python).
– Learn at least one build/automation platform really well (e.g. Jenkins)
– Learn at least one Infrastructure as Code platform- preferably one with support for all of the major OSes (e.g. Puppet, Chef, Ansible, Terraform)
– Learn at least one monitoring system (e.g. Nagios, Zabbix, Cloudwatch, Icinga)
– Familiarize yourself with at least one cloud platform (e.g. AWS), at the very least, it would be good to get familiar with at least one hypervisor like Virtualbox
– It would be a good idea to learn a containerization platform like Docker as well
– Knowing Linux is a pretty dang good idea. While you can do DevOps in Windows, I think it will limit your career prospects as a good chunk of the DevOps toolchains out there are built on Linux.
– Most important, I think it is important to understand the basic philosophical ideas behind DevOps like team communication, automation, avoidance of business silos, etc…
DevOps is probably at least 60% about cultural change and 40% about having the right tools in place. It is one thing to fire up a Jenkins server but if people ignore their build failure emails and do stuff like check in bad code without vetting out their changes locally that toolchain is not going to be as useful. As a DevOps person, you need to remind people that everyone is responsible for the pipeline and this means taking steps to ensure stuff does not fail- or when it does, make sure it fails early and said failures are communicated to the right people so steps can be taken to get everything up and running again quickly.