Перейти к основному содержимому

Platform Engineering

Инженеру Архитектору

Platform Engineering (инженерия платформы) — дисциплина построения Internal Developer Platform (IDP, внутренняя платформа разработчика). IDP даёт product-командам опыт, похожий на публичное облако, но внутри компании.

Разработчик выбирает golden path (рекомендованный маршрут) — например, "новый REST API на Go + PostgreSQL + CI" — и получает репозиторий, пайплайн, мониторинг и документацию из коробки, без недельной переписки "дайте kubeconfig и Helm chart".

Platform Engineering дополняет DevOps и SRE — переупаковывает их работу в переиспользуемые capability (возможности) для всей организации.


Ключевые термины

ТерминРасшифровка
IDPInternal Developer Platform — внутренний cloud-like слой
Golden pathПоддерживаемый платформой шаблон создания сервиса
Platform teamКоманда, которая строит и поддерживает IDP
Product teamКоманда, которая пишет фичи для пользователей
Self-serviceРазработчик сам создаёт ресурсы без ticket
Thinnest viable platformМинимум платформы, достаточный для ценности

Проблема, которую решают

По мере роста компании каждая product-команда изобретает свой способ деплоя, мониторинга и секретов. DevOps тонет в однотипных tickets. Безопасность не может enforce baseline — слишком много уникальных конфигураций ("снежинок").

Без платформыС IDP
Каждая команда пишет свой Helm/CIШаблон + 3 параметра
"Кому написать kubeconfig?"Self-service portal
40 способов деплоя2–3 одобренных golden paths
DevOps тонет в ticketsPlatform team строит capability
Onboarding неделиOnboarding часы

DevOps смещает фокус с ручных задач на платформенные capability8.04/17.


Слои IDP

Полноценная платформа — это несколько слоёв. Не обязательно внедрять все сразу.

СлойНазначениеПримеры
PortalЕдиная точка входа, catalog, docsBackstage, Port, Cortex, custom
TemplatesScaffolding новых сервисовCookiecutter, Backstage Scaffolder
InfraCompute, network, dataK8s, Terraform, Crossplane
DeliveryДеплой и promotionGitOps, Argo Rollouts — GitOps
ObservabilityMetrics, logs, tracesPrometheus, Grafana, Loki — 8.04/19
SecurityPolicy, secrets, identityOPA, Kyverno, Vault — DevSecOps
FinOpsCost visibilityKubecost, cloud billing API — 8.16

CNCF whitepaper — platform engineering TAG.


Developer Portal

Developer Portal — витрина платформы. Разработчик видит:

  • Software catalog — список сервисов, владельцы, SLA;
  • Templates — форма "создать микросервис";
  • Docs — TechDocs рядом с кодом;
  • API — OpenAPI, gRPC proto;
  • Status — интеграция с Grafana/incident.

Backstage (Spotify)

Backstage — open-source portal от Spotify, де-facto стандарт. Плагины для Kubernetes, Argo CD, Terraform, PagerDuty.

КомпонентРоль
Software CatalogEntities (Component, System, API)
ScaffolderTemplates → новый repo + CI + Argo App
TechDocsMkDocs из repo
PluginsРасширяемость

Backstage необязателен с первого дня — см. раздел "Малый старт" ниже.


Golden path

Golden path — рекомендованный, поддерживаемый платформой маршрут. Самый простой и безопасный путь, при этом существуют и альтернативы через escape hatch.

Типичный golden path

  1. Разработчик открывает portal → "REST API Go".
  2. Заполняет имя, team, repo visibility.
  3. Scaffolder создаёт Git repo, CI, Helm, Argo Application, dashboard, catalog entry.
  4. Первый PR проходит CI → merge → auto-deploy в dev.
  5. Promotion в staging/prod — PR в infra overlay.

Escape hatch

Escape hatch — выход за шаблон с review platform team. Без escape hatch платформу обходят через shadow IT; без review — хаос возвращается. Баланс — 80% сервисов на golden path, 20% с обоснованным exception.


Platform team и product team

Platform teamProduct team
SLO платформы (API K8s, CI uptime)SLO продукта для пользователей
Шаблоны, кластеры, cost allocationБизнес-логика и UX
Enforce baseline securityFeature flags, A/B тесты
Roadmap capabilityRoadmap продукта

Platform team даёт инструменты для self-service, а не выполняет каждый деплой.

Метрики платформы (DORA + свои)

МетрикаЧто измеряет
Lead time for changesCommit → prod
Deployment frequencyКак часто деплоят
Change fail rate% деплоев с инцидентом
MTTRВремя восстановления
Time to first PRНовый сервис → первый merge
% на golden pathДоля сервисов на шаблоне
Ticket deflectionСнижение infra-tickets

SRE — 8.04/2111.


Crossplane и Infrastructure as Code

Crossplane — K8s-native provision облачных ресурсов (RDS, S3, VPC) через CRD. Platform team публикует Compositions — claim "PostgreSQL small" для product team.

ПодходПлюсы
Terraform onlyЗрелость, много providers
CrossplaneЕдиная модель с K8s, self-service claims
HybridTerraform для foundation, Crossplane для app-level

Terraform — 8.04/22.


Безопасность в IDP

Platform team embeds security по умолчанию:

  • Pod Security Standards / restricted profile;
  • NetworkPolicy deny-all + allowlist;
  • Secrets через Vault / External Secrets — 8.14;
  • Image scan в CI — Trivy, DevSecOps;
  • OPA/Kyverno — no privileged, no latest tag.

Product team отключает baseline только через exception ticket.


GitOps как двигатель delivery

IDP использует GitOpsGitOps:

  • Scaffolder кладёт Argo Application в infra-repo;
  • product team меняет image через CI PR;
  • platform team управляет cluster-addons тем же способом.

Единый Git history для audit — 152-ФЗ.


С чего начать малой компании

Принцип thinnest viable platform.

Минимальный набор (неделя 1–2)

  1. Reference repo — Dockerfile, Helm, CI, README.
  2. GitHub Actions template или org-level workflow.
  3. Helm chart "стандартный микросервис".
  4. Документ "как создать сервис за 30 минут".
  5. K8s namespace per team + RBAC.

Средний уровень (3–6 месяцев)

  1. Argo CD — практикум GitOps.
  2. Loki + Prometheus.
  3. Vault или cloud secret manager.
  4. Kyverno baseline.

Зрелая платформа (6–12 месяцев)

  1. Backstage catalog + Scaffolder.
  2. Cost allocation по team.
  3. Multi-cluster dev/staging/prod.
  4. Platform SLO в Grafana.

Platform Engineering и микросервисы

MSA без платформы умножает операционную нагрузку. IDP снижает стоимость эксплуатации — экосистема MSA.

Без IDPС IDP
20 repo × 20 CI configs1 template, 20 параметров
20 способов log formatСтандартный JSON + trace id
20 dashboard с нуляDashboard из шаблона

Platform Engineering и ИИ

AgentOps и AI в IDE усиливают IDP при обязательных gates — Безопасность ИИ, AgentOps, 8.04/2153.


Пример catalog-info.yaml

apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: payments-api
description: API платежей
tags: [go, golden-path]
spec:
type: service
lifecycle: production
owner: team-payments
system: checkout

Internal API платформы

CapabilityИнтерфейсSLA
NamespacePortal / Terraform1 hour
DB smallCrossplane claim4 hours
SecretsVault pathImmediate
CI runnerOrg Actions99% uptime

SLO platform team

SLISLO
K8s API availability99.9%
CI success rate98%
Provision namespace p95< 1h
Golden path adoption> 70%

Карта capability по зрелости

LevelCapability
0Reference repo, shared CI
1Helm, GitOps, central logs
2Portal, Scaffolder, Vault
3Crossplane, FinOps per team
4Multi-region DR, platform SLO

Scaffolder template (идея)

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: rest-api-go
title: REST API на Go
spec:
parameters:
- properties:
name: { type: string }
owner: { type: string }
steps:
- action: fetch:template
input: { url: ./skeleton }
- action: publish:github

Стоимость platform team

РольFTE (50–200 dev)
Platform engineer3–5
SRE shared1–2
Security champion0.5

ROI — lead time, ticket deflection.


Типичные антиpatterns

АнтиpatternАльтернатива
Platform без usersUser research
Ticket-onlySelf-service
Слишком много paths2–3 golden paths
Big bang BackstageReference repo first

Организационная модель

МодельОписание
Centralized5–15 инженеров на org
Embedded1 platform eng per tribe
Enabling teamConsult + capability

Backlog — от реальных болей пользователей, без проектов ради модных технологий.


Team Topologies и взаимодействие

Team Topologies (Матthew Skelton, Manuel Pais) описывает четыре типа команд:

ТипРоль
Stream-alignedDelivery фич (product teams)
PlatformIDP, self-service
EnablingВременная помощь, обучение
Complicated-subsystemГлубокая экспертиза (ML, billing)

Platform team — platform или enabling. Stream-aligned команды — клиенты платформы. Enabling заходит на 2–3 спринта, помогает мигрировать на golden path, уходит.


Cognitive load

Platform Engineering снижает cognitive load (когнитивную нагрузку) разработчика. Product engineer знает Go и бизнес-домен — ему не нужно знать Istio, cert-manager и 15 CRD на старте.

Тип нагрузкиПримерКто снимает
IntrinsicСложность доменаProduct team
ExtraneousHelm, K8s YAMLPlatform team
GermaneАрхитектурные решенияShared

Порталы кроме Backstage

PortalОсобенность
BackstageOpen source, plugins, Spotify origin
Port (getport.io)SaaS, scorecards
CortexSLO, ownership, scorecards
CustomConfluence + scripts — быстрый MVP

MVP — Markdown catalog в Git + script create-repo. Backstage — когда > 20 сервисов и нужен Scaffolder.


FinOps в IDP

Platform team даёт visibility затрат:

  • label team, cost-center на namespace;
  • Kubecost или cloud billing export в Grafana;
  • monthly report per team;
  • alerts на аномалии (dev cluster left at max nodes).

Подробнее — FinOps 8.16.


Onboarding нового разработчика

ДеньАктivity
1Portal tour, golden path doc
2Create test service from template
3First PR, CI green, deploy to dev
5Observability — найти свой dashboard

Цель — first PR merge < 3 days для типового сервиса.


Case study — fintech startup

Компания 40 разработчиков, 12 микросервисов, боль — каждый серvice свой CI.

ЭтапДействиеРезультат
М1Reference repo + org workflow3 новых сервиса на шаблоне
М2Argo CD + infra-repoGit audit, rollback через revert
М3Backstage catalogOwner и dashboard видны всем
М4Kyverno + Vault0 plain secrets в Git
М6Crossplane postgres-smallDB за 15 min self-service

Lead time commit→prod с 5 дней до 4 часов. Infra tickets −60%.


Roadmap platform team (квартал)

КварталDeliverableMetric
Q1Reference + GitOps3 teams onboarded
Q2Portal MVP + 2 templates50% golden path
Q3Vault + policy0 critical scan findings
Q4FinOps dashboardCost per team visible

Roadmap согласуется с product leadership — platform служит delivery, а не блокирует.


Интеграция с облаком РФ

IDP поверх Yandex Cloud или VK Cloud — облака РФ:

  • Terraform modules для VPC + MK8s;
  • Lockbox вместо hardcoded secrets;
  • Container Registry в том же cloud;
  • GitOps — 8.13.

Platform team публикует approved modules — product team не пишет VPC с нуля.


Service catalog metadata

Расширяйте catalog для observability и on-call:

metadata:
annotations:
backstage.io/techdocs-ref: dir:.
grafana/dashboard-url: https://grafana/d/payments
pagerduty.com/service-id: PXXXX
spec:
dependsOn:
- component:default/postgres-payments
dependencyOf:
- component:default/checkout-web

Граф зависимостей помогает при incident и blast radius analysis.


Platform API versioning

Internal API платформы (Terraform modules, Crossplane claims) — version semver:

  • postgres-small/v1 — breaking change только в v2 с migration guide;
  • changelog в Git;
  • deprecation window 90 days.

Product team pin'ит версию module — предсказуемые upgrades.


Миграция legacy на golden path

ФазаДействие
AssessInventory сервисов
PrioritizeПо риску и traffic
WrapHelm вокруг legacy
MoveGitOps Application
RetireУдалить snowflake CI

Pilot на 2 сервисах, затем масштабирование.


User research platform team

Раз в квартал — interview с product dev: что блокирует деплой, где обходят платформу. Backlog platform начинается с этих инсайтов.


Runbook — портал разработчика недоступен

ШагДействиеSLA
1Проверить health Backstage / Port5 мин
2Fallback — README golden path в Git10 мин
3Scaffolder недоступен — manual template clone15 мин
4GitOps и CI работают — деплой не блокируется
5Root cause — DB catalog, OAuth IdP, ingress4 ч
6Post-mortem, status page для platform24 ч

Platform team публикует offline golden path PDF в intranet на случай длительного outage портала.


Runbook — self-service застрял на provisioning

Симптом: разработчик создал сервис из template, Terraform/Crossplane завис в Pending.

ШагДействие
1Проверить Crossplane events и provider logs
2Quota cloud folder — лимит ВМ или IP
3IAM service account platform — expired key
4Rollback claim, уведомить пользователя с ETA
5Fix provider, replay claim

SLO platform — 95% provisioning < 30 min. Алерт на claims старше 45 min.


Compliance — platform как контрольная точка

СтандартКак IDP помогаетАртефакт
ISO 27001 A.8Единые secure defaultsTemplate checklist
PCI DSSSegregation prod/non-prodSeparate clusters
152-ФЗLogging access к prodSSO + audit
SOC 2Change management через GitPR history
Internal policyKyverno на все golden pathsPolicy report

Platform team ведёт control matrix — строка на каждый golden path и связанный gate в CI.


Расширенный пример — госсектор, реестровый стек

Министерство внедряет IDP на базе GitLab self-hosted (Selectel) и MK8s Cloud.ru.

КомпонентРешение
PortalBackstage on-prem
GitGitLab HA, geo не требуется
DeliveryFlux, manual sync prod
RegistryHarbor с scan Trivy
SecretsVault HA on-prem
DB templateCrossplane → реестровый Postgres

Product team создаёт сервис только из двух одобренных templates — web API и batch worker. Отклонение — architecture review board раз в месяц.

Onboarding нового подрядчика — guest account в GitLab, catalog read-only, deploy только через merge request с двумя внутренними reviewer.


Сравнение developer portal

ПорталМодельCatalogScaffolderSelf-hosted
BackstageOpen sourceДаДаДа
PortSaaS / hybridДаДаHybrid
CortexSaaSScorecardsОграниченНет
Custom wikiInternalВручнуюНетДа

Backstage — default для команд с 20+ разработчиками и appetite на поддержку plugins. Port ускоряет старт, если нет ресурса на ops Backstage.


Сравнение provisioning — Crossplane, Terraform, Helm only

ПодходSelf-service UXDrift controlКривая обучения
Crossplane claimsВысокийReconcile loopВысокая
Terraform Cloud workspacesСреднийPlan/apply auditСредняя
GitOps manifests onlyНизкийArgo/FluxНизкая
Ticket to DevOpsНетРучнойНизкая

Зрелый IDP — Crossplane для data plane (DB, bucket), GitOps для app plane (Deployment, Service).


Platform Engineering в РФ — кадры и процессы

ФакторРекомостьПрактика
Дефицит SREВысокаяPlatform team 4–6 человек на 50 dev
ИмпортозамещениеОбязательно в гостechApproved module library
ПодрядчикиЧастоGuest templates, time-bound access
ДокументацияНа русскомTechDocs в Backstage
FinOps в рубляхBilling API YC/VKDashboard per team label

Platform roadmap согласуют с IT директором и product leads раз в квартал. Метрика успеха — lead time и ticket volume, не количество microservices.


Расширенный пример — e-commerce, Black Friday

Платформа готовит capacity golden path за 6 недель до пика.

НеделяDeliverable
W-6HPA и VPA шаблоны в catalog
W-4Load test gate в staging CI
W-2Runbook scale-out, on-call roster
W-0FinOps cap снят, мониторинг saturation

Product team масштабирует replicas через self-service slider в portal (обёртка над HPA max). Platform team не участвует в каждом изменении — только в инцидентах.


Runbook — degraded golden path template

ШагДействие
1Pin template version в portal — block new scaffolds
2Notify teams — use previous version
3Fix template, CI test scaffold e2e
4Publish changelog, unblock

Каждый template — CI job создаёт ephemeral service и проверяет deploy до publish.


Compliance — SLA platform team наружу

MetricTargetИзмерение
Portal uptime99.5%Synthetic check
Scaffold success95%Portal analytics
Provisioning timep95 < 30 minCrossplane metrics
Incident response30 min ackPagerDuty

Публикуйте status page для internal platform — доверие product team растёт.


Расширенный пример — platform metrics dashboard

PanelQuery sourceЦель
Lead timeGit + Argo CD< 4 h to prod
Scaffold ratePortal APIAdoption golden path
Failed provisionsCrossplane< 5%
Support ticketsJira label platformDown trend
Cost per teamKubecostFinOps visibility

Review dashboard на platform sync каждые 2 недели с product representatives.


Сравнение Backstage plugins must-have

PluginНазначениеПриоритет
KubernetesPod status in catalogP0
Argo CDSync statusP0
TechDocsDocs from repoP0
GrafanaDashboard linksP1
PagerDutyOn-callP1
ScorecardsMaturityP2

Не устанавливайте 40 plugins в первый месяц — cognitive load на platform team.


Runbook — Crossplane provider credentials expired

ШагДействие
1All claims Pending — check provider pod logs
2Rotate cloud SA key in Lockbox
3Update ProviderConfig secret
4Replay failed claims

Rotation SA каждые 90 days calendar reminder platform on-call.


Compliance — platform access для подрядчиков

ПравилоРеализация
Time-bound accessGitLab guest 90 days max
ScopeSingle project AppProject
MFAMandatory WebAuthn
AuditWeekly access review
OffboardSame-day revoke ticket

Подрядчик не получает cluster-admin — только namespace scoped через RBAC template.


Расширенный пример — IDP для data platform team

Data engineers получают golden path spark-job — отдельный от rest-api.

TemplateIncludes
spark-jobAirflow DAG stub, S3 bucket claim, IAM
rest-apiK8s Deployment, Ingress, Postgres

Разные AppProject — data team не деплоит в payment namespace.


Связанные материалы


Содержание