Инфраструктура. CI/CD

Георгий Белоусов, руководитель группы автоматизации, рассказал на лектории «ВКонтакте на практике» об инфраструктуре платформы. Какие используются инструменты автоматизации и как устроен процесс 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, image #1

Какие этапы существует в команде CI/CD?

  • Код;
  • ревью;
  • сборка (TeamCity);
  • проведение тестов;
  • получение артефактов;
  • деплой на тестовое окружение;
  • деплой на продакшен.

Код ревью

Что внутри делается?

  • Linters — проверяют code style;
  • Unit-тесты — автоматический поиск ошибок;
  • Ревью от коллеги.

Для чего?

  • Соблюдение code style;
  • автоматический поиск ошибок;
  • помощь в применении best practice;
  • повышение степени повторяемости кода;
  • отказ от legacy.

Что происходит внутри сборки сайта?

  • Unit-тесты;
  • сборка статики (yarn);
  • сборка kphp (трансляция в С). В результате получается бинарник, который можно запустить;
  • подготовка артефактов;
  • загрузка артефактов.

Тестовое окружение

  • Тестовые домены (500 шт);
  • публичные тестовые домены (10 шт).

Деплой

  • Доставка артефактов;
  • деплой статики/php;
  • деплой бинарника сайта;
  • gossip;
  • «бесшовный» перезапуск.

Путь в прод. VCS

Инфраструктура. CI/CD, image #2
  • Ветка с мастера;
  • тестовое окружение;
  • тесты;
  • ревью;
  • мерж в master;
  • автомерж в staging.

Путь в прод. CI/CD

  • Сервер разработки (локальная сборка);
  • тестовый домен (TeamCity);
  • публичный тестовый домен (TeamCity);
  • staging (TeamCity);

Путь в прод. Уведомления.

Пример уведомления бота
Пример уведомления бота

Расписание

Инфраструктура. CI/CD, image #4

Откат

  • Да, бывает. Паниковать не стоит!
  • Откатываем на предыдущую версию.
  • Занимает около 3-4 минут.
  • Следующие поезда ждут фикса.

Статистика выпусков версий:

Инфраструктура. CI/CD, image #5

Полное видео выступления:

Инфраструктура. CI/CD, image #6

The Brown Room — ведущее social media издание ВКонтакте.

Автор: Артём Грачок
Корректор: Арсений Метелев

362 views·4 shares
362 views