Инфраструктура. CI/CD
Artyom Grachok·13 Oct 2019
Георгий Белоусов, руководитель группы автоматизации, рассказал на лектории «ВКонтакте на практике» об инфраструктуре платформы. Какие используются инструменты автоматизации и как устроен процесс CI/CD — в нашей статье.
Какие сервисы используются?
- GitLab — насчитывает около 700 проектов от VK, используется разными направлениями. Например, хранятся различные скрипты или конфигурационные файлы, которые используются командой эксплуатации. Также содержатся различные коды сайта, Android, iOS и т. д.
- TeamCity — содержит порядка 800 сборок. В нём содержатся различные тесты для анализа кода. Служит в качестве основного хранилища артефактов.
- Artifactory — содержит около 500 000 артефактов. Служит дополнительным хранилищем артефактов.
- JIRA — около 150 000 задач. Служит трекером.
- Confluence — насчитывает 7000 страниц. Основное хранилище документации.
Что собирает команда?
- Собираются различные сайты.
- Для удобства эксплуатации все пакеты собираются на базе Debian. Дальше это загружается в локальный репозиторий. Затем командами есть возможность установки определенного пакета на один сервер или различные сервера. Всё это делается автоматизированно.
- Android
- iOS
- Docker-образы. После сборки они загружаются в Arifactory. Из Artifactory используются для продакшена для разных команд.
Из чего всё собирается?
- PHP;
- C/C++;
- Go;
- Python;
- Java;
- NodeJS.
Немного статистики:
Какие этапы существует в команде CI/CD?
- Код;
- ревью;
- сборка (TeamCity);
- проведение тестов;
- получение артефактов;
- деплой на тестовое окружение;
- деплой на продакшен.
Код ревью
Что внутри делается?
- Linters — проверяют code style;
- Unit-тесты — автоматический поиск ошибок;
- Ревью от коллеги.
Для чего?
- Соблюдение code style;
- автоматический поиск ошибок;
- помощь в применении best practice;
- повышение степени повторяемости кода;
- отказ от legacy.
Что происходит внутри сборки сайта?
- Unit-тесты;
- сборка статики (yarn);
- сборка kphp (трансляция в С). В результате получается бинарник, который можно запустить;
- подготовка артефактов;
- загрузка артефактов.
Тестовое окружение
- Тестовые домены (500 шт);
- публичные тестовые домены (10 шт).
Деплой
- Доставка артефактов;
- деплой статики/php;
- деплой бинарника сайта;
- gossip;
- «бесшовный» перезапуск.
Путь в прод. VCS
- Ветка с мастера;
- тестовое окружение;
- тесты;
- ревью;
- мерж в master;
- автомерж в staging.
Путь в прод. CI/CD
- Сервер разработки (локальная сборка);
- тестовый домен (TeamCity);
- публичный тестовый домен (TeamCity);
- staging (TeamCity);
Путь в прод. Уведомления.
Расписание
Откат
- Да, бывает. Паниковать не стоит!
- Откатываем на предыдущую версию.
- Занимает около 3-4 минут.
- Следующие поезда ждут фикса.
Статистика выпусков версий:
Полное видео выступления:
The Brown Room — ведущее social media издание ВКонтакте.
Автор: Артём Грачок
Корректор: Арсений Метелев
