Инструменты непрерывной интеграции для веб-разработки
Язык буткемпа: TypeScript
Технологии: ClickHouse, DataLens, Docker, NodeJs, opentelemetry
Развиваем CI/CD для веб-разработки и cоздаём инструменты сборки, тестирования и релизов. Аналог — GitHub Actions.
Наши инструменты помогают ускорять разработку проектов и экономят время на развитие инфраструктуры.
Наши пользователи — тысячи npm-пакетов и сотни веб-сервисов Яндекса.
Стек
TypeScript, Node.js, Protobuf, gRPC | Основная разработка: CI-инструменты, библиотеки, SDK, CLI |
---|---|
Docker, Porto, LXC, ansible | CI-инструменты для работы с контейнерами проектов |
Go, gRPC | Sidecar-микросервисы окружения на CI-агентах (pods). Например, для настройки Docker, squashfs и overlayFS |
Python | Скрипты для интеграции с инструментами Яндекса |
ClickHouse, DataLens | Метрики и данные для аналитики |
Команда
Распределённая команда из трёх человек. География: Москва и удалёнка. Коллеги из смежных групп в Москве, Санкт-Петербург, Белграде и Ереване. Умеем работать распределённо и адаптировали наши процессы под этот формат.
Развиваем фиче-лидерство — каждый разработчик (по желанию) занимается не только технической, но и продуктовой составляющей задач.
В процессах используем практики из Scrum и Kanban: ежедневные созвоны, гибкое планирование и демо-встречи раз в две недели.
Особенности
- Вы сможете повлиять на разработку в проектах Яндекса и попробовать уникальный стек технологий.
- Наши инструменты используются в десятках тысяч мест, а с каждым днём это число стремительно растёт. Поэтому уделяем много внимания проработке API. Пишем unit- и E2E-тесты. Используем свои разработки в собственных проектах (догфудинг). Пишем пользовательскую документацию, рецепты и регулярно рассказываем об изменениях и новых инструментах.
- При решении задач пишем небольшие библиотеки (unix-way) и обсуждаем решения: важные изменения проходят через код-ревью, крупные архитектурные изменения проходят через дизайн-ревью, для остального используем пост-ревью. Каждый разработчик отвечает за изменения и отправку в продакшен (DevOps-подход).
Что нужно принять во внимание
Нужно дежурить, как и в большинстве инфраструктурных команд:
- Дежурство состоит из консультаций пользователей и реакций на форс-мажоры, которые случаются крайне редко.
- Дежурные меняются ежедневно. Это помогает не уставать и не выпадать из разработки задач. Дежурства только в рабочие будни. Ночью и по выходным отдыхаем.
- Новички не дежурят. Будет время освоиться и накопить достаточную экспертизу.
Немного legacy:
- Legacy-код изолирован в виде отдельных npm-пакетов и микросервиса.
- Legacy-сервис и legacy-пакеты только поддерживаются, но не развиваются. Нужно исправлять только в случае поломок, которые случаются очень редко. Поэтому сталкиваться с legacy придётся очень редко.
Вызовы
- Унифицировать инфраструктуру Яндекса. В компании тысячи веб-проектов, каждый создавался с собственным набором технологий и процессов. Команды решают схожие инфраструктурные задачи по-разному, из-за чего на инфраструктуру тратится огромное количество времени.
- Оптимизировать время проверок в CI и повысить эффективность использования аппаратных ресурсов. От работы наших инструментов зависит скорость развития сервисов Яндекса. На каждом из этапов разработки наши инструменты должны быстро давать обратную связь разработчику при проблемах в коде.