Verwendung von OTP / Erlang als Teil der komponentenbasierten Architektur einer Webanwendung

8

Ich habe eine Erlang / OTP-Anwendung, die einige Geschäftslogik ausführt. Es ist in Erlang meistens wegen Fehlertoleranz geschrieben, weil ich eine der abgestürzten Komponenten des Systems einfach neu starten kann (hohe Verfügbarkeit ist die wichtigste Voraussetzung). Jede seiner Komponenten führt eine Art von spezifischen "parallelen" Berechnungen durch.

Als Ergebnis eines Arbeitszyklus erzeugt die Anwendung eine Liste von Werten. Lassen Sie uns diese Erlang / OTP-Anwendung ein "Back-End" nennen.

Diese Erlang / OTP-Anwendung würde auch einen PostgreSQL-Server verwenden, um die Ergebnisse im persistenten Speicher zu speichern und zusätzliche Metainformationen zu speichern, die für ihre Berechnungen benötigt werden (noch nicht implementiert).

Als nächstes muss ich dieser Erlang / OTP-Anwendung ein Front-End hinzufügen - eine einfache webbasierte Lösung, die einem Web-Benutzer dienen kann: eine Anfrage für Berechnungen von ihm annehmen, das Back-End bitten die Berechnungen und geben Sie dem Benutzer das Ergebnis aus dem Back-End zurück.

Es gibt keine Skalierbarkeitsanforderung, ich denke, dass die maximale Anzahl von Benutzern pro Tag nicht mehr als 1000 sein kann.

Meine derzeitige Aufgabe besteht nun darin, ein gemeinsames Front-End für meine Erlang / OTP-Anwendung im Backend zu implementieren (das bedeutet, dass ich einen typischen Anwendungsfall habe: die Site besuchen, sich registrieren, einloggen, die App nutzen, abrufen) das Ergebnis auf einer schönen ajaxyy Web-Seite, abmelden).

Auf der einen Seite weiß ich, dass die Wiederverwendung von Code mir viel Zeit sparen kann: Ich kann zum Beispiel mit Ruby on Rails Benutzerauthentifizierung, Passwortspeicherung, Ajax-Schnittstellen und vieles mehr kostenlos erhalten.

Auf der anderen Seite weiß ich nichts über die Entwicklung einer Anwendung, die ein Erlang / OTP + PostgreSQL-Datenbank-Server-Backend und ein Web-Framework (RoR, Django usw.) als Front-End enthält.

>

Mir fallen viele Fragen ein: Sollten Erlang / OTP und das Web-Framework die gleiche PostgreSQL-Datenbank benutzen, um das Ergebnis zu teilen? Was ist der beste Weg, um eine Berechnungsanforderung vom Web-Framework an die Erlang / OTP-Anwendung zu senden und zurück zu bekommen? Wie beaufsichtige ich den PostgreSQL-Server - er ist nicht durch die Fehlertoleranz von OTP abgedeckt?

Im Allgemeinen habe ich ein paar heterogene Softwarekomponenten und ich möchte daraus ein funktionierendes System aufbauen (die 'Hauptkomponente' ist die Erlang / OTP-Anwendung).

Wo soll ich mit dieser Aufgabe anfangen? Können Sie mir einen Rat geben oder einen Hinweis, welche Ressourcen Sie lesen sollten?

P.S. Ich habe versucht, dies zu lesen und den Links zu folgen, habe aber nicht viel verstanden.

>

UPD: Ich weiß, dass Chicago Boss und andere Erlang-Web-Frameworks existieren, aber ich bezweifle, dass sie eine so ausgereifte Umgebung, lebendige Community und große Variabilität verschiedener Plugins und Bibliotheken haben zum Beispiel Ruby on Rails, Django oder ein PHP-basiertes MVC-Framework. Recht?

UPD2: Vielleicht muss ich noch genauer darauf eingehen: Ich brauche auch das Front-End, um so wartbar wie möglich zu sein. In Erlang zu arbeiten bedeutet, dass ich Probleme haben könnte, die richtigen Entwickler zu finden, um sie zu erhalten. Wenn ich es in RoR, Django usw. mache, kann ich leicht Arbeitskräfte finden, um das Front-End zu erhalten und es wachsen zu lassen.

    
skanatek 21.12.2011, 22:15
quelle

2 Antworten

4

Zuerst gibt es einen Erlang PostGreySQL Client hier: Ссылка . Eine andere Sache ist, dass Sie vielleicht ZOTONIC ausprobieren möchten. Es ist ein CMS in Erlang geschrieben, aber es ist auch ein Web-Framework. Eines seiner Merkmale ist, dass die PostGreySQL-Datenbank sehr gut integriert ist und alle Erlang-Anwendungen hinter Zotoniuc davon profitieren würden. Es ist sehr gut bei der Entwicklung von MVC oder Event-gesteuerten Web-Apps.

Vielleicht möchten Sie auch Nitrogen Web Framework und Chicago Boss , die auch Web-Frameworks für Erlang Web-Apps sind. Ich habe persönlich Erlang-Web-Apps mit Stickstoff, Yaws und Mnesia als komplettes Set entwickelt. Ein sehr schöner Vorteil ist, dass Sie mehrere Erlang-Anwendungen hinter diesem Technologie-Stack haben können. Yaws Webserver mit seinen Appmods und dynamische Content-Serving-Fähigkeit (so RESTFUL Ich kann Ihnen das versichern), es hat unsere JavaScript Driven Frontend Web Apps mit solch erstaunlicher Schlichtheit und Schönheit befähigt, Dienstleistungen von einer Reihe von mehreren Erlang Anwendungen zur Verfügung zu stellen

Wenn Sie ein schnelles Web-Frontend mit Ajaxy / HTML5-ähnlichen Funktionen haben möchten, dann beeilen Sie sich, schnell! und nimm dir das Stickstoff-Web-Framework . Da Sie bereits Erlang Programmer sind, wird dies für Sie schnell gehen. Mit Templating können Sie HTML4.X / HTML5 Templates schreiben oder eine Webseite Maker / Studio Software Vorlagen für Sie erstellen. Dann zeigst du später Stickstoff wo du herkommst und verbinde deine Erlang Backends mit dynamischen Seiten mit Hilfe von dynamisch generierten JQuery Code aus Ihrem Erlang Code.

Sie finden die Dokumentation sehr einfach. Stickstoff ist nur eine Sammlung von Erlang Records, wobei jede Platte für einen HTML-Tag steht. Andere Datensätze werden zum Definieren von Effekten und Ereignissen verwendet, die in Ihre Erlang-Anwendung zurückgeschrieben werden. Die Entwicklung von Web-Interface in Stickstoff ist so schnell. Tatsächlich können Sie mit dem dynamisch generierten JQuery -Code Ihr eigenes JavaScript in das Template schreiben, um die gesamte Funktionalität zu unterstützen mit einer anderen JavaScript-Bibliothek wie EXT JS oder MooTools oder Prototyp js >. In der Vorlage werden Sie darauf hingewiesen, wo Stickstoff die dynamisch generierten HTML-Elemente sowie JQuery rendern soll, die "AJaxically" auf diese Elemente wirken. Eine Vorlage bedeutet in diesem Fall einfach eine HTML-Seite.


Denken Sie daran, ein Mitglied seiner Mailingliste zu werden, um weitere Hilfe zu finden und weitere Fragen zu StackOverflow zu stellen. Willkommen in der Welt von Erlang Web Development. Einige verschiedene Links, an denen Sie interessiert sein könnten (
IEEE-Papier zur Webentwicklung in Erlang , Erlang-Webframework ,
erlydtl - Erlang Django gefällt Templating-Implementierung , ,
< b> ErlyWeb Framework

) Erfolg!


BEARBEITEN
Was Sie jetzt sagen, ist tatsächlich wahr. Entwickler zu finden, um es zu erhalten, wäre eine Aufgabe. , wie ich bereits erwähnt habe, ist jedoch ein vollwertiges (Web) CMS wie Joomla oder Wordpress etc Damit können Sie selbst die Site / Anwendung verwalten / pflegen.

Sie können jedoch auch das Web-Frontend mit Django oder Ruby on Rails entwickeln, aber Secure Services mit JSON-formatierten Daten zu Mochiweb von Ihrer Webfront. Dann verwenden Sie Mochijson2.erl , das mit mochiweb kommt, Sie analysieren den JSON und übersetzen ihn in Anfragen, Methoden und Argumente in Ihrem Erlang Back-End. Dies würde in beiden Richtungen geschehen, dh Sie würden Anfragen an Ihre Erlang-Anwendungen stellen, die zurückgegebenen Ergebnisse erhalten und sie als JSON-Daten rendern. Mochiweb ist das leistungsstarke Tool, das jedes Erlang Back End mit jeder Web-Technologie verbinden kann die Front mit Service / RESTFul Model. Sein einfaches und leichtes Gewicht.Seine schnelle und alles braucht es Sie es zeigen POST welche Methoden zu behandeln, GET, PUT e.t.c HTTP-Anfragen, und es wäre für das Senden zurück auf die Ergebnisse warten. Mochiweb wurde in sehr vielen Erlang-Systemen, z.B. Couch DB (eines der fortschrittlichsten NoSQL-DBMS, das die Art verändert, wie wir das Web und die SOA-Systeme verstehen) und all diese anderen Systeme wie Membase Single Server , Große Couch / Cloudant , usw Du könntest jemanden sehen, der Mochiweb in Aktion setzt hier dann hier und schließlich hier .

Django, Verdreht, PHP oder Ruby on Rails-Frameworks JSON-Anfragen machen und JSON Antworten von Erlang Backends angetrieben durch Mochiweb erwarten. Eine weitere großartige RESTful-Schnittstelle für Erlang-Web-Back-Ends ist Misultin , die sogar Web-Sockets unterstützt und wird manchmal gefürchtet, die schnellste / oder am schnellsten reagierende Erlang HTTP Bibliothek zu sein :)

Nach meiner Erfahrung habe ich mit PHP Gurus, JavaScript Gurus e.t.c. aber wir finden die Entwicklung billiger, wenn wir unseren Webserver als yars mit einem Service Orientierte Modell JSON-Anfragen mit und Antworten aus beiden Richtungen. In diesem Fall sind wir auf Erlang Verfügbarkeit und Fehlertoleranz verlieren DONot und durch die Art und Weise, können Sie viele Anfragen, um so viele verteilen Erlang-Server, auch wenn sie versteckt sind in verschiedenen Teilnetzen von Domains unter Verwendung von JSONP , das von allen JavaScript- und / oder Front-Web-Frameworks unterstützt wird. Ich rate Ihnen dringend, Mochiweb oder Misultin vor Ihr erlang Backend zu stellen und zu entscheiden, welches Web-Framework Sie für Anfragen im JSON-Format (oder sogar XML, das Sie mit erlsom , laden Sie es hier ). Ich hoffe, du bekommst, was ich vorschlage. Erfolg!!!     
Muzaaya Joshua 22.12.2011, 06:54
quelle
1

Sie könnten Ihr Frontend auch in erlang implementieren, indem Sie jedes verfügbare Web-Framework verwenden. Führen Sie Front-End und Back-End in separaten Erlang-Knoten mit erlang RPC für die Kommunikation zwischen ihnen.

    
ILYA Khlopotov 22.12.2011 02:09
quelle