Sascha Möllering Amazon Web Services

Mithilfe des AWS SDKs für Java können auf Scala und Akka basierende Microservices einfach AWS-Services wie Amazon Kinesis Firehose nutzen.

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, dem AWS SDK für Java, Docker, Amazon EC2 Container Service (ECS) und Amazon EC2 Container Registry (ECR) 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 zu schreiben. Diese Infrastrukturkomponente nimmt Nachrichten auf und kann diese in Amazon S3 oder Amazon Redshift 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 aufzusetzen, einen Benutzer für das AWS Identity and Access Management (IAM) anzulegen, die API Credentials zu sichern und das AWS Command Line Interface (CLI) korrekt aufzusetzen.

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 strukturierter 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 und Traits. Der Kern unserer Applikation besteht aus einem Akka-Aktoren, der Daten in Form von JSON in Amazon Kinesis Firehose schreibt.

Amazon Kinesis Firehose

Amazon Kinesis Firehose ist ein Service, um Streamingdaten in AWS zu laden. Ziele für die Daten können entweder Amazon S3 oder Amazon Redshift sein. Dieser Service kann Daten auch vor dem Laden bündeln, komprimieren und verschlüsseln, um die Sicherheit zu erhöhen und den benötigten Speicherplatz zu minimieren.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 6.16 - "Der glückliche Java-Entwickler"

Alle Infos zum Heft
243263Cloud/Docker-Entwicklung mit Scala in AWS
X
- Gib Deinen Standort ein -
- or -