Текстовый курс по DevOps
Как DevOps помогает решить проблемы в ИТ?
Вы развёртываете изменения непрерывно
Компании от молодых стартапов до участников списка Fortune 100, с самыми разными программными продуктами и услугами, уже доказали, что с DevOps небольшие независимые и самодостаточные команды могут проводить десятки развёртываний в рабочей среде каждый день. Вы проектируете, собираете, поставляете и тестируете ПО в условиях, близких к рабочим. Больше не нужно выпускать код в рабочую среду раз в три месяца после полуночи, пока остальные спят. Вы выпускаете код много раз в день, в обычное рабочее время, а клиенты и рынок продолжают пользоваться вашим ПО и получать от него пользу.
DevOps позволяет часто поставлять небольшие функции. Методы скрытого запуска (Dark Launch) также позволяют часто развёртывать небольшие части крупных функций в рабочей среде. Они остаются неактивными, пока вы не включите всю функцию настройкой конфигурации. Уже один этот приём может значительно улучшить жизнь команды: он позволяет избежать одномоментных массовых развёртываний, непредсказуемых последствий для существующих систем, хаоса и взаимных обвинений.
Вы организуете команды вокруг своей миссии
Чтобы обслуживать рынок и выполнять более масштабную миссию, чем у конкурентов, вы формируете в ИТ долгосрочные команды вокруг продуктов, услуг, возможностей и микросервисов для внутренних или внешних клиентов. Временные проектные команды, напротив, распадаются сразу после завершения проекта или даже раньше.
В модели временных команд участники не могут в полной мере отвечать за собственный вклад: они редко знают, какое место их проект занимает в миссии организации, и не получают надлежащей обратной связи. Им постоянно передают задачи по их специальности из разных проектов — например, по разработке баз данных, дизайну интерфейсов или переводу. Из-за этого их постоянно отвлекают.
Долгосрочные команды охотно отвечают за свою работу и за результаты ИТ и бизнеса, которые обеспечивает их производительность. Они точно понимают, какое место их вклад занимает в общей миссии организации и почему он важен.
Вы создаёте системы для достижения бизнес-целей
Вы и ваша команда понимаете, что вам платят за обслуживание клиентов и выполнение миссии организации. Поэтому вы бережно относитесь ко времени и ресурсам организации и клиентов. Прежде чем браться за долгосрочный проект, вы проверяете на практике и подтверждаете предполагаемую пользу от ИТ-решения. Вы показываете клиентам модели, прототипы, различные варианты для A/B-тестирования или упрощённые версии задуманного. Затем измеряете и фиксируете их реакции и отзывы, чтобы понять, как улучшить продукт или услугу и нравится ли решение клиентам вообще.
Вы не добавляете функции только потому, что они вам кажутся удачными. Вы проверяете идеи и получаете конкретные, наглядные и воспроизводимые подтверждения того, что создаваемое решение и вложенные в него ресурсы, скорее всего, улучшат финансовый результат и выгодно выделят вашего работодателя среди конкурентов.
Вы закладываете качество и мониторинг в продукт
Вы создаёте быстрые, надёжные циклы обратной связи и усиливаете их на всех этапах поставки и эксплуатации ПО. Качество — общая ответственность, и каждый стремится заложить его в результат работы. Чтобы убедиться, что вы всё сделали правильно, не нужно ждать отзывов другой команды или просить разрешение на развёртывание кода в рабочей среде. Вы доверяете коллегам из своей команды проверку проекта, кода, тестов и инфраструктуры.
Вы автоматизируете тестирование и мониторинг (телеметрию) для каждой функции, которую можно измерить и проверить. Если функция стоит времени на разработку и поставку, она заслуживает непрерывной, надёжной, быстрой и единообразной автоматизированной проверки. Ей также нужны непрерывный мониторинг и встроенная аналитика, чтобы проверить, соответствует ли эффект той цели, ради которой её создали. Это относится и к рабочим, и к остальным средам.
Каждое внесение изменений в репозиторий автоматически адаптирует, перестраивает или при необходимости заново создаёт среды эксплуатации, пересобирает затронутые приложения и запускает все автоматизированные тесты. Они проверяют работу существующих функций и то, достигнута ли цель последнего изменения. После успешной проверки те же изменения автоматически применяются в рабочей среде.
Встроенные в приложения аналитика и телеметрия непрерывно отслеживают и записывают ключевые события в ПО и средах эксплуатации. Основные метрики, такие как число заказов и входов в систему, использование процессора и памяти, нагрузка на процессор, число ошибок и длительность запросов к базе, записываются непрерывно и выводятся в реальном времени. Поэтому команда обнаруживает негативные последствия развёртывания за считаные минуты или даже секунды. Быстрая обратная связь помогает выполнять работу без задержек.
Ошибки помогают учиться и учить других
Если возникает ошибка, вы устраняете её спокойно и уверенно. Первопричину инцидента определяете по объективным данным автоматизированных тестов и телеметрии. Если после устранения обнаружится, что не хватало теста или телеметрии, добавьте их в репозиторий вместе с исправлением.
В такой сложной системе, как ваша, никто не может знать и предвидеть всё. Поэтому в организации считают ошибки естественной частью развития продуктов и услуг и возможностью учиться и расти. Вы и ваша организация воспринимаете их как источник новых личных и общих знаний.
Разбор ошибок без поиска виноватых помогает точнее выявить первопричины инцидентов и найти способы предотвращать такие же и похожие ошибки. Благодаря инциденту то, чему научилась ваша команда на своём ПО, становится частью общей памяти организации и приносит пользу всем.
Вас и вашу команду не наказывают за ошибку. Вас отмечают за уроки, которые вы извлекли из инцидента и которыми поделились. Благодаря вашему вкладу многие команды знают, как предотвратить такой инцидент в будущем.
Ваши команды лучше масштабируются по мере роста бизнеса
Представьте обычную организацию, которая выросла с 1 до 1,000 разработчиков. Пока она была небольшой, разработчики непрерывно собирали и развёртывали код в рабочей среде. По мере роста увеличиваются организационная и бюрократическая иерархия и страх ошибок. Чтобы развернуть код, нужно больше координации и общения. Поэтому среднее количество развёртываний в день на одного разработчика обычно снижается, а в лучшем случае остаётся прежним.
Высокоэффективные организации DevOps действуют иначе: с увеличением числа разработчиков им удаётся наращивать среднее число развёртываний в день на одного разработчика. Высокоэффективные компании DevOps, такие как Google, Amazon, Facebook, Netflix и Apple, уже доказали, что это возможно при подходящей архитектуре ПО, правильном составе команд, ясной миссии, эффективном руководстве и подходящей культуре. Ваша организация может стать следующей.
На исходном графике сравнивается рост числа развёртываний в день на одного разработчика по мере роста команд.
Посмотреть исходную схему ↗ВЫВОДЫ
Высокоэффективные организации DevOps превосходят конкурентов по следующим показателям.
- В 46 раз чаще развёртывают код.
- В 440 раз сокращают время от коммита до развёртывания.
- В 96 раз сокращают среднее время восстановления после простоя.
- В 5 раз снижают долю неудачных изменений (вероятность сбоя составляет 1/5 от исходной).
- Повышают производительность и пропускную способность.
- Повышают надёжность кода и эксплуатации.
- Повышают эффективность организации и удовлетворённость клиентов.
- Улучшают проникновение на рынок, долю рынка и прибыльность организации (вероятность достижения этих результатов в 2 раза выше).
- Ускоряют рост рыночной капитализации.
Сравниваются частота развёртываний, время выполнения изменений, время восстановления и доля неудачных изменений.
Посмотреть исходную схему ↗