How to start your DevOps Journey
Arnab das
6 min read · Jul 19, 2023
Over the past decade, DevOps has transformed from a niche trend into a massive movement with widespread adoption across industries. The Dev-Ops market has continued to grow at an astonishing rate, from $8.88 billion in 2022 to $10.84 billion in 2023. By 2030, this value is projected to reach $57.9 billion with a compound annual growth rate (CAGR) of 24.2%.
What is DevOps?
DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.
At its essence, a DevOps culture involves closer collaboration and a shared responsibility between development and operations for the products they create and maintain. This helps companies align their people, processes, and tools toward a more unified customer focus.
It involves forming diverse teams that take ownership of the entire product lifecycle. These teams work independently and adopt a software engineering mindset, workflow, and toolset that give equal importance to operational considerations as they do to architecture, design, and development. By integrating developers closely with users, they gain a deeper understanding of user requirements and preferences. With operations teams actively involved in the development process, they can contribute maintenance requirements and customer insights, resulting in a superior product.
The DevOps lifecycle and how DevOps works
The DevOps lifecycle stretches from the beginning of software development through to delivery, maintenance, and security. The stages of the DevOps lifecycle are:
- Plan: Organize the work that needs to be done, prioritize it, and track its completion.
- Create: Write, design, develop and securely manage code and project data with your team.
- Verify: Ensure that your code works correctly and adheres to your quality standards — ideally with automated testing.
- Package: Package your applications and dependencies, manage containers, and build artifacts.
- Secure: Check for vulnerabilities through static and dynamic tests, fuzz testing, and dependency scanning.
- Release: Deploy the software to end users.
- Configure: Manage and configure the infrastructure required to support your applications.
- Monitor: Track performance metrics and errors to help reduce the severity and frequency of incidents.
- Govern: Manage security vulnerabilities, policies, and compliance across your organization
The DevOps Roadmap
To follow this Roadmap, you first need to work on your basic computer fundamentals, like operating systems and computer networking. Without knowing those subjects, jumping into the DevOps field is the most common mistake made by beginner students.
1. Basic of Shell script & Linux commands
Without proper understanding of Linux command, it’s very difficult to understand how to deal with existing repository. Some of the basic Linux commands are cd
, ls -a
, vi
, cat
, mkdir
, rmdir
, rm
, grep
, netstat
.
2. Version control & command-line interface (CLI)
Version control and command-line interface (CLI) are essential components from a DevOps perspective because they play crucial roles in enabling collaboration, automation, and efficient software development and deployment processes. Through version control like git, you can collaborate, easily manage code, automate testing and CI, and perform rollbacks and deployments. Through CLI you are able to understand automation tasks, Infrastructure as Code (IaC), remote access and server management, etc.
3. Computer Networking
As a DevOps engineer, understanding networking is crucial for efficient communication and security in distributed systems. You should be familiar with LAN, WAN, WLAN, switches, routers, ISPs, internet addresses (IPv4 and IPv6), OSI model, TCP/IP model, network protocols, subnetting, DNS, and switching and routing. A basic understanding of these topics is sufficient to work effectively in a DevOps role.
4. Containerization (Docker)
Docker is a container platform that allows you to build, test and deploy applications quickly. A developer defines all the applications and its dependencies in a Dockerfile which is then used to build Docker images that defines a Docker container. Doing this ensures that your application will run in any environment.
5. Kubernetes
Kubernetes (aka K8s) is an open source platform for managing containerized applications and services. Kubernetes provides a framework to run containers on clusters of physical or virtual machines, which simplifies orchestration in cloud native environments. However, these highly dynamic and distributed environments require a new approach to monitoring Kubernetes infrastructure and applications. For more information you can check out the official Documentation.
6. CI/CD
CI/CD stands for Continuous Integration & Continuous Deployment. It refers to the automated process of integrating code changes into a shared repository and continuously deploying or delivering those changes to production. CI/CD aims to streamline the development and deployment workflows, leading to faster and more reliable software releases. Jenkins is one of the oldest and most widely used automation servers for CI/CD. It provides a flexible and extensible platform to build, test, and deploy applications continuously. For Kubernetes-based projects, use Argo CD, a modern, declarative, and Kubernetes-native Continuous Delivery tool specifically designed for managing applications on Kubernetes clusters. It enables GitOps workflows, where the desired state of applications is declared in Git repositories, and Argo CD ensures the cluster aligns with that state.
7. IAC (Infrastructure as Code)
IAC stands for Infrastructure as Code, and it is a crucial concept in the world of DevOps. IAC refers to the practice of defining and managing infrastructure and configuration using code, typically in the form of scripts or configuration files. Instead of manually setting up and configuring infrastructure, IAC allows developers and operations teams to automate the process, ensuring consistency, repeatability, and scalability. IaC allows you to automate the entire process of creating, deleting, and updating your infrastructure provisioning. This completely removes any manual errors and misconfiguration that might occur. You can also monitor the state of your infrastructure.
Popular Infrastructure as Code (IAC) tools:
- Terraform: Declarative IAC tool by HashiCorp, supporting multiple cloud providers and infrastructure platforms.
- Ansible: Agentless automation tool that uses YAML-based playbooks for configuration management and application deployment.
- Chef, Puppet, AWS CloudFormation, Azure Resource Manager (ARM) Templates, Google Cloud Deployment Manager
- Pulumi: Cross-platform IAC platform supporting multiple cloud providers and programming languages like JavaScript, Python, and Go.
8. Observability & Monitoring
Monitoring is tooling or a technical solution that allows teams to watch and understand the state of their systems. Monitoring is based on gathering predefined sets of metrics or logs. Observability is tooling or a technical solution that allows teams to actively debug their system. Observability and monitoring are critical aspects of DevOps, enabling teams to gain insights into the performance, health, and behavior of applications and infrastructure. These practices help identify and address issues proactively, ensuring optimal system reliability and performance. Several popular cloud-native tools are commonly used for observability and monitoring in DevOps environments:
- Prometheus
- Grafana
- AWS CloudWatch
- Azure Monitor
- Google Cloud Monitoring
Join Communities & Attend Conferences
Engage with the DevOps community to learn from others, share experiences, and seek advice on your journey. Participate in local meetups and industry conferences related to DevOps to network and gain insights from experts.
Some of the student communities are:
- wemakedevs
- CNCF Community
Conclusion
As you begin your DevOps journey, remember that it’s not just about acquiring technical skills; it’s about embracing a new way of thinking and working. DevOps is a culture that values collaboration, continuous improvement, and automation.
Start by understanding the core concepts of DevOps and its benefits. Familiarize yourself with version control, automation, CI/CD pipelines, containerization, cloud computing, and other essential tools and practices.
So, go ahead and share your DevOps journey with the world on Medium. Inspire others to embark on their own path of DevOps transformation, and together, we’ll shape a brighter and more innovative future for software development. Happy writing and happy DevOps journey!