Чтобы решить эту проблему, Spotify создала UX-инструмент под названием Backstage (который впоследствии был открыт). Backstage избавил инженеров от необходимости изучать огромное количество технологий и инструментов. Вместо этого инженеры могли нажать одну кнопку на простом веб-портале, чтобы добавить больше вычислительных мощностей на машину, над которой они работали, или получить доступ к журналам отладки. Со временем Spotify добавила дополнительные функции, чтобы помочь agile-командам обнаружить библиотеки, приложения и сервисы, разработанные другими agile-подразделениями, и дать им возможность двигаться быстрее - и все это на едином портале, что упрощает и улучшает работу разработчиков.
В нашей компании команда разработчиков платформы создала индивидуальный, легкий, самообслуживающийся веб-портал для разработчиков под названием Platform McKinsey, чтобы дать возможность сотням agile-команд McKinsey создавать цифровые и искусственные продукты, не заботясь о базовой инфраструктуре или инструментах. Веб-портал выполняет две задачи (см. Рисунок 20.1):
Действует по запросу команды на создание среды "песочницы", автоматически выполняя следующие действия:
Создайте "песочницу" с правильным контролем доступа для членов команды и правильными инструментами.
Установите все необходимые средства контроля версий, чтобы команде не приходилось делать это вручную.
Настройте любые инструменты для совместной работы, например вики, где команда может сотрудничать и хранить документы по продукту/проекту.
Установите и настройте инструмент CI, чтобы команда могла сосредоточиться только на своем продукте.
Предоставляет команде все необходимые инструменты для разработки продуктов через веб-портал, включая:
Инструменты для обнаружения и доступа к данным
Инструменты для написания кода
Инструменты для поиска неконфиденциального кода, который уже был написан другими командами (для экономии времени за счет повторного использования)
Инструменты, позволяющие отслеживать результаты экспериментов (особенно важно для разработки моделей машинного обучения)
Инструменты для просмотра статуса CI-сборки (например, повлияли ли изменения кода на качество продукта в целом?)
Простой способ публикации кода в продакшн одним нажатием кнопки
Инструменты для мониторинга состояния решений, которые они создают в процессе разработки и производства
В своих "песочницах" каждая команда может индивидуально использовать память и вычислительные мощности. Это особенно важно при разработке аналитических и информационных продуктов, когда в процессе разработки присутствует элемент экспериментирования, например, определение правильного алгоритма или объема данных для обработки.
Современная и стандартизированная оснастка
В песочницах инженерам необходим доступ к современным и стандартизированным инструментам. Эти инструменты используются на протяжении всего SDLC для разработки, тестирования, упаковки и хранения кода, который создают agile-подразделения (перед развертыванием). Многие поставщики облачных услуг также начали упаковывают инструменты, которые можно использовать как часть их предложения по предоставлению услуг на основе платформы как услуги (PaaS).
Существует пять основных категорий инструментов, связанных с разработкой, которые важны для любого agile-команды, разрабатывающей цифровые решения. Следует отметить, что выбор инструментов в первых двух категориях во многом зависит от того, какой продукт создает agile pod (например, front-end, back-end, API, data-pipeline или модель).
Инструменты разработчика. Это инструменты, используемые для экспериментов и создания кода, к которым также относятся интегрированные среды разработки (IDE). Набор инструментов зависит от языка (например, Python, R, JavaScript и т. д.). Хорошие инструменты разработчика обеспечивают проверку синтаксиса и валидацию кода, а также позволяют нескольким инженерам сотрудничать и работать над одним и тем же файлом в одно и то же время.
Инструменты для упаковки программного обеспечения (для производства). Для рабочего решения, которое должно упаковывать несколько блоков кода, например, webpack, который упаковывает js, css и html, этот код должен быть связан с другими версиями другого кода вокруг него и другими зависимостями. Это позволяет разработчикам лучше модулировать программное обеспечение и легче выпускать обновления.
Инструменты для хранения пакетов. Это инструменты для хранения пакетов кода. Такие инструменты, как Nexus, Docker Hub и JFrog Artifactory, позволяют хранить пакеты, готовые к производству.
Инструменты для разработки программного обеспечения. Эти инструменты обеспечивают интеграцию и доступ к контролю версий и непрерывной интеграции для agile-подразделений, используя среду "песочницы" и не заботясь о том, как все настроить и установить. Это позволяет команде сосредоточиться на создании высококачественного программного обеспечения.