Eine beispielhafte App-Architektur

AWS, Scala, akka, Play, MongoDB und Elasticsearch
Kommentare

Was erhält man, wenn man AWS, Scala, akka, Play, MongoDB und Elasticsearch kombiniert? – Zum Beispiel einen Social Music Service.
Rotem Hermon zeigt in einem Blog-Post am Beispiel der App serendip.me, wie man den Service AWS, die Sprache Scala, das Tool akka, das Framework Play, die Datenbank MongoDB und die Plattform Elasticsearch gemeinsam nutzen kann und wo die Stärken liegen.

Das App-Beispiel zeichnet sich zunächst einmal dadurch aus, dass es eine große Menge an Daten bewältigen muss. Daher stand gleich zu Beginn bei der zentralen Frage, welche Sprache und Technologien man verwenden wolle, mit im Raum, dass hohe Skalierbarkeit erreicht werden können muss.

Serendip läuft auf AWS und das Stack setzt sich wie folgt zusammen:

Die JVM bot sich an, da sie bekannt für ihre Performance und ihr Tooling ist. Als Teil des JVM-Ökosystems hob sich Scala als interessante Sprach-Option ab, da sie einen modernen Ansatz des Codeschreibens bietet und gleichzeitig volle Interoperabilität mit Java ermöglicht. Außerdem ergibt Scala eine runde Sache mit dem akka actor Framework, das sich für eine Stream Processing-Infrastruktur anbot. Play diente als Web Framework.

MongoDB als Multi-Player

MongoDB hatte diverse Vorteile, u.a. sein Feature Set und die Möglichkeit der Skalierung via Auto-Sharding. Im konkreten App-Beispiel stellte sich heraus, dass die Art, wie man Daten nutzen und abfragen wollte, es erforderte, eine große Anzahl von Indizes erforderte, um Performance und Memory Issues zu erreichen. Somit wurde MongoDB hauptsächlich als Key-Value Document Store verwendet. Wie sich herausstellte, eignet es sich dafür sehr gut. Um Daten abzufragen, wurde zusätzlich ein System benötigt, das umfassende Such-Möglichkeiten bietet. Die Open-Source-Lösung ElasticSearch  entpuppte sich als besonders skalierbar und cloud-orientiert. Ihr dynamischen Indexing-Schema und die vielen Suchoptionen erlaubten es, viele Features darauf aufzubauen und machen sie zu einer der zentralen Komponenten der Architektur.

Monitoring und Deployment

Für das Monitoring und Alerting wurde ServerDensity eingesetzt. Es ist verhältnismäßig bezahlbar und liefert Server- und MongoDB-Monitoring Out of the Box sowie einige andere Features.

Das Management der Server und Deployments wird mit Amazon Elastic Beanstalk (AWS‘ limitierte PaaS-Lösung) durchgeführt, was sich einfach vollführen lässt. Auch wenn es nur über Basis-Funktionen verfügt, sind diese aus Hermons Sicht für die meisten Anwendungsfälle völlig ausreichend.  

Genaue Zahlen, was die Serendip-App leistet sowie eine Beschreibung, wie der Feed gebaut wurde, findet ihr ebenfalls in Rotem Hermons Blog-Artikel.

Unterm Strich kann Hermon folgende Lehren aus diesem App-Projekt weitergeben:

  • Skalierbarkeit Auch wenn eine Skalierung nicht ab dem ersten Tag von Nöten sein sollte, ist es doch wichtig, von vornherein ein System aufzubauen, das durch und durch skalierbar ist.
  • Bereit für Peaks Auf Peaks sollte man immer vorbereitet sein, denn sie können jederzeit eintreffen, und wenn man immer am Limit läuft, wird man sie nicht auffangen können.
  • Die richtige Sprache Bei der Wahl der Technologien sollte man sichergehen, dass diese Native Clients in der verwendeten Sprache haben oder zumindest solche, die aktiv gepflegt werden.
  • Hypes vertrauen Viele der hier verwendeten Technologien standen bei ihrem Einsatz noch ganz am Anfang, haben sich aber mit der App weiterentwickelt. Eine aktive Community und ein gewisser Medien-Hype können durchaus Garanten dafür sein, dass eine Technologie „überleben“ wird.
  • Hypes nicht vertrauen Es kann durchaus hilfreich sein, kritische Kommentare über eine Technologie in Betracht zu ziehen, da sie die Schwächen aufzeigen. Allerdings sind diese auch mit Vorsicht zu genießen, da die Rufe immer dann besonders laut werden, wenn etwas nicht zu 100 Prozent die Erwartungen erfüllt – was aber nicht automatisch bedeuten muss, dass es völlig nutzlos ist.
  • Spaß haben Man sollte Technologien wählen, die begeistern.

 

Aufmacherbild: Illustration of SOA on curl paper and represented with different layer like application, process,messaging layer components and shown with sketch, pencil drawing von Shutterstock / Urheberrecht:Vallepu

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -