2011-12-21 11 views
8

私はいくつかのビジネスロジックを行うErlang/OTPアプリケーションを持っています。システムのクラッシュしたコンポーネントの1つを簡単に再起動できるので、Erlangで書かれています(高い稼働時間が最も重要な要件です)。 それぞれのコンポーネントは、ある種の特定の「並列」計算を行います。Webアプリケーションのコンポーネントベースのアーキテクチャの一部としてOTP/Erlangを使用する

1回の作業サイクルの結果、アプリケーションは値のリストを生成します。このErlang/OTPアプリケーションを「バックエンド」と呼ぶことにしましょう。

このErlang/OTPアプリケーションでは、PostgreSQLサーバを使用して結果を永続ストレージに保存し、計算に必要な追加のメタ情報(まだ実装されていません)を保存します。

次へ私はこのErlang/OTPアプリケーションにフロントエンドを追加する必要があります。これはウェブユーザーに役立つシンプルなWebベースのソリューションです。そのユーザーからの計算要求を受け入れ、バックエンドに計算を行い、バックエンドからの結果をユーザーに返します。何のスケーラビリティの要件はありません

、私は一日あたりのユーザーの最大数がこれ以上

1000よりだから私の現在のタスクが今、私のバックエンドのErlangのための共通のフロントエンドを実装することであることができると思います/ OTPアプリケーション(私は典型的なユースケースを持っていることを意味します:サイトを訪問し、登録し、ログインし、アプリケーションを使用して、素晴らしいajax'yのWebページを見て、ログアウトします)。

私は、コードの再利用により多くの時間を節約できることを知っています。例えば、Ruby on Railsでは、ユーザー認証、パスワードストレージ、Ajaxインターフェイスなど多くのものを無料で手に入れることができます。

私はErlang/OTP + PostgreSQL dbサーバのバックエンドとフロントエンドとしてのWebフレームワーク(RoR、Djangoなど)で構成されるアプリケーションの設計については何も知らない。

私は多くの質問が湧き出ます:Erlang/OTPとWebフレームワークは同じPostgreSQLデータベースを使用して結果を共有する必要がありますか? WebフレームワークからErlang/OTPアプリケーションに計算リクエストを送信して戻す最良の方法は何ですか? PostgreSQLサーバをどのように監督しますか?OTPのフォールトトレランスの対象にはなりません。

一般に、私はいくつかの異種ソフトウェアコンポーネントを持っており、それらから作業システムを構築したいと考えています( 'チーフ'コンポーネントはErlang/OTPアプリケーションです)。


ここから始めてください。どのようなアドバイスやヒントを読んでもらえますか?

P.S.私はthisを読んで、リンクをたどろうとしましたが、あまり理解しませんでした。

UPD:私はシカゴのボスや他のErlangのWebフレームワークが存在しないことを知っているが、私はそれらのいずれかがこのような成熟した環境、活気に満ちた地域社会例えばルビーのようなさまざまなプラグインやライブラリの巨大な多様性を持っていることを疑いますRails、Django、またはPHPベースのMVCフレームワークです。右?

UPD2:おそらく私はこのことについて詳しく説明しなければならないかもしれません。フロントエンドができるだけ保守可能である必要があります。 Erlangでそれを行うということは、それを維持するための適切な開発者を見つける際に問題に直面する可能性があることを意味します。 RoR、Djangoなどでやっていることは、フロントエンドを維持して成長させるための作業力を簡単に見つけることができることを意味します。

+0

私は私の答えも編集しました。回答の更新を確認してください。ありがとうございました –

答えて

4

まず、Erlang PostGreySQLクライアントがあります:https://github.com/wg/epgsqlです。もう1つは、ZOTONICをチェックアウトすることです。 Erlangで書かれたCMSですが、Webフレームワークでもあります。その特徴の1つは、PostGreySQLデータベースを非常によく統合しているため、Zotoniucの背後にあるすべてのErlangアプリケーションがこのメリットがあるということです。 MVCやイベントドリブンのWebアプリケーションを開発するときは非常に良いです。

また、あなたはまた、ErlangのWebアプリケーションのためのWebフレームワークですNitrogen Web FrameworkChicago Bossをチェックアウトすることができます。私は個人的には、完全なセットとして、窒素、ヨーとMnesiaを使用してErlangのWebアプリケーションを開発している。 1つの非常に優れた利点は、このテクノロジースタックの背後にいくつかのErlangアプリケーションを持つことができることです。そのAppmodsdynamic Content Serving abilityとイチゴ腫のWebサーバー(そうRESTFUL私はあなたをすることを保証することができます)、それはいくつかのErlangアプリケーションの束からサービスを提供し、私たちのJavaScriptは、このような驚くべきシンプルさと美しさをフロントエンドWebアプリケーションを駆動力を与えています。

高速WebフロントエンドをAjaxy/HTML5のような機能で使用したい場合は、急いで、すばやく!あなたの自己をつかみなさいNitrogen Web Framework。あなたはすでにErlang Programmerですから、これはあなたにとってとても速いでしょう。テンプレートを使用すると、HTML4.X/HTML5テンプレートを作成するか、Web page Maker/Studio Softwareを使用してテンプレートを作成できます。その後、あなたはどこに来るのかを窒素で表示し、Erlangバックエンドを動的に生成した素晴らしいページにバインドします。JQueryあなたのErlangコードからコードが生成されます。

ドキュメントは非常に簡単です。窒素はErlangレコードのコレクションであり、各レコードはHTMLタグを表します。 ErlangアプリケーションにPOSTされるエフェクトやイベントを定義するために、他のレコードが使用されます。窒素でWeb美しいインターフェイスを開発することはとても速いです。 Infactはは、動的に生成さJQueryコードで、あなたは全体の機能性を伴うために、テンプレートに独自のJavaScriptを書くことができEXT JS、またはMooToolsまたはprototype jsのような他のJavaScriptライブラリを利用して、言います。テンプレート内では、Nitrogenが動的に生成されるHTML要素と、これらの要素に「AJaxically」作用するJQueryをレンダリングする場所を指摘します。この場合のテンプレートは単にHTMLページを意味します。


もっと援助を探して、StackOverflowでこれ以上の質問をし続けるためにメーリングリストのメンバーになることを忘れないでください。 Erlang Web Developmentの世界へようこそ。あなたが成功(
IEEE Paper on Web Development in Erlang
Erlang Web Framework
erlydtl - Erlang Django like Templating Implementation
ErlyWeb Framework
)に興味があるかもしれないいくつかのいくつかのリンク!



今EDIT
は、あなたが言うことを実際に本当です。それを維持するための開発者を見つけることが課題になります。しかし、私が以前に述べた Zotonicは、JoomlaまたはWord Press e.t.cのようにフルハンドの(Web) CMSです。あなた自身で、実際にサイト/アプリケーションを管理/維持することができます。

しかし、DjangoやRuby on Railsを使用してWebフロントを開発することもできますが、JSON形式のデータを使用してSecure Servicesを作成すると、Webフロントの Mochiwebになります。次に、mochiwebに付属の Mochijson2.erlを使用して、JSONを解析し、Erlangバックエンドのリクエストまたはメソッドと引数に変換します。これは両方向、つまりErlangアプリケーションにリクエストを行い、返された結果を取得してJSONデータとしてレンダリングします。

Mochiwebは、サービス/ RESTFulモデルを使用して、あらゆるErlangバックエンドを前面のあらゆるWebテクノロジーとインターフェースできる強力なツールです。シンプルで軽量です。速く、必要なのは、POST、GET、PUT e.t.c HTTPリクエストを処理するメソッドを指すことです。返信の結果を待つことになります。 Mochiwebは非常に多くのErlangシステムで使用されています。 Couch DB(WebとSOAシステムを理解する方法を変える最先端のNoSQL DBMSの1つ)、および Membase Single Server Big Couch/Cloudant、e.t.cあなたは実際に餅ウェブを入れている誰かを見ることができました here,と lastly here

Django、Twisted、PHP、またはRuby on RailsフレームワークはJSONリクエストを行い、Mochiwebが提供するErlangバックエンドからのJSON応答を期待しています。 Erlang Web Back-endsのもう一つの素晴らしいRESTfulインターフェイスは Misultinで、Web Socketsをサポートしていても、最も速く/最も反応のよいErlang HTTPライブラリとなることがあります:)

私の経験上、私はPHP gurus、JavaScript指導者などWebサーバーを yawsとして Service Oriented Modelと指定すると、両方のDirectionsからのJSON要求と応答を使用して開発を行うほうが安くなります。この場合、Erlangの可用性とフォールトトレランスを失うことはありません.を使用して、さまざまなErlang Serverが異なるサブネットネットに隠されていても、多数のErlang Serverに多くのリクエストを行うことができます。またはフロントWebフレームワーク。 MochiwebやMisultinをErlangバックエンドの前に置いて、JSON形式(または、 erlsomを使用して解析するXMLでも、 here)を使用してリクエストするWebフレームワークを選択することを強くお勧めします。私はあなたが何を示唆しているかを得ることを望む。成功!!!

+1

ありがとう!私は少し質問を更新しました。 – skanatek

+0

あなたの答えは本当に素敵な編集でした!私は「JSON形式のデータを使ってMochiwebにセキュアなサービスを提供する」についてより詳しく知ることができるソースを参照してください。私はMochiwebが何であるか知っていますが、私はMochiwebに関連してSecure Servicesについて聞いたことがありません。 – skanatek

1

ご利用のweb frameworkを使用して、erlangでフロントエンドを実装することもできます。別々のerlangノードでフロントエンドとバックエンドを実行するには、それらの間の通信にerlang RPCを使用します。

関連する問題