devops sre - ghdrako/doc_snipets GitHub Wiki

SRE is an engineering function that can also be described as a specific implementation of DevOps that focuses specifically on building and running reliable systems, whereas DevOps is a set of practices that is more broadly focused on bringing the traditional Dev and Ops functions closer together. SRE implements DevOps.

SRE is fully automated, with zero manual interaction, treating every single change to any of its components (again referring to any changes to infrastructure, monitoring, testing, and so on) as a release. Every change is done via a pipeline, in a version-controlled and tested manner. If a release fails, or a production issue is observed and traced back to a change, you can simply roll back your changes to the previously known, healthy state. It is treated as any other software release allows the Dev teams to take on more responsibility and take part in Ops, almost fully blurring the line between the Dev and Ops functions. Ultimately, this creates a You build it, you run it culture – which makes “end-to-end” ownership possible.

Principle behind DevOps DevOps, as a transformative approach to software development and IT operations, is anchored in several core principles that collectively aim to enhance the efficiency, quality, and agility of the software delivery process. These principles not only guide practices and tool choices but also shape the underlying culture and mindset of the teams involved.

Automation

In the DevOps world, automation stands as the cornerstone principle. It involves replacing manual, repetitive, and error-prone operations with automated processes using code, scripts, and specialized tools. This shift is crucial for several reasons:

  • Efficiency and Speed: Automation significantly speeds up various stages of the software development lifecycle, from code integration to deployment and infrastructure provisioning. It allows teams to deliver software faster and more reliably.
  • Consistency and Reliability: Automated processes are consistent and repeatable, reducing the likelihood of errors that are common in manual processes. This consistency ensures a more stable and reliable IT environment.
  • Scaling Operations: Automation makes it easier to scale operations. As the infrastructure or the application grows, automated processes can be scaled up to accommodate this growth without a proportional increase in effort or complexity.

Collaboration

Collaboration is another pillar of DevOps. This principle emphasizes the breaking down of silos between development and operations teams, fostering a culture of open communication and cooperation. Effective collaboration leads to:

  • Shared Responsibility: Encouraging a sense of shared responsibility for the software's performance and health fosters a more cooperative and productive working environment.
  • Cross-functional Teams: By having teams with cross-functional skills, organizations can ensure smooth transitions of software from development to production.
  • Faster Problem-Solving: Better collaboration leads to faster identification and resolution of issues, enhancing the overall quality of the software.

Continuous Integration and Continuous Deployment

CI/CD is the heartbeat of the DevOps methodology:

  • Continuous Integration: CI involves developers frequently merging their code changes into a central repository, where automated builds and tests are run. This practice helps in identifying and addressing bugs early, improving software quality.
  • Continuous Deployment: CD takes the process further by ensuring that every change that passes the automated tests can be automatically deployed to production. This continuous flow creates a rapid feedback loop and accelerates the release cycle.

Measurement and Monitoring

In DevOps, data-driven decision-making is key. Measurement and monitoring involve:

  • Performance Metrics: Tracking key performance indicators (KPIs) of applications and infrastructure to ensure they meet performance goals.
  • User Experience: Monitoring user experience metrics to ensure that the software meets customer needs and expectations.
  • Feedback Loops: Using monitoring data to create feedback loops that inform development and operational decisions, leading to continuous improvement.

Lean Process Improvement

DevOps embraces lean principles, focusing on creating more value for customers with fewer resources:

  • Eliminating Waste: Identifying and eliminating activities that do not add value to the software development process.
  • Optimizing Processes: Continuously analyzing and improving processes to enhance efficiency and effectiveness.
  • Value Stream Mapping: Understanding the flow of value through the development process and optimizing it for maximum efficiency and minimum waste.