Инструменты непрерывной интеграции для веб-разработки

Язык буткемпа: 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 и повысить эффективность использования аппаратных ресурсов. От работы наших инструментов зависит скорость развития сервисов Яндекса. На каждом из этапов разработки наши инструменты должны быстро давать обратную связь разработчику при проблемах в коде.
Предыдущая
Следующая