- PVSM.RU - https://www.pvsm.ru -
Привет, %username%!
Совсем недавно закончилась конференция Highload++ (еще раз спасибо всей команде организаторов и olegbunin [1] лично. Было очень круто!).
Накануне конференции Алексей fisher [2] предложил создать инициативную группу «сталкеров» на конференции. Мы, во время докладов, писали небольшие конспекты, которыми обменивались. Некоторые конспекты получились достаточно детальными и подробными.
Сообщество в соц сетях позитивно оценило такой формат, поэтому я (с разрешения) решил опубликовать конспект первого доклада. Если данный формат будет интересен, то я смогу подготовить еще несколько статей.

В авито много сервисов и очень много связей между ними. Это порождает проблемы:
Большое количество инфраструктурных элементов:
Есть ряд слоев, доклад описывает только один (PaaS).
В платформе 3 основные части:
CLI-push -> CI -> Bake -> Deploy -> Test -> Canary -> Production
Долго учили делать правильно разработчиков. Все равно осталось слабым местом.
Автоматизировали через cli утилиту, которая помогает создать базис под микросервис:
Конфиг описывается в toml файле.
Пример файла:

Базовая валидация проверяет:
Документация должны быть у всех, но ее почти ни у кого нет
В документации должно быть:
Документацию нужно ревьюить.
Поиск owner определяется по пушам (количество пушей и количество кода в них).
Если есть потенциально опасные миграции (alter), то регистрируется триггер в Атлас и сервис помещается в карантин.
Через пуши владельцам разруливается карантин (в ручном режиме?)
Проверяем:
Тестирование выполняться в закрытом контуре (например hoverfly.io) — записывается типовая нагрузка. Затем по ней эмулируется в закрытом контуре.
Проверяется соответствие потреблений ресурсов (отдельно смотрим крайние случаи — слишком мало / много ресурсов), отсечка по rps.
Нагрузочное тестирование также показывает дельту производительности между версиями.
Начинаем запуск на очень малом количестве пользователей (<0.1%).
Минимальная нагрузка 5 минут. Основная 2 часа. Затем увеличивается объём пользователей если все ок.
Смотрим:
Тестирование через выдавливание.
Нагружаем реальными пользователями 1 инстанс до точки отказа. Смотрим его потолок. Далее добавляем ещё инстанс и догружаем. Смотрим следующий потолок. Смотрим регрессию. Обогащаем или заменяем данные из нагрузочного тестирования в Atlas.
Только по cpu плохо, надо добавлять продуктовые метрики.
Итоговая схема:
При масштабировании не забывать смотреть зависимости по сервисам. Помним про каскад масштабирования (+1 уровень). Смотрим исторические данные инициализирующего сервиса.
Смотрим на все сверху в аггрегированном виде и делаем выводы.
Пример:

Автор: Виталий Юшкевич
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/konferentsii/298745
Ссылки в тексте:
[1] olegbunin: https://habr.com/users/olegbunin/
[2] fisher: https://habr.com/users/fisher/
[3] Источник: https://habr.com/post/429460/?utm_source=habrahabr&utm_medium=rss&utm_campaign=429460
Нажмите здесь для печати.