How to become a DevOps engineer

DevOps is not about any tools or technologies. It is a philosophy for making different IT teams work together to deliver better and fast results through continuous feedback. You must understand the fact that DevOps is not specific to developers or system engineers, It’s for anyone passionate about evolving practices, technologies and willing to work in a collaborative environment where everything is automated to make everyone’s life so easy.

This article it will explain how you should prepare yourself for tools and technologies to become a DevOps engineer who practices the DevOps philosophy.

Understand DevOps Culture

To become a DevOps engineer, the first and foremost thing is to understand the DevOps culture. It is all about different teams working together towards a common goal. In other words, there should not be any blaming culture between different IT teams.

IT leaders and decision-makers should make sure the entire team is mentored on DevOps practice’s cultural aspects before getting into DevOps toolsets. It avoids lots of confusion in the group. It usually doesn’t happen in organizations, and they end up having a “DevOps Team” for operations, which again ends up in a siloed structure.

People would stop hiding the truth and stop blaming others for project issues once they understand that an issue in project delivery has to be addressed in a collaborative manner than pointing fingers.

Once you understand the DevOps culture, you would stop saying that “CI/CD and automation is DevOps.”

Learn about *nix Systems

We are in an era where we cannot live without Linux/Unix systems. You should get a better understanding and working knowledge of various Linux distributions highly used by organizations (RHEL, Centos, Ubuntu, CoreOS, etc.).

As per The Linux foundation case study, 90% of the public cloud workload runs on Linux.

Understand How Infrastructure Components Work

The basic building block of any organization is its Infrastructure. It could be on the cloud or on-premise data center.

An overall understanding of Infrastructure components is a must for a person who wants to practice or work in a DevOps environment. It will help if you have a basic understanding of the following.

Networking

  1. Subnets

  2. Public network

  3. Private network

  4. CIDR Notations

  5. Static/Dynamic IP’s

  6. Firewall

  7. Proxy

  8. NAT

  9. Public & Private DNS

  10. Troubleshooting

  11. VPN

Storage

  1. SAN

  2. Backups

  3. NFS

Single Sign On

  1. Active Directory/LDAP

High Availability

  1. Clusters

  2. Fail Over Mechanisms

  3. Disaster Recovery

Load Balancers

  1. L5 Load Balancers

  2. L7 Load Balancers

  3. Load balancing algorithms

  4. Reverse Proxy

Security

  1. PKI Infrastructure

  2. SSL certificates

VPN

  1. Site to Site VPN

  2. Client to site VPN

Get Certified On Cloud

Do not use the exam dumps to pass the certification, It adds significantly less value to you. It may be useful for the organization to show the clients that they have certified cloud engineers.

Most of the public cloud market share is currently owned by AWS. Pick any one public cloud, preferably AWS, and learn about all its core infrastructure services. Do hands-on on all the core services and understand how it works.

Learn Infrastructure Automation

We no more create servers manually, Infrastructure automation has become an essential aspect of every organization. Many organizations are investing in their automation initiatives, from provisioning servers, application configuration, deployment, everything should be automated. You can learn any of the following DevOps toolsets that fit your needs.

For Dev Environment

  1. Vagrant

  2. Docker Desktop

  3. Minikube

  4. Minishift

For infrastructure provisioning

  1. Terraform

  2. CLIs (of respective cloud provider)

For Configuration Management

  1. Ansible

  2. Chef

  3. Puppet

  4. Saltstack

VM image management

  1. Packer

Containers, Distributed Systems & Service Mesh

Container adoption is increasing day by day, the organization you work for might not be using containers now. However, it is best to have hands-on knowledge of container technology like Docker. It will gain you some competitive edge among your peers.

Once you understand docker, you can try out its clustering and orchestration tools like Kubernetes, Docker Swarm, etc. These platforms are best suited for microservices-based architecture. Many engineers are showing interest in learning kubernetes, 2021 will see many engineers getting certified in kubernetes.

A service mesh is an advanced topic when it comes to distributed systems. If you are a beginner to container toolsets, you can learn this after gaining a good knowledge of microservices-based architecture.

Logging & Monitoring

Logging and monitoring are fundamental aspects of an infrastructure. Most of the apps deployed in the infrastructure will produce logs and metrics. Based on architecture and design, logs are pushed and stored in a logging infrastructure.

Every company will have a logging and monitoring infrastructure. Commonly used logging stacks are Splunk and ELK. Also, there are few SaaS companies like Loggly, which provide logging infrastructure.

For monitoring, there are open source tools like Prometheus, Nagios, Grafana and enterprise tools like AppDynamics, Datadog, SignalFx, etc.

Developers, operations teams, and security teams use logging systems to monitor, troubleshoot, and audit applications and infrastructure. Also, for AIOPS, log data plays a key role.

In every organization, mission-critical applications are monitored 24/7 using monitoring dashboards. Generally, dashboards use data from logging sources or metrics generated by the application.

Also, there will be alerting systems that use the rules configured in the monitoring systems for alerting. For example, an alert could be triggered as a slack notification, Jira ticket, email alert, ServiceNow incident ticket, or xMatters phone call. Alerting workflows differ from organization to organization.

As a DevOps engineer, you should be able to query logs and troubleshoot issues in non-prod and prod environments. Understand regular expressions is very important to query logs in any logging tool.

Understand Security Best Practices (DevSecOps)

DevSecOps is another area dealing with integrating security practices in each stage of DevOps.

In cloud environments, crypto mining is a common attack. This mostly happens when the cloud access secrets are maintained poorly so that hackers get access to it.

When it comes to DevOps, secret management for applications and infrastructure components should follow standard security practices. The following link shows the key DevSecOps standard practices published by Redhat.

Hashicorp Vault is a great secret management tool you can look at. There are many workflows available to manage environment secrets.

Learn Coding & Scripting

You need to understand the Developers’ world better to collaborate better. To do that, you need to know how a typical development process works. So it is essential to have a good understanding of programming, APIs, etc. It will help you troubleshoot and collaborate better.

The ideal is to pick a programming language and build an application from scratch. In the process, you will understand the process and components involved in application development. Once you know this, you can effectively interact with developers and other teams.

Also, In today’s world, we treat everything as code. Even though there are enough tools to automate everything, you might need custom functionality that a tool may not offer. In such cases, coding/scripting comes in handy to achieve those functionalities. For example, Jenkins pipeline as code requires an understanding of groovy, Ansible custom module requires an understanding of Python, Writing Kubernetes operator requires Golang experience. Also, if you look at AWS CDK or IaaC tool like Pulumi, you can use a programming language to define the infrastructure and do test-driven infrastructure development like you develop applications.

You can learn the following commonly used scripting languages.

  1. Bash/Shell

  2. Python

  3. Golang

Golang is really getting popular in the DevOps domain. Lots of DevOps tooling are done using Golang nowadays. In fact, tools like Kubernetes, Terraform are written in go.

Learn Git, Learn to Document, Learn about GitOps

It is essential to version control everything you do. Git is the best version control tool, there are plenty of tutorials available on git, and it will not take much time to learn important git operations.

You can start with Github or Bitbucket as your remote code repository.

Once you understand Git, learn about GitOps, GitOps is a way of implementing Continuous Deployment for cloud native applications. It focuses on a developer-centric experience when operating infrastructure, by using tools developers are already familiar with, including Git and Continuous Deployment tools.

The next important thing is to document every important thing you do, every repository must have a README file, which should explain your code in a better way. Good documentation will help not only you but also someone who tries to use your code.

Understand End To End Application Delivery Lifecycle

When it comes to the application delivery lifecycle, there are three important concepts you need to be aware of.

  1. Continuous Integration

  2. Continuous Delivery

  3. Continuous Deployment

Read this release process management article to understand how a typical application development, build, testing, deployment, approval process, and validation work. Learn to use CI/CD tools like Jenkins, Travis CI, GoCD, etc.

Different Types of “DevOps Teams”

Nowadays, every organization tags people dealing with Infrastructure/CI-CD as “DevOps Engineer.” and makes them part of a “DevOps team.” However, their duties vary depending on the teams they work for.

There is a misconception about “DevOps Engineers” thinking they are responsible for everything. That’s not true. It might work for small teams.

In reality, If you are hired as a “DevOps Engineer,” you will fall in any one of the following teams in an organization.

  1. Central Platform Team: Responsible for provisioning Infrastructure on demand. This team is responsible for delivering a scalable platform when requested. They will not take care of applications but the underlying platforms. They will make sure the production systems are available 24×7 through continuous platform support and monitoring. Also, they will work on new tooling and automation to meet future needs. The end consumers of this team would be a development or App Ops team. So this is more of shared responsibility.

  2. DevOps Team: Although “DevOps team” doesn’t make any sense, organizations use it to tag the operations team with this name. This team normally works with developers closely and serves multiple development teams. They are responsible for end-to-end application delivery.

  3. App Ops Team: This team part of specific engineering teams working closely on a specific program in an organization with good knowledge of that particular domain. For example, the payments team. This team is responsible for deploying and managing payment applications. Platform management will be taken care of by the central platform team or by DevOps teams.

  4. SRE Team: This team deals with automation, availability, latency, performance, efficiency, change management, monitoring, emergency response, and capacity planning. They work closely with developers to solve operational issues. This team consists of engineers working on infrastructure with a development background.

  5. Dedicated Support Team: Support teams are meant to troubleshoot/handle production support tickets and direct the respective team’s issues based on the severity.

The tools and processes involved in DevOps are not limited to what is mentioned in this article. However, these are commonly used open-source tools and technologies you can start with to become a DevOps engineer. If your organization or your project need experimented DevOps Engineers you can contact us to scheulde a meeting, otherwise if you are looking to grow professionally and find new challenges like a DevOps engineer check out our careers and join to SouthLights Group.

Source: devopscube.com

Devops Services
Previous
Previous

5 Best Practices for GitOps in Kubernetes

Next
Next

Detecting malicious code in program dependencies with Package Hunter