Serverlos Computing und GraphQL: moderne App Entwicklung

In diesem Artikel erläutere ich Ihnen den Prozess der Erstellung eines serverlosen GraphQL-APIs mit TypeScript, AWS Lambda und Apollo Server.

Serverloser Rechnung

Serverloser Rechnung ist ein Cloudcomputing-Ausführungsmodell, bei dem Cloudanbieter automatisch die Infrastruktur für die Ausführung von Anwendungen verwalten. In diesem Modell schreiben Entwickler Code und der Cloudanbieter kümmert sich um die Ausführung, Skalierung und Wartung der Server, was bedeutet, dass Entwickler sich nicht um Serververwaltung, Infrastrukturbereitstellung oder Skalierung kümmern müssen. Der Begriff „serverlos“ bedeutet nicht, dass es keine Server gibt, sondern dass die Serververwaltungsaufgaben von Entwicklern abstraktiert sind. AWS Lambda ist ein serverloser Rechnungsdienst von Amazon Web Services (AWS), der es Ihnen erlaubt, Code ohne Serverbereitstellung oder -verwaltung auszuführen.

GraphQL

GraphQL ist eine Abfragesprache für APIs und eine Laufzeitumgebung für die Ausführung dieser Abfragen. Es ermöglicht Clients, exakt den erforderlichen Daten zuzugriffen, was sie im Vergleich zu REST effizienter macht, der Daten möglicherweise über- oder unterfordern kann. Mit GraphQL können Clients die Form und Struktur der Antwort definieren, mehrere Ressourcen in einem einzigen Request abrufen. Diese Flexibilität verbessert die Leistung und reduziert die Netzwerklast. GraphQL ist stark typisiert, mit einem Schema, das verfügbare Typen und Operationen definiert. Es wird in modernen Anwendungen breit verwendet, um die Kommunikation zwischen Frontend und Backend zu optimieren, was eine responsivere und effizientere Datenverwaltung ermöglicht.

Apollo Server

Es ist eine populäre, quelloffene GraphQL-Server-Lösung, die Entwicklern die Erstellung einer GraphQL-API mühelos erleichtert. Sie vereinfacht den Prozess der Erstellung eines robusten und skalierbaren GraphQL-APIs, indem sie die Definition des Schemas, die Ausführung von Abfragen und die Formatierung der Antworten verwaltet. Apollo Server unterstützt Funktionen wie Datenabruf, Caching und Authentifizierung, macht es somit für moderne Anwendungen sehr adaptabel. Es arbeitet problemlos mit verschiedenen Datenquellen, einschließlich REST-APIs, Databases und Microservices. Mit integrierten Tools für Leistungsüberwachung und Fehlerbehandlung ist Apollo Server häufig zur Automatisierung der Backend-Entwicklung verwendet, bietet effiziente und flexible Kommunikation zwischen Clients und Servern in GraphQL-Umgebungen.

Warum TypeScript?

Es ist ein Übersetzer von JavaScript, der den Sprachkern um statische Typisierung erweitert. Es hilft bei der Erkennung von Fehlern während der Entwicklung, verbessert die Lesbarkeit des Codes und erleichtert den Refactoring. Durch die bereitstellte Typensicherheit und die Unterstützung von Werkzeugen ermöglicht TypeScript maintainable und skalierbare Anwendungen, macht es somit für große Projekte oder Teams ideal.

Warum finde ich Serverlos und GraphQL so gut zusammen zu arbeiten (oder „Eine Liebesgeschichte in Code“)

  1. Optimierte Ressourcen Nutzung: Die präzise Datenabrufung von GraphQL passt perfekt zum serverlosen Pauschalpreismodell, sichert effiziente Ressourcen Nutzung.
  2. Vereinfachtes Backend: Serverlose Funktionen können GraphQL-Resolver effizient verwalten, was die Backend-Architektur vereinfacht.
  3. Verbesserte Leistung: Die Fähigkeit von GraphQL, Datenübertragungsaufwand zu reduzieren, führt zu schnelleren Anwendungen, insbesondere in Kombination mit einer serverlosen Architektur.
  4. Skalierbarkeit: Beide Technologien sind hervorragend in der Handhabung wechselnder Lasten, was zu einer hohen Skalierbarkeit der Kombination führt.
  5. Kosteneffiziente: Das Modell „Pay-as-you-go“ von serverless Computing in Kombination mit der effizienten Datenübertragung von GraphQL kann zu erheblichen Kosteneinsparungen führen.

„Die Kombination von serverless und GraphQL ermöglicht die schnelle Entwicklung skalierbarer und effizienter API. Es ist ein kraftvolles Team, das die Entwicklungszeit und die Betriebskosten erheblich reduzieren kann.“ – Nader Dabit, „Full Stack Serverless

Unten ist der Schritt-für-Schritt-Leitfaden zur Bereitstellung eines Dienstes mit GraphQL in AWS Lambda.

  • Schritt 1: Erstellen Sie ein neuen TypeScript-Projekt und installieren Sie die Abhängigkeiten.
Shell

 

  • Schritt 2: Definieren Sie das GraphQL-Schema mit den notwendigen Elementen.
TypeScript

 

  • Schritt 3: Implementieren Sie Resolver:
TypeScript

 

  • Schritt 4: Erstellen Sie den Lambda-Handler:
TypeScript

 

  • Schritt 5: Konfigurieren Sie den serverless-Deployment. Erstellen Sie eine serverless.yml-Datei:
service: serverless-graphql-api

provider:
  name: aws
  runtime: nodejs16.x
  stage: dev
  region: us-east-1

functions:
  graphql:
    handler: handler.graphqlHandler
    events:
      - http:
          path: graphql
          method: post
      - http:
          path: graphql
          method: get

plugins:
  - serverless-offline

Sie können direkt in AWS Lambda Code schreiben (schnelles Hello World) und sinnvolle Deployment-Optionen wie CDK oder Terraform verwenden. Angesichts der Weiterentwicklung sowohl von serverless Computing als auch von GraphQL können wir erwarten, dass sich weitere leistungsstarke Tools und Praktiken etablieren werden.

Fazit

Durch die Anerkennung von serverless GraphQL können Entwickler APIs schaffen, die mühelos skalieren und genau das liefern, was die Kunden benötigen. Es ist wie ein Kristallball, der immer genau weiß, welche Daten abgerufen und skaliert werden sollten.

Source:
https://dzone.com/articles/serverless-computing-and-graphql