Erlang Release Best Practices? - PullRequest
       9

Erlang Release Best Practices?

4 голосов
/ 26 марта 2011

Я новичок в Erlang, и я проверял Faxien + Sinan и Rebar, и основная философия Erlang OTP заключается в том, чтобы устанавливать приложения и выпуски в одном экземпляре образа Erlang. Каковы наилучшие практики для сохранения релизов самодостаточными? Есть ли способ упаковать релизы так, чтобы вам не приходилось изменять сайт для машин, на которых вы развертываете? Как насчет сбора всех зависимостей в кодовую базу для управления?

Возможно, я иду вразрез ... Я пришел из Java, и философия "ничего не предустановлено, кроме JVM" выглядит совсем иначе.

Ответы [ 2 ]

3 голосов
/ 27 марта 2011

ИМХО, на это нельзя ответить в нескольких предложениях.Вам необходимо прочитать некоторые части прилагаемой документации, особенно " Системная документация Erlang / OTP " (otp-system-documentation-XYZpdf, с номером версии XYZ), или взглянуть на книгу« Erlang и OTP в действии », поскольку в этой книге есть «один» пример «службы» с разными «частями» из первых шагов, использующих концепции Erlang / OTP и, наконец, построение «релиза».

ИМХО, на данный момент это лучшая книга, потому что она не только знакомит с Erlang, но и показывает, что такое OTP и как OTP используется для проекта.И это не просто набор свободных образцов, но все построено вокруг одного проекта.

1 голос
/ 27 марта 2011

Я опишу подход, который в настоящее время работает для меня для регулярных (часто ежедневных) выпусков для небольшого числа экземпляров на EC2:

  1. Я настроил свой проект с rebar и проверил его вgithub.
  2. Все мои зависимости перечислены в моем файле rebar.config (они тоже на github).
  3. Мой Makefile выглядит так же, как я описал здесь .
  4. В моем образе EC2 только стандартная сборка erlang и никаких других библиотек по умолчанию не установлено.
  5. Чтобы создать новый узел, я запускаю экземпляр, клонирую свой репозиторий git и запускаю make.Это извлечет мои зависимости и соберет все.
  6. Чтобы обновить мой код, я делаю git pull и rebar update-deps.В зависимости от того, что изменилось, я могу перезапустить узел или, довольно часто, я присоединяюсь к работающему узлу и перезагружаю обновленные модули.Это помогает запускать и прикреплять сценарии как часть вашего проекта.

Может быть полезно посмотреть, как упакован такой проект, как webmachine .

Я не знаю много о стандартной системе управления релизами OTP, кроме того, что это выглядит как большая работа.Поскольку это, кажется, противоречит быстрому развертыванию, я никогда не делал серьезных попыток - хотя я уверен, что это имеет смысл для других проектов.

...