© Excellent backgrounds/Shutterstock.com
Dockerized Scala-Applikationen in AWS

Schritt für Schritt in die Cloud


Der Schlüssel zu hochskalierbaren Architekturen liegt in der Entkopplung der funktionalen Teile einer Applikation. Diese funktionalen Teile können als Microservices implementiert werden, also Einzelkomponenten, die lediglich einen Zweck erfüllen und – im Kontext ­einer Event-driven Architektur – auf Events reagieren. Möglich macht das eine Kombination aus Scala, Akka, Docker und Amazon Web Services.

In diesem Artikel wird beschrieben, wie Microservices auf Basis von Scala, Akka, Scalatra [1], dem AWS SDK für Java [2], Docker, Amazon EC2 Container Service (ECS) [3] und Amazon EC2 Container Registry (ECR) [4] gebaut werden können. Unsere Beispielapplikation in diesem Artikel nutzt das AWS SDK für Java, um Daten, die an die Anwendung gesendet werden, nach Amazon Kinesis Firehose [5] zu schreiben. Diese Infrastrukturkomponente nimmt Nachrichten auf und kann diese in Amazon S3 [6] oder Amazon Redshift [7] ablegen. In unserem Beispiel ist ein Amazon S3 Bucket das Ziel der Daten, die in den Amazon Kinesis Firehose Stream geschrieben werden. Für das Nachvollziehen des Beispiels in diesem Artikel ist es notwendig, ein AWS-Konto [8] aufzusetzen, einen Benutzer für das AWS Identity and Access Management (IAM) anzulegen [9], die API Credentials zu sichern [10] und das AWS Command Line Interface (CLI) korrekt aufzusetzen [11].

Sicherheit in AWS

AWS gibt Entwicklern und Administratoren Werkzeuge und Best Practices an die Hand, um Accounts zu schützen. Die wichtigsten Best Practices sind:

  • root-Account sichern

  • Multi-Factor Authentication nutzen

  • Amazon S3 Bucket sichern, der AWS-CloudTrail- und Billing-Daten enthält

  • AWS CloudTrail aktivieren (regionsbezogen)

  • Adminrollen mit eingeschränkten Rechten erstellen

  • temporäre Security Credentials mit AWS Security Token Service nutzen

  • IAM-Rollen für Amazon EC2 verwenden

  • ein- und ausgehenden Traffic von Amazon-EC2-Instanzen mit klar strukturierten Security Groups kontrollieren

Die Basis: Scala, Akka und das AWS Java SDK

Der Zugriff auf Java-Klassen von Scala aus ist kein Problem. Wir können das AWS SDK für Java also ohne Einschränkungen für unsere Beispielapplikation nutzen. Für die Rückrichtung gilt das leider nicht, da Scala einige Sprachfeatures besitzt, die nicht direkt auf Java übertragen werden können. Beispiele hierfür sind Function Types [12] und Traits [13]. Der Kern unserer Applikation besteht aus einem Akka-Aktoren, der Daten in Form von JSON in Amazon Kinesis Firehose schreibt. Der Quellcode für das Beispiel i...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang