Разработка Internal Developer Platform (IDP) с самообслуживанием

Разработчики тратят время на ожидание DevOps-инженера для рутинных задач, а команда увязает в тикетах вместо развития продукта. Мы разрабатываем Internal Developer Platform с самообслуживанием, которая даёт командам прямой доступ к инфраструктуре. Наша команда реализует проект под ключ — от аудита процессов до внедрения и последующей поддержки, обеспечивая стабильную работу и масштабирование вместе с бизнесом.
Часто задаваемые вопросы

Разработчики ждут DevOps-инженера, чтобы создать namespace, задеплоить сервис или получить доступ к логам? Это знакомая ситуация для компаний с 20+ разработчиками. Мы решаем её с помощью Internal Developer Platform (IDP) — набора абстракций, которые позволяют разработчикам выполнять эти задачи самостоятельно, без DevOps-команды на каждом шаге.

Самое частое заблуждение: «мы поставили Backstage, значит у нас есть IDP». Backstage — это портал, frontend для платформы. Сама платформа — это то, что за ним: автоматизация provisioning, управление secrets, стандартизированные pipeline, наблюдаемость по умолчанию. Наш опыт показывает, что IDP сокращает время деплоя нового сервиса в 3 раза по сравнению с ручным согласованием.

Какие проблемы решает IDP?

Задеплоить новую версию в staging — нужно зайти в GitLab, найти нужный pipeline, запустить его вручную или дождаться триггера. Посмотреть логи — открыть Grafana, переключиться в Loki, собрать правильный запрос LogQL. Завести новый сервис — открыть тикет в DevOps, подождать, пока кто-то создаст репозиторий, namespace в кластере, выдаст secrets.

Это не гипербола — это реальная ситуация в компаниях с 20+ разработчиками, у которых нет IDP. DevOps становится bottleneck не потому что плохо работает, а потому что между инфраструктурой и разработчиком нет нормального интерфейса. IDP решает эти проблемы, предоставляя self-service интерфейс и автоматизируя рутину.

Архитектура IDP: что реально нужно

Рабочая IDP строится на нескольких слоях. Не обязательно реализовывать все сразу — важно понимать, что в неё входит.

Уровень портала

Точка входа для разработчика. Backstage — стандарт де-факто. Он даёт: service catalog (реестр всех сервисов с метаданными, owner, статусом деплоя), software templates (scaffolding новых проектов), TechDocs (документация рядом с кодом), plugin ecosystem для интеграций с Kubernetes, Vault, GitHub Actions, PagerDuty, Datadog.

# catalog-info.yaml — регистрация сервиса в Backstage
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: payments-service
  description: Сервис обработки платежей
  annotations:
    gitlab.com/project-slug: backend/payments-service
    backstage.io/techdocs-ref: dir:.
    prometheus.io/rule: payments_service
    grafana/dashboard-selector: "payments"
spec:
  type: service
  lifecycle: production
  owner: group:payments-team
  system: billing
  dependsOn:
    - component:postgres-payments
    - component:redis-sessions

Уровень provisioning

Self-service создание инфраструктурных ресурсов. Два подхода: GitOps через Crossplane (ресурсы описываются как Kubernetes CRD, reconciler их применяет) или pull-request automation через Terraform + Atlantis/Spacelift.

Crossplane удобен, когда вся команда уже в Kubernetes-экосистеме:

# Crossplane XRD — разработчик запрашивает базу данных
apiVersion: database.company.com/v1alpha1
kind: PostgreSQLInstance
metadata:
  name: payments-db
  namespace: payments-service
spec:
  parameters:
    storageGB: 20
    version: "15"
    environment: production
  compositionRef:
    name: postgresql-aws-rds

DevOps заранее написал Composition, которая разворачивает RDS instance, создаёт secret с credentials и прокидывает его в namespace сервиса. Разработчик просто применяет YAML — не знает ничего про AWS, IAM роли, subnet groups.

Уровень secrets

HashiCorp Vault с динамическими credentials. Сервисы не хранят статические пароли. Vault генерирует credentials на лету с TTL, отзывает их при остановке пода. External Secrets Operator синхронизирует Vault secrets в Kubernetes Secrets.

# ExternalSecret — получение credentials из Vault
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: payments-db-credentials
spec:
  refreshInterval: 1h
  secretStoreRef:
    name: vault-backend
    kind: ClusterSecretStore
  target:
    name: payments-db-credentials
    creationPolicy: Owner
  data:
    - secretKey: DB_PASSWORD
      remoteRef:
        key: secret/payments/database
        property: password

Уровень observability

Каждый сервис, созданный через IDP, автоматически получает ServiceMonitor для Prometheus, базовый Grafana dashboard по шаблону команды, structured logging с correlation ID в Loki, трейсинг через OpenTelemetry.

Это не просто удобно — это устраняет ситуацию «сервис задеплоен, но метрик нет, логи где-то потерялись».

Как строится IDP: не Backstage в первый день

Самая дорогая ошибка — начать с установки Backstage и потратить месяц на его настройку, пока основные проблемы остаются нерешёнными.

Наш подход: сначала фиксируем developer journey. Что происходит от git commit до работающего сервиса в production? На каждом шаге: кто участвует, сколько времени, где ждём. Эта карта показывает, где платформа нужна больше всего.

Потом строим automation снизу вверх: сначала стандартизируем Helm charts и CI pipeline templates, потом добавляем self-service provisioning для самых частых запросов, потом надстраиваем Backstage как portal поверх уже работающей автоматизации.

Backstage без автоматизации снизу — это красивый UI над хаосом.

Реальный проект: IDP для финтех-компании

Компания с 40 разработчиками, 60+ микросервисами на Kubernetes в AWS EKS. DevOps-команда из 3 человек тратила ~60% времени на «операционные» запросы разработчиков.

Первые две недели: аудит. Выяснилось, что 70% запросов — это либо «создай мне namespace», либо «помоги с secrets», либо «почему мой деплой упал». Всё остальное — единичные кейсы.

Месяц 1–2: решаем top-3 проблемы. Namespace creation — автоматизировали через GitOps repo: разработчик открывает PR с namespaces/payments-team/new-service.yaml, Flux/ArgoCD применяет. Secrets — перешли на External Secrets Operator + Vault, убрали все статические секреты из ConfigMaps. Debug деплоев — добавили в Backstage плагин Kubernetes, разработчик видит pod status, последние events, логи прямо в портале.

Месяц 3: добавили software templates. Три шаблона — Node.js сервис, Go сервис, Python worker. После scaffold разработчик получает репозиторий с Dockerfile, Helm chart, .gitlab-ci.yml, catalog-info.yaml, базовым Grafana dashboard, набором Prometheus alert rules.

Результат через 3 месяца: количество DevOps-тикетов от разработчиков упало на 70%. Время от идеи до первого деплоя в dev — с 2–3 дней до полутора часов.

Что входит в проект

Компонент Описание
Аудит Developer journey mapping, интервью с командами, отчёт с узкими местами
Архитектура IDP Выбор стека, проектирование слоёв, определение стандартов
CI/CD шаблоны Helm charts, pipeline templates (GitLab CI, GitHub Actions)
Provisioning Crossplane Compositions или Terraform модули для self-service
Secrets Vault + External Secrets Operator, динамические credentials
Observability ServiceMonitor, Grafana dashboards, Loki, OpenTelemetry
Портал Backstage: service catalog, software templates, TechDocs
Документация и обучение Runbook, воркшопы для разработчиков

Сравнение подходов: Backstage vs кастомное решение

Критерий Backstage Кастомное решение
Скорость запуска 2-3 недели для базового портала 1-2 месяца
Гибкость Высокая за счёт плагинов Максимальная
Сообщество Большое, множество интеграций Ограничено
Сложность поддержки Средняя (upstream обновления) Высокая
Подходит для Команд, которые хотят стандарт де-факто Уникальных требований

Этапы проекта

Этап Содержание Сроки
Аудит Developer journey mapping, интервью с командами 1 неделя
Проектирование Архитектура IDP, выбор стека, определение стандартов 1–2 недели
Ядро платформы CI/CD templates, secrets management, базовая observability 2–4 недели
Self-service Provisioning automation, software templates 2–4 недели
Portal Backstage setup, catalog population, плагины 2–3 недели
Обучение и передача Документация, воркшопы, ownership 1 неделя

Общая длительность — от 6 недель до 3 месяцев в зависимости от текущего состояния инфраструктуры и количества сервисов. Получите консультацию по построению IDP под ваш проект — мы оценим ситуацию и предложим план.

Что обязательно зафиксировать на старте

Перед тем как писать первый шаблон, нужно договориться о стандартах: как именуются ресурсы (namespace naming convention), какие labels обязательны для всех Kubernetes ресурсов (team, app, env, version), какие resource requests/limits минимально допустимы, что считается «прошедшим quality gate» для деплоя в production.

Без этих договорённостей платформа будет автоматизировать хаос — быстро, масштабно, но всё равно хаос.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139