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

Platform Engineering

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

Play ITЗагрузка интерактивного демо…

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 смещает фокус с ручных задач на платформенные capability — 8.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 использует GitOps — GitOps:

  • 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.


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


Содержание