DevOps: A Journey 🏔️
devops 01-07-2024
What is DevOps?
In today’s fast-paced digital world, the role of a DevOps Engineer is crucial. DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the system development life cycle and provide continuous delivery with high software quality. Here I share my journey into DevOps and what it takes to become a DevOps Engineer.
Part 1: The Start…
Imagine yourself as a traveler in the digital world of the Internet, with the sole motive to explore, learn, and grow. You interact with people, places, things, and ideas. You learn from them and grow with them. At times your ideas are far-fetched and sometimes tedious, so you automate a few things out of interest.
Automating stuff makes you realize you need a few more things to connect. You start connecting things together, and voila, you are a Developer now. To make your ideas a reality, you run them on your system, then on your friends’ systems, and gradually host them online. Now you know how to operate things online.
Okay, so up until now, you thought of an idea, designed it, built it, and deployed it online, operating and maintaining it at regular intervals. You are a DevOps Engineer now. And that’s how I fell into the role of DevOps. But this is just the beginning…
Part 2: Acquiring Tools and Skillset
Sometimes, you learn from your mistakes; sometimes, from your experiences. The journey is long, the path may seem hard, but the destination is worth it.
Let’s get to the hard part (as it looks so at first), learning the tools and skillset required to be a DevOps Engineer.
You need to learn a few tools and technologies to be a DevOps Engineer. Here are a few of them:
- Continuous Integration/Continuous Deployment (CI/CD) tools like Jenkins, GitHub Actions, GitLab CI
- Containerization tools like Docker, Kubernetes
- Monitoring tools like Prometheus, Grafana, Datadog
- Cloud Providers like AWS, GCP, Azure
- Infrastructure as Code (IaC) tools like Terraform, CloudFormation
- And many more…
Let’s get that in order:
Linux - OS
- Getting comfortable with Linux commands and bash scripting.
Git
- Being able to work with Git commands and workflows.
Networking
- Have a good understanding of networking concepts like DNS, HTTP, HTTPS, TCP/IP, OSI-Model
Database
- Understand databases like SQL, NoSQL, Time-series
3-tier Architecture
- Be able to define a 3-tier architecture of web applications.
Cloud
- Understand Cloud concepts like IaaS, PaaS, SaaS
- Get some hands-on experience with any one Cloud provider like AWS, GCP, Azure
Continuous Integration, Development & Deployment (CI/CD)
- Understand CI/CD concepts and how to define a basic workflow on any tool like Jenkins, AWS CodePipeline, GitLab CI, GitHub Actions
Infrastructure as Code
- Know IaC concepts with easy-to-learn tools like Terraform, AWS CloudFormation
Configuration Management
- Understand the working of any configuration management tool like Ansible, Puppet, Chef
Monitoring
- Understand Monitoring and monitor any Infrastructure/application with a tool like Datadog, NewRelic, Prometheus, Grafana
Scripting
- Be able to read, write & execute scripts to perform basic automation/programming using languages like Python, Shell, Go
Containers
- Understand container concepts like Docker, Kubernetes
Security
- Understand security concepts like firewalls, VPNs
- Apply basic IT security practices in your daily life.
Logging
- Understand logging and pattern grokking concepts using monitoring tools like ELK Stack, Datadog
Additional Skills
- Governance, Risk, and Compliance (GRC)
- Container Orchestration, Service-Mesh
- Well-Architected Framework, Best Practices
- Team Management, Leadership
- And many more…
Skilling up takes time, patience, and determination. Keep up with it, and it will be complete before you even realize it.
2.1 Here’s How I would suggest learning these Skills:
Going in-depth with hands-on sessions, helping you understand the concepts, working, and implementation of these tools in real-world scenarios.
Follow me on LinkedIn to know more about DevOps and how you can upskill yourself.
Part 3: Your New Journey Begins…
Now that you have acquired the tools and skillset required to be a DevOps Engineer, it’s time to start your journey by implementing the skills in the real world.
Get started with a project, automate things, connect things together, deploy it online, operate, and maintain it at regular intervals.
Learn from your mistakes, grow with your experiences. And remember, it’s a journey, not a destination. Enjoy the ride!
-------------------- UPDATE ----------------------
On popular demand, I am starting a weekly session series on DevOps, where I share my experiences, learnings, and best practices in the field of Cloud and DevOps.
DevOps Weekly Sessions
Follow along with the sessions to upskill yourself and become a DevOps Engineer.
Week | Session | Link |
---|---|---|
1 | Linux | View Session |
2 | Git & GitHub | View Session |
3 | Web & Application Servers | View Session |
4 | Databases | View Session |
5 | Networking | View Session |
6 | Architectures | View Session |
7 | Cloud Computing | View Session |
8 | CI/CD | View Session |
9 | Infrastructure as Code | View Session |
10 | Configuration Management | View Session |
11 | Scripting | View Session |
12 | Containers | View Session |
13 | Orchestration | View Session |
14 | Monitoring | View Session |
15 | Logging | View Session |
16 | Serverless | View Session |
17 | Compliance & Governance | View Session |
18 | DevSecOps | View Session |
19 | Well Architected Framework | View Session |
20 | Conclusion & Appreciations | View Session |