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.
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!
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.
Tags und Links frontend architecture erlang backend otp