23. Mai 2024

Serverless Webapp auf AWS (1/2)

Hast du schon einmal von Serverless gelesen und überlegt, wie eine Serverless Software in der Praxis aussieht? In dieser Blogpostserie schauen wir uns gemeinsam an, was es braucht, um eine Fullstack Webapp Serverless zu entwickeln und auf AWS einzurichten.

Infrastructure & Cloud Services
Kubernetes & Cloud
Allgemein
Server Rent Serverless

Was ist Serverless?

Serverless ist eine Form des Cloud Computings, bei dem keine dauerhaften Dienste gemietet werden. Der Unterschied besteht darin, dass eine Serverless-Umgebung nur bei effektiver Nutzung aktiv skaliert und bei ausbleibenden Interaktionen komplett heruntergefahren wird. Dies hat Auswirkungen auf die Betriebskosten, da ausschliesslich für die tatsächliche Nutzung gezahlt wird und nicht für das Betreiben im Leerlauf.
Um eine Applikation Serverless zu betreiben, müssen wir bestimmte Rahmenbedingungen berücksichtigen. Ausserdem limitieren die Serverless Cloud-Angebote, wie die Lambda-Funktionen von AWS, die Grösse der Software. Diese Begrenzung resultiert aus der Architektur der Serverless Dienstleistung. Sie muss leichtgewichtig sein, um schnelle Startzeiten zu gewährleisten, was einen direkten Einfluss auf die Wartezeiten für die Endbenutzer:innen haben kann. Eine weitere Einschränkung ist die Laufzeit eines Prozesses. Da Serverless eventbasiert ist und für kurze Prozesse ausgelegt wurde, gibt es keinen ständig laufenden Server mehr.
Auch für das Datenspeichern gibt es Serverless Lösungen. Produkte wie Firebase von Google oder DynamoDB von AWS bieten Serverless Datenbanksysteme. Es wird keine eigene Datenbank gemietet; stattdessen wird ein vorhandenes verteiltes Datenbanksystem genutzt, für das dann pro Abfrage Gebühren anfallen.

Fullstack Web Applikation Serverless entwickeln

In dieser Blogpostserie wollen wir gemeinsam die Komponenten und Tools erkunden, die erforderlich sind, um eine Fullstack-Serverless-Applikation effizient zu entwickeln und auf AWS zu betreiben. Für unsere interne Fullstack-Webapplikation haben wir uns für folgende Tools entschieden:
• Next.js: Ein auf React.js basierendes Framework, das serverseitiges Rendern anbietet
• OpenNext: Open-Source Serverless Build-Tool für Next.js
• SST: Open-Source TypeScript-Tooling für ‚Code as Config‘-AWS-Infrastrukturkonfiguration
• AWS CLI: Die offizielle AWS-CLI für Authentifizierung und Interaktion mit dem AWS-Account
• ElectroDB: ORM für Single Table DynamoDB
• NextAuth: Library für die server- und clientseitige Authentifizierung

Wie diese Technologien genau zusammenspielen und zu einem Techstack werden, schauen wir uns im 2. Teil an.