DevOps is a set of practices that aims to shorten the software development lifecycle and speed the delivery of higher-quality software by breaking down the silos and combining and automating the work of software development teams and IT operations teams.
Site Reliability Engineering (SRE) uses software engineering to automate IT operations tasks that would normally be performed by system administrators. These tasks include production system management, change management and incident response.
Development and implementation
DevOps is about core development. SRE is about implementing the core. What does that mean? Let’s think about it this way.
DevOps teams are focused on core development. They are working on a product or application that is the solution to someone’s problem. They are taking an agile approach to software development that helps them build, test, deploy and monitor applications with speed, quality and control.
SREs are working on the implementation of the core. They are constantly giving feedback back into that core development group to say "Hey, something that you guys have designed isn't working exactly the way that you think that it is." SRE leverages operations data and software engineering to automate IT operations tasks and accelerate software delivery, while minimizing IT risk.
There are different skill sets between DevOps and SREs. Core development DevOps are the guys that love writing software. They are writing code and testing it and pushing it out into production to get an application line to help solve a problem.
SREs are more investigative. They are willing to do the analysis to find why something has gone wrong. They want to ensure that the same problems don’t keep happening. They want to be proactive in their efforts, not reactive. They want to automate repetitive tasks so they can innovate.
Sometimes, there just isn’t enough time to do everything manually, regardless of your role. Sometimes you need to find ways to automate things so that you can focus your time and energy on the innovation. You don’t have to automate everything; But, if you are constantly doing the same task over and over, why not use automation to reduce the toil? Automation is key.
DevOps is going to automate deployment. They’re going to automate tasks and features. SRE is going to automate redundancy, and they're going to automate manual tasks that they can turn into programmatic tasks to keep the stack up and running.
DevSecOps—short for development, security, and operations—automates the integration of security at every phase of the software development lifecycle, from initial design through integration, testing, deployment, and software delivery.
DevSecOps represents a natural and necessary evolution in the way development organizations approach security. In the past, security was 'tacked on' to software at the end of the development cycle (almost as an afterthought) by a separate security team and was tested by a separate quality assurance (QA) team.