Twitter: @Chris_L_Ayers Mastodon: @Chrisayers@hachyderm.io LinkedIn: chris-l-ayers Blog: https://chris-ayers.com/ GitHub: Codebytes
Historically, Development and Operations teams operated in silos, each with distinct responsibilities and goals.
The lack of collaboration often resulted in a "Wall of Confusion," where software released by the Development team would encounter issues in the environments managed by the Operations team.
The realization of these inefficiencies led to the rise of the DevOps movement, seeking to break down the silos and promote collaboration between Development and Operations.
Site Reliability Engineering
Benjamin Treynor Sloss
Common SRE Saying
https://uptime.is/five-nines
"99.95% of the 95th percentile latency of API requests over 5 mins is < 100ms over the previous 28 days."
Error Budget = 1 - Objective
For our example:
Over 28 days, this is:
20.16 minutes (.0005 * (28 * 24 * 60))
Prioritize Alerts
Ensure Alert Relevancy
Rotation Schedules
Necessary Resources
Systematic Approach
Use Monitoring and Logging
Establish Clear Communication Channels
Implement Quick Rollbacks
Incident Classification
Assemble a Response Team
Documentation:
Review Meeting:
Safe and efficient software updates deployment.
Impact:
A release strategy involving gradual rollout to a small group before full deployment.
"Canaries" are the initial users/servers to detect issues or bugs in the new release.
Incremental deployment reduces the risk of widespread outages.
Continuous monitoring and feedback gather performance insights.
DevOps, popularized by figures like Patrick Debois and Andrew Shafer, emphasizes collaboration between development and operations, focusing on cultural shifts, automation, and feedback loops for faster, reliable software releases.
Understanding team structures and their interactions is crucial for efficient software delivery and system reliability. "Team Topologies" by Matthew Skelton and Manuel Pais offers insight into different team patterns for IT delivery.
"Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations."
Key Takeaways:
Continuous Integration & Continuous Deployment streamline the software development lifecycle, ensuring that code changes are continuously integrated, tested, and delivered to production.
The goal of IaC is to make it easier to deploy and manage infrastructure in a repeatable, reliable way, and to reduce the risk of errors caused by manual configuration.
Configuration Management ensures that system configurations remain consistent and optimized. It plays a pivotal role in modern DevOps practices by ensuring smooth deployments, scalability, and system reliability.
Integrating security within the DevOps pipeline, DevSecOps ensures that security is considered at every phase of the software development lifecycle, rather than being tacked on at the end.
Platform Engineering blends software development, infrastructure management, and best practices to offer scalable and efficient platforms for applications.
Building the bedrock for thriving applications.
Equip developers with:
Achieve optimal workflows and heightened efficiency.
"Successful complex systems evolve from working simple systems. Complex systems designed from scratch fail. Begin with a functional simple system."
Lessons Learned:
Advantages:
Guarantee consistent system responsiveness.
Three pillars ensuring robust software delivery and operations. They prioritize:
Though each has its unique aims, there’s a convergence:
SRE ensures robustness, DevOps champions teamwork, and Platform Engineering provides indispensable tools. Together, they redefine software delivery.
Twitter: @Chris_L_Ayers Mastodon: @Chrisayers@hachyderm.io LinkedIn: - chris-l-ayers Blog: https://chris-ayers.com/ GitHub: Codebytes