Структура и состав VK Dev Platform
Перечень сервисов, входящих в состав VK Dev Platform, приведен на рисунке 1.
Категории сервисов VK Dev Platform:
-
Главные модули — Портал разработки, через который осуществляется управление основными модулями, и сервисы, обеспечивающие базовые и критически важные функции, такие как аутентификация, авторизация, управление пользователями, проектами и другие.
-
Основные модули — сервисы, обеспечивающие интеграцию и управление следующих компонентов, используемых VK Dev Platform:
- Собственные решения VK Tech.
- Продукты технологических партнеров.
- Open Source с рядом расширенных возможностей версий CE.
-
Вспомогательные модули — сервисы, которые обеспечивают поддержку работы главных и основных модулей. Они выполняют вспомогательные задачи, такие как логирование, сбор метрик, управление событиями и т.д. Сервисы вспомогательного модуля не реализуют бизнес-логику напрямую, но играют важную роль в обеспечении стабильности, масштабируемости и безопасности всей VK Dev Platform.
-
IT-инфраструктура — совокупность аппаратных и программных средств, сетевых ресурсов, а также сервисов, которые обеспечивают функционирование и поддержку ПО.
Категории IT-инфраструктуры:
- Обеспечивающая инфраструктура — предоставляет ресурсы для работы VK Dev Platform (кластер Kubernetes и виртуальные машины) и необходимые сервисы (резервного копирования, мониторинга, аутентификации и пр.).
- Инфраструктура окружений — обеспечивает работу приложений, разрабатываемых пользователями Dev Platform (стенды разработки и промышленной эксплуатации).
Описание сервисов VK Dev Platform приведено в таблице 1.
Сервис | Назначение | Технология реализации |
|---|---|---|
Главные модули | ||
Предоставляет командам разработки единый пользовательский интерфейс, обеспечивающий доступ к набору инструментов и ресурсов для разработки в смежных сервисах. Обеспечивает техническую интеграцию инструментов и ресурсов смежных сервисов в единый пользовательский интерфейс | Разработка VK Tech | |
Обеспечивает аутентификацию пользователей и SSO при работе с сервисами | Keycloak и разработка VK Tech на базе Casbin | |
Обеспечивает автоматическую отправку уведомлений или событий на заданные URL при определенных действиях или изменениях в VK Dev Platform. Вебхуки обеспечивают интеграцию и взаимодействие с внешними системами в реальном времени | Разработка VK Tech | |
Основные модули | ||
Обеспечивает управление подключениями VK Dev Platform к внешним системам, например к VK Cloud или VK Private Cloud | Разработка VK Tech | |
Обеспечивает развертывание инфраструктуры стендов под приложения и управление окружениями, а также их ресурсами внутри VK Dev Platform | Разработка VK Tech | |
Обеспечивает хранение и контроль версий исходного кода, а также совместную работу всех участников проекта разработки над ним | GitLab Community Edition (CE) | |
Обеспечивает размещение, хранение и контролируемое распространение различных артефактов, создаваемых в процессе жизненного цикла ПО | Sonatype Nexus Repository Manager Open Source | |
Обеспечивает запуск и контроль задач сборки, интеграции, тестирования и развертывания в различных окружениях | GitLab Community Edition (CE) | |
Обеспечивает непрерывный анализ и измерение качества программного кода | SonarQube Community Edition (CE) | |
Обеспечивает процессы производства ПО путем автоматизации взаимодействия участников жизненного цикла разработки | Партнерский продукт TeamStorm | |
Обеспечивает размещение, хранение и систематизацию различной информации, получаемой в рамках разработки ПО | Партнерский продукт TeamStorm | |
Вспомогательные модули | ||
Сервисы сбора логов | Обеспечивают сбор, первичную обработку и отправку логов во внешние системы сбора, хранения и обработки логов | Агенты Fluent Bit |
Сервисы сбора метрик | Обеспечивают сбор инфраструктурных и прикладных метрик и отправку их во внешнюю систему мониторинга | Агенты Telegraph/Prometheus |
Сервисы сбора событий аудита | Обеспечивают сбор событий аудита сервисов VK Dev Platform и отправку их во внешнюю систему хранения событий аудита | Агенты Fluent Bit |
Возможности портала:
-
Поиск и отображение проектов разработки.
-
Централизованное управление проектами разработки, включая:
- Создание, удаление, изменение проектов разработки.
- Отображение и редактирование учетных записей участников проекта разработки, включая изменение ролей и прав.
- Выделение необходимых проекту ресурсов и инструментов в смежных сервисах VK Dev Platform, в том числе на основе шаблонизированной конфигурации.
-
Отображение и навигация всех подключенных к проекту разработки инструментам, выделенных в смежных сервисах.
-
Централизованное управление ролевой моделью VK Dev Platform.
-
Отображение окружений, доступных проектам разработки.
-
Создание и удаление инфраструктуры для окружения проектов разработки.
-
Создание и удаление специальных вычислительных узлов, использующихся для работы конвейеров сборки и развертывания.
-
Отображение статистики используемых инструментов и ресурсов в смежных сервисах.
-
Управление подпиской на события VK Dev Platform.
-
Получение оповещений о событиях VK Dev Platform по почте и в интерфейсе Портал управления разработкой.
Возможности сервиса:
- Обеспечение интеграции с внешними провайдерами аутентификации.
- Обеспечение работы механизмов SSO между всеми сервисами VK Dev Platform.
- Управление локальными пользователями VK Dev Platform.
Возможности сервиса:
- Создание HTTP вебхуков, которые обеспечивают автоматическую отправку уведомлений или событий на заданные URL.
- Управление подпиской HTTP вебхуков на определенные события внутри VK Dev Platform.
- Просмотр деталей и статуса отправки уведомления.
Возможности сервиса:
- Создание подключений к внешней системе из предложенных типов.
- Настройка адреса/URL расположения внешней системы.
- Поддержка нескольких вариантов аутентификации (в зависимости от типа) во внешней системе.
- Настройка описания создаваемого подключения.
Возможности сервиса:
- Развертывание инфраструктуры на базе Terraform конфигураций в VK Cloud или VK Private Cloud.
- Предоставление набора преднастроенных шаблонов развертывания, описывающих целевую инфраструктуру.
- Отображение списка текущих развертываний, включая отображение шагов развертываний.
- Управление жизненным циклом развертываний — создание, просмотр, изменение, удаление.
- Управление развертываниями через API.
- Создание окружений различных типов: Dev, Test, Stage и Prod.
- Описание созданных окружений.
- Отображение развернутых в окружениях ресурсов.
- Управление жизненным циклом окружений — создание, просмотр, изменение, удаление.
Возможности сервиса:
- Хранение исходного кода в репозиториях в виде файлов.
- Создание локальной копии исходного кода из централизованного репозитория.
- Синхронизация локальных копий исходного кода с централизованным репозиторием.
- Предоставление доступа пользователей к исходному коду в централизованных репозиториях по протоколам HTTPS, SSH.
- Отображение и редактирование кода.
- Атомарная фиксация внесения изменений в исходный код (commit), позволяющая создать новую версию исходного кода.
- Ведение и просмотр истории изменений исходного кода с учетом ранее созданных версий.
- Сравнение разных версий исходного кода с отображением различий между ними.
- Откат внесенных изменений в программный код.
- Ведение отдельных веток исходного кода и их слияния.
- Поддержка процедур ручной проверки кода.
- Репликация репозиториев во внешние системы контроля версий на периодической основе (push mirroring).
Возможности сервиса:
-
Управление репозиториями и списком хранимых в них программных артефактов.
-
Поддержка репозиториев артефактов следующих типов:
- APT/YUM — для хранения пакетов ПО для ОС Linux.
- Docker — для хранения docker-образов.
- Maven2 — для хранения артефактов сборки Java-приложений.
- NuGet — для хранения .NET пакетов.
- NPM — для хранения артефактов сборок JavaScript/node.js приложений.
- Helm — для хранения Helm-чартов.
- PyPI — для хранения пакетов Python.
- RubyGems — для хранения RubyGems.
- CocoaPods — для хранения пакетов CocoaPods и Objective-C.
- Raw — для хранения бинарных файлов.
-
Загрузка, удаление, распространение и версионирование хранимых программных артефактов.
-
Управление правами доступа к репозиториям артефактов.
-
Объединение нескольких репозиториев в единую группу с организацией доступа к артефактам этих репозиториев по единой ссылке.
-
Поддержка работы репозиториев в режиме проксирования запросов к удаленным репозиториям артефактов.
-
Поддержка настройки политик очистки неиспользуемых или устаревших артефактов.
-
Предоставление указанной функциональности через веб-интерфейс, утилиты командной строки и REST-API.
-
Поддержка анонимного доступа.
Возможности сервиса:
- Подключение репозиториев и артефактов. Создание новых репозиториев и артефактов в ходе выполнения задач конвейера в смежном сервисе хранения программных артефактов.
- Маршрутизация исполнения конвейера или отдельных шагов на специализированных вычислительных узлах (CI-раннеры).
- Управление расписанием запусков конвейеров (по событиям, по времени).
- Ручной запуск конвейера или отдельных его шагов.
- Запуск конвейера с заданными параметрами, влияющими на последовательность шагов конвейера или выполнение отдельного шага.
- Обеспечение модульного подключения различных инструментов обеспечения качества, включенных в состав VK Dev Platform.
- Запуск задач развертывания новых окружений и развертывания артефактов ПО в них.
- Развертывание ПО в уже существующих окружениях.
- Формирование отчетов по активностям сборки, интеграции и развертывания.
Возможности сервиса:
- Запуск инструментов анализа качества кода для различных языков программирования.
- Сбор, хранение и визуализация метрик качества кода.
- Сбор, хранение и отображение обнаруженных дефектов качества кода.
Возможности сервиса:
- Создание и редактирование пространств/проектов (продуктов).
- Указание целей и задач проекта, планирование проекта, управление списками задач, дорожными картами, контроль сроков.
- Настройка жизненного цикла проектных артефактов (задач, дефектов и т.д.).
- Создание отчетов по проектной деятельности в виде списков, таблиц, досок или графиков. Возможность пользовательской кастомизации отчетов.
- Ведение журнала изменений проектов, уведомления об изменениях в проекте, упоминаниях участников, настройка текста и внешнего вида уведомлений.
- Работа с доской требований и задач проекта.
- Просмотр и редактирование приоритета задачи или требования.
- Отслеживание процесса выполнения задачи.
- Группировка задач по командам, исполнителям, срокам, приоритетам, выпускам.
- Управление изменениями, контроль требований, иерархия требований.
- Анализ загрузки сотрудника с поддержкой единовременного назначения сотрудника на несколько задач/проектов.
- Оценка требования.
- Контроль расхода бюджета в привязке к требованию, задаче или пожеланию.
- Учет трудозатрат проекта: план-факт анализ, учет переработок, утверждение табелей рабочего времени.
- Возможность организации портфеля проектов, программ проектов (подпроектов).
Возможности сервиса:
- Хранение и управление базой знаний.
- Управление структурой статей и документов.
- Связь статей и документов с требованиями проекта.
- Создание и редактирование статей в WYSIWYG-редакторе.
- Навигация по базе знаний, различные виды поиска статей.
- Размещение ссылок на страницы на других страницах.
- Вставка сегмента.
- Вставка контента страницы или задачи.
- Формирование списка страниц на основе фильтра страниц, вставка списка страниц на страницу.
- Добавление динамической ссылки на страницу или задачу.
- Добавление изображений, файлов и диаграмм в статьи.
- Экспорт страниц и разделов в формате PDF.