In this article, We are going to cover What is DevOps, Who are DevOps engineers, Skills for DevOps Engineer must possess, What does DevOps Engineer do ?
The Popular DevOps Tools you should master, A Daily “Check List” of A DevOps Engineer , DevOps Engineer Roles and Responsibilities.
What is DevOps ?
When a Developer and QA Engineer starts working with an Ops Engineer on a daily basis I call it DevOps.
In other terms DevOps is born when The People , The Process and The Technologies starts working together in a collaborative manner to achieve quicker and faster delivery of the quality products and value to the customers through Automation.
DevOps is neither a set of tools nor a technology its a Philosophy, its a Culture.
DevOps has grown considerably since its inception. Today, there are many companies that have adopted DevOps, and DevOps engineer is one of the most sought after roles in the marketplace.
Who are DevOps engineers ?
Yesterday’s System Administrators Today’s DevOps Engineers!
In one way that’s true because the major role in the whole DevOps cycle is being played by the Ops guys who were once System Administrators.
But that is equally true that in today’s world everybody who takes part in Software Development Process has to be a DevOps engineer by learning new tools and practices.
As we are aware the days of System admins who applies specialized skills to tune individual servers is over. Today’s work is all about automation and it requires to re-skill yourself and adapt to these new and disruptive tech changes.
Skills a DevOps Engineer must possess
One thing which you need to keep in mind that when you talk about a “DevOps engineer“ is that it is not a role but a skill set that needs to be mastered by every software developer and system administrator.
- An Excellent System Admin: A System Administrator is supposed to build, manage, and troubleshoot servers on a regular basis. Knowing low-level OS functions – e.g. the kernel, how the boot process happens, what is memory allocation, etc. – is paramount.
- A Master in deploying virtualization: A DevOps professional should be well-versed with the entire process of virtualizing servers and other components. Some of the important virtualization tools and technologies are VMWare, Clouds (AWS, GCP, Azure etc.), KVM, Vagrant, VirtualBox etc.
- Networking and Storage knowledge: A DevOps Engineer must know the IT network and storage concepts. This comes in handy when there is a need to design solutions that can stand up to the test of scalability, performance, and high availability at all times.
- Knowledge of Automation tools: There are a lot of automation tools and technologies that are being deployed in the DevOps process, and as a DevOps professional we need to be familiar with these sets of tools and be able to deploy them in the DevOps set-up. Some of the important tools: that are being widely deployed include Puppet, Chef, Jenkins, Salt, Ansible, Kubernetes, Docker, Prometheus, Cloud Computing and storage platform, and Infrastructure as a Code (Terraform).
- Scripting: Now this is one part where most of the DevOps engineers with System Administrator background lacks. But nothing to worry about here. Having a basic knowledge of coding in any of the popular coding language (For e.g. Python) can go a long way. As we know in today’s time everything is automatized including the server triggering, application installation, configuration, and validation processes. They must be able to write code to automated repeatable processes. That’s right, if you are going to replace manual processes, someone needs to write some code. Remember one thing as a DevOps Engineer you will not be writing some thousands of lines of code. What is required is to have basic enough knowledge to write some small scripts and should be able to understand the code flow.
- Security :These days we hear a new term “DevSecOps” right! We hear it because Security is one of the prime focus of a DevOps professional. A DevOps personnel needs to know about various security measures that are to be taken care of to ensure that the system is safe and sound and running at all times.
- Testing: Now you will say why a DevOps person needs to know the testing? I agree with that question. But as you know there are a lot of automation tools that are deployed for the process of testing, so the DevOps personnel needs to have hands-on experience of working with these tools. Nothing to worry here again You can always got to your Development and Testing teams to address the errors if any in their application.
- Communication: A DevOps engineer must have very sound soft skills like communication. As the DevOps Process demands an extensive level of collaboration between different teams, different people from different geography’s one must be able to communicate in an effective manner. Before designing and implementing the DevOps pipeline you’ll need to talk to ALL of the teams and figure out areas that they are ready to slightly modify for the pipeline to become a success. Pro Tip: sometimes this can require tremendous amounts of patience and perseverance 🙂
What does DevOps Engineer do ?
- Infrastructure setups (either over Cloud or Bare Metal or VM’s)
- Software Installations
- Server Maintenance
- Application Support
- Version Control support (GIT, SVN ..)
- Build and Release process support (Jenkins, Team city ..)
- Automate Configuration Management (Ansible, Chef, Puppet ..)
- Support cross functional teams
- Research and Deploy new tools
- Vulnerability Assessment and Patching
- Server and Application level Monitoring (ELK, Prometheus, Grafana ..)
- Knowledge of Ticketing system (Jira, Bugzilla ..)
- Automated Backups using various tools
- Access management
- Continuous Improvement and Self Training
The Popular DevOps Tools you should master
DevOps tools enables the teams for effective collaboration , sharing and exchanging resources and information’s in an automated manner.
The following chart includes the most popular DevOps tools being used today. By the way for each step in DevOps Life Cycle there are multiple alternative (PAID & Open Source) tools are available in the market.
- Collaboration : JIRA, Slack ..
- Code Hosting and Code Review : GitHub, GitLab, SVN ..
- Continuous Integration and Deployment : Jenkins, GitLab CI/CD, Team City ..
- Testing Automation : Selenium …
- Configuration Management : Ansible, Chef, Puppet ..
- Infrastructure And Application Monitoring : Prometheus, Nagios ..
- Containerization and Provisioning : Docker, Kubernetes, AWS, GCP, Azure, Openstack, Vagrant ..
- Infrastructure as code/ orchestration: Terraform
A Daily “Check List” of A DevOps Engineer
Below are some Daily “Check List” for DevOps Engineer OR DevOps Engineer Roles and Responsibilities
- Checking Emails
- Checking system and application monitoring alerts
- Checking JIRA / Any other ticketing tool for pending/scheduled tasks and updating the sprint accordingly.
- Clear Notifications of alerting system.
- Ensure if any new server is created and monitoring has been set up on that.
- Verify if all the services running on that server are covered under the monitoring system.
- Check and automate if any server is running out of disk. Taking a backup of instance and restoring if required.
- Taking a backup of Prod DB and providing that DB to developers on Staging / Testing Environment for testing of any issue.
- Automation setup for daily tasks like (DB/Instance/Logs/Config-Files) backup.
- In case of new project setting up new Jenkins CI/CD Jobs. ( Freestyle / Pipeline).
- Monitoring health of hosting infrastructure like Kubernetes clusters or docker swarm nodes.
- Making config changes on servers using (Ansible /chef/ puppet).
- Writing configuration management playbooks for automating daily tasks.
- Deploying code on Development and Production servers.
- Ensuring that post-deployment sanity of code is done and proper sign-offs are given.
- Seeking for approvals from (Business/QA/InfoSec/UAT and Security Sign-offs).
- Providing assistance during IT Audits.
- Ensuring that access on servers are given to required users only that’s too after proper approvals from the various stakeholders.
- Preparing documentation for all the tasks and processes.
Once you get hold of all these things your life will become easier and you will start loving it. Another fact is this is one of THE MOST HIGHLY PAID SKILL SET out there in market.
The Only Key to SUCCESS is …
By now you must have understood what is DevOps and the DevOps teams and engineer’s does.
Hope you like the article. Please let us know your feedback.
Thanks. Happy learning!