Serverlös distribution
Utforska hur NestJS-applikationer distribueras till serverlösa plattformar som AWS Lambda eller Google Cloud Functions för kostnadseffektiv skalning.
Serverlös distribution är en gratis lektion i NestJS: backend-API:er för företag på CoddyKit. Detta är lektion 5 av 6. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för NestJS: backend-API:er för företag, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i NestJS: backend-API:er för företag innehåller totalt 6 lektioner.
Introduktion till serverlös distribution
Välkommen till serverlös distribution! Med den här strategin kan du bygga och köra applikationer utan att hantera servrar.
I stället för att provisionera virtuella maskiner skriver du kod som körs som svar på händelser, till exempel en HTTP-förfrågan.
Molnleverantören (till exempel AWS eller Google Cloud) hanterar all serveradministration åt dig.
Varför serverlöst med NestJS?
Att distribuera NestJS på serverlösa plattformar erbjuder stora fördelar, särskilt för API:er:
- Automatisk skalning: Applikationen skalas omedelbart efter behov, från noll till tusentals förfrågningar.
- Kostnadseffektivitet: Du betalar bara för den beräkningstid som koden använder, inte för servrar som står oanvända.
- Mindre driftarbete: Du behöver inte bekymra dig om serverunderhåll, patchning eller skalning. Fokusera på koden!
Vanliga serverlösa plattformar
Flera stora molnleverantörer erbjuder robusta tjänster för serverlös databehandling:
- AWS Lambda: Det populäraste valet, som ofta används tillsammans med API Gateway för HTTP-endpoints.
- Google Cloud Functions: Googles erbjudande, djupt integrerat med Google Cloud-ekosystemet.
- Azure Functions: Microsofts lösning för händelsestyrda serverlösa applikationer.
Vi fokuserar främst på koncept som är tillämpliga på AWS Lambda.
NestJS och Lambda: utmaningen
NestJS-applikationer är vanligtvis långlivade processer som hela tiden lyssnar efter förfrågningar. Serverlösa funktioner är däremot utformade för att vara kortlivade och körs endast när de utlöses.
Utmaningen är att anpassa NestJS:s robusta arkitektur till modellen ”function-as-a-service”. Vi behöver ett sätt att starta vår NestJS-app i kontexten av en enda serverlös körning.
Anpassa NestJS för Lambda
För att köra en NestJS-app på AWS Lambda använder vi en adapter. Adaptern fungerar som en brygga: den översätter inkommande Lambda-händelser till ett format som NestJS förstår (till exempel en Express.js- eller Fastify-förfrågan) och översätter sedan NestJS-svaret tillbaka till ett format för Lambda.
Populära verktyg som @vendia/serverless-express (för Express) eller @nestjs/platform-fastify tillsammans med aws-lambda-fastify hjälper till med detta.
Serverless Framework CLI
Serverless Framework är ett kraftfullt CLI-verktyg som förenklar distributionen av serverlösa applikationer till olika leverantörer.
Det hanterar paketering av koden, skapande av molnresurser (som Lambda-funktioner och API Gateway-endpoints) samt hantering av distributioner.
Du kan installera det globalt via npm:
npm install -g serverlessGrundläggande struktur för `serverless.yml`
Kärnan i ett Serverless Framework-projekt är filen serverless.yml. Den här YAML-konfigurationen definierar din tjänst, leverantör och funktioner.
Här är en förenklad 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: trueNestJS Lambda-handlern
Det här är den faktiska startpunkten för din Lambda-funktion. Den initierar din NestJS-applikation och omsluter den med en adapter.
Målet är att initiera NestJS endast en gång (en ”warm start”) för att minska fördröjningen vid efterföljande anrop.
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);
};Distribuera din serverlösa app
När serverless.yml och handlern har konfigurerats är det enkelt att distribuera din NestJS-applikation:
- Bygg: Kompilera TypeScript-koden (till exempel
npm run build). - Distribuera: Kör
serverless deployi terminalen. CLI:t hanterar paketering och provisionering. - Testa: CLI:t visar din API Gateway-endpoint, som du kan använda för att testa ditt distribuerade NestJS-API.
Kontroll av serverlös distribution
Vilka av följande är viktiga fördelar med att distribuera ett NestJS-API på en serverlös plattform som AWS Lambda?
Sammanfattning: serverlöst NestJS
I den här lektionen utforskade vi hur NestJS-applikationer distribueras med serverlösa plattformar som AWS Lambda.
Du lärde dig om fördelarna (kostnad, skalning och mindre driftarbete), utmaningen med att anpassa NestJS för kortlivade funktioner samt hur Serverless Framework och adaptrar hjälper till att överbrygga detta gap. Den här metoden möjliggör mycket skalbara och kostnadseffektiva backendtjänster.
Lär dig TypeScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 20
- Lektioner
- 76
Vanliga frågor
Är lektionen ”Serverlös distribution” gratis?
Ja – hela texten till ”Serverlös distribution” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i NestJS: backend-API:er för företag, kan Ni uppgradera till CoddyKit PRO. Kursen i NestJS: backend-API:er för företag innehåller totalt 6 lektioner.
Vad lär jag mig i ”Serverlös distribution”?
Utforska hur NestJS-applikationer distribueras till serverlösa plattformar som AWS Lambda eller Google Cloud Functions för kostnadseffektiv skalning. Ni övar på NestJS: backend-API:er för företag med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig NestJS: backend-API:er för företag?
Du behöver inga förkunskaper. Utbildningen i NestJS: backend-API:er för företag på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 5 av 6.
Hur lång tid tar lektionen ”Serverlös distribution”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här NestJS: backend-API:er för företag-lektionen?
Ja. Varje NestJS: backend-API:er för företag-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Cache-strategier (Redis)
- Övervakning av databasprestanda
- Lastbalansering och proxyservrar
- Strategier för frågeoptimering
- Serverlös distribution
- Skalning av ditt Supabase-projekt