Кто такой SRE?
Site reliablity engineer - кто это, какими задачами занимается?
Site reliablity engineering - это аспект разработки программного обеспечения, целью которого является обеспечение постоянной надежности программных систем.
Site reliablity engineer (SRE) — это инженеры production уровня, которые сосредоточены на производительности и надежности программного обеспечения, когда оно выходит в реальный мир.
Основная задача для SRE - software reliability.
Давайте разберем более детально. SRE - это важная часть всего цикла производства и эксплуатации ПО. Как только ПО попадает в продакшн, важно сделать все, чтобы оно работало надежно и было доступно конечным пользователям. В рамках этого SRE решает следующие задачи:
- Увеличение uptime(то есть доступности приложения)
- Ускорение работы приложения, чтобы оно работало на оптимальной скорости(с учетом ограничений по стоимости)
- Совместная работа с разработчиками над кодом для достижения его максимальной эффективности
- Работа по предотвращению различных видов аттак, включая DDOS и проникновение
Site reliablity engineering is when you treat operations as engineering problem
— Ben Treynor Sloss, Vice President of Engineering at Google
В этом заявлении подчеркивается важность рассмотрения операций с программным обеспечением как сложной инженерной проблемы, требующей стратегического подхода и специальных знаний.
Этот подход освобождает от устаревшей парадигмы «отправьте код, и мы запустим его на серверах». В результате он философски соответствует широко распространенному движению DevOps, которое стремится устранить барьеры между разработкой программного обеспечения и эксплуатацией.
Для достижения этого Site Reliability Engineering влечет за собой тонкую настройку программного обеспечения и его базовой инфраструктуры, часто путем разработки, адаптации или проектирования специальных инструментов, а также пропаганды передовых методов работы.
Самое большое заблуждение в отношении SRE заключается в том, что она ориентирована на надежность только с узкой точки зрения, т. е. доступность программного обеспечения. Но, как вы можете видеть из всех вышеперечисленных факторов, это еще не все. Такие вопросы, как производительность, качество кода и безопасность, влияют на качество взаимодействия с пользователем и воспринимаемую надежность программного обеспечения.
Происхождение SRE
Термин Site Reliability Engineering, как мы его знаем сегодня, был озвучен в 2003 году дальновидным Беном Трейнором Слоссом, который в настоящее время является вице-президентом по инженерным вопросам в Google.
Он превратил небольшую команду из семи «инженеров-технологов» в грозную силу, которая по состоянию на 2016 год насчитывала более 1200 инженеров SRE
По мере того, как Google продолжал расти, он осознавал, что столкнется с проблемами надежности. Компания осознала, что по мере увеличения сложности программного обеспечения обеспечение надежности будет становиться все более сложной задачей. Это признание привело к разработке SRE, которая представляет собой упреждающий подход к решению растущей проблемы сложности программного обеспечения.
По своей сути SRE. представляет собой набор практик, которые отдают приоритет надежности при разработке программного обеспечения. Цель состоит в том, чтобы обеспечить надежность и масштабируемость программных систем, даже если они продолжают расти и усложняться.
Очень важно понять: SRE. это не просто реактивный подход к решению проблем. Наоборот, это упреждающий подход, направленный на предотвращение проблем до их возникновения.
Что такое "надежность" (reliability)?
Надежность, проще говоря, это отсутствие ошибок. Раскрывая это определение дальше: надежность по определению — это способность системы правильно и последовательно функционировать в различных условиях. В контексте SRE надежность относится к способности приложения работать так, как ожидается, без каких-либо простоев или сбоев.
Как известно, любое изменение представляет значительную угрозу надежности. Даже, казалось бы, небольшое изменение в коде может сломать продакшн или вызвать трудноуловимый сбой. Вот почему многие критически важные системы, такие как самолеты и электростанции, до сих пор полагаются на устаревшее программное обеспечение, созданное на языке COBOL с 1960-х годов. В этих приложениях любое изменение сопряжено с риском потенциально катастрофических ошибок. Каждое изменение вводит возможность возникновения ошибки и компрометации производственной системы. Изменения могут включать развертывание нового кода, обновления конфигураций инфраструктуры и многое другое. Тщательное разносторонее тестирование помогает снизить эти риски.
Итог
SRE несут ответственность за обеспечение надежности, масштабируемости и эффективности программного обеспечения. Они тесно сотрудничают с разработчиками, операционными группами и другими заинтересованными сторонами для достижения этих целей.
Таким образом, SRE играют решающую роль в обеспечении своевременной доставки программных продуктов и их соответствии высоким стандартам, предъявляемым пользователями и заказчиками.