Sunday, November 29, 2020

What are Roles and Responsibilities of a DevOps Engineer?

Prior to defining a DevOps Engineer, let’s see what exactly DevOps is. As the name suggests, DevOps is an amalgamation of Development and Operations processes.

Introduction

In this article, we will have a look at:

  • Brief Introduction to DevOps
  • Brief Introduction to DevOps Engineer
  • Roles and Responsibilities of a DevOps Engineer
  • Key DevOps Skills
  • Emerging job trends in the market and the salaries offered

Getting Started – What is DevOps?

Prior to defining a DevOps Engineer, let’s see what exactly DevOps is. As the name suggests, DevOps is an amalgamation of Development and Operations processes. It can be thought of as an IT strategy, which combines people, processes, skills and technology to provide continuous value to the customers. From a more technical point of view, DevOps combines development, IT operations, quality assurance, security practices of an organization to collaborate, produce and provide better and reliable products and services. A visual representation is given in the image below (Image 1).

Image 1 – DevOps Representation

DevOps Advantages

Advantages of a DevOps practice are numerous:

  • Improved Quality
  • Faster Deployments
  • Increased security and reliability
  • Once setup, there after minimal cost in production
  • Increased organizational productivity

    A visual representation is given in the image below (Image 2).

    Image 2 – Advantages of a DevOps practice

    Who is a DevOps Engineer?

    As the name suggests, the DevOps Engineer is a person who practices DevOps in his/her organization. He/she can be a developer turned DevOps professional, an IT admin turned DevOps professional, an altogether newly hired DevOps professional holding a bunch of certifications. In a nutshell, a DevOps Engineer is one who understands the various aspects of the DevOps strategy, writes codes and scripts, creates CI/CD pipelines, automates testing workflow, automates infrastructure, collaborates and communicates with others.

    DevOps Roles

    The above DevOps Engineer description is usually divided amongst various roles which are documented as below:

    • DevOps Evangelist
    • Release Manager
    • Automation Architect
    • Developers
    • Experience Assurance Professionals (XAs)
    • Security Engineer
    • Utility Technology Player

    A visual representation is given in the image below (Image 3).

    Image 3 – DevOps Roles


    Responsibilities of a DevOps Engineer

    Responsibilities of a DevOps Engineer vary as per the roles, but the intent is common, to create automated distributed delivery and deployment processes. For ex: XA professional’s responsibilities will be different than that of a Release Manager. Let us discuss in brief the responsibility of each of the roles.

    DevOps Evangelist

    He/she is the one who plans, ideates the whole practice and processes. He/she is the one who owns the DevOps culture in an organization. DevOps Evangelist is the leader of the transition to DevOps. He/she makes sure that the IT professionals are getting trained properly to bring in the DevOps culture in the organization. He/she evaluates the whole scenario, prepares a practical plan and executes it. He/she shouldn’t be afraid to fail, fail and learn should be the mantra.

    Release Manager

    He/she manages the DevOps product end to end. He/she is responsible for the product right from development to production. This role is slightly different than a traditional project manager; it’s more on the technical side. Release managers supervise and oversee the end to end delivery. They are involved in every phase: coordination, integration, development, testing, deployment, and delivery.

    Automation Architect

    It’s an extremely vital role because systems rely heavily on automation in a DevOps culture. He/she analyses designs and implements strategies for continuous automated deployments. He/she is also known as Integration Specialist.

    Developers/Testers

    Developers are the heart and soul of a DevOps practice. The term may be the same as that of traditional approaches but the responsibilities have dramatically increased.  Initially, they used to only replicate client’s requirements via code and provide a build for the QAs to test. But in a DevOps practice, the developer is expected to code, unit test, deploy, and monitor the application. Since the duo of a developer and tester is expected to produce magic, the role of a tester also enhances dramatically in a DevOps scenario.DevOps is referred to as DevTestOps as well, to indicate the importance of testers. The onus is on automated testing in a fast-paced environment, so that the quality of the product remains intact.

    Experience Assurance Professionals (XAs)

    The existing QA roles have been upgraded. The XA professional is expected to test the features and functionalities keeping in mind the end-user experience.

    Security Engineer

    They work along with the developer providing their deep-dived recommendation on a security. As compared to the waterfall methodology of product/service delivery where insecurity used to be really an end thing to ponder on, a DevOps project keeps security at par with any other factor, and hence the security engineer’s responsibility increases manifold.

    Utility Technology Player

    These people are a rare breed, they can work and operate over-development platforms, tools, networks, servers, databases, and even development and support. A successful transition to a DevOps environment requires people to fill in the above 7 roles and work as a tight-knit team to deliver reliable products and services. Let us discuss the skills which a DevOps Engineer should possess.

    DevOps Skills:

    Key skills that are needed to become a successful DevOps certification Engineer are:

    Knowledge of major DevOps Tools

    There are many DevOps Tools today in the market, there’s no need to master them all, but there’s need to know few and understand them deeply.

    • Source Control Management– Also known as SCM, a DevOps Engineer is expected to be aware of GIT and GIT workflows. The concepts of branches, merge, rebase, pull requests, push, commit, tags, etc. are quite important. GIT commands play a vital role in mastering a GIT workflow, in places where there’s no tool and just a plain old terminal.

    • Continuous Integration– Also known as CI. CI is the process of automation of code integrations from different developers or contributors into a single entity or build. A CI process often includes restoring, build, code analysis steps. Jenkins, Azure Pipelines, TeamCity, Travis CI, CircleCI are few popular tools available.

    • Configuration Management– Also known as Infrastructure Management. CM is the process to automate, manage, monitor changes across servers, networks, storages, etc. Ansible, Puppet, Chef are a few popular tools available.

    • Deployment Automation– It is the process of automating the deployment after CI process creates a build. Jenkins, Azure Pipelines, Octopus Deploy are few popular tools available.

    • Containerization– It is the process of operating system virtualization in which different applications are executed in their isolated spaces called as containers. Dockers, Kubernetes are few popular tools available.

    • Cloud Platforms– Knowledge of a cloud platform is mandatory for a DevOps engineer. AWS, Azure, GCP are the most popular cloud platforms available.

    • Work Tracking– JIRA, Azure Boards are the most popular tools available.

    • Artifact Management– Artifactory, Azure Artifacts are the most popular tools available.

    Image 4 – Major DevOps Tools

    Coding and Scripting Skills

    A DevOps Engineer need not be a code ninja but essential knowledge of python, Java, JavaScript, bash, shell, Linux is required, mostly for automation processes, and remote operations.

    Continuous Integration & Continuous Delivery Process

    CI/CD as it is fondly called is the essence of DevOps, knowledge of the CI/CD process and not mere the tools, is very important. Should a deployment be triggered on every successful build, should there be pre-deployment rules configured before production deployment, should there be approvals required before a pre-prod run, this kind of questions will arise in every DevOps enabled organization. The answers lie in the understanding of the process of CI/CD.

    Automation skills

    A DevOps Engineer is expected to be good at automation. Creation of a database or service on a cloud platform, installation of a mandatory patch on all the VMs of a network- these types of requirements will be encountered by a DevOps engineer on a regular basis. Achieving these through automated scripts (ARM templates, bash scripts) should be a day to day job of the DevOps engineer.

    Soft Skills

    A DevOps Engineer is expected to collaborate with fellow developers, stakeholders, customers, and others on a regular basis; hence his coordination/collaboration skills should be up to the mark. Being vocal about the DevOps culture should be a trait. Last but not the least, common sense and practicality have always been vital for any requirement, which holds true for a DevOps Engineer as well.

    DevOps Engineer Job Description:

    Let us have a look at a DevOps Engineer job description from a job portal and see what all skills are required. It will validate the skills which we have discussed above. Below is the JD of a DevOps Engineer requirement at Ericsson, the JD has been pulled from Glassdoor, the url being:

    The job description aptly matches with the skills that we have discussed. Remember, understanding and embracing an organization’s DevOps culture is as important as mastering a tool. All the tools need not be mastered, a valid start and effort is necessary.

    Emerging Trends and Salaries Offered:

    Next, we will look at the emerging trends in DevOps and the salaries offered to the DevOps Engineers. According to a Stack Overflow study, DevOps engineers find their place as top earners amongst all the IT professionals in countries such as the USA, UK, India, and Germany.

    Of course, the salary differs greatly by geography – in the US a DevOps Engineer earns a median salary of about USD 125,000 whereas in India the median salary of a DevOps Engineer is around USD 15,000. But given the disparity of the location, the fact that DevOps professionals having Azure DevOps certification are highly paid it cannot be ignored.

    No comments:

    Post a Comment

    Get max value for identity column without a table scan

      You can use   IDENT_CURRENT   to look up the last identity value to be inserted, e.g. IDENT_CURRENT( 'MyTable' ) However, be caut...