Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Паттерны и антипаттерны непрерывных обновлений ...

Паттерны и антипаттерны непрерывных обновлений в практике DevOps

Итак, ты решил обновить софт у своих пользователей. Может быть, это 100500 микросервисов в их кластере Kubernetes, может быть, это очередной редактор на JavaScript у них на ноутбуке, может быть, это приложение для дипфейков в их смартфоне, а может быть, ты даже не побоялся обновить их автомобиль! Что уже может пойти не так, правда?!

В этом докладе мы проанализируем реальные фейлы, которые ежедневно и повсеместно происходят при обновлении софта.

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

И нет, хорошенько проверить всё ручками перед отправкой и попросить у пользователя еще раз хорошенько проверить всё ручками при приёмке не является одним из рекомендованных паттернов, несмотря на то, что так делает половина индустрии!

Приходите послушать полезные кошмарики про непрерывное обновление, и вы получите шанс познакомиться со множеством очевидных (и не таких уж и очевидных!) проверенных идей и практик, которые вы сможете начать применять сразу после доклада, и, может быть, ваши пользователи будут ненавидеть вас немножко меньше!

DevOpsDaysMoscow

December 07, 2019
Tweet

More Decks by DevOpsDaysMoscow

Other Decks in Education

Transcript

  1. “As every company become a software company, Security vulnerabilities are

    the new oil spills” @jbaruch #DevOpsDaysRu #liquidsoftware
  2. найти Как можно быстрее почи нить Как можно быстрее депл

    ой Как можно быстрее @jbaruch #DevOpsDaysRu #liquidsoftware
  3. Ничто не ново под луной XP: short feedback Scrum: reducing

    cycle time to absolute minimum TPS: Decide as late as possible and Deliver as fast as possible Kanban: Incremental change @jbaruch #DevOpsDaysRu #liquidsoftware
  4. Мы его хотим? А давайте! Есть ли риски? Ну и

    не надо Доверяем? Есть апдейт! Нет Да Да Да Нет Нет
  5. Мы его хотим? А давайте! Есть ли риски? Ну и

    не надо Доверяем? Есть апдейт! Нет Да Да Да Нет Нет Можем проверить ? Да Нет Долгие и дорогие проверки
  6. Мы его хотим? А давайте! Есть ли риски? Есть апдейт!

    Нет Да А нас никто не спрашивает Твой браузер Твиттер в твоем браузере Твиттер в твоем смартфоне Операционка в твоём смартфоне?!
  7. Паттерн непрерывн ых обновлени й: локальный откат Проблема: что-то пошло

    настолько не так, что прислать патч по сети невозможно Решение: Держи предыдущую версию на девайсе. Девайс проверит, что всё ОК, и откатится, если нужно @jbaruch #DevOpsDaysRu #liquidsoftware
  8. Паттерн непрерыв ных обновлен ий: обновлен ия по воздуху Проблема:

    Физические отзывы дико дороги. И ненадёжны. Решение: Имплементируй обновления по воздуху. Лучше всего – непрерывные обновления @jbaruch #DevOpsDaysRu #liquidsoftware
  9. Паттерн непрерывн ых обновлени й: непрерывн ые обновлени я Проблема:

    Редкие обновления группируют фичи. Критические фичи ждут всякую фигню. Решение: Имплементируй непрерывные обновления. Как только фича готова – выпускай обновление! @jbaruch #DevOpsDaysRu #liquidsoftware
  10. Весёлые приключе ния Нуба Решил запилить новую фичу В темплейтах

    используется $ Стейджинговые сервера Эппла отдают цену без валюты Некоторые сервера в проде отдают цену с валютой Дальше всё грустно Пока разобрались, пока пофиксили У Эппла выходные @jbaruch #DevOpsDaysRu #liquidsoftware
  11. Паттерн непрерыв ных обновлен ий: канарееч ные релизы Проблема: Если

    когда что-то пошло не так, страдают все. Решение: Релизь небольшому проценту пользователей, и наблюдай. Если что-то пошло не так, пострадают не все. @jbaruch #DevOpsDaysRu #liquidsoftware
  12. Паттерн непрерыв ных обновлен ий: наблюда емость Проблема: Некоторые проблемы

    тяжело дебажить по матерным отзывам пользователей Решение: Имплементируй трейсинг, мониторинг и логгинг @jbaruch #DevOpsDaysRu #liquidsoftware
  13. Паттерн непрерыв ных обновлен ий: откаты Проблема: Построить и задеплоить

    новый фикс может занять время Решение: Будь готов откатиться на предыдущую версию, если что-то пошло не так @jbaruch #DevOpsDaysRu #liquidsoftware
  14. Паттерн непрерыв ных обновлен ий: feature- Флаги Проблема: Не все

    платформы поддерживают откаты Решение: Имплементируй возможность отключать новые фичи по воздуху @jbaruch #DevOpsDaysRu #liquidsoftware
  15. Вы думали это вам тяжело?! Что вы контролируете Обновления серверов

    Обновления Iot Доступность девайса ✓ ✕ @jbaruch #DevOpsDaysRu #liquidsoftware
  16. Вы думали это вам тяжело?! Что вы контролируете Обновления серверов

    Обновления Iot Доступность девайса ✓ ✕ Состояние девайса ✓ ✕ @jbaruch #DevOpsDaysRu #liquidsoftware
  17. Вы думали это вам тяжело?! Что вы контролируете Обновления серверов

    Обновления Iot Доступность девайса ✓ ✕ Состояние девайса ✓ ✕ Существующая версия на девайсе ✓ ✕ @jbaruch #DevOpsDaysRu #liquidsoftware
  18. Вы думали это вам тяжело?! Что вы контролируете Обновления серверов

    Обновления Iot Доступность девайса ✓ ✕ Состояние девайса ✓ ✕ Существующая версия на девайсе ✓ ✕ Доступ к девайсу ✓ ✕ @jbaruch #DevOpsDaysRu #liquidsoftware
  19. Катастро фа по- рыцарски Переиспользовали старые флаги Один сервер из

    восьми не был обновлён Новые клиенты переключали флаги в старой системе Что сделали первым делом? Откатили обновлённые семь серверов! Никакого мониторинга @jbaruch #DevOpsDaysRu #liquidsoftware
  20. Паттерн непрерывны х обновлений: Автоматизи рованный деплоймент Проблема: Люди плохо

    умеют повторять действия Решение: Замени кожаные мешки машинами @jbaruch #DevOpsDaysRu #liquidsoftware
  21. Паттерн непрерыв ных обновлен ий: частые обновлен ия Проблема: Редкие

    обновления это необычное, нервирующее событие Решение: Обновляй часто! Вырабатывается привычка и пропадает страх @jbaruch #DevOpsDaysRu #liquidsoftware
  22. Паттерн непрерыв ных обновлен ий: сознание состояния Проблема: Обновления могут

    вести себя по- разному в зависимости от состояния девайса Решение: Знай состояние девайса и тестируй обновления, а не установку с нуля @jbaruch #DevOpsDaysRu #liquidsoftware
  23. Паттерн реальной жизни: не будь мудаком Проблема: Шеймить кого-либо публично

    некрасиво, завтра может прилететь и тебе Решение: Не надо так @jbaruch #DevOpsDaysRu #liquidsoftware
  24. Затмение в cloud flare Правила постоянно обновляются чтобы бороться с

    хакерами Одно из правил было неправильно написано Регулярка задрала нагрузку на CPU до 100% “Affected region: Earth” @jbaruch #DevOpsDaysRu #liquidsoftware
  25. Паттерн непрерыв ных обновлен ий: канарееч ные релизы Проблема: Если

    когда что-то пошло не так, страдают все. Решение: Релизь небольшому проценту пользователей, и наблюдай. Если что-то пошло не так, пострадают не все. @jbaruch #DevOpsDaysRu #liquidsoftware
  26. Паттерн непрерывн ых обновлени й: обновлени я без недоступн ости

    Проблема: Если обновляться пять недель, от вас уйдут все клиенты Решение: Обновляйся без недоступности, чтобы клиенты ничего не заметили (кроме новых фич) @jbaruch #DevOpsDaysRu #liquidsoftware
  27. Непрерыв ные обновлен ия Частые Автоматизированные Оттестированные насколько возможно Канареечные

    Учитывают состояние Наблюдаемые *С локальными откатами @jbaruch #DevOpsDaysRu #liquidsoftware
  28. Мы его хотим? А давайте! Есть ли риски? Доверяем? Есть

    апдейт! Нет Да Да Да А нас никто не спрашивает
  29. Our goal is to transition from bulk and rare software

    updates to extremely tiny and extremely frequent software updates; so tiny and so frequent that they provide an illusion of software flowing from development to the update target. We call it the Liquid Software vision. ” @jbaruch #DevOpsDaysRu #liquidsoftware