3 фактора многие инженеры платформы все еще ошибаются

Хероку спонсировал этот пост.

Мир облачной инфраструктуры и развертывания приложений радикально изменился за последнее десятилетие. Мы видели метеорический рост провайдеров облачных, Kubernetes и Opentelemetry, а также падение некогда коммерческих инструментов, таких как Subversion, йомен и Grunt. Даже в разгар эволюции облака многие основы, в том числе двенадцать факторных разработок программного обеспечения, оставались основополагающими.

В 2011 году соучредитель Heroku, Адам Виггинс, представил двенадцать факторное приложение, манифест лучших практик, основанный на уроках, извлеченных в Heroku. С уверенностью, которая поступает от запуска тысяч приложений в облако, команда Heroku использовала свой опыт в том, что работает, и что не работало для разработчиков. Они применили уроки, которые они выучили, чтобы создать двенадцать факторную модель — 12 парадигм для успешного развертывания приложений.

(Источник: Героку)

Но развертывание в облаке радикально изменилось за последние 10 лет, и двенадцать факторов не охватывают определенные новые методы развития — такие вещи, как современная наблюдаемость, журналы, отслеживание и обработку ошибок. Таким образом, в конце 2024 года Heroku Open Sounch и начал модернизировать двенадцать факторов для сегодняшней инфраструктуры.

Создание прочной основы

Двенадцать факторов стали настолько известны, что «многие его принципы просто считаются лучшими практиками в отрасли», — сказал Виш Абрамс, главный архитектор Героку в интервью новой стеке.

Эта статья более подробно рассмотрит первые три фактора, поскольку они устанавливают основу для более высоких уровней двенадцати факторов. «Если вы посмотрите на структуру двенадцати факторов, они строят друг друга», — продолжил он. «Вы начинаете с первых трех — кодовая база, зависимости, конфигурация — и те, которые встраиваются в концепции более поздних факторов».

Фактор 1: кодовая база

«Двенадцатифакторное приложение всегда отслеживается в системе управления версиями, такой как GIT, Mercurial или Subversion. Копия базы данных отслеживания ревизий известна как репозиторий кода, часто укоренившаяся для кода репо или просто репо».

Первый фактор вращается вокруг использования системы управления версией кодовой базы. Более Wized Readers могут помнить ртутную или подрывную деятельность, но каждый разработчик знаком с GIT, который наиболее широко используется сегодня как GitHub.

Первый фактор очень ясен: если есть «несколько кодовых баз, это не приложение; это распределенная система». Репозитории кода усиливают это: для приложения существует только одна кодовая база.

Итак, где мы сегодня? Абрамс объяснил: «Когда Героку был впервые создан, он не был очень распространен в использовании управления исходным кодом, особенно в команде. Теперь это стало стандартной практикой, и даже более того, такие платформы, как Github, позволили открыть и обмен проектами».

Поскольку GitHub стал фактическим стандартом в разработке программного обеспечения, парадигмы разработки также изменились. Обзоры кода и разрешения в настоящее время централизованы и стали неотъемлемой частью процесса развертывания. Код более безопасен, так как все изменения автоматически записаны (Dora Metrics FTW!), И могут быть установлены разрешения, чтобы позволить только конкретным членам команды выполнять обновления. автоматизация развертывания перешла от домашних сценариев к действиям GitHub, которые также рассматриваются и проверены командой.

Хероку также развивался и вырос с новыми парадигмами современных развертываний. Как объяснил Абрамс: «Первоначально ожидание было то, что вы сможете подтолкнуть Heroku Main, чтобы запустить ваше приложение. Но теперь с интеграциями GitHub вы можете подтолкнуть свой код в GitHub и построить запросы на вывод (PRS), и это создаст развертывание Heroku, чтобы вы могли проверить, что ваше приложение все еще работает».

Heroku также построил несколько библиотек с открытым исходным кодом, которые облегчают автоматизацию с помощью действий GitHub. Разделение вашего собственного экземпляра бегуна GitHub в Heroku дает вам самостоятельного бегуна для ваших автоматических рабочих процессов. Например, вы можете создать API API API Review API Heroku и развернуть приложения Heroku из вашего самостоятельного бегуна Github. Вы также можете загрузить свой частный исходный код Repo GitHub в Heroku с помощью Heroku Flow Decicts.

Фактор 2: зависимости

«Двенадцатифакторное приложение никогда не опирается на неявное существование общесистемных пакетов. Оно объявляет все зависимости полностью и точно, через декларацию зависимости».

Фактор номер два никогда не полагается на неявное существование пакетов. В то время как почти каждая существующая операционная система имеет установленную версию Curl, приложение на основе двенадцати факторных факторов не предполагает, что Curl присутствует. Скорее, приложение объявляет Curl как зависимость в манифесте.

Каждый разработчик скопировал код и пытался запустить его, только чтобы обнаружить, что в локальной среде отсутствует зависимость. Манифест зависимости гарантирует, что все необходимые библиотеки и приложения определяются и могут быть легко установлены при развертывании приложения на сервере.

«Одна из самых больших проблем в управлении зависимостями заключается в том, что он отличается на каждом языке — и это не только на языке; иногда это за рамки на языке», — сказал Абрамс. «Сборка Heroku позволяет пользователю управлять зависимостями так, как он хочет, и при этом получают созданный артефакт, легко запускать и управлять».

Количество внешних библиотек, доступных для разработчиков, взорвалось с тех пор, как было опубликовано двенадцать факторов. Это привело к еще одной проблеме: чрезмерная зависимость и потенциальные риски безопасности от сторонних библиотек. Широко распространенные события безопасности, такие как Log4j Zero Day и критическая уязвимость в OpenSsh, являются напоминаниями о том, что мы должны быть бдительными в наших развертываниях.

«Будьте осторожны с тем, чтобы привлечь зависимости», — посоветовал Абрамс. «Не приносите зависимости, когда функциональность проста; просто напишите это самостоятельно. Для более сложных функций выбирайте библиотеки, которые хорошо поддерживаются, имеют техническое обслуживание и выпуска, чтобы они могли справляться с уязвимостями безопасности по мере их появления».

Фактор 3: конфигурация

«Приложения иногда хранят конфигурацию в качестве константы в коде. Это нарушение двенадцати факторов, которое требует строгого отделения конфигурации от кода. Конфигурация существенно изменяется по развертываниям; код не имеет».

В большинстве приложений есть переменные окружающей среды и секреты, хранящиеся в файле .env, который не сохранен в репозитории кода. Файл .env настроен и развернут вручную для каждой ветви кода, чтобы убедиться, что правильное соединение происходит при тестировании, постановке и производстве. Независимо от управления учетными данными и связями для каждой среды, существует строгое разделение, и в окружающей среде меньше вероятность, чтобы случайно пересечь.

Для тестирования Heroku позволяет вам безопасно управлять вашей конфигурацией на разных этапах развертывания, используя панель инструментов или интерфейс командной строки (CLI), используя такую ​​команду, как конфигурация Heroku: set secret_token = test-secret.

Опираясь на первые три фактора

Первые три фактора образуют основание оставшихся девяти. Было показано, что они предсказуют — совет по -прежнему сохраняется так же сильно, как и в 2011 году.

Абрамс сказал: «Одна из самых удивительных вещей заключается в том, что у нас есть приложения, которые работали на Heroku в течение многих лет, и они устойчивы, потому что они следуют этим принципам. Не только двенадцать факторов облегчают нам эти приложения, но и сохраняют их устойчивыми и функционирующими, когда мы вносят изменения».

Для любого, кто создает устойчивую, поддерживаемую облачную инфраструктуру, «самое важное, чтобы вернуться назад и прочитать двенадцать факторов. Вы будете удивлены тем, насколько много остается… понятия по -прежнему имеют смысл сегодня. Если вы не следите за ними, у вас будет приложение, которое не в порядке и трудно поддерживать», — заключил Абрамс.

Если вы хотите узнать больше, пожалуйста, ознакомьтесь с этими дополнительными ресурсами:

  • 12 фактических приложений с палубой Spring Boot Tech
  • Двенадцатифакторный манифест на GitHub

Heroku-это всеобъемлющий PAAS (услуга платформы как AS-A), предназначенная для того, чтобы помочь компаниям создавать, доставлять, мониторировать и масштабировать приложения. Хероку позволяет командам сосредоточиться на том, что важно — приложения и услуги, которые управляют их бизнесом. Узнайте больше последних из Heroku Trending Stories youtube.com/thenewstack Tech Moving быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Даг — ученик и педагог на всю жизнь, сосредоточив свою карьеру на улучшении знаний и опыта разработчика. Эксперт по разработчику Google для Интернета, автор O’Reilly, международный докладчик и плодовитый блоггер, он наслаждается упрощением комплекса. Когда … читайте больше от Дуга Силлара

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *