Розробка Internal Developer Platform (IDP) із самообслуговуванням

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

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

Найпоширеніша помилка: «ми поставили Backstage, значить у нас є IDP». Backstage — це портал, frontend для платформи. Сама платформа — це те, що за ним: автоматизація provisioning, управління secrets, стандартизовані pipeline, observability за замовчуванням. Наш досвід показує, що 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 та витратити місяць на його налаштування, поки основні проблеми залишаються невирішеними.

Наш підхід: спочатку фіксуємо 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 оновлення) Висока
Підходить для Команд, які хочуть стандарт де-факто Унікальних вимог

Backstage запускається в 2 рази швидше, ніж кастомне рішення.

Етапи проєкту

Етап Зміст Терміни
Аудит 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 залежить від обсягу і може становити від $30,000 до $100,000. Отримайте консультацію з побудови IDP під ваш проект — ми оцінимо ситуацію та запропонуємо план.

Що обов'язково зафіксувати на старті

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

Без цих домовленостей платформа буде автоматизувати хаос — швидко, масштабно, але все одно хаос. Наша команда має сертифікацію CKA (Certified Kubernetes Administrator) та досвід понад 5 років у побудові платформ для розробників. Ми гарантуємо результат за договором. 5+ років на ринку, 20+ реалізованих проектів з IDP. Основна мета IDP — забезпечити самообслуговування розробників при роботі з Kubernetes. Самообслуговування Kubernetes через IDP скорочує час на 50-80%.

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

Останні роботи

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