Впровадження Internal Developer Platform (IDP) під ключ

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

Internal Developer Platform: де ламається доставка змін

Поки сервісів десяток, доставка змін тримається на людях: у кожної команди свої скрипти, свій порядок збірки і свій спосіб викласти артефакт на стенд. У контурі з'являється Kubernetes — але не як єдиний шар, а як десять різних домовленостей про те, хто і коли в нього пише.

Випуск релізу перетворюється на ручну операцію з вікном на ніч: зібрати, перевірити, залити, дочекатися, відкотити в разі невдачі.

Розбіжність оточень накопичується непомітно. Тестовий стенд відрізняється від продуктового на кілька правок, яких ніхто не фіксував, конфігурації правлять прямо на живому контурі, і інцидент відтворюється то тут, то там.

Ціна — не лише години інженерів: наскрізна доставка змін розсипається, і ніхто не може впевнено сказати, що саме поїхало в продуктив і як це відкотити.

Так виглядає internal developer platform, зібрана по частинах замість єдиного контуру. Далі розбираємо, як це закривається: що стандартизується, де проходять межі відповідальності команд і як влаштований випуск, у якому ручні викладки — виняток, а не норма.

Що дає платформа: ефект у строках, простоях і відмовах

Ефект платформи вимірюється трьома числами: час від зміни в коді до працюючого сервісу, час відновлення після збою і частка операцій, які інженер закриває сам.

До впровадження типовий реліз іде через погодження і ручні кроки, а відновлення займає години — стан оточень тримається в головах, а не в описі.

Після впровадження шлях зміни скорочується до годин, а відкат стає однією командою: оточення описані декларативно, попередні версії та історія розгортань доступні.

Час відновлення падає не за рахунок чергового-героя, а тому що причина збою видна в журналах випуску, і сервіс повертається у відомий робочий стан передбачувано.

Окрема метрика — частка повторюваних операцій, що перейшли в самообслуговування: підняти оточення під задачу, видати доступ, додати секрет, змінити параметр конфігурації.

Раніше кожна дія йшла через заявку і одну людину, тепер виконується однаково в будь-якого інженера, а платформна команда перестає бути вузьким місцем.

Зникає і цілий клас відмов: розбіжність оточень, дрейф конфігурацій, «у мене працює», доступи звільнених співробітників, секрети в репозиторії, реліз без шляху назад.

Основа — Kubernetes як єдине середовище виконання: команди отримують один контракт поставки, а платформна команда розвиває спільні модулі замість ручної підтримки кожного сервісу окремо.

Підходи до впровадження: готове рішення, збірка, гібрид

Вибір режиму визначається не розміром компанії, а зрілістю процесів і тим, хто стане власником платформи після запуску. Якщо каталог сервісів, шаблони репозиторіїв і політики доступу вже усталилися, платформа їх описує і знімає з команд рутину.

Якщо процеси змінюються щотижня, платформа закріпить поточний порядок речей — разом з усіма винятками, які потім доведеться підтримувати руками.

Порівнювати варіанти варто за трьома осями: час до першої користі, оборотність рішення і обсяг робіт із супроводу платформи. Нижче — три режими і межі, за якими кожен із них починає заважати.

Варіант Коли підходить Обмеження
Готове рішення Процеси стандартні, портал потрібен у короткий строк, власної платформної команди немає Розширення йде через конфігурацію і готові модулі — нестандартний сценарій доводиться дописувати
Збірка під себе Є платформна команда і свої вимоги до каталогу сервісів, шаблонів, політик доступу Довше до першого результату, успадковує внутрішні залежності, потрібен постійний власник
Гібрид Ядро беруть готовим, а каталог сервісів, шаблони і зв'язку зі збіркою залишають своїми Межа між ядром і надбудовою потребує дисципліни: оновлення ядра перевіряють разом із доопрацюваннями

Гібрид обирають найчастіше: він дає швидкий старт і залишає місце під те, що справді відрізняє вашу розробку. Домовитися варто заздалегідь про те, що залишається в ядрі і не переписується, — інакше супровід платформи перетворюється на вічну підтримку власної гілки.

Етапи робіт: від аудиту оточень до передачі команді

Збірка internal developer platform не починається зі встановлення інструментів — спочатку фіксуємо фактичний стан: що вже розгорнуто, хто володіє доступами, де розходяться конфігурації між стендами. Кожен наступний крок спирається на результат попереднього, тому платформа не ламає працюючі релізи.

  1. Аудит оточень — інвентар сервісів, стендів і зовнішніх залежностей, розбіжності конфігурацій і ручні операції, які з'їдають час команд. На виході карта пріоритетів.
  2. Схема платформи — шари: каталог сервісів, шаблони оточень, політики доступу, зв'язки зі збіркою і моніторингом; окремо фіксуємо межі — що забирає платформа, а що залишається командам.
  3. Налаштування оточень — керуючий контур, єдиний вхід і ролі, сховище секретів, ліміти і квоти, підключення діючих стендів без їх перезбірки.
  4. Пілотні команди — переносимо дві-три команди з різним навантаженням: шаблони перевіряються на реальних релізах, а не на демонстраційному стенді.
  5. Приймальні перевірки — розгортання, відкат, видача доступів, відновлення оточення після збою; час кожної операції звіряємо з вихідними замірами.
  6. Передача команді — конфігурації, схеми, політики та інструкції, навчання чергових; далі платформа живе на вашій стороні, а ми залишаємося на підтримці змін.

Що залишається у вас: конфігурації, схеми, регламенти

Після впровадження платформи самообслуговування (internal developer platform) вся обв'язка залишається у вас — у ваших репозиторіях і під вашими обліковими записами, а не в закритому контурі підрядника.

Ми навмисно не тримаємо конфігурації «в себе»: будь-який інженер команди може підняти оточення, змінити політику і розібратися у схемі сервісів без звернення до нас.

Що передаємо за актом:

  • Конфігурації оточень — розробка, передпродакшн і продакшн описані декларативно, піднімаються однією командою, а розбіжності між середовищами читаються порівнянням файлів, а не відновлюються з пам'яті.
  • Схеми сервісів і залежностей — що з чим пов'язано, де проходить межа відповідальності команд і які вузли стають точкою відмови.
  • Політики доступу — ролі, області видимості, порядок видачі прав за заявкою і журнал змін: хто і коли правив конфігурацію.
  • Регламенти експлуатації — як викочувати реліз, як відкотити його за хвилини, як чергувати і що робити при інциденті.
  • Документація — каталог сервісів, інструкції для нового інженера і опис того, як платформа влаштована всередині.
  • Каталог шаблонів самообслуговування — заготівки сервісу, щоб нова команда заводила проєкт сама, не чекаючи на інфраструктурну.
  • Порядок оновлення і резервного копіювання самої платформи — щоб вона не залишилася на стані приймання.
  • Чек-лист приймання з цільовими метриками — за ним ви приймаєте роботу і потім перевіряєте, що платформа живе.

Кейс: час виведення змін скоротився в рази

Замовник — продуктова команда з сорока інженерів, яка веде шість сервісів на Kubernetes.

Оточення розгортали вручну за заявкою в черзі інфраструктурної групи: стенд під навантажувальні перевірки чекали до двох діб, а конфігурації тестового і робочого контурів розходилися — частина дефектів випливала вже на робочому контурі.

Реліз випускали раз на два тижні нічним вікном, відкат займав близько сорока хвилин і вимагав ручних правок. Збірки і перевірки запускалися на машинах розробників, тому один і той самий коміт у двох інженерів давав різний результат.

Що змінили

Розгорнули внутрішню платформу розробника (internal developer platform): каталог сервісів, шаблони оточень і спільний конвеєр поставки.

Опис інфраструктури перевели в код з успадкованими шаблонами — тестовий, проміжний і робочий контури збираються з одного джерела і відрізняються лише набором параметрів. Оточення піднімають самостійно з каталогу, без заявок і очікування в черзі.

Метрики до і після

Показник До Після
Готове оточення до 2 діб за заявкою 12–15 хвилин
Випуск змін раз на два тижні 6–8 разів на тиждень
Відкат до попередньої версії ~40 хвилин вручну одна команда, ~2 хвилини
Зміни через автоперевірки близько третини 100%

Типові звернення до інфраструктурної групи скоротилися приблизно на 70%: інженери переключилися з видачі стендів на розвиток платформи.

Частка збоїв через розбіжність контурів упала майже до нуля — конфігурація тепер одна на всі оточення, а розбіжність видно на етапі перевірки, а не після випуску.

Що робити, якщо команди вже живуть на своїх скриптах?

Скрипти не вимикають у день запуску платформи — саме так найчастіше і зривають релізи. Ми піднімаємо internal developer platform поруч із наявними шляхами і на першому етапі переносимо на неї лише збірку і тестові оточення, залишаючи робочі скрипти команд недоторканими.

Цикл випуску версій при цьому не змінюється, і команда будь-якої миті повертається до звичного способу, якщо новий дасть збій.

Співіснування інструментів тримається на тонкому шарі сумісності: старий скрипт викликається з нової конфігурації як окремий крок, тому перевірки, права доступу і описи оточень не дублюються, а живуть в одному місці.

Поступове впровадження йде хвилями — спочатку одна команда-доброволець, потім ті, хто випускає версії найчастіше, і лише потім решта. Критерій готовності хвилі — відтворювана збірка і відкат без ручних дій.

Міграція скриптів починається з інвентаризації, а не з переписування: які задачі реально запускають, які дублюють одна одну, що тримається на одній людині і піде разом із нею.

Переносимо по одній задачі, і лише коли нова конфігурація дає той самий результат плюс відкат та історію запусків; попередній шлях після цього не видаляємо, а заморожуємо — на випадок, якщо випливуть неочевидні залежності.

Етап вважається пройденим, коли команда збирає і випускає версію без ручних кроків і без звернення до автора скрипта. Так платформа набирає покриття поступово, замість того щоб перетворитися на паралельну реальність, яку всі обходять стороною.

Часті технічні сумніви: оточення, доступи, підтримка

Платформа встає між розробником та інфраструктурою, тому на етапі вибору підрядника питання повторюються: як це уживеться з поточним контуром, хто і що зможе змінювати і що буде, коли зовнішня команда піде з проєкту.

Платформу проєктуємо поверх наявного стеку, а не замість нього: маніфести, описи інфраструктури і конвеєри залишаються у ваших репозиторіях. Нижче — короткі відповіді на те, що випливає найчастіше.

Як будуть влаштовані оточення?

Оточення піднімаються декларативно з одного шаблону: dev, stage і prod відрізняються лише параметрами і лімітами. Під гілку можна створити одноразове оточення з автовидаленням після злиття — стендів стає більше без ручної роботи.

Як розмежовується доступ?

Ролі видаються через корпоративний вхід, права описуються на рівні команди, сервісу і окремої дії. Секрети зберігаються окремо і підставляються при викочуванні, а не лежать у репозиторії: розробник отримує доступ до сервісу, але не до облікових даних.

Хто підтримує платформу після запуску?

Передаємо документацію, схеми і правила чергування, щоб платформу можна було вести без нас. Оновлення і відкати проходять через той самий конвеєр, що й звичайні сервіси — платформа не перетворюється на необслуговуваний чорний ящик.

Наскільки це сумісно з поточними системами?

Переїзд не потрібен: платформа обгортає наявні репозиторії, реєстр образів і моніторинг, звертаючись до них через API. Непідтримуваний випадок закривається окремим адаптером, а не заміною звичного інструмента.

Обговоримо задачу і повернемося з оцінкою та планом

Щоб оцінка строків була реалістичною, а план — робочим, нам потрібні ввідні дані про ваш ландшафт. Нічого екзотичного: те, що вже лежить у репозиторіях, тікетах і головах інженерів. Чим точніший вхід, тим менше припущень в оцінці і тим менше сюрпризів на етапі впровадження.

  • Список сервісів і команд-власників: скільки репозиторіїв, хто відповідає за випуск, де зараз залишаються ручні кроки.
  • Схема оточень: розробка, тестовий контур, продуктив — чим відрізняються конфігурації і де зберігаються секрети.
  • Поточний конвеєр збірки і доставки: які етапи вже автоматизовано, на якому найчастіше зупиняється випуск.
  • Доступи і обмеження: хмара або власні сервери, вимоги безпеки, ролі в кластері, хто видає права.
  • Зворотний зв'язок від інженерів: чого найдовше чекають, які операції роблять руками, де втрачається час при введенні в роботу нової людини.

У відповідь повертаємо план: карту платформи — які сервіси самообслуговування закриваємо першими, етапи впровадження з оцінкою строків, схему ролей і доступів, вимоги до інфраструктури і критерії готовності кожного етапу.

Оцінка йде за етапами, а не однією цифрою: так видно, що виноситься в першу чергу, а де потрібні рішення з вашого боку.

Опишіть задачу — повернемося з оцінкою і планом. Якщо частина ввідних поки недоступна, почнемо з того, що є: прогалини зазвичай закриваються на етапі обстеження і не гальмують роботу.

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

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

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