In der modernen Softwareentwicklung sind skalierbare und effiziente Backend-Lösungen enorm wichtig. Amazon Web Services, kurz AWS, ist eine umfassende und weit verbreitete Cloud-Plattform, die eine Menge Infrastruktur- und Plattformdienste anbietet. Das Backend unserer Projekte arbeitet deshalb vollständig mit den beiden AWS-Diensten AWS Lambda und der No-SQL-Datenbank Dynamo DB.
Was ist AWS Lamda?
AWS Lambda ist ein Serverless-Computing-Dienst von Amazon Web Services (AWS), der es ermöglicht, Code auszuführen, ohne das man sich selbst um Server kümmern muss. Man kann Lambda-Funktionen erstellen und hochladen, die dann skalierbar und flexibel ausgeführt werden. Die Funktion kann verschiedene Aufgaben ausführen, wie in unserem Fall die Kommunikation zwischen Frontend und Backend.
Wie funktioniert AWS Lambda?
AWS Lambda führt deine Funktionen in isolierten Containern aus. Sobald du eine Funktion startest, stellt AWS automatisch die benötigte Rechenleistung (RAM und CPU) bereit und skaliert sie dynamisch. Du zahlst nur für die tatsächlich genutzte Rechenzeit und den Speicherverbrauch.
Die No-SQL Datenbank DynamoDB
Amazon DynamoDB ist eine vollständig gemanagte NoSQL-Datenbank mit hoher Skalierbarkeit und Geschwindigkeit. Sie eignet sich besonders für große Datenmengen und hohe Zugriffszahlen. Um diese Leistung optimal zu nutzen, ist eine durchdachte Datenmodellierung erforderlich.
Wie funktioniert DynamoDB
DynamoDB speichert Daten in Tabellen, wobei jedes Element (Item) aus Attributen besteht. Das wichtigste Attribut ist der Primärschlüssel, der entweder nur ein Partition Key oder eine Kombination aus Partition Key + Sort Key sein kann. Der Partition Key sorgt für eine gleichmäßige Verteilung der Daten und hat direkten Einfluss auf die Performance.
One-Table-Design in DynamoDB
Das One-Table-Design in DynamoDB ist wirklich eine geniale Idee: Alle verschiedenen Datentypen werden in einer einzigen Tabelle gespeichert, anstatt wie bisher separate Tabellen für verschiedene Entitäten zu haben. Und das Beste daran ist, dass es durch den cleveren Einsatz von Partition Key (PK) und Sort Key (SK) möglich ist, unterschiedliche Beziehungen und Zugriffsmuster besonders effizient abzubilden. Das Ergebnis: Man kann mit nur wenigen gezielten Abfragen komplexe Datenstrukturen abrufen und das ohne mehrere Tabellen verknüpfen zu müssen.