Introduction to DevOps

This documentation contains personal notes from various resources I've studied in my DevOps journey. Quickly get started with the notes or browse commands.

What is DevOps?

DevOps is a set of practices and tools that enable teams to collaborate and work together in the software development and delivery process. It is a combination of software development (Dev) and IT operations (Ops) that aims to increase the efficiency, agility, and reliability of the software delivery pipeline.

The Software Development Process

  • Programming
  • Software Testing
  • Release of Software
    • Build app
    • Run on servers
    • Upgrade software
  • Operations
    • Run software in production

Traditionally, companies had both development and operations teams. Development teams were responsible for tasks like creating and testing the software whereas operations handled tasks like making sure an upgrade does not cause downtime of handling huge network traffic.

Tools Used by Development and Operations Teams

  • Development

    • Programming languages
    • Test frameworks
    • Databases
    • Version Control
  • Operations

    • OS, mostly Linux
    • Command-line
    • Scripting
    • Monitoring tools

Stages in the SDLC

  • Plan
  • Implement
  • Test
  • Deploy
  • Maintain

Development and operations teams traditionally worked in silos, with little communication or collaboration between them. This led to a number of issues, including:.

  • Slow and infrequent releases: Development teams would work on new features or updates for long periods of time before handing them over to operations teams for deployment. This resulted in slow and infrequent releases, which could not keep up with the fast-paced demands of modern business.

  • Lack of visibility: Operations teams often did not have visibility into the development process, and developers did not have visibility into production environments. This made it difficult to identify and resolve issues quickly.

  • Manual and error-prone processes: Manual processes for building, testing, and deploying software were time-consuming and prone to errors, which could result in delays, downtime, and decreased productivity.

  • Limited accountability: With separate teams responsible for development and operations, there was often a lack of accountability for issues that arose in production environments.

Solution to the Dev and Ops communication issue

DevOps addresses these issues by promoting collaboration, automation, and continuous delivery. By breaking down silos between teams and fostering a culture of shared responsibility, DevOps enables organizations to release software faster, with higher quality and greater efficiency.

Some DevOps tasks and responsibilities

  • Needs know-how from development and operations teams
  • Additional DevOps specific skills and know-how
  • Building CI/CD pipelines

Waterfall vs Agile

  • Both influences speed and process of software development
  • The way an organization is developing apps
  • Traditional: Waterfall
    • Requirements: Plan everything beforehand
    • Development: Developers code complete app
    • Testing: Test everything that has been developed
    • Operations: Huge operation to prepare and run app on server
  • Agile
    • Benefits: Speed of development, testing and development cycles.
    • Each feature gets tested and deployed
    • Immediate feedback
    • Fast development and deployment process
    • Scrum and kanban - specific implementations
    • Is at the core of CI/CD

Guides

OS & Linux basics

Learn about Linux OS and commands.

Read more

Version control with Git

Understand the basics of version control and how to work with Git.

Read more

Build and package management tools

Learn about application building and package management.

Read more

Cloud basics and IaaS basics

Learn the basics of the cloud and Infrastructure as a Service.

Read more

Resources

Linux

Learn about the contact model and how to create, retrieve, update, delete, and list contacts.

Docker

Learn about the conversation model and how to create, retrieve, update, delete, and list conversations.

Kubernetes

Learn about the message model and how to create, retrieve, update, delete, and list messages.

Terraform

Learn about the group model and how to create, retrieve, update, delete, and list groups.