Skillsets To Work In DevOps Environment – A Comprehensive Guide

As of current IT market, DevOps domain is one of the best options for IT folks in terms of salary and career growth. Having said that, there are lots of misconceptions about what DevOps really mean. One such thing is “How can I be a DevOps engineer?”. First of all, there is no such thing called a DevOps engineer or a DevOps team because it is not a thing.

Wikipedia says,

DevOps (a clipped compound of development and operations) is a culture, movement or practice that emphasizes the collaboration and communication of both software developers and other information-technology (IT) professionals while automating the process of software delivery and infrastructure changes.

From the above definition, it is clear that 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. Read this article to understand DevOps in a better way. What does devops really mean?

Organizations trying to achieve DevOps for their projects need people with collaborative skills, willing to change and adopt new technologies, a good understanding of systems, automation tools, CI tools, Version control systems, understanding of networking etc. that are required for getting the app into production without much delay. Also, the design or the pipeline designed by the team should be able to deliver small updates or releases without much manual intervention. This could happen only if there is a cultural shift in the way you work.

Skillsets To Work In DevOps Environment

You must understand the fact that DevOps is not specific to developers or system engineers. It’s for anyone who is passionate about evolving technologies, practices and willing to work in a more collaborative environment where everything is automated to make everyone’s life so easy. In this article, we will explain how you should prepare yourself for tools and technologies to adapt and work in DevOps culture.

These skillsets are completely opinionated.

1. Understanding Culture

The first and foremost thing is to understand the DevOps culture. It is all about bringing people together to work towards a common goal in an efficient way. One thing IT managers should do before getting into toolsets is that every member of the team should be given good advice on how DevOps work and its cultural aspects. It avoids lots of confusion in the team. People will stop pointing fingers for various issues once they understand that fact that an issue arising in a team is a responsibility of every individual in the team irrespective of their technical skills. If proper advice is given, people will stop saying that “automation is DevOps

READ  Are Managed Service Providers About to Put DevOps Out to Pasture

Online Course:  Learn DevOps: The Complete Kubernetes Course

Learn how you can run, deploy, manage and maintain containerized Docker applications on Kubernetes

2. 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 which are highly used by organizations (RHEL, Centos, Ubuntu, CoreOS etc). Get your hands dirty with terminals of these systems because GUI is less preferred in *nix world. You can use Virtual box or AWS to spin up Linux servers.

You can start with the following.

  1. Understand Linux booting process
  2. Install and Configure web servers (Apache, Nginx, Tomcat etc..)
  3. Learn how Linux processes work.
  4. Learn how SSH works.
  5. Learn about different file systems.
  6. Learn about important protocols (SSL, TLS, TCP, UDP, FTP, SFTP, SCP, SSH)
  7. Learn to manage services and try to create a service on your own (Initd, Systemd)
  8. Host static/Dynamic websites on web servers.
  9. Setup Load balancers (Nginx, HA proxy etc)
  10. Break something and learn to troubleshoot.

3. Understand How Data Center Works

The basic building block of any organizations is its Datacenter (Infrastructure). It could be on cloud or on-premise. An overall understanding of Infrastructure components is a must for a person who wants to practice or work in a DevOps environment. You should mainly have a basic understanding of the following.

  1. Networking
    • Subnets
    • Public network
    • Private network
    • CIDR Notations
    • Static/Dynamic IP’s
    • Firewall
    • Proxy
    • NAT
    • DNS
    • Troubleshooting
    • VPN
  2. Storage
    • SAN
    • Backups
  3. High Availability
    • Clusters
    • Fail Over Mechanisms.
    • Disaster Recovery
  4. Active Directory/LDAP

There could be more things but we have highlighted the important building blocks.

4. Learn Git and Learn to Document

In today’s world, we treat everything as code. It is very important to version control everything you do (except passwords and secrets :P). Git is the best version control tool. There are plenty of tutorials available on git and it will not take much time to learn the important git operations.

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

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

READ  Service Discovery and Other Cluster Management Techniques Using Consul

5. Learn to Automate

Automation has become the important aspect of every organization. We no more create servers manually we just automate it. From provisioning servers, application configuration, deployment, everything should be automated. You can learn any of the following devops toolsets that fit your need.

For dev Environment,

  1. Vagrant

For infrastructure provisioning,

  1. Terraform

For Configuration management,

  1. Chef
  2. Puppet
  3. Ansible
  4. Saltstack

For immutable VM image management,

  1. packer

6. Learn Some Scripting

Even though there are enough tools to automate everything, you might need a custom functionality that a tool may not offer. In such cases, scripts come in handy to achieve those functionalities. You can learn the following commonly used scripting languages.

  1. Bash/Shell
  2. Python

7. Containers, Clusters, and Distributed Systems

Container adoption is increasing day by day. The organization you are working for might not be using containers, However, it is best to have a hands-on knowledge working with container technology like Docker.

Once you understand docker, you can try out its clustering tools like Kubernetes, Amazon ECS, Swarm etc.

Also, have some level of understanding about distributed systems.

8. Read Read and Read

Nothing will gain knowledge like reading. Read at least one DevOps tech blog related to engineering. Follow all the engineering blogs like Netflix, Twitter, Google etc. Learn how they are are using the right toolsets, their deployment strategies and their latest open source projects.

Follow like-minded people on LinkedIn, Reddit, Medium, Quora etc.

9. Write a Blog

It’s good to share with others about your experiences and learning. You can publish tutorials, learnings, and your experiences on your personal blog. It will help others and it will create a personal brand for yourself. It takes less than 30 minutes to set up a WordPress blog.

Whenever you a learn something new, you can write about it. It will be a reference you as well as others. You can share it on Linked in groups, Dzone etc..

Conclusion

We have covered some important aspects that would help you to work in DevOps environment. You can share your experiences by a blog post on devopscube. We are happy to publish it or you can leave a comment below.

Further Reading

  1. Ultimate List of DevOps Tools for Complete DevOps Solution

Free DevOps Resources

Get DevOps news, tutorials and resources in your inbox. A perfect way If you want to get started with devops. Like you, we dont like spam.