- Главная
- →
- Архитектуры, масштабируемость
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не разориться Архитектуры, масштабируемость
Технический директор в компании Evrone, эксперт в области DevOps и адепт направления и внедрения подходов GitOps. Более 10 лет является спикером различных IT-конференций. Пишет код с 2005 года на Ruby, Python, Go, Rust, вносит большой вклад в Open Source, являясь активным участником сообщества разработчиков, и регулярно делится своим опытом и знаниями с другими специалистами. Миссия — помочь компаниям и командам достичь успеха в разработке программного обеспечения, используя современные технологии и подходы.
Тезисы
Наш проект – это облачный CI-сервис, на котором пользователи запускают тесты разрабатываемых проектов.
В этом году система автозакупки нашего проекта приобрела 37218 машин (Amazon Instances). Это позволило обработать 189488 "задач" (прогонов тестов) наших клиентов.
Тесты – это всегда ресурсоемкие задачи с максимальным потреблением процессорных мощностей и памяти. Мы не можем прогнозировать, сколько параллельных вычислений и в какой момент времени будет. Перед нами стояла задача построения архитектуры системы, которая умеет очень быстро увеличивать, а также быстро уменьшать мощности кластера.
Все это осложнялось тем, что ресурсоемкость вычислений не позволяла нам использовать классические инструменты AWS или GoogleComputeEngine. Мы приняли решение написать собственную систему автоматического масштабирования, учитывая требования нашей предметной области.
В докладе я расскажу о том, как мы спроектировали и построили архитектуру нашего сервиса, что из себя представляет система автоматической закупки машин, а также расскажу подробнее об основных архитектурных блоках проектов, решающих подобные задачи.