Introduction to DevOps

🔗 Jump to other notes here


DevOps Pipeline

Test ➡ī¸ Build ➡ī¸ Deploy ➡ī¸ Configure ➡ī¸ Monitor

DevOps engineers have some know-how from both DEV and OPERATIONs teams, plus additional DevOps specific technical skills, the core one being building CI/CD (Continuous Integration / Continuous Delivery-Deployment) pipelines.

Software Development

Methodologies of software development:

  • Waterfall

  • Agile (newer)

    • several project phases

    • each feature is tested, deployed

    • fast development, testing and deployment cycles

    • Continuous Integration, Continuous Delivery

    • it supports the need for DevOps tasks (best practices, automation tools ...)

The DevOps engineer needs to assist developers in building the application. This involves configuring automation tools (CI/CD Pipelines) to handle tests, build processes, and packaging the applications into Docker images. Finally, the DevOps engineer ensures the app runs smoothly on deployment servers.

Artifacts are apps built into a single file (jar, war, zip, tar, etc). An artifact repository can store many different artifact formats by using a manager for managing them all.

  • Nexus - private/internal usage

    • multi-format support

    • LDAP integration, user token support

    • REST API integration

    • Backup, restore

    • Tagging

    • Cleanup policies

    • Search functionality

  • Maven Repository - public (Java)

  • npm - public (Javascript)

Software Versioning

Major Version

  • Indicates big changes

  • Usually involves breaking changes

  • NOT backward-compatible.

  • Incompatible API changes are made

Minor Version

  • Introduces new but backward-compatible changes

  • May include new API features

  • Does not break existing functionality

Patch Version

  • Contains minor changes and bug fixes

  • Does not alter the API


IaaS

Infrastructure as a Service (IaaS) offers compute, storage and networking on-demand from the cloud providers.

Cloud computing refers to the delivery of computing services (servers, storage, databases, networking, software, and more) over the internet, allowing users to access and utilize these resources on-demand.


đŸĒ› Linux Tools

I'm using Ubuntu Desktop LTS as Linux distro and zsh as default SHELL

The install commands of the following tools can be found on my notes here - Ubuntu VM - DevOps Tools


CI/CD Tools

CI/CD - Continuous Integration / Continuous Delivery, pipeline

20 Best CI/CD Tools for 2024 - The CTO Club

📌 List of Continuous Integration services | awesome-ci


Containerization

Containers ➡ī¸ Image for every server, separate instances


Orchestration

  • Kubernetes (K8s) - automatic deployment, scaling, and management of containerized applications


Infrastructure Provisioning

  • Terraform - infrastructure automation to provision and manage resources in any cloud or data center

    • Infrastructure as Code (IaC)

  • Ansible - automates provisioning, configuration management, application deployment, orchestration, and many other IT processes - more for automation post configuration


Monitoring


Last updated