The role of SRE in DevOps is to ensure that the apps and services that DevOps teams develop are available to end users when they need them. Although SRE and DevOps are often discussed together, they’re two distinct disciplines.
DevOps is recognized both as a practice and as a set of principles. DevOps as a practice is an approach to IT delivery that brings people, practices and tools together to eliminate the silos between development and operations teams. As its name indicates, it bridges the gap between software development, which creates the application code, and IT operations, which puts those applications into production, makes them available to end users and maintains their reliability.
DevOps as a principle, or DevOps culture, grew out of the agile movement, which established principles to guide better software development practices emphasizing gradual delivery, team collaboration and continual planning and learning. By bringing software development and IT operations together, DevOps extends agile principles across the entire software development life cycle (SDLC), optimizing the entire workflow with a goal of continuous improvement. High-performing DevOps teams not only see faster code iterations and deployments but overall shorter time to market for new ideas, fewer bugs and more stable infrastructure.
SRE is a key function of DevOps principles, and a peer to DevOps as a practice, but with narrower responsibilities. Although DevOps dictates that developers own and operate their product in practice — both by writing code and addressing related problems — the push to constantly develop new features for their apps often renders that undertaking impractical. Site reliability engineers can step in and use their knowledge of both software development and IT operations to oversee the management of the code, including deployment, configuration and monitoring. At a higher level, SRE tightens the relationship between development and operations by ensuring the rapid deployment of new software and features, as well as the stability of the IT infrastructure.