Приветствуем, Хабр.

У нас вышла долгожданная новинка, посвящённая методологии «SRE» — Site Reliability Engineering. Книга называется «SRE. Новый подход к управлению инфраструктурой». Написал эту книгу выдающийся инженер Павел Рудницкий, автор «Инфраструктурного блога», разработчик с 25-летним стажем, практиковавший DevOps, когда это ещё не было мейнстримом.

Как многие из вас знают, искусство SRE зародилось в компании Google приблизительно в середине нулевых, суть его заключается в обеспечении бесперебойной работы сайтов и сервисов даже в условиях частичных отказов, текущего ремонта и в процессе выкатывания обновлений.

SRE — общие понятия

Суть метода SRE заключается в соблюдении трёх важнейших показателей качества, которые являются своеобразными гарантиями со стороны разработчиков и администраторов сайта: SLO, SLA и SLI.

SLO — это «целевые показатели уровня обслуживания» (Service Level Objectives). Под SLO понимаются гарантии качества, при соблюдении которых сайт, сервис или приложение можно считать исправными. Например, разработчики и провайдер гарантируют, что сайт будет доступен в течение 99,95% времени.

SLA — это уровень обслуживания, гарантируемый пользователю, «соглашение об уровне обслуживания» (Service Level Agreement). Данный показатель тесно связан с SLO, но всегда задаётся немного ниже SLO — например, доступность сайта в течение 99,5% времени может считаться выполнением SLA.

SLI — это показатели уровня обслуживания (Service Level Indicators). Под SLI понимаются объективные показатели, при соблюдении которых считается, что система работает нормально. В таком качестве может учитываться средняя длительность задержки при запросе, процент успешных транзакций, количество отказов.

Наконец, важнейшим показателем SRE является «бюджет ошибок» (Error Budget). Поскольку ни одна система не функционирует идеально, необходимо заранее резервировать время и средства на текущий ремонт и наладку, а также определять, какое количество ошибок за период считается «в пределах нормы». Бюджет ошибок тратится на устранение инцидентов, а анализ инцидентов выполняется, как правило, на основе постмортемов — эта информация одновременно напоминает аутопсию и разбор полётов.

Как сложилась эта книга

Практика SRE не так хорошо изучена, как более распространённый и прикладной DevOps, поскольку традиционно считается, что SRE — для крупных проектов, оперирующих целыми парками серверов. Широко известны SRE Book и SRE Workbook, написанные инженерами Google и иллюстрирующие развитие и применение вышеупомянутых феноменов на материале поисковика и экосистемы сервисов Google. Поэтому может сложиться превратное впечатление, будто SRE — это про сотни тысяч пользователей ежедневно, миллионы сообщений и кровавый энтерпрайз. Но по мере развития SRE эта практика охватывает всё более мелкие и нишевые проекты, именно поэтому уже в конце 2023 года мы сочли, что назрела актуальность для «настольной» книги по SRE, которая была бы применима в любом проекте, даже стартапе или мобильном приложении. К настоящему времени сформировалась богатая экосистема инструментов для SRE, а также целый класс динамических данных, которые нужно постоянно анализировать. На наш взгляд, написать такую книгу в одиночку (а не силами целого отдела) мог бы человек, который реализовывал бы систему SRE с нуля, располагая ограниченными ресурсами и изучая инструментарий по ходу дела. Павел Рудницкий работал над книгой более года, и вот что в ней есть. Под спойлером — оглавление.

Оглавление

Обзор содержания книги

Как видите, SLO/SLA/SLI, о которых я упоминал выше, в книге разобраны в 4-й главе из 12. Такая структура позволила автору начать книгу с обоснования актуальности SRE и с социальных аспектов этой практики. Таким образом, даже не читая других книг, вы сможете приступать к работе в команде SRE‑инженеров, расставить приоритеты, понять, чего от вас хотят, а также объяснить ход ваших потенциальных действий по внедрению SRE в компании.

Наиболее важной частью книги я считаю главы 5–8 включительно, занимающие страницы с 45 по 100. Эти главы посвящены сбору и интерпретации данных, искусству мониторинга и, самое главное, учат классифицировать проблемы и расставлять приоритеты при их решении. В этих главах не только рассказано о том, что такое инцидент и бюджет ошибок, но и даётся введение в работу с ключевыми инструментами SRE‑инженера, из которых я особенно выделил бы Prometheus и его аналоги. Автор помогает понять, чем отличается мониторинг в стиле blackbox и whitebox, рассматривает и увязывает в одну картину профилирование, телеметрию, трассировку и логирование. Именно усвоив эту часть книги, DevOps станет SRE‑инженером, как костоправ становится диагностом.

Глава 9 знакомит вас с инструментами управления инфраструктурой как кодом (IaC), самыми известными из которых являются Terraform, Puppet, Chef, а также язык программирования Ansible. Авторская (или, скорее, переводная) книга по Ansible у нас пока в планах, о Terraform вы можете подробнее почитать в вышедшей у нас книге «Terraform. Сборник рецептов», а на тему IaС мы вот‑вот обновим фундаментальную книгу Кифа Морриса «Программирование инфраструктуры».

Глава 10, которую на этапе работы над книгой я был бы не против увеличить (но в итоге её объём составил 8 страниц), помогает соотнести три такие важные задачи, как развёртывание сервиса с нуля, развёртывание обновления и откат (возвращение к стабильной версии после инцидента). При всей важности, эта глава также получилась в большей степени справочной, подсказывающей, что стоит исследовать и погонять в песочнице.

Главы 11 и 12, завершающие книгу, посвящены обеспечению безопасности работе с пользователем. Глава о безопасности помогает понять, каким образом разбор инцидентов перекидывает мостик между SRE и Security, коротко рассматривает важнейшие протоколы, виды атак и механизмы защиты, которые вписываются в высокоуровневую структуру SRE. Безусловно, тема «Информационная безопасность для SRE‑инженеров» заслуживает целой книги, и мы надеемся однажды к этой теме вернуться.

Заключение

Подобно тому, как путь в тысячу ли начинается с одного шага, мы уверены, что путь в SRE для любознательного девопса или облачного стартапа начинается с книги Павла Рудницкого. Автор смог уложить в книгу теоретический минимум по SRE, не превращая её ни в коллекцию дампов, ни в набор ссылок на внешние ресурсы. Вполне возможно, что, освоив эту книгу, вы наверняка захотите продолжить обучение SRE. Но, даже если вам нужно всего лишь подготовиться к собеседованию на SRE‑инженера, разобраться в многообразии существующих инструментов (не Terraform единым), продуманно подобрать метрики и выставить SLO, эта книга послужит вам походной аптечкой, которая сделает ознакомление с основами SRE комфортным и безболезненным.