Кто такой SRE?

Site reliablity engineer - кто это, какими задачами занимается?

Site reliablity engineering - это аспект разработки программного обеспечения, целью которого является обеспечение постоянной надежности программных систем.

Note

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 играют решающую роль в обеспечении своевременной доставки программных продуктов и их соответствии высоким стандартам, предъявляемым пользователями и заказчиками.