Технологии

DevOps и SRE: отличия и сферы применения

С начала прошлого десятилетия все чаще в разговорах об IT стало фигурировать понятие DevOps (Development & Operations). Это весьма молодой термин, который находится в быстро развивающейся и меняющейся среде. Поэтому даже спустя десяток лет многие компании трактуют его по-своему. Есть еще более молодой и менее знакомый широкой общественности термин — SRE (Site Reliability Engineering). Издалека может показаться, что DevOps и SRE — это просто два разных подхода к решению одной и той же задачи, создания инфраструктуры для стабильной работы программного продукта. Но раз задача стоит, то есть смысл рассмотреть оба подхода более пристально.
Изначально DevOps зарождался как рабочая идеология.
Спустя время эта самая идеология породила целый новый класс специалистов. Стало понятно, что для эффективной работы и развития конечного продукта мало хороших разработчиков и администраторов. Необходимо не только разработать и задеплоить. Важно построить и автоматизировать разработку, тестирование и выпуск таким образом, чтобы все эти процессы шли параллельно и не тормозили друг друга. За дело берется администратор и кодер — DevOps engineer, который оптимизирует работу всех команд: разработчиков, тестировщиков и администраторов. В его руках инструменты непрерывной сборки продукта, управления релизами, мониторинга и настройки инфраструктуры. В голове у DevOps-инженера искреннее желание автоматизировать труд разработчиков и тестировщиков таким образом, чтобы новые версии программного продукта выходили параллельно с разработкой следующих. При этом обновления не должны затрагивать непрерывность тестирования и исправления ошибок. Кроме того, он хочет быть уверенным, что продукт развернут правильно, и все условия для его стабильной и максимально эффективной работы соблюдены.

Пора узнать — чем в это время занимается инженер SRE. Он тоже разрабатывает инфраструктуру для работы продукта. Однако производительность самого продукта его интересует больше, чем производительность его разработчиков. В своей работе он опирается на показатели стабильности и безопасности, а также на требования по их соблюдению. От SRE инженера зависит не только качество функционирования продукта в разработанной среде, но и стратегия разработки, и даже ее бюджет. Если специалист посчитает, что показатели стабильности работы ПО снижаются до недопустимого минимума, он способен приостановить выпуск новых версий и доработок функциональности, временно сосредоточив усилия команды разработчиков над устранением возникающих проблем. Его задача — всегда держать продукт в состоянии соответствия с требуемыми показателями стабильности. Если сервис был недоступен дважды за неделю, а допустимое количество сбоев — 5 в месяц, специалист по SRE вправе прервать разработку дополнительных функций и направить все силы команды программистов на повышение стабильности. При этом сам он так же принимает активное участие в разработке и знает о стабильности программных продуктов не понаслышке.

Так чем отличается DevOps от SRE?

Можно сказать, что главное отличие DevOps от SRE заключается в разных приоритетных задачах у двух методологий. При этом они не являются взаимоисключающими. Проблемы решаются схожие, но частично отличаются способы решения и расстановка приоритетов.

  •  Практики DevOps созданы для повышения эффективности разработки и выпуска продукта. Процессы сборки, настройки и развертывания автоматизируются таким образом, чтобы сократить время простоя всех специалистов команды разработки и обслуживания. Как следствие — увеличивается скорость разработки и введения программного продукта в эксплуатацию. В то же время DevOps включает в себя контроль стабильности и безопасности, а также анализ рабочих метрик для последующей оптимизации инфраструктуры.

  •  SRE, в свою очередь — методология неукоснительного следования жестким стандартам, разработанным для конечного продукта. Утверждаются требования по доступности, безопасности и скорости работы приложения или сервиса. С учетом этих требований строится архитектура для развертывания. Этапы развития и разработки согласовываются с SRE-специалистом, который следит за соответствием всем требованиям, использует метрики и способен прогнозировать поведение продукта. Основная задача — поддерживать работу приложения на должных уровнях по показателям доступности, которые являются утвержденными.

Как работает DevOps и SRE, и чего ждать в качестве результата

Эффективность деплоя обеспечивается за счет следующих инструментов DevOps и практик:

  •  разработка, сборка и контроль версий;
  •  управление базами данных;
  •  интеграционное, функциональное и нагрузочное тестирование;
  •  управление контейнерами и конфигурациями;
  •  оркестрация;
  •  мониторинг и логгирование.

Что касается SRE-практик, деплой тоже в них входит. Но также используется:

  •  контроль SLO, SLI и бюджета ошибок;
  •  настройка системы алертов;
  •  дежурство и оперативный разбор инцидентов;
  •  хаос-инжиниринг.

SLO (Service Level Objective) и SLI (Service Level Indicator) — это как раз те самые показатели целевого уровня доступности и стабильности. Они определяются внутри компании, либо устанавливаются заказчиком по SLA (Service Level Agreement). SRE позволяет соответствовать показателям даже при возникновении внештатных ситуаций. Отработка таких ситуаций происходит при помощи хаос-инжиниринга.

Получается, что DevOps позволяет эффективно организовать работу всей цепочки создания программного продукта, от его разработки, до тестирования и доставки конечным пользователям. И оценивать эту эффективность не приходится. О ней ярко говорит опыт многочисленных IT-компаний, таких как Netflix. В своих корпоративных блогах стриминговый гигант регулярно рассказывает о том, как DevOps помогает их продукту поддерживать стремительное развитие и постоянно адаптироваться к изменяющимся условиям рынка.
SRE решает те же задачи, что и DevOps, но также затрагивает процесс построения стратегии разработки. Высокая эффективность приложения или сервиса достигается именно за счет своевременно скорректированного плана его создания и развития.

Выводы

SRE необходим для больших компаний и крупных программных продуктов. Эта методология была придумана в Google, и если стабильная работа вашего сервиса так же важна, как работа Gmail, то стоит задуматься о применении практик SRE.

Однозначно любой программный продукт нуждается в сопровождении. Особенно это касается приложений и сервисов, которые находятся в непрерывной стадии активного развития. Благодаря работе опытных DevOps-инженеров можно поднять планку ожиданий, ведь не только сервис способен работать как часы, но работа всей команды, которая стоит за его созданием, тоже способна напомнить часовой механизм.

Наша команда разработчиков никогда не отказывается от преимуществ методологий. Мы активно применяем инструменты DevOps и SRE, оказываем должную поддержку разработкам любого уровня. Опытные инженеры сопровождают как продукты, находящиеся на разработке в Digex Co., так и приложения наших клиентов. Воспользуйтесь услугами наших специалистов по DevOps и SRE и повышайте стабильность своего продукта, безопасность и эффективность его обновлений. Также вы можете связаться с нами и узнать больше о преимуществах, которые современные методологии дают нашим клиентам.

Читать ещё

Хотите работать с нами
Досточно просто написать нам