Skip to content

Instantly share code, notes, and snippets.

@linustws
Last active January 14, 2024 13:56
Show Gist options
  • Save linustws/4f9e852dc4e3e760c70367f8a3d811b8 to your computer and use it in GitHub Desktop.
Save linustws/4f9e852dc4e3e760c70367f8a3d811b8 to your computer and use it in GitHub Desktop.
devops notes

DevOps Notes

To-Do List

What is DevOps?

DevOps is a cultural and collaborative mindset that emphasizes communication, collaboration, integration, and automation between development and operations teams in order to achieve faster and more reliable software delivery (less bugs).

DevOps is not a specific job title or role, but rather a set of practices and principles that can be applied across a variety of roles in software development and IT operations. Anyone involved in the software development and delivery process can adopt a DevOps mindset and apply DevOps practices in their work, including developers, testers, operations engineers, product managers, and others.

DevOps Engineer - While DevOps is not a specific job title or role, organizations often hire for a "DevOps Engineer" role. A DevOps Engineer is a software engineer who specializes in the practices and tools that enable the continuous delivery of software. DevOps Engineers are responsible for the design and implementation of applications, software, and services for their organization, and they work closely with developers, testers, and operations staff to oversee the code releases.

These stages form the DevOps cycle, ensuring smooth development, delivery, and operation of software.

image

Plan

  • Start with the planning process where the development team defines features and bug fixes for the next sprint.
  • As a DevOps Engineer, you can get involved, understand upcoming infrastructure needs, and influence decisions.
  • Developers are your customers; work with them to ensure they make the right choices.

Code

  • Developers write code based on the plan.
  • You may help them understand infrastructure and how to interact with services.
  • Code is merged into the repository.

Build

  • Automation begins as the code is built, possibly involving compilation or Docker image creation.
  • This process is managed through a CI/CD pipeline.

Testing

  • Run tests, often written by the development team, to minimize introducing problems in production.
  • The goal is to avoid new bugs and prevent breaking existing functionality.

Release

  • If tests pass, proceed with the release.
  • This step varies based on the application type, potentially involving placing compiled code or Docker images into a registry.

Deploy

  • Deployment is the end game, where the code goes into production.
  • This is when the value of the work done by the software engineering and DevOps teams is realized.

Operate

  • Operate involves handling the application in production.
  • Tasks may include addressing performance issues, auto-scaling during peak periods, and maintaining a feedback loop with the ops team.
  • Automation is ideal but not always possible.

Monitor

  • Monitoring is crucial, covering memory, CPU utilization, disk space, API response times, and logs.
  • Logs provide insights without direct access to production systems.

Continuous Delivery

Continuous Delivery = Plan > Code > Build > Test

Continuous Integration

This is effectively the outcome of the Continuous Delivery phases above plus the outcome of the Release phase. This is the case for both failure and success but this is fed back into continuous delivery or moved to Continuous Deployment.

Continuous Integration = Plan > Code > Build > Test > Release

Continuous Deployment

If you have a successful release from your continuous integration then move to Continuous Deployment which brings in the following phases

CI Release is Success = Continuous Deployment = Deploy > Operate > Monitor

Back to Top

Learn a Programming Language

  • Python

    • Benefits of Learning Python:
    • Versatility: Python is a versatile language used for web development, data analysis, artificial intelligence, and more.
    • Readability: It's known for its clean and readable code, making it an excellent choice for beginners.
    • Vast Ecosystem: Python has a rich ecosystem of libraries and frameworks, such as Django and Flask for web development, NumPy and Pandas for data science, and TensorFlow for machine learning.
    • Community Support: Python has a large and active community, which means abundant resources and help are available.
  • Go (Golang)

    • Benefits of Learning Go:
    • Efficiency: Go is known for its efficiency, making it suitable for building fast and scalable applications.
    • Concurrency: It has built-in support for concurrent programming, making it an ideal choice for building high-performance servers.
    • Static Typing: Go's static typing helps catch errors at compile time, enhancing code reliability.
    • Simplicity: It has a simple and straightforward syntax, making it easy to learn and maintain.
  • Ruby

    • Benefits of Learning Ruby:
    • Ease of Use: Ruby prioritizes developer happiness with its user-friendly and elegant syntax.
    • Ruby on Rails: Ruby is the language behind Ruby on Rails, a popular web development framework known for rapid development.
    • Community: The Ruby community is known for its supportive nature and numerous gems (libraries) that can save you time in development.
    • Scripting: Ruby is a versatile scripting language, making it suitable for various tasks, including automation and web development.

By learning these languages, you'll gain a solid foundation in different programming paradigms and be well-equipped for various software development tasks.

Back to Top

Linux in DevOps

  • Overview of Linux commands and their relevance in DevOps

Back to Top

Networking for DevOps Engineer

  • Fundamentals of networking for DevOps

Back to Top

Virtualization and Operating System

  • Understanding virtualization and different operating systems

Back to Top

Programming and Git for DevOps

  • Programming languages used in DevOps
  • Git basics and version control

Back to Top

Learn Cloud Computing

  • Introduction to cloud platforms (AWS, Azure, GCP, etc.)

Back to Top

Infrastructure as Code in DevOps - Terraform and Ansible

  • In-depth understanding of Terraform and Ansible for managing infrastructure

Back to Top

CI/CD Pipeline in DevOps

  • Setting up continuous integration and continuous deployment pipelines

Back to Top

Containerization - Docker and Kubernetes

  • Docker containerization and Kubernetes orchestration

Back to Top

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment