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 проти DevOps4546Platform Engineering - це не заміна DevOps, а наступна еволюція. DevOps казав: «Ти будуєш - ти керуєш». Platform Engineering каже: «Ми зробимо будівництво та керування легкою справою».4748| Аспект | DevOps | Platform Engineering |49|--------|--------|---------------------|50| **Фокус** | Культура та практики | Продукти та самообслуговування |51| **Підхід** | Кожна команда керує інфраструктурою | Платформна команда абстрагує інфраструктуру |52| **Когнітивне навантаження** | Високе (кожна команда вивчає все) | Низьке (надаються золоті шляхи) |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### Золотий шлях7576Platform Engineering вводить концепцію **золотих шляхів** - принципових, добре підтримуваних та задокументованих шляхів для типових завдань. Золотий шлях - це не мандат; розробники *можуть* відхилятися, але платформа робить правильне легким.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**Приклад золотого шляху для створення нового мікросервісу:**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- **Прийняття золотого шляху**: % сервісів, що дотримуються рекомендованого шляху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. **Один шаблон сервісу** - золотий шлях для найпоширенішого типу сервісу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