spinny:~/writing $ less platform-engineering-internal-developer-platform.md
12По мере того как программные системы становятся сложнее - микросервисы, Kubernetes, мультиоблако, пайплайны CI/CD, стеки наблюдаемости - разработчики тратят больше времени на инфраструктуру и меньше времени на создание продуктов. **Platform Engineering** решает эту проблему, создавая внутреннюю платформу, которая абстрагирует сложность и предоставляет разработчикам инструменты самообслуживания для более быстрой доставки.34Gartner прогнозирует, что к 2027 году **80% организаций по разработке ПО** создадут платформенные команды. В этом руководстве мы рассмотрим, что такое Platform Engineering, почему это важно и как построить Internal Developer Platform с нуля.56## Что такое Platform Engineering?78Platform Engineering - это дисциплина проектирования и создания цепочек инструментов и рабочих процессов, которые обеспечивают возможности самообслуживания для организаций по разработке ПО. Результатом является **Internal Developer Platform (IDP)** - слой, расположенный между разработчиками и инфраструктурой.910```mermaid11graph TD12 subgraph "Developers"13 D1[Frontend Team]14 D2[Backend Team]15 D3[Data Team]16 end1718 subgraph "Internal Developer Platform"19 Portal[Developer Portal]20 Templates[Service Templates]21 CICD[CI/CD Pipelines]22 Infra[Infrastructure Abstraction]23 end2425 subgraph "Infrastructure"26 K8s[Kubernetes]27 Cloud[Cloud Services]28 DB[Databases]29 Monitor[Monitoring]30 end3132 D1 --> Portal33 D2 --> Portal34 D3 --> Portal35 Portal --> Templates36 Portal --> CICD37 Portal --> Infra38 Infra --> K8s39 Infra --> Cloud40 Infra --> DB41 CICD --> Monitor42```4344### Platform Engineering vs DevOps4546Platform Engineering - это не замена DevOps, а следующая эволюция. DevOps сказал: «Ты строишь - ты управляешь». Platform Engineering говорит: «Мы сделаем строительство и управление лёгким делом».4748| Аспект | DevOps | Platform Engineering |49|--------|--------|---------------------|50| **Фокус** | Культура и практики | Продукты и самообслуживание |51| **Подход** | Каждая команда управляет инфраструктурой | Платформенная команда абстрагирует инфраструктуру |52| **Когнитивная нагрузка** | Высокая (каждая команда изучает всё) | Низкая (предоставляются golden paths) |53| **Результат** | Пайплайны CI/CD, скрипты IaC | Internal Developer Platform |54| **Пользователи** | Вся инженерия | Платформенная команда обслуживает инженерию |5556## Почему Platform Engineering важен5758### Проблема когнитивной нагрузки5960В типичной современной организации разработчику необходимо понимать:6162- Рабочие процессы Git и стратегии ветвления63- Настройку пайплайнов CI/CD64- Сборку контейнеров и управление реестрами65- Манифесты Kubernetes и Helm Charts66- Сервисы облачных провайдеров (AWS/GCP/Azure)67- Сети, DNS, сертификаты TLS68- Настройку мониторинга, логирования, алертинга69- Провизию и миграции баз данных70- Политики безопасности и соответствие требованиям7172Это огромная когнитивная нагрузка, которая отвлекает внимание от реального продукта.7374### Golden Path7576Platform Engineering вводит концепцию **golden paths** - принципиальных, хорошо поддерживаемых и документированных путей для типичных задач. Golden path - это не мандат; разработчики *могут* отклоняться, но платформа делает правильное действие лёгким.7778```mermaid79flowchart LR80 Dev[Developer] -- "Create new service" --> Portal[Portal]81 Portal -- "Select template" --> Template[Service Template]82 Template -- "Auto-provision" --> Repo[Git Repository]83 Template --> Pipeline[CI/CD Pipeline]84 Template --> Infra[Kubernetes Namespace]85 Template --> Monitor[Dashboards + Alerts]86 Repo --> Ready[Ready to Code!]87```8889**Пример golden path для создания нового микросервиса:**901. Разработчик выбирает «Новый Backend-сервис» на портале912. Выбирает язык/фреймворк (Node.js, Go, Python)923. Платформа автоматически создаёт: Git-репозиторий, пайплайн CI/CD, пространство имён Kubernetes, дашборды мониторинга и правила алертинга934. Разработчик клонирует репозиторий и сразу начинает кодить9495## Построение Internal Developer Platform9697### Уровень 1: Developer Portal9899Портал - единая точка входа для разработчиков. Самый популярный open-source вариант - **Backstage** (создан Spotify, сейчас проект CNCF).100101Ключевые возможности:102- **Каталог сервисов**: Каждый сервис, его владелец, документация и зависимости103- **Шаблоны ПО**: Скаффолдинг для новых сервисов с встроенными лучшими практиками104- **Техническая документация**: Документация как код, отрендеренная и с поиском105- **Экосистема плагинов**: Расширяемость пользовательской функциональностью106107```yaml108# backstage/catalog-info.yaml109apiVersion: backstage.io/v1alpha1110kind: Component111metadata:112 name: user-service113 description: Manages user accounts and authentication114 annotations:115 github.com/project-slug: myorg/user-service116 backstage.io/techdocs-ref: dir:.117spec:118 type: service119 lifecycle: production120 owner: team-auth121 system: identity-platform122 dependsOn:123 - resource:postgresql-main124 providesApis:125 - user-api126```127128### Уровень 2: Абстракция инфраструктуры129130Разработчики не должны писать Terraform или Kubernetes YAML напрямую. Платформа должна предоставлять абстракции.131132**Инструменты:**133- **Crossplane**: Kubernetes-нативное предоставление инфраструктуры134- **Terraform с модулями**: Готовые, протестированные модули инфраструктуры135- **Pulumi**: Инфраструктура как настоящий код (TypeScript, Python, Go)136137```yaml138# Example: Crossplane composition for a database139apiVersion: database.example.com/v1140kind: PostgreSQLInstance141metadata:142 name: user-db143spec:144 size: small # Abstraction: small = 2 vCPU, 4GB RAM145 version: "16"146 backup: daily147 team: auth-team148```149150Вместо настройки параметров RDS, подсетей VPC, групп безопасности и политик резервного копирования разработчик просто указывает `size: small` и `backup: daily`. Платформа берёт на себя остальное.151152### Уровень 3: Стандартизация CI/CD153154Стандартизируйте CI/CD, чтобы команды не строили каждая свои собственные пайплайны.155156```yaml157# .github/workflows/platform-ci.yml158# Teams just include the shared workflow159name: Build and Deploy160on:161 push:162 branches: [main]163164jobs:165 pipeline:166 uses: myorg/platform-workflows/.github/workflows/standard-pipeline.yml@v2167 with:168 language: node169 deploy-target: production170 secrets: inherit171```172173**Ключевые практики:**174- Общие шаблоны CI/CD, которые команды подключают (не копируют)175- Автоматическое сканирование безопасности (SAST, аудит зависимостей)176- Стандартизированные стратегии деплоя (canary, blue/green)177- Автоматический откат при неудачных проверках здоровья178179### Уровень 4: Наблюдаемость180181Преднастроенный мониторинг, чтобы разработчики получали дашборды и алерты из коробки.182183- **Метрики**: Prometheus + Grafana со стандартными дашбордами на каждый сервис184- **Логирование**: Структурированное логирование с централизованным сбором (Loki, ELK)185- **Трейсинг**: Распределённый трейсинг с OpenTelemetry186- **Алертинг**: Интеграция с PagerDuty/Opsgenie с разумными значениями по умолчанию187188```mermaid189graph LR190 Service[Your Service] -- "OpenTelemetry SDK" --> Collector[OTel Collector]191 Collector --> Prometheus[Prometheus]192 Collector --> Loki[Loki]193 Collector --> Tempo[Tempo]194 Prometheus --> Grafana[Grafana Dashboards]195 Loki --> Grafana196 Tempo --> Grafana197 Grafana --> PagerDuty[PagerDuty Alerts]198```199200## Измерение успеха201202Как узнать, что ваша платформа работает? Отслеживайте эти метрики:203204### Метрики DORA205- **Частота деплоев**: Как часто код попадает в продакшен206- **Время доставки изменений**: Время от коммита до продакшена207- **Частота сбоев изменений**: Процент деплоев, вызывающих сбои208- **Среднее время восстановления**: Время восстановления сервиса после инцидента209210### Метрики, специфичные для платформы211- **Время до первого деплоя**: Сколько времени от «нового сервиса» до первого деплоя в продакшен212- **Удовлетворённость разработчиков (NPS)**: Регулярно опрашивайте пользователей213- **Доля самообслуживания**: % запросов на инфраструктуру, обработанных без тикетов214- **Принятие golden path**: % сервисов, следующих рекомендованному пути215216## Распространённые ошибки217218### 1. Строить слишком много, слишком рано219Начните с самой болезненной проблемы, а не с грандиозного видения. Если деплои болезненны, начните с них. Если провизия занимает недели, начните с неё.220221### 2. Не относиться к платформе как к продукту222Платформенной команде нужен продакт-менеджер, исследование пользователей и петли обратной связи. Разработчики - ваши клиенты - поймите их потребности.223224### 3. Навязывать вместо привлечения225Лучшие платформы принимаются добровольно, потому что облегчают жизнь разработчиков. Если вам приходится навязывать использование, ваша платформа недостаточно хороша.226227### 4. Игнорировать опыт разработчика228Платформа с ужасным UX не будет использоваться. Инвестируйте в понятную документацию, полезные сообщения об ошибках и быструю обратную связь.229230## С чего начать231232Практическая дорожная карта построения вашей первой IDP:233234```mermaid235flowchart TD236 A[Month 1-2: Discovery] --> B[Month 3-4: MVP]237 B --> C[Month 5-6: Iterate]238 C --> D[Month 7+: Scale]239240 A --> A1[Interview developers]241 A --> A2[Map pain points]242 A --> A3[Choose first golden path]243244 B --> B1[Deploy Backstage]245 B --> B2[First service template]246 B --> B3[Standardized CI/CD]247248 C --> C1[Gather feedback]249 C --> C2[Add infrastructure abstraction]250 C --> C3[Improve docs and onboarding]251252 D --> D1[More templates and golden paths]253 D --> D2[Self-service infrastructure]254 D --> D3[Advanced observability]255```256257### Минимально жизнеспособная платформа2582591. **Каталог сервисов** (Backstage) - знать, что существует и кто владеет2602. **Один шаблон сервиса** - golden path для наиболее распространённого типа сервиса2613. **Стандартизированный CI/CD** - общий пайплайн, который команды подключают2624. **Базовая документация** - как использовать платформу, где получить помощь263264Вы можете построить этот MVP за 2-3 месяца командой из 2-3 инженеров.265266## Заключение267268Platform Engineering - это не о построении идеальной платформы с первого дня. Это о постепенном снижении когнитивной нагрузки на разработчиков, чтобы они могли сосредоточиться на создании продуктов. Начните с малого, измеряйте влияние и итерируйте на основе обратной связи от разработчиков.269270Организации, инвестирующие в Platform Engineering, получат значительное конкурентное преимущество: более быструю доставку, более счастливых разработчиков и более надёжные системы.271272**Ресурсы:**273- [Team Topologies](https://teamtopologies.com/) - книга, популяризировавшая платформенные команды274- [Backstage](https://backstage.io/) - open-source портал разработчиков от Spotify275- [CNCF Platforms White Paper](https://tag-app-delivery.cncf.io/whitepapers/platforms/) - определение сообщества и лучшие практики276- [platformengineering.org](https://platformengineering.org/) - сообщество, мероприятия и ресурсы277
:Platform Engineering: Как построить Internal Developer Platformlines 1-277 (END) — press q to close