Мы строим платформу для создания registry систем, интегрированных с Yandex Cloud. На данный момент мы умеем хранить, распространять и анализировать docker-образы. Ведется работа по поддержке deb-пакетов и в планах поддержать другие типы артефактов — jar, npm и прочее.
Для быстрого создания Registry систем мы делаем общие компоненты для решения базовых задач (хранение данных, логи, метрики, квоты и еще много всего). Registry системы выстроены как набор микросервисов, которые мы пишем на Java/Kotlin. При этом у нас очень высокие требования к надежности и выживаемости системы при различных проблемах.
Наши пользователи — это разработчики и SRE. При этом есть внутренние пользователи — по сути на базе нас выстроен релизный процесс Yandex Cloud. Также есть внешние пользователи, которые активно используют наши сервисы и требуют высокой доступности registry систем. Нагрузка на Container Registry растет каждый год в 3-4 раза, а большинство пользователей приходит из manager k8s Yandex Cloud.
Еще мы делаем анализ уязвимостей в хранимых нами артефактах. Например, в публичном доступе есть сервис анализа уязвимостей в docker-образах. И точно также этот сервис сделан как для внутреннего, так для внешнего использования. В ближайших планах внедрение этого сервиса во все наши процессы выкладки релизов Yandex Cloud. В дальнейшем будем работать над анализом других типов артефактов для пользователей.
💡 Разработка платформы для создания registry систем на kotlin. В том числе предполагается использование кортуин и в целом система будет построена в неблокирующем стиле. Для начала на базе этой платформы будет запущен Debian Registry, а потом уже на неё переведём сканер уязвимостей и Docker Registry. 💡 Стабилизация существующего сканера уязвимостей docker images и поддержка других типов артефактов. Внедрение сканера во внутренние процессы Yandex Cloud. Ускорение анализа артефактов и увеличение количества разных типов проверок. 💡 Улучшение удобства использования registry систем за счёт разработки синхронизации артефактов с приватными пользовательскими репозиториями. И за счёт этого увеличение использования Container Registry нашими пользователями. 💡 Разработка автоматизации деплоя сервисов для быстрого развёртывания в новых локациях. По сути это отдельный набор компонентов для поддержки всех аспектов эксплуатации сервиса (деплой, мониторинг, логи, дашбоарды и прочее).
⭐︎ Мы, в первую очередь, команда разработчиков и поэтому активно автоматизируем наши процессы. Наша цель сделать так, чтобы разработчик в первую очередь писал код, а не отвлекался на рутину.
⭐︎ Каждый член команды работает в своем потоке задач, но при этом экспертиза шарится между двумя-тремя людьми, которые пересекаются по задачам. За счет этого ревью кода - это не просто проверка на форматирование (которую можно и автоматизировать), а вдумчивый анализ логики и поиск проблемных мест.
⭐︎ У нас распределенная команда, но мы периодически собираемся в офисе (1-2 раза в квартал) увидеть друг друга вживую. Иногда едем всей командой на оффлайн конференцию. Раз в день мы собираемся на синк, а раз в неделю обсуждаем и корректируем наши планы.
1️⃣ Бэкенды мы пишем на java и в процессе перехода на kotlin. Внутри активно используем: grpc, netty, multithreading, nio.
2️⃣ Прикладные задачи решаем на go (command line, terraform plugins).
3️⃣ Помимо этого у нас хорошо развита автоматизация настройки инфраструктуры.
4️⃣ У сервисов настроен мониторинг, тесты на разных уровнях и другая автоматика, которая позволяет переживать отключения и другие проблемы в датацентрах без человеческого вмешательства.
5️⃣ Релизы мы катаем в автоматическом режиме - раз в неделю или даже каждый день.