NestJS-backend-API'er til virksomheder · Lektion

Serverless-udrulning

Undersøg, hvordan NestJS-applikationer kan udrulles på serverless-platforme som AWS Lambda eller Google Cloud Functions for omkostningseffektiv skalering.

Lektion 5 af 611 trin

Serverless-udrulning er en gratis NestJS-backend-API'er til virksomheder-lektion på CoddyKit. Dette er lektion 5 af 6. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i NestJS-backend-API'er til virksomheder, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. NestJS-backend-API'er til virksomheder-kurset indeholder 6 lektioner i alt.

Introduktion til serverløs implementering

Velkommen til serverløs implementering! Denne strategi lader dig bygge og køre applikationer uden at administrere servere.

I stedet for at klargøre VM'er skriver du kode, der kører som reaktion på hændelser, f.eks. en HTTP-forespørgsel.

Cloud-udbyderen (f.eks. AWS eller Google Cloud) håndterer al serveradministration for dig.

Hvorfor serverløs med NestJS?

Implementering af NestJS på serverløse platforme giver betydelige fordele, især for API'er:

  • Automatisk skalering: Din applikation skalerer øjeblikkeligt i takt med efterspørgslen, fra nul til tusindvis af forespørgsler.
  • Omkostningseffektivitet: Du betaler kun for den beregningstid, din kode bruger, ikke for inaktive servere.
  • Mindre drift: Du behøver ikke bekymre dig om servervedligeholdelse, programrettelser eller skalering. Fokuser på din kode!

Almindelige serverløse platforme

Flere store cloud-udbydere tilbyder robuste tjenester til serverløs databehandling:

  • AWS Lambda: Det mest populære valg, ofte brugt sammen med API Gateway til HTTP-slutpunkter.
  • Google Cloud Functions: Googles løsning, der er tæt integreret med Google Cloud-økosystemet.
  • Azure Functions: Microsofts løsning til hændelsesdrevne serverløse applikationer.

Vi fokuserer primært på begreber, der kan anvendes på AWS Lambda.

NestJS og Lambda: Udfordringen

NestJS-applikationer er typisk processer, der kører i lang tid og konstant lytter efter forespørgsler. Serverløse funktioner er derimod designet til at have kort levetid og udføres kun, når de udløses.

Udfordringen er at få NestJS's robuste arkitektur til at passe ind i modellen »funktion som en tjeneste«. Vi har brug for en måde at »starte« vores NestJS-app i forbindelse med én enkelt serverløs påkaldelse.

Tilpasning af NestJS til Lambda

For at køre en NestJS-app på AWS Lambda bruger vi en adapter. Denne adapter fungerer som en bro, der oversætter indgående Lambda-hændelser til et format, som NestJS forstår (f.eks. en Express.js- eller Fastify-forespørgsel), og derefter oversætter NestJS's svar tilbage til Lambda.

Populære værktøjer som @vendia/serverless-express (til Express) eller @nestjs/platform-fastify sammen med aws-lambda-fastify hjælper med dette.

Serverless Framework CLI

Serverless Framework er et effektivt CLI-værktøj, der forenkler implementering af serverløse applikationer hos forskellige udbydere.

Det håndterer pakning af din kode, oprettelse af cloud-ressourcer (f.eks. Lambda-funktioner og API Gateway-slutpunkter) samt administration af implementeringer.

Du kan installere det globalt via npm:

npm install -g serverless

Grundlæggende struktur for `serverless.yml`

Kernen i et Serverless Framework-projekt er filen serverless.yml. Denne YAML-konfiguration definerer din tjeneste, udbyder og funktioner.

Her er en forenklet struktur:

service: my-nestjs-api

provider:
  name: aws
  runtime: nodejs18.x
  # ... other AWS configurations

functions:
  api:
    handler: dist/lambda.handler
    events:
      - http:
          path: /{proxy+}
          method: any
          cors: true

NestJS-Lambda-handleren

Dette er det faktiske indgangspunkt for din Lambda-funktion. Den initialiserer din NestJS-applikation og pakker den ind i en adapter.

Målet er kun at initialisere NestJS én gang (en »warm start«) for at reducere ventetiden ved efterfølgende kald.

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ExpressAdapter } from '@nestjs/platform-express';
import * as express from 'express';
import * as serverlessExpress from '@vendia/serverless-express';

let cachedServer;

async function bootstrapServer() {
  const expressApp = express();
  const adapter = new ExpressAdapter(expressApp);
  const app = await NestFactory.create(AppModule, adapter);
  await app.init();
  return serverlessExpress({ app: expressApp });
}

export const handler = async (event, context) => {
  if (!cachedServer) {
    cachedServer = await bootstrapServer();
  }
  return cachedServer(event, context);
};

Implementering af din serverløse app

Når serverless.yml og handleren er konfigureret, er det enkelt at implementere din NestJS-applikation:

  1. Byg: Kompilér din TypeScript-kode (f.eks. npm run build).
  2. Implementér: Kør serverless deploy fra din terminal. CLI'en håndterer pakning og klargøring.
  3. Test: CLI'en viser dit API Gateway-slutpunkt, som du kan bruge til at teste dit implementerede NestJS-API.

Tjek af serverløs implementering

Hvilke af følgende er de vigtigste fordele ved at implementere et NestJS-API på en serverløs platform som AWS Lambda?

Opsummering: Serverløs NestJS

I denne lektion undersøgte vi, hvordan NestJS-applikationer implementeres ved hjælp af serverløse platforme som AWS Lambda.

Du har lært om fordelene (omkostninger, skalering og mindre drift), udfordringen ved at tilpasse NestJS til kortlivede funktioner, og hvordan Serverless Framework og adaptere hjælper med at bygge bro over denne forskel. Denne tilgang gør det muligt at bygge meget skalerbare og omkostningseffektive backend-tjenester.

Gratis at komme i gang

Lær TypeScript med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
20
Lektioner
76

Ofte stillede spørgsmål

Er lektionen “Serverless-udrulning” gratis?

Ja — hele teksten til “Serverless-udrulning” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af NestJS-backend-API'er til virksomheder-kurset, skal du opgradere til CoddyKit PRO. NestJS-backend-API'er til virksomheder-kurset indeholder 6 lektioner i alt.

Hvad lærer jeg i “Serverless-udrulning”?

Undersøg, hvordan NestJS-applikationer kan udrulles på serverless-platforme som AWS Lambda eller Google Cloud Functions for omkostningseffektiv skalering. Du øver dig i NestJS-backend-API'er til virksomheder med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på NestJS-backend-API'er til virksomheder?

Der kræves ingen tidligere erfaring. NestJS-backend-API'er til virksomheder på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 5 af 6.

Hvor lang tid tager lektionen “Serverless-udrulning”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne NestJS-backend-API'er til virksomheder-lektion?

Ja. Alle NestJS-backend-API'er til virksomheder-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Cachingstrategier (Redis)
  2. Overvågning af databaseydelse
  3. Load balancing og proxyer
  4. Strategier til optimering af forespørgsler
  5. Serverless-udrulning
  6. Skalering af dit Supabase-projekt
← Tilbage til NestJS-backend-API'er til virksomheder