What is the difference between DevOps and SRE
What is the difference between DevOps and SRE
Disclaimer: These are my personal thoughts and opinions
In my experience, DevOps or SRE/Production Engineering are engineering practices that evolve around the same objective as the company that employs them grows.
The objective is the one of managing a company’s platform and how software gets deployed.
The way this is done often depends on the size and maturity of the company.
In a startup, Software Engineers would generally do everything and get to a point where they automate repetitive/manual tasks. At some point in this journey, maybe after the first production incident, they start feeling that a dedicated System Engineer or a DevOps Engineer would bring more value to the service and free them from spending time to manage the platform.
A mid size company, has evolved that single engineer and will now have a team of DevOps engineers working on automating any platform task and setting standards on how to deploy and monitor software. This is where there’s often a big debate between having central or embedded DevOps engineers. The root cause of this debate is around the maturity of the automation that runs the platform. Dev teams benefit from having someone unblocking them quickly instead of having or investing in a central team that works on a strategic plan to make the company SDLC and platform better in the long term.
A larger company has a more mature engineering team managing the platform (weather they are called DevOps, SREs, SYSDEs or Production Engineers). At this stage, the platform engineers have lost the understanding of all the software internals and architecture and they rely on setting standards for the developers to follow in order to have a reliable and resilient service. These engineers would often engage with the teams to sign-off services and offer consultations. These are developers themselves and work on delivering APIs, tools, monitoring and services for their customers (the dev teams), their product is the platform that is consumed by other teams as a service.