Playrix разрабатывает множество игр, над каждой из них работает большое количество команд разработчиков и тестировщиков. Команда IT Platform предоставляет сборочную ферму для всех проектов, и ее цель – дать разработчику билд как можно быстрее. В это докладе Юрий Труфанов, Technical Director Playrix, рассказывает про эволюцию этой сборочной фермы и показывает, как она устроена сейчас, какой путь прошла команда и с какими трудностями столкнулась. А еще он делится опытом сборки в облаках и рассказывает, где можно сэкономить.
3. Что мы собираем?
Выпускаем игры для IOS, Android, Mac, Windows(UWP);
Над играми работают сотни разработчиков;
Билды собираются по коммитам, по расписанию, по кнопке;
Для сборки нужны MacOS, Windows, Linux;
Серверный API и вспомогательные сервисы работают в Docker;
▪
▪
▪
▪
▪
5. У НАС БЫЛА СЕРВЕРНАЯ В ОФИСЕ
TeamCity, несколько Mac и целая пачка серверов разной степени свежести
6. У НАС БЫЛА СЕРВЕРНАЯ В ОФИСЕ
Office 1
TeamCity Server
Server
Linux Agents
Windows Agents
Mac Agents
Office 2
Office 3
Office 4
Internet
7. У НАС БЫЛА СЕРВЕРНАЯ В ОФИСЕ
Office 1
TeamCity Server
Server
Linux Agents
Windows Agents
Mac Agents
Office 2
Office 3
Office 4
Internet
8. ▪ TeamCity сервер переживает выход из строя железа и инстансов EC2;
▪ Собранные билды хранятся в S3, а это сторейдж с резервированием;
▪ Если какой-то филиал выходит из строя — нагрузка распределяется по агентам других доступных филиалов.
ДОБАВИМ НАДЕЖНОСТИ
Office 4
Office 2
Office 1
Linux Agents Windows Agents
Mac Agents
Office 3
Linux Agents Windows Agents
Mac Agents
AWS Cloud
TeamCity
Server
Auto Scaling Group
Auto Scaling Group
Builds
portal
Amazon Aurora
MySQL
S3 Artifact
Storage
Internet
10. ПОЧЕМУ МЫ ВЫБРАЛИ ANSIBLE?
Простой инструмент;
Поддержка Linux, MacOS и Windows;
Весь провижининг описан в YAML файлах и хранится в Git репозитории —
понятно кто какие изменения делал и зачем;
Можем применить одновременно изменения на десятках сборочных
агентов и получить одинаковое окружение;
Существенная экономия времени инженеров и сокращение человеческих
ошибок;
▪
▪
▪
▪
▪
12. ЧТО МЫ ИМЕЕМ
Большое количество железных серверов, которые работают постоянно;
Очередь ожидания сборки, которая постоянно растет;
Днем нагрузка больше чем ночью;
Сборка может сломать окружение на агенте - приводит к инцидентам.
К ЧЕМУ МЫ СТРЕМИМСЯ
Нулевая очередь ожидания сборки;
Минимум инцидентов из-за поломанного окружения;
Эффективно расходовать ресурсы;
▪
▪
▪
▪
▪
▪
▪
13. КАКИЕ ПРОБЛЕМЫ НАМ НУЖНО РЕШИТЬ?
Как сделать так, чтобы на запускаемых инстансах было настроено
окружение для сборки?
Как TeamCity работает с облачными сборочными агентами?
Какой тип инстанса выбрать и в каком облаке для сборочных агентов
Linux? А какой для Windows?
У нас большие репозитории. Как уменьшить время checkout на
запускаемых в облаке инстансах?
Что делать с Mac-ами?
▪
▪
▪
▪
▪
14. ПОЧЕМУ МЫ ВЫБРАЛИ PACKER (https://www.packer.io/)?
Работает со множеством облачных провайдеров включая AWS и Azure;
Поддерживает Linux и Windows;
Конфигурация описывается в JSON, который хранится в репозитории (IaC);
Мы можем использовать уже написанный Ansible провижининг и для сборки
образов облачных сборочных агентов.
▪
▪
▪
▪
15. Инстансы для сборочных агентов Linux
Цены OnDemand, взяты отсюда: https://aws.amazon.com/ru/ec2/pricing/on-demand/,
https://azure.microsoft.com/en-us/pricing/details/virtual-machines/linux/#pricing
Облако AWS Azure
Тип инстанса c4.4xlarge c5.4xlarge Standard_D16a_v4
CPU ядра 16 16 16
RAM 32G 32G 64G
Цена за час $0.796 $0.68 $0.856
16. Инстансы для сборочных агентов Windows
Облако AWS Azure
Тип инстанса c5.4xlarge c5.9xlarge Standard_D16a_v4
CPU ядра 16 36 16
RAM 32G 72G 64G
Цена за час $1.512 $3.402 $1.592
Взято с: https://azure.microsoft.com/en-us/pricing/details/virtual-machines/windows/
и AWS Spot Instance pricing history. Цена может изменяться.
17. ГДЕ ХРАНИТЬ ЗЕРКАЛА РЕПОЗИТОРИЕВ GIT?
Amazon Elastic File System (EFS);
GlusterFS, Ceph, NFS;
Amazon FSx for Lustre;
Amazon Elastic Block Store (EBS).
▪
▪
▪
▪
21. ЧТО ДЕЛАТЬ С MAC-АМИ?
Поставить шкаф и набить его Mac Mini и MacPro;
Арендовать Mac Mini или Mac Pro у хостинг провайдера или у облачного
провайдера;
Все, что можно не собирать на Mac — не собирать на Mac;
Собирать на Linux;
Xcode Сloud.
▪
▪
▪
▪
▪
22.
23. Spot инстансы
Есть в AWS и Azure;
Стоят до 90% дешевле;
Могут быть в любой момент отозваны и выключены;
▪
▪
▪
24. Spot инстансы
Цены OnDemand, взяты отсюда: https://aws.amazon.com/ru/ec2/pricing/on-demand/,
https://azure.microsoft.com/en-us/pricing/details/virtual-machines/linux/#pricing
Облако AWS Spot Azure Spot
Azure Spot
with Hybrid Benefit
Тип инстанса c5.4xlarge Standard_D16a_v4 Standard_D16a_v4
CPU ядра 16 16 16
RAM 32G 64G 64G
Цена за час $1.512 $0.2652 $1.592 $0.4494 $1.592 $0.1798
25. НАША СБОРОЧНАЯ ФЕРМА СЕЙЧАС
Office 3
Mac Agents
Office 4
Office 2
Office 1
Mac Agents
Linux Agents
AWS Cloud
Internet
TeamCity
Server
Auto Scaling Group
S3 Artifact
Storage
Auto Scaling Group
Builds
portal
Amazon Aurora
MySQL
Windows Agents
Azure
26. НЕМНОГО ЦИФР
7000+ от 100 до 200 500+
сборок
в день
сборочных
агентов
активных пользователей
в день