Структура и состав VK Dev Platform
Перечень подсистем, входящих в состав VK Dev Platform, приведён на рисунке 1.
Категории сервисов VK Dev Platform:
-
Общеплатформенные сервисы (Core Services) — ключевые сервисы, обеспечивающие базовые и критически важные функции, такие как аутентификация, авторизация, управление пользователями, проектами и другие, на основе которых строятся и работают остальные части системы.
-
Функциональные сервисы (Functional Services) — сервисы, обеспечивающие реализацию специфических функций или бизнес-логику приложения. Ориентированы на выполнение задач, связанных с пользовательским опытом или бизнес-процессами. Эти сервисы могут включать Сервис развёртывания, Сервис окружений, Сервис хранения артефактов ПО и другие.
-
Вспомогательные сервисы — сервисы, которые обеспечивают поддержку работы общеплатформенных и функциональных сервисов. Они выполняют вспомогательные задачи: логирование, сбор метрик, управление событиями и прочие. Эти сервисы не реализуют бизнес-логику напрямую, но играют важную роль в обеспечении стабильности, масштабируемости и безопасности всей системы.
-
IT-инфраструктура — совокупность аппаратных и программных средств, сетевых ресурсов, а также сервисов, которые обеспечивают функционирование и поддержку ПО.
Категории IT-инфраструктуры:
- Обеспечивающая инфраструктура — предоставляет ресурсы для работы VK Dev Platform (кластер Kubernetes и виртуальные машины) и необходимые сервисы (резервного копирования, мониторинга, аутентификации и пр.).
- Инфраструктура окружений — обеспечивает работу приложений, разрабатываемых пользователями VK Dev Platform (стенды разработки и промышленной эксплуатации).
Описание сервисов VK Dev Platform приведено в таблице 1.
Название сервиса | Назначение сервиса | Технология реализации |
|---|---|---|
Общеплатформенные сервисы | ||
Предоставляет командам разработки единый пользовательский интерфейс, обеспечивающий доступ к необходимому для разработки набору инструментов и ресурсов в смежных системах | Разработка VK Tech | |
Сервис аутентификации | Предоставляет функционал аутентификации пользователей продукта и обеспечивает SSO при работе с сервисами продукта | Keycloak |
Сервис авторизации | Определяет права и уровни доступа пользователей к различным ресурсам и функциям системы после успешной аутентификации | Разработка VK Tech |
Сервис управления пользователями | Отвечает за создание, управление и удаление учётных записей пользователей, а также за поддержку информации о пользователях | Разработка VK Tech |
Сервис управление проектами | Обеспечивает функции создания, удаления и управления проектами внутри системы | Разработка VK Tech |
Сервис управления шаблонами | Предоставляет возможность создания, хранения, редактирования и использования различных шаблонов для автоматизации и стандартизации процессов создания сущностей внутри VK Dev Platform (репозитории кода, артефактов и пр.) | Разработка VK Tech |
Сервис подключений | Управляет подключениями системы к внешним сервисами или API | Разработка VK Tech |
Сервис вебхуков | Обеспечивает автоматическую отправку уведомлений на заданные URL при определённых действиях или изменениях в системе. Вебхуки обеспечивают интеграцию и взаимодействие с внешними системами в реальном времени | Разработка VK Tech |
Функциональные сервисы | ||
Сервис развёртываний | Обеспечивает развёртывание инфраструктуры стендов под приложения | Разработка 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) | |
Обеспечивает процессы производства ПО путем автоматизации взаимодействия участников жизненного цикла разработки | Партнёрский продукт DevProm ALM | |
Обеспечивает размещение, хранение и систематизацию различной информации, получаемой в рамках разработки ПО | Партнёрский продукт DevProm ALM | |
Обеспечивает единое пространство для планирования ручных и автоматизированных тестов. Предназначен для контроля и оптимизации работы инженеров-тестировщиков | Партнёрский продукт DevProm ALM | |
Вспомогательные сервисы | ||
Сервисы сбора логов | Обеспечивают сбор, первичную обработку и отправку логов во внешние системы сбора, хранения и обработки логов | Агенты Fluentbit |
Сервисы сбора метрик | Обеспечивают сбор инфраструктурных и прикладных метрик и отправку их во внешнюю систему мониторинга | Агенты Telegraph/Prometheus |
Сервисы сбора событий аудита | Обеспечивают сбор событий аудита сервисов системы и отправку их во внешнюю систему хранения событий аудита | Агенты Fluentbit |
Обеспечивает развёртывание и конфигурирование VK Dev Platform, а также её последующее обновление и обслуживание | Разработка VK Tech | |
Возможности портала:
-
Поиск и отображение проектов разработки.
-
Централизованное управление проектами разработки, включая:
- Создание, удаление, изменение проектов разработки.
- Отображение и редактирование учётных записей участников проекта разработки, включая изменение ролей и прав.
- Выделение необходимых проекту ресурсов и инструментов в смежных подсистемах VK Dev Platform, в том числе на основе шаблонизированной конфигурации.
-
Отображение и навигация всех подключенных к проекту разработки инструментов, выделенных в смежных подсистемах.
-
Централизованное управление ролевой моделью VK Dev Platform.
-
Отображение окружений, доступных проектам разработки.
-
Создание и удаление инфраструктуры для окружения проектов разработки.
-
Создание и удаление специальных вычислительных узлов, используемых для работы конвейеров сборки и развёртывания.
-
Отображение статистики используемых инструментов и ресурсов в смежных подсистемах.
Возможности сервиса:
- Хранение исходного кода в репозиториях в виде файлов.
- Создание локальной копии исходного кода из централизованного репозитория.
- Синхронизация локальных копий исходного кода с централизованным репозиторием.
- Предоставление доступа пользователям к исходному коду в централизованных репозиториях по протоколам HTTPS, SSH.
- Отображение и редактирование исходного кода.
- Атомарная фиксация внесения изменений в исходный код (Commit), позволяющая создать новую версию исходного кода.
- Ведение и просмотр истории изменений исходного кода с учётом ранее созданных версий.
- Сравнение разных версий исходного кода и отображение различий между ними.
- Откат внесённых изменений в программный код.
- Ведение отдельных веток исходного кода и их слияние.
- Поддержка процедур ручной проверки кода.
- Репликация репозиториев во внешние системы контроля версий на периодической основе (Push mirroring).
Возможности сервиса:
-
Управление репозиториями и списком хранимых в них программных артефактов.
-
Поддержка репозиториев артефактов следующих типов:
- APT/YUM — для хранения пакетов ПО для ОС Linux.
- Conan — для хранения C/C++ пакетов.
- Docker — для хранения Docker-образов.
- Maven2 — для хранения артефактов сборки Java-приложений.
- NuGet — для хранения
.NETпакетов. - NPM — для хранения артефактов сборок JavaScript/node.js приложений.
- Helm — для хранения Helm-чартов.
- PyPI — для хранения пакетов Python.
- RubyGems — для хранения RubyGems.
- CocoaPods — для хранения пакетов CocoaPods и Objective-C.
- Raw — для хранения бинарных файлов.
-
Загрузка, удаление, распространение и версионирование хранимых программных артефактов.
-
Управление правами доступа к репозиториям артефактов.
-
Возможность объединения нескольких репозиториев в единую группу с организацией доступа к артефактам этих репозиториев по единой ссылке.
-
Поддержка работы репозиториев в режиме проксирования запросов к удалённым репозиториям артефактов.
-
Поддержка настройки политик очистки неиспользуемых или устаревших артефактов.
-
Предоставление указанной функциональности через веб-интерфейс, утилиты командной строки и REST-API.
Возможности сервиса:
- Подключение репозиториев и артефактов. Создание новых репозиториев и артефактов в ходе выполнения задач конвейера в смежной подсистеме хранения программных артефактов.
- Маршрутизация исполнения конвейера или отдельных шагов на специализированных вычислительных узлах (CI-runners).
- Управление расписанием запусков конвейеров (по событиям, по времени).
- Ручной запуск конвейера или отдельных его шагов.
- Запуск конвейера с заданными параметрами, влияющими на последовательность шагов конвейера или выполнение отдельного шага.
- Обеспечение модульного подключения различных инструментов обеспечения качества, включённых в состав VK Dev Platform.
- Запуск задач развёртывания новых окружений и развёртывания артефактов ПО в них.
- Развёртывание ПО в уже существующих окружениях.
- Формирование отчётов по активностям сборки, интеграции и развёртывания.
Возможности сервиса:
- Запуск инструментов анализа качества кода для различных языков программирования.
- Сбор, хранение и визуализация метрик качества кода.
- Сбор, хранение и отображение обнаруженных дефектов качества кода.
- Визуализация изменения метрик и дефектов качества кода.
Возможности сервиса:
- Создание и редактирование проектов разработки, управление участниками.
- Указание целей и задач проекта, планирование проекта, управление списками задач, дорожными картами, контролем сроков, контрольными точками.
- Настройка жизненного цикла проектных артефактов (задач, дефектов, пожеланий и т.д.).
- Формирование отчётов по проектной деятельности в виде списков, таблиц, досок или графиков, возможность пользовательской кастомизации отчётов.
- Журнал изменений проектов, уведомления об изменениях в проекте, упоминаниях участников, настройка текста и внешнего вида уведомлений.
- Доска требований и задач проекта.
- Просмотр и редактирование приоритета задачи или требования.
- Отслеживание процесса выполнения задачи.
- Группировка задач по командам, исполнителям, срокам, приоритетам, выпускам.
- Управление изменениями, контроль требований, иерархия требований.
- Управление доступом к проектам для учётных записей пользователей, ролевая модель доступа к проектам.
- Анализ загрузки сотрудника с поддержкой единовременного назначения сотрудника на несколько задач и/или проектов.
- Оценка требований.
- Контроль расхода бюджета с привязкой к требованию, задаче или пожеланию.
- Учёт трудозатрат проекта: план-факт анализ, учёт переработок, утверждение табелей рабочего времени.
- Возможность организации портфеля проектов, программ проектов (подпроектов).
Возможности сервиса:
- Хранение и управление базой знаний.
- Управление структурой статей и документов.
- Связь статей и документов с требованиями проекта.
- Создание и редактирование статей в WYSIWYG-редакторе.
- Навигация по базе знаний, различные виды поиска статей.
- Размещение ссылок на страницы на других страницах.
- Добавление изображений и диаграмм в статьи.
- Создание схем и диаграмм на базе инструмента Draw.io.
- Автоматическая генерация UML-диаграмм на базе инструмента PlantUML.
- Экспорт статей в формате MSWord, OpenDocument, PDF, HTML.
Возможности сервиса:
- Создание и хранение тестовых сценариев и тест-планов.
- Создание типовых тест-планов с предварительно заполненными разделами тестовой документации.
- Создание тест-планов на основе заранее заполненного шаблона.
- Создание тестовой документации на основе предоставленных требований.
- Ведение перечня задач на тестирование на отдельной доске.
- Поддержка связи тестовых сценариев со сборкой ПО.
- Создание пользовательских атрибутов и наполнение тестовой документации требуемыми данными.
- Формирование тестовых сценариев для различных конфигураций устройств, ОС и браузеров.
- Получение системных уведомлений при назначении пользователя на выполнение тестов, упоминании пользователя, либо назначении пользователя на задачи тестирования.
- Импорт результатов автоматизированного тестирования.
- Формирование отчётов по автоматизированным и ручным тестам в едином формате как вручную, так и автоматизированно из внешних систем и инструментов.
Возможности компонента:
- Централизованный запуск сценариев развёртывания VK Dev Platform и отдельных её компонентов.
- Централизованное управление базовой конфигурацией сервисов и служб VK Dev Platform.
- Централизованная настройка операций резервного копирования VK Dev Platform.
- Централизованная настройка операций передачи логов и метрик мониторинга VK Dev Platform.
- Поддержка сценариев обновления VK Dev Platform.