Современные программные системы, как правило, являются распределенными и работают в облаках. Развертывание программных комплексов с учетом потребностей каждой из частей в вычислительных ресурсах (процессорных ядрах, оперативной памяти, специализированных сопроцессоров и видеокарт), а также требований к каналам связи и географическому расположению серверов, все еще требует сложной ручной работы. Поэтому одно из важнейших направлений исследований – это развитие подхода IaC (Infrastructure as Code), в рамках которого ставятся задачи автоматизации развертывания за счет разработки языков программирования для описания инфраструктуры. Такой подход дает возможность абстрагироваться от особенностей конкретного облачного провайдера.
Зоны интересов и темы, привязанные к ним:
- Облачные вычисления. Что делать, если нужен собственный Amazon в широком смысле? Почему Kubernetes не всегда добро? Как правильно щурить глаза на вопросы о т.н. «гиперконвергентности»? У нас есть дистрибутив облачной среды, и этот пункт про него.
- Автоматизация деплоя. Как сделать что-то, требующее долгих копаний, в облаках разного вида? А на железе? Почему оно так работает? Где возникают узкие места? Почему что-то работает так, а не иначе? Мы пишем собственный опенсорсный оркестратор, и тут в основном о нем.
- Бенчмарки всех видов и хайлоад. Где упадет и почему? Прикладные аспекты пунктов 1 и 2.