I am often asked what one should do to become a DevOps Engineer. During the initial years of my professional journey, I assembled and installed computers and servers with tools. We built Linux OS from the source code for few hardened applications. It brought me into Infrastructure, Build and Release of applications, IT Operations etc. Therefore, my previous experience enabled me to get into Cloud Computing and DevOps with lightning speed.
Today, we have a growing generation that doesn’t know much about conventional data center. They know Cloud, a browser-based data center. The skills that someone earned at Public Cloud may become obsolete in a few years. However, having a strong fundamental knowledge about systems and programs will help to continue your IT career.
Learn the basics of technology in a hard way.
Do you want to learn Linux wholeheartedly? Then do not create a VM at the Cloud. Download the Linux kernel from www.kernel.org on your machine, compile, build then practice with commands and shell scripting. Understand the Linux file hierarchy structure, Linux Containers, Volumes, Network attached Storage (NAS), CPU, Memory, Swap, File permissions, VI editor, group/user management and configuration such as SSH, SFTP, Firewall, Static routing, and package install. Learn to generate self-signed SSL certificates.
Famous Linux Flavors: Debian, Ubuntu, CentOS, Red Hat Linux
Most important basic elements of programming languages are data types, variables, keywords, logical operators, data structures, functions and various algorithms. Once you become comfortable with the above, you can do coding in any programming language.
Famous DevOps programming languages: Python, Python and Python. Ruby, Go and Groovy. Shell Scripting.
It is important to know how to install and configure a package or an application. Learn mechanisms behind package formats such as YUM, RPM, DPKG from Linux OS level and ANT, Maven, Gradle for applications. Don’t use tools like Jenkins during this stage. Use the shell prompt and run the above manually. Debug, troubleshoot and understand the packaging concepts.
Famous packaging tools: YUM, RPM, ANT, Maven, Gradle
There is no standard tool or technology to practice networking. It can be done at your Linux machine or have two machines and connect them with your home router.
Learn to create IP address (Static/Dynamic), MAC address, DHCP, DNS, TCP/IP. HTTP, HTTPS, FTP, SFTP, SSH, NFS, LDAP and SSL. Understand the OSI layer concepts.
Remember the whole Cloud is running behind Web Servers. They can name it whatever. Your Cloud console is still a cluster of static web servers that allows you into their network.
Examples for static web servers are Apache and NGINX.
Apache is always the leader. I used Apache for more than 22 years at various client sites. Install and configure Apache at your Linux machine. Learn httpd.conf file structure, deploy static content, add SSL, create virtual hosts, add to DNS, API integration, headers, software load balancer concepts and practice commands. Understand the concepts of Reverse proxy, Forward proxy, and Application proxy.
Application Servers such as Tomcat, Red Hat Wildfly (Formerly JBoss), Oracle WebLogic and IBM WebSphere are leading the market. Learn application deployments, data sources, messaging, application clusters, session failover, stateless and stateful applications, singleton classes and protocols.
Famous Web Servers: Apache, NGINX
Famous Application Servers: Apache Tomcat, Red Hat Wildfly, Oracle WebLogic and IBM WebSphere
Having knowledge in Database is crucial to have a successful IT career. It doesn’t matter what job function you play. Data is the new oil or gold. People like me spent a lot of time in structured data world (SQL) and the DevOps generation must learn unstructured databases (NoSQL) too.
Download MySQL, install and create a database. Practice DDL, DML and TCL commands. Insert some data and see how it works.
Download MongoDB (NoSQL), install and create a data repository. Use your Python skills to load and retrieve data. Read articles about Big data and its ecosystem.
Famous SQL databases: MySQL, MariaDB, Oracle, MS SQL Server
Famous NoSQL databases: MongoDB, Redis, Neo4j
The above are the fundamentals of any IT Organization. It may be simple to learn but way complex to implement.
Now you have good exposure to Operating System, File Systems, Storage, Programming Language, Networking, Web/App Servers and Databases. It will take years to gain knowledge and experience in the above.
IMO, good skills in an Operating System (Linux) and a Programming language (Python) is more than enough to kick start your IT career.
It’s time to talk about the Cloud.
Read the NIST definition of the Cloud. It published in 2011 but interestingly these definitions have no change except MultiCloud.
The famous Public Cloud providers are Amazon, Microsoft Azure and Google Cloud Platform.
You can choose any Cloud provider and use their free tier to learn. Amazon gives 1-year free tier and Google gives $300 credit for new accounts. With google you can even email them and request to increase your credit. They are kind enough to grant you additional credit if you continuously practice at their Cloud.
The three Cloud Service Models are IaaS (Infrastructure as a Service), Platform as a Service (PaaS) and SaaS (Software as a Service).
IaaS is the fundamental.
The basic unit of work at the Cloud is a Virtual Machine. Read articles about Virtualization, understand Hypervisor, Guest OS, HA, VMotion etc. VMware website has fantastic documentation for Virtualization.
At the Public Cloud, create a VM, allocate a static IP, generate SSH key to login, attach volumes, take snapshots, images, add instance groups to learn autoscaling.
Learn their logging, monitoring, networking, firewall, DNS, load balancing, managed SSL certificates, market place and billing model.
A thorough IaaS knowledge is mandatory to have a successful DevOps career.
Remember, many executives at the corporate admire PaaS (Platform as a Service). They are tired of patching, upgrading, configuring and managing IaaS/On-Premise systems.
PaaS has Executive support. In order to be successful in your career, you must align your thoughts with them and develop PaaS skills on one or more Public Cloud platforms.
Some PaaS examples are Azure Cosmos DB, Azure Kubernetes Service, Amazon DynamoDB, AWS Lambda, Google Kubernetes Engine (GKE), Google AutoML etc.
You should choose a PaaS service that aligns with your fundamental skill and continue learning.
It’s time to talk about DevOps
The basic unit of work in DevOps is Cloud Computing. Without the flexibility and speed of Cloud, the DevOps practices are impossible. There are still debates going on about DevOps whether it is a job or culture. In fact, I wrote an article about DevOps culture two years ago.
It doesn’t matter. Let’s focus on building a DevOps career.
It’s a tool from Linux community; A distributed version control system for source code management. It is good to practice Git from the Linux OS shell prompt to understand the features then start using tools such as GitHub, Bitbucket etc. A thorough knowledge of Git commands, branches, reviews and API integration is important.
I remember those days when I went to client offices at mid night to deploy production applications (Mostly for regulation and security reasons). It was not fun. Build and Scheduling tools such as Jenkins ease the mid night keyboard strokes. You can integrate GitHub with Jenkins and let it build, schedule and deploy the code at target systems.
I vote for Jenkins because it is widely used.
Install Jenkins at your Cloud VM, create projects, install plugins like Maven, build your application and schedule them to be deployed at your favorite application server. Knowledge about unit test and integrating testing tools such as SonarQube is nice to have. Learn Artifactories – Nexus, JFrog.
Containers are unavoidable in the DevOps pipeline. A strong understanding of Virtualization helps to understand Containers better and faster.
Docker is the first step. Install Docker at your Cloud VM, pull a Container from the Docker Hub and practice Docker commands. Understand the image id, container id, Dockerfile, Docker commands, Container security and Container versioning management. Build your own Docker registry, pull/push containers and see how it works.
OCI (Open Container Initiative) Containers are growing. Somehow the industry does not like its dependency on Docker. It is good to learn Buildah, Podman and Skopeo (At Kuberiter, we have built an UI for Skopeo).
Two years ago, we spoke about Orchestration tools such as Docker Swarm, Apache Mesos, Kubernetes etc.
Forget the debate.
Kubernetes is the King.
Install Kubernetes at your Cloud, use kubectl to operate, create 100+ Kubernetes objects and deploy applications.
Use Kelsey Hightower’s blog Kubernetes The Hard Way
A thorough knowledge in Kubernetes will help you to learn Enterprise Kubernetes tools such as Kuberiter, IBM Red Hat OpenShift, IBM Pivotal, and Cloud provider managed Kubernetes services such as Azure Kubernetes Service (AKS), Amazon EKS and Google Kubernetes Engine (GKE).
The growth of Kubernetes and its ecosystem introduced a new form of application package management. Helm is a good example for it. It combines your application and configuration items together into one chart (package) to speed up your release management process. Refer Red Hat Operator Framework website
Read my article about Kubernetes Operators
Monitoring and Logging are the two most important components of DevOps. Learn monitoring tools such as Prometheus, Istio Telemetry and Jaeger.
For logging, Fluentd and ELK should work.
Hope the above content helped you to understand how much one should learn, practice and work to become a DevOps professional. It will take years to get a good handle on things. Continuous learning is the only way to progress and retain your career.
Certifications are important too. Don’t overdo it.
Apart from technology, soft skills such as open mind, collaboration, fail fast, flexibility, communication, big picture thinking etc. are the most important to succeed in the DevOps era.
You can contact me through LinkedIn if you have any questions. All the best.
Please subscribe at www.kuberiter.com to try our DevOps SaaS Services.