Использование OTP / Erlang как части компонентной архитектуры веб-приложения

У меня есть приложение Erlang / OTP, которое выполняет некоторую бизнес-логику. Оно написано на Erlang в основном для обеспечения отказоустойчивости, потому что я могу легко перезапустить один из вышедших из строя компонентов системы (самое важное требование - высокое время безотказной работы). Каждый из его компонентов выполняет определенные «параллельные» вычисления.

В результате одного рабочего цикла приложение формирует список значений. Назовем это приложение Erlang / OTP «серверной частью».

Это приложение Erlang / OTP также будет использовать сервер PostgreSQL для хранения результатов в постоянном хранилище и для хранения дополнительной метаинформации, необходимой для его вычислений (еще не реализовано).

Затем мне нужно добавить интерфейс к этому приложению Erlang / OTP - простое веб-решение, которое может обслуживать веб-пользователя: принять от него / нее запрос на вычисления, попросить серверную часть выполнить вычисления и вернуть пользователю результат из серверной части.

Нет требований к масштабируемости, я думаю, что максимальное количество пользователей в день может быть не более 1000.

Итак, моя текущая задача сейчас - реализовать общий интерфейс для моего внутреннего Erlang / OTP. приложение (общее означает, что у меня есть типичный вариант использования: зайти на сайт, зарегистрироваться, войти в систему, использовать приложение, получить результат на красивой веб-странице, которая выглядит ajax'y, выйти из системы).

С одной стороны, я знаю, что повторное использование кода может сэкономить мне много времени: например, с помощью Ruby on Rails я могу бесплатно получить аутентификацию пользователя, хранилище паролей, интерфейсы ajax и многое другое.

С другой стороны, я ничего не знаю о разработке приложения, которое включает в себя внутреннюю часть сервера баз данных Erlang / OTP + PostgreSQL и веб-фреймворк (RoR, Django и т. Д.) В качестве внешнего интерфейса.

У меня возникает множество вопросов: должен ли Erlang / OTP и веб-фреймворк использовать одну и ту же базу данных PostgreSQL для совместного использования результата? Как лучше всего отправить запрос на вычисление из веб-фреймворка в приложение Erlang / OTP и получить его обратно? Как контролировать сервер PostgreSQL - на него не распространяется отказоустойчивость OTP?

Вообще говоря, у меня есть несколько разнородных программных компонентов, и я хочу построить из них рабочую систему («главный» компонент - это приложение Erlang / OTP).


С чего мне начать с этой задачей? Можете ли вы дать мне совет или подсказать, какие ресурсы читать?

P.S. Я пытался прочитать это и переходил по ссылкам, но мало что понял.

UPD: Я знаю, что Chicago Boss и другие веб-фреймворки на Erlang действительно существуют, но я сомневаюсь, что у кого-то из них есть такая зрелая среда, яркое сообщество и огромное разнообразие различных плагинов и библиотек, таких как, например, Ruby on Rails, Django или любой фреймворк MVC на основе PHP. Верно?

UPD2: Возможно, мне нужно уточнить это глубже: мне также нужно, чтобы интерфейс был как можно более удобным в обслуживании.Выполнение этого в Erlang означает, что я могу столкнуться с проблемами при поиске подходящих разработчиков для его поддержки; выполнение этого в RoR, Django и т. д. означает, что я могу легко найти рабочую силу для поддержки интерфейса и его развития.

8
задан skanatek 23 December 2011 в 09:44
поделиться