SRE (Инженерия надежности сайтов)
Команды SRE работают с инфраструктурой, которая поддерживает онлайн-сервисы, такие как веб-приложения, облачные сервисы и другие. Они занимаются управлением и контролем над высоконагруженными системами, используя автоматизацию и мониторинг, чтобы обеспечить надежность и доступность сервисов.
SRE-инженеры занимаются решением проблем, связанных с инфраструктурой и производительностью приложений, а также обеспечивают безопасность и защиту от взломов и атак. Они также работают в тесном сотрудничестве с командами разработчиков, чтобы обеспечить высокую производительность и доступность приложений.
В целом, SRE-практики становятся все более популярными в современной разработке программного обеспечения и представляют собой эффективный способ обеспечения надежности и доступности приложений в условиях высокой нагрузки и масштабирования.
SRE-инженер¶
Позицию инженера Site Reliability часто путают с системным администратором, программистом и даже специалистом технической поддержки. Однако концепция Site Reliability Engineering намного глубже.
Ключевая задача SRE, или инженера доступности сервисов, — поддерживать в работоспособном состоянии системы, от которых зависит выручка и чистая прибыль бизнеса. SRE-инженеры обеспечивают стабильную и предсказуемую работу сайтов, обнаруживая проблемы до того, как о них сообщит клиент. Современные системы слишком сложны для управления человеком, и задача SRE — свести к минимуму влияние человеческого фактора.
Эта профессия получила распространение в основном в крупных калифорнийских компаниях.
Особенно востребованы такие инженеры в компаниях, успех которых напрямую связан с бесперебойной работой компьютерных систем, — это Google, Apple, Microsoft и пр.
В России концепция SRE стала развиваться сравнительно недавно.
Что входит в обязанности SRE-инженера¶
- Тотальная автоматизация
SRE-инженер во главу угла ставит автоматизацию абсолютно всех возможных задач. По различным исследованиям, человеческий фактор (невнимательность или пренебрежение к тем или иным обязанностям) является непосредственной причиной порядка 80 % инцидентов, включая инциденты в области безопасности. Qrator Labs полагает, что в отношении сбоев компьютерных систем это число даже выше — до 95 %. Если непрерывная доступность приложения зависит от ручных действий человека (по настройке, развертыванию, обновлению), рано или поздно это приложение сломается.
Это усугубляется тем фактом, что современные крупные веб-сайты выкатывают «в бой» обновления по несколько раз в сутки. При такой динамике сбой в результате ошибки человека становится вопросом времени.
Поэтому вывод простой: всё, что связано с работой программного кода, кодом и должно обеспечиваться. Влияние человека на автоматизированную систему должно быть очень высокоуровневым.
Человек должен программировать не только саму систему, но и процесс ее конфигурирования и развертывания. Вынося возможность ошибки на столь высокий уровень, мы таким образом снижаем частоту инцидентов, повышая выручку.
Если ошибка повторяется или несет в себе высокие риски, SRE-инженер может принять решение исправить что-то в самом приложении или написать инструмент, способный устранить проблему без участия человека. Благодаря выстроенным процессам SRE мы можем не только понять, есть ли в системе уязвимости, баги или функции, неудобные для пользователей, но и быстро их ликвидировать и в дальнейшем постоянно повышать надежность системы.
Подход SRE заставляет автоматизировать вначале рутинные, а потом и высокоуровневые операции. Например, 10 лет назад для развертывания 2000 серверов нужно было выполнить 2000 раз один и тот же длинный список функций по установке операционной системы. Сейчас это делается в облаке за несколько минут или десятков минут путем вызова всего одной функции.
- Мониторинг системы
Систему недостаточно просто развернуть. Чтобы понять, какие именно проблемы возникают с релизом продукта в фазе продакшена, необходимо организовать мониторинг инженерных проблем, уязвимостей, а также бизнес-метрик — например, поведения пользователей и того, на сколько увеличиваются или падают параметры пользовательского вовлечения. Например, для интернет-магазина это могут быть переходы по ссылкам, попадание товара в корзину, оплата заказа и пр.
- Разработка Service Level Agreement, SLA (соглашения об уровне сервиса) SRE-инженер предоставляет бизнесу гарантии, создавая документы SLO (Service Level Objective), SLI (Service Level Indicator) и SLA (Service Level Agreement), описывающие параметры качества услуг, на которые бизнес может опираться в своей операционной деятельности.
Определив вместе с SRE приемлемые показатели надежности, бизнес точно знает, сколько часов в год сайт может быть недоступен, по каким причинам, а в какие периоды это вообще неприемлемо: например, в киберпонедельник, черную пятницу.
SLI — основной ключевой показатель эффективности SRE-инженера. При этом SR-инженер будущего ориентируется в том числе на бизнес-метрики и может со ссылкой на количественные показатели объяснить, насколько надежна система, какие проблемы могут в ней возникать и как их устранить, чтобы система могла стабильно выдерживать большее количество запросов без потери качества.
Откуда берутся SRE-инженеры¶
Так как дисциплина Site Reliability Engineering лежит на стыке программирования и системного администрирования, в профессию приходят из обеих областей. К такой профессии нужно быть предрасположенным изначально: иметь тягу к автоматизации, решению проблем с продакшен-системой — и не только тягу, но и навык обнаружения проблем. По сути, SRE-инженером нельзя стать с нуля, это не профессия, которой учат, а профессия, которой учатся.
Дисциплина Site Reliability Engineering подразумевает наличие определенного опыта.
Ровно так же, как нельзя, за редким исключением, окончив институт, стать генеральным директором корпорации, нельзя устроиться на работу SRE-стажером, хотя некоторые компании действительно на бумаге предлагают такие вакансии. Однако реальная работа и ответственность, которую налагает подобная функция, начнется только при приобретении определенного опыта и после набивания руки.
Начать свой путь к SRE можно из обеих сфер: как из прикладного программирования, так и системного администрирования, — и обучаться с оглядкой на основные инструменты, которые используются в этих дисциплинах. При движении в SRE из системного администрирования необходимо дополнительно обучаться программной разработке. Знание сложных алгоритмов здесь не требуется, но понимание конечной системы и умение запрограммировать процессы поддержания ее работы — это принципиальный навык.
Почему SRE — профессия ближайшего будущего¶
С учетом развития аппаратных платформ и программных инструментов, на основе которых работает продакшен (например, целый ряд компаний уже давно и активно развивают AI-инструменты, распознавание изображений, машинное обучение), на первый план выходит вопрос поддержки в работоспособном состоянии систем, от которых зависит выручка и чистая прибыль компании.
SRE может стать стабильной, надежной, предсказуемой платформой для любого бизнеса, реализующего как комплексные, так и небольшие проекты.
Системы продолжают усложняться, и удержать в голове подробности развертывания сотен разнообразных сервисов, включая сложнейшие комбинации искусственного интеллекта с Интернетом вещей, не под силу ни одному специалисту. Именно автоматизация этих задач становится прерогативой SRE, и именно поэтому профессия не просто не устареет, а будет развиваться в ближайшие десятки лет самым активным образом.