Open Source порталы разработки и что такое IDP
На рынке внутренних порталов разработчика существует один явный лидер в категории open source — Backstage. Большинство других популярных решений, таких как Port, являются коммерческими (SaaS) продуктами, хотя они и могут предлагать open source компоненты для интеграции https://internaldeveloperplatform.org/developer-portals/port/
Поэтому основной фокус в open source сегменте приходится именно на Backstage, который был создан в Spotify и позже передан в Cloud Native Computing Foundation (CNCF).
Ключевое решение: Backstage
Backstage — это не готовый продукт, а фреймворк для создания собственного портала разработчика https://cloudomation.com/cloudomation-blog/5-internal-developer-portals-and-what-software-engineers-say-about-them/. Это его главное преимущество и одновременно главный недостаток. Он предоставляет базовые строительные блоки и архитектуру, на основе которых компании могут построить портал, идеально соответствующий их процессам и инструментам.
Кстати очень интересная статья про порталы, платформы и их различия.

Cloudomation Guide – Building Internal Developer Platforms.pdf есть еще гайд обобщенный. А основная концепция конечно тут https://internaldeveloperplatform.org
Основные компоненты Backstage:
- Software Catalog: Единый реестр для всех программных активов компании (микросервисы, библиотеки, веб-сайты, ML-модели и т.д.). Позволяет централизовать метаданные, информацию о владельцах, зависимостях и состоянии.
- Software Templates (Scaffolder): Инструмент для создания новых проектов по заранее подготовленным шаблонам. Это стандартизирует первоначальную настройку сервисов, CI/CD пайплайнов, репозиториев и т.д.
- TechDocs: Решение для создания, поддержки и отображения технической документации по принципу “docs-as-code”, когда документация хранится вместе с кодом.
- Плагины: Экосистема Backstage строится вокруг плагинов. Существует огромное количество готовых плагинов для интеграции с AWS, Kubernetes, GitHub, CI/CD системами, системами мониторинга и многими другими. Если нужного плагина нет, его можно разработать самостоятельно.
Сравнение подходов: Build vs. Buy
Поскольку настоящий open source конкурент у Backstage практически отсутствует, наиболее корректно сравнить его не с другим open source решением, а с подходом использования коммерческих SaaS-платформ, ярким представителем которых является Port.
- Port** — это коммерческий продукт, который предлагает готовый к использованию портал. Его философия заключается в гибкой модели данных на основе “blueprints” (шаблонов сущностей) и взаимосвязей между ними. Port позволяет быстро агрегировать данные из различных источников и построить каталог без необходимости развертывания и поддержки сложной инфраструктуры 10-best-internal-developer-portals-to-consider. Хотя ядро продукта закрыто, его интеграции и экспортеры данных являются открытыми [internaldeveloperplatform.org](https://internaldeveloperplatform.org/developer-portals/port/).
Сравнительная таблица: Backstage vs. Коммерческие IDP (на примере Port)
Критерий | Backstage (Open Source) | Коммерческие решения типа Port (SaaS) |
Модель лицензирования | Open Source (Apache 2.0). Бесплатно. | Коммерческая (SaaS). Платная подписка. |
Философия / Подход | Фреймворк для создания портала. “Построй свой дом”. | Готовый продукт для настройки портала. “Купи и настрой квартиру”. |
Сложность внедрения | Высокая. Требуется разработка, развертывание и поддержка. Есть кривая обучения [cloudomation.com](https://cloudomation.com/cloudomation-blog/5-internal-developer-portals-and-what-software-engineers-say-about-them/). | Низкая / Средняя. Быстрый старт, не требует своей инфраструктуры. |
Требования к команде | Нужна выделенная команда платформенных инженеров для разработки и поддержки портала. | Может управляться одним или несколькими DevOps-инженерами. Не требует навыков фронтенд-разработки. |
Гибкость и кастомизация | Максимальная. Можно изменить и доработать абсолютно все, создать уникальные плагины и логику. | Высокая, но ограничена возможностями платформы. Кастомизация интерфейса и логики возможна в рамках, заданных вендором. |
Инфраструктура | Требует собственной инфраструктуры для хостинга (обычно Kubernetes), базы данных, CI/CD для самого портала. | Не требует. Хостится и управляется вендором. |
Экосистема и интеграции | Огромная, управляемая сообществом. Большое количество open source плагинов. | Управляется вендором. Интеграции создаются вендором, но часто есть открытые API и экспортеры данных. |
Общая стоимость владения (TCO) | Скрытая и высокая. Лицензия бесплатна, но основные затраты — это зарплаты команды разработки и поддержки, а также стоимость инфраструктуры. | Прозрачная и предсказуемая. Основные затраты — стоимость подписки. |
Поддержка | Сообщество (Slack, GitHub Issues). | Коммерческая поддержка от вендора (SLA, выделенный менеджер). |
Выбор между open source фреймворком вроде `Backstage` и коммерческим продуктом — это классический выбор между “Build” (создавать) и “Buy” (покупать).
- `Backstage` — это стратегическая инвестиция. Это мощное решение для крупных или технологически зрелых компаний, у которых уже есть выделенная платформенная команда и которые готовы вкладывать ресурсы в создание идеально подогнанного под себя инструмента. `Backstage` дает полный контроль, избавляет от зависимости от вендора (vendor lock-in) и позволяет решать уникальные задачи, которые не могут покрыть коробочные продукты.
- Коммерческие IDP (такие как Port) — это тактическое решение для быстрого результата. Они идеально подходят для малых и средних компаний, или для крупных организаций, которые хотят быстро запустить портал и проверить гипотезы, не формируя для этого отдельную команду разработки. Этот подход обеспечивает быстрый старт, предсказуемые затраты и перекладывает всю головную боль по поддержке и развитию платформы на плечи вендора.
Рекомендации
Выбирайте `Backstage`, если:
- У вас есть (или вы готовы создать) выделенная команда платформенных инженеров.
- У вас есть уникальные и сложные внутренние процессы, которые не укладываются в рамки готовых решений.
- Вы хотите максимальной гибкости для интеграции со своими самописными инструментами.
- Вы — крупная организация, для которой затраты на команду разработки портала оправданы в долгосрочной перспективе.
- Принципиально важно избежать зависимости от стороннего вендора.
Рассмотрите коммерческие решения (типа Port), если:
- Вам нужен результат “здесь и сейчас” с минимальными первоначальными усилиями.
- У вас нет ресурсов на формирование команды для разработки собственного портала.
- Стандартного или предложенного вендором функционала достаточно для решения ваших задач.
- Вы предпочитаете прозрачную модель оплаты (SaaS-подписка) вместо скрытых затрат на разработку и поддержку.
- Вам важна гарантированная коммерческая поддержка с четким SLA.
Вне зависимости от выбора, начинать следует с определения ключевых проблем разработчиков, которые должен решить портал. Инструмент — это лишь средство для достижения цели, будь то упрощение создания новых сервисов, централизация знаний или автоматизация рутинных задач.
Ниже небольшой гайд на основе дока выше Cloudomation Guide – Building Internal Developer Platforms.pdf
Руководство
Создание внутренних платформ для разработчиков: лучшие практики, инструменты и стратегические выводы для технических лидов
***
Кратко о чем все это?
Ниже представлен обзор внутренних платформ для разработчиков (Internal Developer Platforms, или IDP). Поскольку инженерные команды сталкиваются с растущей сложностью, IDP становятся решением для снижения разногласий между разработкой и эксплуатацией.
Независимо от того, оцениваете ли вы готовые платформы или создаете собственное решение, этот документ предлагает ценные сведения и тщательно подобранные ресурсы, которые помогут вам эффективно пройти путь внедрения IDP.
Основные тезисы:
- IDP — это платформы самообслуживания, созданные инженерами платформ для оптимизации разработки программного обеспечения за счет автоматизации развертываний, конфигураций и управления средами.
- Преимущества: Сокращение времени, затрачиваемого на настройку и отладку, снижение когнитивной нагрузки на разработчиков, повышение надежности и соответствия требованиям, а также более высокая операционная эффективность.
- Каждая IDP уникальна, но обычно состоит из фронтенда, бэкенда и других интегрированных инструментов.
- Ключевые возможности IDP должны включать: API, пользовательский интерфейс, автоматизацию, механизмы ограничений (например, политики), документацию и возможность обнаружения сервисов (discoverability).
- Для создания по-настоящему целостной IDP необходимо сосредоточиться на интеграции всех необходимых инструментов и сервисов.
- При внедрении IDP могут возникнуть следующие проблемы: попытка сделать все сразу (и не достичь ничего), нехватка ресурсов и бюджета, невозможность поддерживать каталог программного обеспечения в актуальном состоянии и недостаток коммуникации между людьми.
- Обосновывая необходимость внедрения IDP, подкрепляйте свои аргументы данными и связывайте их с рисками и результатами, которые больше всего волнуют ваше руководство.
***
Содержание
- Что такое IDP?
- Зачем нужны IDP?
- Как работают IDP?
- Обоснование необходимости IDP для бизнеса
- Лучшие практики для создания IDP
- Инструменты платформенной инженерии для создания IDP
- 3 проблемы при создании IDP
- Ресурсы
1. Что такое IDP?
Внутренние платформы для разработчиков (IDP) лежат в основе дисциплины платформенной инженерии (Platform Engineering).
Пояснение:
Внутренняя платформа для разработчиков — это, по сути, продукт, предназначенный для разработчиков внутри организации. Она предоставляет им доступ по принципу самообслуживания к технической инфраструктуре и рабочим процессам, таким как конвейеры развертывания или облачные ресурсы. пост на dev.to. Ключевая идея — относиться к своей внутренней платформе как к продукту, а к разработчикам — как к клиентам. еще пост с dev.to. Это позволяет им не ждать выполнения заявок в отдел эксплуатации и не нести полную ответственность за инфраструктуру, как в модели «you build it, you run it».
IDP призваны решить вечную проблему, которая преследует всех разработчиков ПО: программное обеспечение чрезвычайно сложно, и ни один человек не может знать всего, что требуется для создания целого программного продукта.
Понимание внутренних платформ для разработчиков
На схеме ниже показаны ключевые концепции, лежащие в основе IDP.

- Подходы «Инфраструктура как код» (As-Code Approaches): Акцент на автоматизацию и документирование через код.
- «Золотые пути» (Golden Paths): Предоставление заранее определенных, проверенных и поддерживаемых путей для выполнения типовых задач (например, создание нового сервиса, развертывание в среде). Разработчики могут легко следовать этим путям, будучи уверенными в результате.
- Самообслуживание (Self-Service): Позволяет разработчикам самостоятельно использовать платформу без необходимости обращаться в другие команды.
- Управление как продуктом (Managed like a product): У платформы есть свой жизненный цикл выпуска, владелец продукта и дорожная карта развития.
- Инженеры платформы (Platform Engineers): Создают и поддерживают IDP, фокусируясь на ценности для разработчиков.
- Разработчики ПО (Software Developers): Основные пользователи, которые взаимодействуют с IDP.
Функции IDP
IDP предоставляют функции, которые являются центральными в повседневной работе разработчиков программного обеспечения.
Это лишь примеры функций, которые может иметь IDP. Каждая IDP уникальна для организации, которая ее использует. Часто они создаются с нуля или сильно кастомизируются под нужды компании.
2. Зачем нужны IDP?
По мере усложнения процесса поставки ПО организации сталкиваются с фрагментированными практиками DevOps, несогласованными рабочими процессами и операционной неэффективностью. От разработчиков ожидают, что они будут управлять инфраструктурой, конвейерами CI/CD, политиками безопасности и мониторингом, что часто приводит к когнитивной перегрузке и снижению производительности. Именно здесь на помощь приходят платформенная инженерия и IDP.
Раскрывая мощь IDP
- Ускорение циклов разработки: Оптимизированное развертывание сокращает время, затрачиваемое на настройку и отладку.
- Снижение когнитивной нагрузки на разработчиков: Упрощенное управление инфраструктурой позволяет сосредоточиться на написании кода.
- Повышение надежности и соответствия требованиям (Compliance): Обеспечивает последовательное применение политик безопасности и соответствия во всех развертываниях.
- Повышение инженерной эффективности: Автоматизирует управление ресурсами, повышая операционную эффективность.
3. Как работают IDP?
Каждая IDP уникальна, но есть некоторые общие характеристики, присущие большинству из них. В самом простом виде каждая IDP состоит примерно из трех «частей»:
- Фронтенд IDP
- Бэкенд IDP
- Множество других инструментов, интегрированных с IDP

- Фронтенд: Пользовательский интерфейс для доступа разработчиков к IDP. Часто это внутренний портал разработчика (Internal Developer Portal).
- Бэкенд: Управляет интеграцией и автоматизацией с другими инструментами. Эту роль часто выполняет оркестратор платформы.
- Интегрированные инструменты: Различные инструменты, которые работают с IDP для выполнения ключевых процессов (CI/CD, мониторинг, безопасность и т.д.).
Архитектура
Следующая диаграмма архитектуры, основанная на модели CNOE (Cloud Native Operational Excellence), дает более детальное представление.

В этой диаграмме «Портал разработчика» (`Developer Portal`) является фронтендом IDP. Компонент «Оркестрация рабочих процессов» (`Workflow Orchestration`) будет бэкендом.

Ниже приведен более подробный пример архитектуры, показывающий, какие типы инструментов и сервисов могут быть частью IDP, сгруппированные по функциональным уровням (плоскостям).
Ключевая функциональность IDP
Основная идея IDP — объединить инструменты, сервисы, конфигурации и другую информацию в одном месте. Инженеры-программисты, а также другие заинтересованные стороны (например, команды эксплуатации) должны иметь возможность использовать IDP как единую точку входа для обнаружения и взаимодействия с приложениями и инфраструктурой компании.
Таким образом, бэкенд IDP, как правило, должен быть сильным в двух типах функциональности: №1 Интеграция и №2 Автоматизация.
- Интеграция: Объединение разнообразных инструментов и сервисов в единую систему.
- Автоматизация: Связывание и оркестрация существующих конвейеров автоматизации.
4. Обоснование необходимости IDP для бизнеса
По мере того как организации масштабируют и модернизируют поставку своего программного обеспечения, сложность управления инфраструктурой, рабочими процессами разработчиков и управлением (governance) растет экспоненциально.
Внутренняя платформа для разработчиков (IDP) предлагает стратегический ответ на этот вызов, обеспечивая более быструю доставку, более сильное управление и снижение операционных рисков. Однако, чтобы получить одобрение руководства, крайне важно сформулировать преимущества IDP в терминах бизнеса.
Вот как можно обосновать необходимость IDP, обращаясь к четырем ключевым проблемам руководителей: Масштаб, Затраты, Риски и Управление.
1. Масштаб: Предоставление организации возможности двигаться быстрее
- Проблема руководителя: Как мы можем масштабировать наши инженерные команды и поставку ПО без узких мест?
- Обоснование IDP: IDP повышает производительность, абстрагируя повторяющиеся, низкоценные задачи. Она дает командам приложений возможность самостоятельно обслуживать инфраструктуру, CI/CD, тестирование и развертывание стандартизированным и безопасным способом.
- Бизнес-результаты:
- Повышение скорости работы команд приложений и организации в целом.
- Быстрая доставка большей бизнес-ценности, поскольку команда разработки может сосредоточиться на коде.
- Возможность масштабирования без линейного увеличения найма DevOps-инженеров.
- Как это сделать: Оцените, сколько времени команды приложений тратят на борьбу с инфраструктурой и инструментами развертывания, и сколько — на работу над своим основным приложением. Используйте эти данные, чтобы обосновать необходимость IDP и показать, как она может высвободить время для основной задачи, что напрямую влияет на бизнес-ценность. Визуализируйте это, чтобы подчеркнуть, каким объемом инфраструктуры приходится управлять командам приложений, и сравните это с тем, как это могло бы выглядеть.
*(В оригинальном документе здесь показаны два слайда из презентации PlatformCon23, представляющие “текущее состояние” и “будущее состояние”. Текущее состояние показывает, как команда из 50 разработчиков приложений вынуждена вручную взаимодействовать с разрозненным набором инструментов. Будущее состояние показывает, как команда платформы предоставляет единый, унифицированный слой, который абстрагирует эту сложность, позволяя командам приложений работать более эффективно.)*

Обратите внимание сколько кубиков вверху, а сколько внизу. В России кстати очень быстро вырывается вперед разработка на фреймворках streamlit, они почти ничего не делают повторно, если развернули хоть раз его с авторизацией и ипишками – в основном только ui колбасят. Но часто такие инициативы не вырастают сильно, их обычно давят в зародыше, так как они не соответствуют общему формату и не хотят делать все остальные кубики или не умеют – в общем похожи они на shadow it. Но если же им каким, то образом это удалось, то потом их не остановить и придя к ним через год, можно увидел второй прод, полностью зеркальный :) и сделал его кто-то один вечерами.
2. Затраты: Оптимизация за счет масштабирования и повторного использования
- Проблема руководителя: Как нам контролировать растущие расходы на облако и инженерию?
- Обоснование IDP: Платформенная инженерия сокращает дублирование усилий и консолидирует управление инфраструктурой. IDP способствует экономически эффективному масштабированию, обеспечивая прозрачность и контроль на протяжении всего жизненного цикла ПО. Централизация позволяет совместно использовать ресурсы, проактивно отслеживать затраты и автоматически высвобождать неиспользуемые активы (например, тестовые среды).
- Бизнес-результаты:
- Улучшенная прозрачность и предсказуемость затрат.
- Снижение общей стоимости владения (TCO) за счет оптимизации ресурсов.
- Большая рентабельность инвестиций (ROI) в облачную инфраструктуру.
- Важный момент: Команды платформы могут отслеживать метрики использования и отключать неиспользуемые среды.
3. Риски: Сокращение точек отказа и операционных угроз
- Проблема руководителя: Какие риски угрожают нашей способности поставлять продукт надежно и безопасно?
- Обоснование IDP: IDP минимизирует операционные риски и риски безопасности путем стандартизации процессов по всем направлениям — конвейеры CI/CD, развертывание, наблюдаемость (observability), оповещения и аутентификация.
- Бизнес-результаты:
- Снижение риска сбоев в продакшене.
- Централизация ключевых сервисов, таких как развертывание, управление идентификацией и логирование.
- Принудительное применение политик безопасности и соответствия на уровне платформы.
- Примеры устраняемых рисков:
- Задержки в поставке из-за нестабильных конвейеров.
- Утечки данных из-за неверно настроенных систем аутентификации.
- Непрохождение аудита из-за несогласованного логирования или дрифта соответствия требованиям.
4. Управление (Governance): Обеспечение согласованности и соответствия требованиям в масштабе
- Проблема руководителя: Как нам поддерживать контроль, не замедляя команды?
- Обоснование IDP: С IDP управление становится встроенным. От шаблонов до API, команды платформы могут кодировать стандарты и лучшие практики непосредственно в опыт разработчика.
- Бизнес-результаты:
- Проактивное управление и применение политик.
- Улучшенная аудитопригодность и соответствие нормативным требованиям.
- Формирование культуры инженерного совершенства.
Подкрепление доводов данными
Ключевым фактором для вашего бизнес-обоснования являются данные. Проведите опрос в вашей инженерной организации, чтобы собрать информацию, например, о времени, затрачиваемом на инфраструктурные задачи по сравнению с разработкой новой функциональности.
Итоговые мысли: Что не дает спать руководителям?
При формировании своего предложения обращайтесь непосредственно к рискам и результатам, которые больше всего волнуют ваших руководителей. Например:
- Скорость выхода на рынок (Speed to market): Сможем ли мы поставлять продукт быстрее конкурентов?
- Надежность: Выдержат ли наши системы нагрузку?
- Безопасность и соответствие требованиям (Security & Compliance): Уязвимы ли мы для взломов или аудитов?
- Масштабируемость: Сможем ли мы расти, не теряя контроля?
Внутренняя платформа для разработчиков — это не просто технический инструмент, это стратегический актив. С правильной постановкой вопроса, данными и видением вы можете продемонстрировать, как хорошо реализованная IDP поддерживает не только инженерию, но и весь бизнес.
5. Лучшие практики для создания IDP
Этот раздел основан на идеях, вдохновленных видео Виктора Фарчича «От нуля до полностью работающей платформы для разработчиков за 5 шагов!». Он описывает не столько шаги, сколько ключевые возможности, которые должна иметь IDP, чтобы быть полезной.
5 ключевых возможностей IDP (по версии Виктора Фарчича):
- API
- Управление состоянием (State management)
- Одноразовые действия / Рабочие процессы (One-shot actions / Workflows)
- RBAC и Политики (RBAC & Policies)
- Пользовательские интерфейсы (опционально)
Наш взгляд на ключевые возможности (немного измененный и дополненный):
- API: Программный интерфейс для взаимодействия с платформой.
- Пользовательские интерфейсы (не опционально): Удобный способ для разработчиков взаимодействовать с платформой.
- Автоматизация: Включает как одноразовые действия (например, запуск сборки), так и управление состоянием (например, поддержание среды в нужном состоянии).
- Ограничения (Constraints): Политики, управление доступом на основе ролей (RBAC) и т.д.
- Документация и обнаруживаемость (Discoverability): Возможность легко находить сервисы, их владельцев и документацию.
Как это поможет мне построить платформу?
Если вы подумаете о проблемах, с которыми вы недавно сталкивались как инженер платформы или DevOps-инженер, вы, вероятно, сможете соотнести их с одной из описанных возможностей.
Некоторые примеры:
- Если у вас проблемы с простоями инстансов или случайными высокими затратами из-за оставленных облачных ресурсов, у вас недостаточные возможности по управлению состоянием.
- Если у вас проблемы с тем, что у инженеров-программистов нет доступа к нужной им инфраструктуре, или с тем, что младшие инженеры вмешиваются в развертывания, в которые им не следует вмешиваться, вы плохо управляете ограничениями.
- Если ваши разработчики не могут самостоятельно запустить систему на основе feature-ветки или запустить сборку и тест для определенного коммита, вам нужно взглянуть на ваши возможности автоматизации одноразовых действий.
- Если ваши инженеры-программисты просто не используют предоставляемые вами API и сервисы, вам, вероятно, следует взглянуть на предоставляемые вами пользовательские интерфейсы или проверить, обнаруживаемы / документированы ли ваши сервисы.
Цель и ценность этих ключевых возможностей — помочь вам понять, почему вы продолжаете терпеть неудачи в некоторых вопросах, и как вы можете начать исправлять ситуацию таким образом, чтобы это было долговечно и устойчиво управляемо.
6. Инструменты платформенной инженерии для создания IDP
В этой статье рассматривается, как структурировать IDP, с разбивкой по ключевым компонентам и с примерами инструментов, которые вы можете использовать.
Категоризация инструментов и компонентов
Мы классифицируем эти инструменты, используя «референсную архитектуру», популяризированную `platformengineering.org`. Эта структура разбивает экосистему на пять основных компонентов, известных как «плоскости» (`planes`):
- Плоскость управления разработчика (`Developer Control Plane`): Все компоненты, через которые разработчики взаимодействуют с платформой. Обычно включает GUI/порталы, контроль версий, облачные среды разработки (CDE), а также стандарты конфигурации, которые разработчики поддерживают сами.
- Плоскость интеграции и доставки (`Integration & Delivery Plane`): Здесь происходит вся автоматизация. Инструменты CI/CD, автоматизация инфраструктуры и другие оркестраторы платформы обычно являются частью этой плоскости.
- Плоскость мониторинга и логирования (`Monitoring & Logging Plane`): Как следует из названия, здесь находятся все инструменты наблюдаемости (observability).
- Плоскость безопасности (`Security Plane`): Управление секретами, инструменты политик и другие инструменты безопасности.
- Плоскость ресурсов (`Resource Plane`): Вычислительные ресурсы и хранилища.
Пример: Создание внутренней платформы для разработчиков
Вот разбивка инструментов, которые вы могли бы использовать для создания IDP. Важное замечание: существует множество доступных инструментов. Упомянутые здесь — лишь примеры.
Плоскость управления разработчика
№1 Портал разработчика (`Developer Portal`)
- Почему это важно: Внутренние порталы разработчиков служат единым интерфейсом и позволяют разработчикам, командам и инженерам-менеджерам обнаруживать сервисы, отслеживать владение, применять стандарты и улучшать программное обеспечение.
- Инструменты для рассмотрения:
- Backstage: Популярный open-source фреймворк для создания порталов разработчиков, созданный Spotify.
- Port: Платформа для создания внутреннего портала разработчика с no-code подходом, что облегчает быстрый старт.
- Cortex: Корпоративный внутренний портал разработчика, созданный для ускорения пути к инженерному совершенству. [cloudomation.com](https://cloudomation.com/cloudomation-blog/5-internal-developer-portals-and-what-software-engineers-say-about-them/)
- Atlassian Compass: Компонентный каталог для отслеживания компонентов и команд, которые за ними стоят.
№2 Облачные среды разработки (`Cloud Development Environments, CDEs`)
- Почему это важно: CDE — это удаленные среды разработки, размещенные в облаке или локально. CDE позволяют разработчикам работать в согласованных, стандартизированных средах, что устраняет проблемы «у меня на машине все работает».
- Инструменты для рассмотрения:
- Gitpod: Позволяет запускать безопасные, контекстно-насыщенные среды для разработчиков в корпоративном масштабе.
- Coder: Предоставляет безопасные среды разработки для разработчиков и их агентов.
Плоскость интеграции и доставки
№1 Конвейер CI (`CI Pipeline`)
- Почему это важно: Автоматизирует проверку кода, тестирование и обеспечивает более быстрые циклы обратной связи.
- Инструменты для рассмотрения:
- GitHub Actions: Нативный CI для GitHub с настраиваемыми рабочими процессами.
- CircleCI: Высокомасштабируемый CI с поддержкой расширенного параллелизма.
- Buildkite: CI, ориентированный на разработчиков, с масштабируемой инфраструктурой.
№2 Конвейер CD (`CD Pipeline`)
- Почему это важно: Конвейеры CD автоматизируют безопасное, повторяемое развертывание программного обеспечения.
- Инструменты для рассмотрения:
- Argo CD: GitOps-ориентированная доставка для Kubernetes.
- Flux: Контроллер GitOps для Kubernetes.
- Octopus Deploy: Подходит для мультиоблачных и локальных (on-prem) сред.
№3 Оркестратор платформы (`Platform Orchestrator`)
- Почему это важно: Инструменты оркестрации предоставляют логику для связывания рабочих процессов между различными инструментами и сервисами.
- Инструменты для рассмотрения:
- Humanitec: Оркестратор платформы, предоставляющий динамические среды. Является лидером рынка IDP. [internaldeveloperplatform.org](https://internaldeveloperplatform.org/)
- Собственные решения/фреймворки: Многие команды используют общие инструменты, такие как Argo Workflows или пишут собственные скрипты на Python/Go для объединения своих процессов.
Плоскость мониторинга и логирования
№1 Наблюдаемость (`Observability`)
- Почему это важно: Инструменты наблюдаемости обеспечивают видимость состояния, производительности и надежности приложений и инфраструктуры.
- Инструменты для рассмотрения:
- Prometheus: Набор инструментов для мониторинга и оповещения, особенно для Kubernetes.
- Grafana: Инструмент для создания дашбордов, часто используемый в паре с Prometheus.
- Datadog: Облачный мониторинг и аналитика.
Плоскость безопасности
№1 Менеджер секретов (`Secret Manager`)
- Почему это важно: Менеджеры секретов безопасно хранят и распространяют учетные данные, ключи API и другие конфиденциальные данные.
- Инструменты для рассмотрения:**
- HashiCorp Vault: Ведущее в отрасли решение для управления секретами.
- AWS Secrets Manager / Azure Key Vault / GCP Secret Manager: Решения от крупных облачных провайдеров.
- Sealed Secrets (Bitnami): Шифрует секреты для Kubernetes.
Вывод: Строительные блоки, а не список покупок
Если из этой главы и стоит что-то вынести, так это то, что платформенная инженерия — это не выбор самых модных инструментов с полки, а подбор правильных строительных блоков для создания бесшовного опыта для разработчиков. Думайте меньше о том, «какой инструмент мне выбрать?», и больше о том, «как я могу спроектировать платформу, которая будет незаметной и мощной для моих разработчиков и принесет пользу бизнесу?»
Настоящая магия происходит тогда, когда эти инструменты перестают быть отдельными частями пазла и становятся частью целостной платформы для разработчиков, где разработчики едва замечают лежащую в основе сложность, потому что платформа работает с ними, а не против них.
7. 3 проблемы при создании IDP
Этот раздел основан на идеях Гая Менахема (Guy Menahem), архитектора решений в Amazon.
Проблема 1: Попытаться поймать всех зайцев одним выстрелом
Многие команды платформенной инженерии пытаются сделать все сразу и в итоге не достигают ничего. Объединение всех инструментов в единое решение может привести к тому, что вы упустите основной рабочий процесс пользователя, что приведет к отказу от платформы. Вместо этого оттачивайте свои продуктовые навыки, чтобы понять, какую пользу пользователи извлекут из платформы, даже если на начальном этапе она будет включать всего несколько инструментов.
Проблема 2: Оценка затрат на создание и эксплуатацию
Создание ценной платформы требует ресурсов, включая выделенную команду платформенной инженерии, бюджет на облачную инфраструктуру и сотрудничество. Также необходимо учитывать операционные расходы, такие как обновления и патчи безопасности. Оценивайте ресурсы, определяя размер и продолжительность работы команды, сосредотачиваясь на минимально жизнеспособном продукте (MVP) и рассчитывая облачные и операционные затраты.
Проблема 3: Создание и управление каталогом программного обеспечения
Управление каталогом программного обеспечения, который представляет собой сложную базу данных ПО, систем и документации, может быть непростой задачей. Вовлечение всех команд в обновление и поддержание каталога имеет решающее значение для его качества и принятия. Упростите управление каталогом, автоматизировав сбор информации, принудительно обновляя его в процессах CI/CD и поощряя ежедневное использование платформы.
Наш взгляд
Проблемы, которые описывает Гай, реальны. Однако одна фундаментальная истина, которую он не упоминает, заключается в том, что большинство проблем при создании IDP не являются техническими.
Вместо этого наиболее распространенные проблемы возникают из-за недостатка коммуникации между людьми. Это типично для многих инженерных инициатив, поскольку инженеры, как правило, имеют очень специфический взгляд на инструменты, которые они создают, и этот взгляд часто сильно отличается от точки зрения их пользователей.
То же самое часто происходит и в командах платформенной инженерии: они могут создавать ценную автоматизацию и сервисы, но если их нелегко использовать, в них отсутствуют ключевые функции, необходимые инженерам-программистам, или они просто не решают самые большие проблемы, с которыми сталкиваются разработчики, то они просто не будут использовать IDP.
Самое важное, что вы должны делать как инженер платформы, — регулярно спрашивать своих инженеров-программистов! Просите их протестировать то, что вы создаете, сказать, полезно ли это для них, и если ответ «нет», то изменяйте то, что вы создаете, чтобы ваши инженеры-программисты захотели это использовать.
В конце концов, в этом и заключается вся суть IDP: она должна быть полезной для инженеров-программистов.
8. Ресурсы и ссылки
- https://platformengineering.org
- https://internaldeveloperplatform.org
- https://www.infoq.com/platformengineering
Сообщества
- Reddit – https://www.reddit.com/r/platform_engineering
- Platformers – https://platformers.community
Рассылки
Ранее еще писал немного на другую тему, но про разработку и стандарты апишек,интересно, мало у кого они есть, выглядят вот так: https://gavrilov.info/all/analiz-zalando-restful-api-and-event-guidelines/