Guies

Què és serverless? La computació sense servidor explicada de manera senzilla

Serverless és una manera d'executar codi sense configurar ni gestionar cap servidor. Lliures el teu codi a un proveïdor de núvol, i aquest només l'executa quan alguna cosa el dispara —una petició web, un fitxer pujat, una notificació de pagament— i després s'atura. Normalment pagues pel temps que el codi s'està executant, no per una màquina aturada.

Per què importa quan crees amb IA

Quan mires opcions d'allotjament o codi en crear una app amb IA, t'hi trobaràs les «funcions serverless», les «funcions d'edge» o les «funcions al núvol». Moltes plataformes d'allotjament les ofereixen, i alguns creadors d'apps amb IA despleguen backends així. Entendre el model t'ajuda amb tres preguntes pràctiques:

  • Cost. La teva app costarà diners mentre ningú l'usi?
  • Velocitat. Per què la primera petició després d'un període tranquil és més lenta?
  • Límits. Per què una tasca llarga —generar un informe gran, processar un vídeo— ha caducat?

També ajuda saber què no és serverless: no vol dir que no hi hagi backend. Continues tenint codi del costat del servidor; només que algú altre gestiona les màquines. Per als conceptes bàsics, mira què és un servidor.

Una analogia del dia a dia

Un servidor tradicional és com tenir un cotxe propi. Sempre és allà, a punt per anar a l'instant, però el pagues —assegurança, aparcament, manteniment— tant si el conduiu com si no.

Serverless és com demanar un taxi. Només pagues els trajectes que fas, i si cent persones necessiten un taxi alhora, arriben cent taxis. Però pot haver-hi una petita espera perquè arribi el cotxe (un cold start), cada trajecte té una durada màxima, i el conductor no et recorda des de l'últim viatge (les funcions són sense estat, o stateless).

Com funcionen les funcions serverless

En la seva forma més comuna, anomenada functions as a service (funcions com a servei):

  1. Escrius una funció: un petit tros de codi que gestiona un tipus d'esdeveniment, com ara «gestiona un POST a /api/bookings».
  2. La desplegues. El proveïdor la guarda i la connecta a un disparador: una URL, un horari, un nou fitxer a l'emmagatzematge, un missatge en una cua.
  3. Arriba un esdeveniment. El proveïdor engega una còpia de la teva funció (o reutilitza una de ja escalfada), l'executa i retorna el resultat.
  4. S'escala sola. Si arriben mil peticions alhora, el proveïdor executa moltes còpies en paral·lel, fins als límits del teu compte.
  5. Es queda inactiva. Quan el trànsit s'atura, les còpies s'apaguen. Si no hi ha res en execució, no pagues res de còmput.

Una funció serverless petita en JavaScript podria tenir aquest aspecte:

export default async function handler(request) {
  const { name } = await request.json();
  return Response.json({ message: `Hello, ${name}` });
}

No cal codi per arrencar un servidor, obrir un port o mantenir un procés en execució. La plataforma s'encarrega de tot això.

De vegades «serverless» també s'usa de manera més laxa per a altres serveis gestionats que s'escalen automàticament i es cobren per ús, com les bases de dades serverless, que es pausen quan estan inactives.

Termes clau

TermeSignificat
Funció (FaaS)Una unitat petita de codi que el proveïdor executa sota demanda.
Disparador / esdevenimentQuè engega la funció: una petició HTTP, la pujada d'un fitxer, un temporitzador, un missatge de cua.
Cold startEl retard quan una còpia nova de la funció ha d'arrencar abans de gestionar una petició.
Escalfada (warm)Una còpia que ja està en execució i pot respondre a l'instant.
Sense estat (stateless)La funció no guarda memòria entre execucions. Tot el que ha de persistir va a una base de dades o a l'emmagatzematge.
Temps límit (timeout)El temps màxim que pot durar una execució. Per exemple, el màxim d'AWS Lambda són 15 minuts; moltes plataformes tenen per defecte molt menys.
Funció d'edgeUna funció que s'executa en moltes ubicacions a prop dels usuaris, sovint amb límits més estrictes.
Escalar a zero (scale to zero)No executar res, i no pagar res de còmput, quan no hi ha trànsit.

Un exemple resolt: un petit web de reserves

El web de reserves d'un estudi de ioga rep una allau de visites cada diumenge al vespre, quan es publica el nou horari, i molt poques la resta de la setmana.

  • Amb un servidor sempre encès, l'estudi paga una màquina les 24 hores, dimensionada per al pic de diumenge al vespre, i gairebé inactiva la resta del temps.
  • Amb funcions serverless, GET /api/classes i POST /api/bookings són funcions. L'allau de diumenge engega moltes còpies automàticament; un dimarts tranquil al matí, quasi no s'executa res i la factura és propera a zero.

Els compromisos també apareixen. La primera persona que obri el web un dimarts al matí pot esperar un moment extra per un cold start. La base de dades ha de gestionar moltes connexions curtes de moltes còpies de funció, cosa que pot fer necessari un pool de connexions. I si més endavant l'estudi vol una tasca de «generar el PDF d'assistència anual de tothom», pot superar el límit de temps de la funció i caldrà executar-la en un altre lloc.

Quan encaixa serverless i quan no

Bon encaixEncaix menys bo
Trànsit baix, irregular o imprevisibleTrànsit constant i alt, on un servidor sempre encès pot sortir més barat
Tasques curtes de petició i resposta: APIs, gestors de formularis, webhooksTasques llargues: processament de vídeo gran, importacions de dades massives
Equips petits que no volen gestionar servidorsApps que mantenen connexions obertes (alguns xats o funcions multijugador), tret que la plataforma ho suporti
Gestió d'esdeveniments: «quan es puja un fitxer, fes-ne una miniatura»Apps que han de mantenir molta memòria entre peticions

Idees equivocades habituals

  • «Serverless vol dir sense backend». Vol dir sense servidors que gestionar. Continues escrivint i protegint codi de backend.
  • «Serverless sempre és més barat». Barat a baix volum, però el preu per petició pot sumar-se amb un volum alt i constant.
  • «Serverless escala infinitament». Les plataformes tenen límits de concurrència, i la teva base de dades pot ser el coll d'ampolla molt abans que les funcions.
  • «Els fitxers guardats en una funció hi seran la pròxima vegada». L'emmagatzematge local és temporal. Usa una base de dades o emmagatzematge de fitxers.
  • «Escalar a zero és el mateix que serverless». Relacionats, però no idèntics. Algunes plataformes executen la teva app com un servidor normal que s'adorm quan està inactiu i es desperta amb la següent petició: estalvi similar i un retard similar a la primera petició, però sense els límits de temps per petició de les funcions.

Què demanar al teu creador d'apps amb IA

  • «Aquest backend s'executarà com a funcions serverless o com a servidor sempre encès o que s'adorm? Què vol dir per al cost?»
  • «És probable que alguna tasca superi el límit de temps de la plataforma? Si és així, com la gestionem?»
  • «Guarda tot el que ha de persistir a la base de dades o a l'emmagatzematge de fitxers, no a la memòria o als fitxers locals.»
  • «Com s'han de gestionar les connexions a la base de dades si moltes còpies s'executen alhora?»
  • «Quin és el retard de la primera petició després que l'app hagi estat inactiva?»

Com allotja Mythex les apps

Mythex no descriu el seu allotjament com a funcions serverless. Quan publiques, la teva app s'executa com una aplicació web normal o un contenidor que Mythex gestiona per tu; no cal configurar cap allotjament. És escalar a zero: les apps publicades i les seves bases de dades s'adormen quan estan inactives i es desperten amb la següent visita; una app adormida no gasta res de còmput, i les màquines addicionals només s'engeguen quan hi ha molt trànsit (el Pro permet fins a 3 per servei). La base de dades Postgres connectada també s'adorm després de 5 minuts inactiva i es factura pel temps que ha estat despert. Així obtens gran part del benefici de «pagar pel que uses», amb el mateix tipus de retard en la primera petició després d'un període tranquil. Mira límits d'allotjament a la documentació, i les nostres guies sobre allotjament web i reduir els costos d'allotjament.

Preguntes

Què vol dir serverless en termes senzills?

Vol dir que dones el teu codi a un proveïdor de núvol i l'executa només quan cal —per exemple, quan arriba una petició— sense que tu configuris ni vigilis cap servidor. Normalment pagues pel temps que el codi s'executa de veritat, i no per una màquina que està encesa tot el temps.

Realment no hi ha servidors en serverless?

Hi ha servidors; només que no els gestiones tu. El proveïdor executa el teu codi a les seves pròpies màquines, l'engega quan arriben peticions, l'escala quan hi ha molta càrrega i l'apaga quan està inactiu.

Què és un cold start?

Un cold start és el retard addicional que passa quan una funció serverless s'executa després d'estar inactiva, perquè el proveïdor primer ha d'arrencar una còpia nova. Pot anar de quasi imperceptible a un segon o més, segons la plataforma, el llenguatge i la mida del codi.

Serverless és més barat que un servidor normal?

Per a apps amb poc trànsit o trànsit irregular, sovint sí, perquè gairebé no pagues mentre estan inactives. Per a apps amb trànsit alt i constant, un servidor sempre encès pot sortir més barat. Depèn del patró d'ús i de les tarifes del proveïdor.

Quines són les plataformes serverless més conegudes?

Exemples coneguts són AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers i les funcions de plataformes d'allotjament com Vercel i Netlify.

Mythex · Pricing · Crea qualsevol cosa amb IA · Plantilles de llocs web i aplicacions · Mythex comparat · Glossari de creació d’aplicacions amb IA · Eines gratuïtes per crear aplicacions amb IA · English

English አማርኛ العربية Български বাংলা Bosanski Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)