Laravel Cloud

Laravel Cloud: la plataforma gestionada de desplegament de Laravel amb escalat automàtic, preview environments i simplicitat total.

Què és Laravel Cloud?#

Laravel Cloud és la plataforma oficial de desplegament gestionat creada per l'equip de Laravel. Representa l'evolució natural de les eines de desplegament de l'ecosistema Laravel, posicionant-se com una solució que combina la simplicitat de Forge amb l'escalabilitat de Vapor, sense les limitacions de cap dels dos. Si Forge et dona un servidor que has de gestionar i Vapor et porta al món serverless amb les seves restriccions inherents, Laravel Cloud et dona una plataforma completament gestionada on simplement puges el teu codi i tot funciona.

La filosofia darrere de Laravel Cloud es pot resumir en una expressió: zero-ops. L'objectiu és que els desenvolupadors no hagin de pensar en infraestructura. No has de triar entre tipus d'instàncies EC2, no has de configurar Nginx ni PHP-FPM, no has de gestionar Supervisor per als workers de cues, no has d'aprovisionar bases de dades manualment ni preocupar-te per certificats SSL. Laravel Cloud abstrau completament la infraestructura i et permet centrar-te exclusivament en escriure codi Laravel.

A diferència de Vapor, que depèn d'AWS Lambda amb les seves limitacions (cold starts, sistema de fitxers de només lectura, timeout de 15 minuts, no websockets natius), Laravel Cloud executa la teva aplicació en contenidors complets que es comporten exactament com un servidor tradicional, però amb escalat automàtic. Pots escriure al sistema de fitxers, executar processos llargs, utilitzar websockets i fer qualsevol cosa que faries en un servidor normal. L'escalat és automàtic i transparent: si arriba més tràfic, Laravel Cloud afegeix més instàncies; si el tràfic baixa, les redueix.

Laravel Cloud és relativament nou dins de l'ecosistema Laravel. Les funcionalitats i els preus poden evolucionar. Consulta la documentació oficial a cloud.laravel.com per a la informació més actualitzada sobre característiques, límits i preus.

Com es diferencia de Forge i Vapor#

Per entendre on encaixa Laravel Cloud, cal veure les tres plataformes com un espectre de control versus simplicitat.

Laravel Forge et dona un servidor complet (a DigitalOcean, AWS, Hetzner, etc.) que aprovisiona i configura automàticament, però que tu gestioneixes. Tu decideixes quant de gran és el servidor, quan escalar, com configurar els backups, com monitoritzar el rendiment. Forge automatitza la configuració inicial, però el manteniment continuat és responsabilitat teva. Si el servidor es queda sense disc, si PHP necessita una actualització de seguretat, si el servidor cau a les 3 de la matinada, tu ets qui ha de reaccionar.

Laravel Vapor elimina completament la gestió de servidors movent l'aplicació a AWS Lambda. L'escalat és automàtic i no pagues quan no hi ha tràfic. Però el model serverless imposa restriccions: no pots escriure al disc, les peticions tenen un timeout de 30 segons via API Gateway, no suporta websockets natius, els cold starts afegeixen latència i la depuració pot ser més complexa que en un servidor tradicional.

Laravel Cloud ocupa l'espai intermedi ideal: no has de gestionar servidors (com Vapor), però l'aplicació s'executa en un entorn complet sense les limitacions serverless (com Forge). Escala automàticament, gestiona tota la infraestructura per tu, però la teva aplicació es comporta exactament com si estigués en un servidor dedicat. No has de canviar res al teu codi Laravel: ni el driver de fitxers, ni la gestió de sessions, ni la manera de fer pujades de fitxers. Tot funciona tal com esperes.

Característiques principals#

Desplegament amb un clic des de GitHub#

Laravel Cloud s'integra directament amb GitHub. Connectes el teu repositori, selecciones la branca de producció i cada cop que fas push a aquesta branca, Laravel Cloud desplega automàticament la nova versió. No cal configurar cap webhook, cap pipeline de CI/CD ni cap script de desplegament. El procés és: fas push, Laravel Cloud detecta el canvi, construeix l'aplicació, executa els tests (si estan configurats), desplega el codi nou i verifica que l'aplicació funciona correctament amb un health check.

Escalat automàtic#

L'escalat automàtic de Laravel Cloud funciona sense cap configuració. La plataforma monitoritza el tràfic entrant, l'ús de CPU i la memòria, i ajusta automàticament el nombre d'instàncies de l'aplicació. Si un dimarts a les 10 del matí tens un pic de tràfic perquè has llançat una campanya de màrqueting, Laravel Cloud detecta l'increment de càrrega i afegeix instàncies addicionals en segons. Quan el pic passa, redueix les instàncies per estalviar costos. Tu no has de fer absolutament res.

A diferència de Vapor, on l'escalat es basa en funcions Lambda efímeres que poden patir cold starts, l'escalat de Laravel Cloud es basa en contenidors complets que arrencen amb l'aplicació ja carregada. Això resulta en una latència més previsible i consistent, sense les fluctuacions que els cold starts de Lambda poden causar.

Bases de dades gestionades#

Laravel Cloud ofereix bases de dades MySQL i PostgreSQL completament gestionades. Això significa que no has d'aprovisionar un servidor RDS a AWS, ni configurar backups, ni preocupar-te per les actualitzacions del motor. Laravel Cloud s'encarrega de tot: aprovisionament, backups automàtics, actualitzacions de seguretat, monitorització i escalat.

La configuració de la connexió a la base de dades és automàtica: quan crees una base de dades a Laravel Cloud, les variables d'entorn (DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD) es configuren automàticament a l'aplicació. No has de tocar res.

Redis i cache gestionats#

De la mateixa manera que les bases de dades, Laravel Cloud proporciona instàncies Redis gestionades per a cache, sessions i qualsevol altra funcionalitat que necessiti Redis. La integració és directa: les variables REDIS_HOST i CACHE_STORE es configuren automàticament.

Cues gestionades#

Laravel Cloud gestiona els workers de cues automàticament. No cal configurar Supervisor, no cal monitoritzar que els workers no morin, no cal reiniciar-los després de cada desplegament. Simplement defineixes quants workers necessites i quines cues han de processar, i Laravel Cloud s'encarrega de mantenir-los en funcionament, escalar-los si cal i reiniciar-los quan desplegueu codi nou.

Certificats SSL automàtics#

Cada aplicació i domini personalitzat a Laravel Cloud rep automàticament un certificat SSL. La renovació també és automàtica. No has d'interactuar amb Let's Encrypt, no has de configurar res a Nginx, no has de preocupar-te per certificats que caduquen.

Dominis personalitzats#

Afegir un domini personalitzat a Laravel Cloud és un procés senzill: afegeixes el domini al dashboard, Laravel Cloud et proporciona els registres DNS que has de crear, i un cop la propagació DNS es completa, el domini funciona amb HTTPS automàticament. Si utilitzes un servei de DNS compatible, la configuració pot ser completament automàtica.

Preview environments#

Una de les funcionalitats més potents de Laravel Cloud són els preview environments. Cada vegada que obres un pull request a GitHub, Laravel Cloud crea automàticament un entorn complet i aïllat amb els canvis de la PR. Aquest entorn té la seva pròpia URL, la seva pròpia base de dades (que pot ser una còpia de producció o una base de dades buida amb seeds), el seu propi Redis i els seus propis workers de cues.

Això permet que els revisors de la PR puguin provar els canvis en un entorn real sense necessitat d'executar res localment. El QA pot verificar funcionalitats, el dissenyador pot revisar canvis visuals, el product manager pot provar el flux d'usuari. Tot sense afectar producció ni staging. Quan la PR es fusiona o es tanca, l'entorn preview es destrueix automàticament, alliberant tots els recursos.

Monitorització i mètriques integrades#

Laravel Cloud inclou un dashboard de monitorització complet. Pots veure en temps real el nombre de peticions, el temps de resposta, l'ús de CPU i memòria, els errors, el rendiment de la base de dades, l'estat dels workers de cues i molt més. No cal instal·lar cap agent de monitorització ni configurar serveis externs com Datadog o New Relic (tot i que pots integrar-los si vols).

Agregació de logs#

Tots els logs de l'aplicació (peticions HTTP, workers de cues, scheduler, errors) s'agreguen en un sol lloc. Pots buscar, filtrar i analitzar logs directament des del dashboard. Això simplifica enormement la depuració: en lloc d'haver de connectar-te per SSH a cada servidor i revisar fitxers de log individualment, tens tots els logs centralitzats i cercables.

Backups automàtics#

Laravel Cloud fa backups automàtics de les bases de dades amb una freqüència configurable. Pots restaurar un backup en qualsevol moment des del dashboard. Els backups es retenen durant un període configurable i es xifren en repòs.

Col·laboració en equip#

Laravel Cloud permet gestionar equips amb diferents nivells d'accés. Pots convidar desenvolupadors, assignar permisos per entorn (per exemple, un desenvolupador pot desplegar a staging però no a producció) i auditar qui ha fet què. Totes les accions es registren: desplegaments, canvis de configuració, restauracions de backups.

Començar amb Laravel Cloud#

Connectar GitHub#

El primer pas és crear un compte a Laravel Cloud i connectar el teu compte de GitHub. Laravel Cloud necessita accés al repositori per poder desplegar el codi i crear preview environments automàticament. Pots seleccionar repositoris específics o donar accés a tots els repositoris de la teva organització.

Crear una aplicació#

Un cop connectat GitHub, crees una aplicació a Laravel Cloud seleccionant el repositori, la branca de producció i la regió on vols desplegar. Laravel Cloud detecta automàticament que és un projecte Laravel i configura el pipeline de construcció adequat:

1. Seleccionar repositori → laravel-andorra/laravel-andorra
2. Seleccionar branca → main
3. Seleccionar regió → Europa (Amsterdam)
4. Seleccionar recursos → Web + Workers + Base de dades + Redis

Seleccionar recursos#

Durant la creació de l'aplicació, selecciones quins recursos necessites. Laravel Cloud ofereix recursos predefinits que simplifiquen la decisió:

  • Web: L'aplicació web principal. Pots seleccionar la mida (petita, mitjana, gran) segons les necessitats de CPU i memòria.
  • Workers: Workers per processar cues. Pots definir quants i quines cues han de processar.
  • Base de dades: MySQL o PostgreSQL amb diferents mides. Inclou backups automàtics.
  • Redis: Per a cache, sessions i cues. Diferents mides segons les necessitats de memòria.
  • Scheduler: Per executar el scheduler de Laravel (schedule:run) cada minut.

Configuració#

Pipeline de construcció#

Laravel Cloud detecta automàticament els passos necessaris per construir l'aplicació Laravel. El pipeline per defecte inclou la instal·lació de dependències de Composer, la compilació d'assets amb Vite (o Mix) i l'optimització de l'aplicació. Pots personalitzar el pipeline si necessites passos addicionals:

# Passos de construcció per defecte (personalitzables)
build:
    - composer install --no-dev --no-interaction --optimize-autoloader
    - npm ci
    - npm run build
 
deploy:
    - php artisan migrate --force
    - php artisan config:cache
    - php artisan route:cache
    - php artisan view:cache

Si el teu projecte necessita passos addicionals (per exemple, compilar fitxers de traducció, generar documentació d'API o executar scripts personalitzats), pots afegir-los al pipeline directament des del dashboard o des d'un fitxer de configuració al repositori.

Variables d'entorn#

Les variables d'entorn es gestionen des del dashboard de Laravel Cloud. Cada entorn (producció, staging, preview) pot tenir les seves pròpies variables. Les variables sensibles s'emmagatzemen xifrades i mai es mostren en text pla al dashboard després de ser configurades.

Les variables essencials com DB_HOST, REDIS_HOST, QUEUE_CONNECTION i similars es configuren automàticament quan crees els recursos associats. Només has de configurar manualment les variables específiques de l'aplicació:

APP_NAME="Laravel Andorra"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://laravelandorra.com
 
MAIL_MAILER=ses
MAIL_FROM_ADDRESS=info@laravelandorra.com
MAIL_FROM_NAME="Laravel Andorra"
 
STRIPE_KEY=pk_live_xxxxx
STRIPE_SECRET=sk_live_xxxxx

Dimensionament de recursos#

Laravel Cloud permet ajustar la mida dels recursos (web, workers, base de dades, Redis) en qualsevol moment sense temps d'inactivitat. Si notes que l'aplicació necessita més CPU o memòria, simplement canvies la mida al dashboard i Laravel Cloud redimensiona els recursos automàticament.

Per a la majoria d'aplicacions Laravel noves, començar amb la mida més petita és suficient. Laravel Cloud escalarà automàticament el nombre d'instàncies web segons el tràfic. El dimensionament de recursos es refereix a la mida de cada instància individual, no al nombre d'instàncies (això ho gestiona l'escalat automàtic).

Workers (cues i scheduler)#

La configuració dels workers és senzilla. Defineixes quines cues ha de processar cada worker i quants workers vols:

Worker 1:
  Cues: high, default
  Instàncies: 2

Worker 2:
  Cues: low, notifications
  Instàncies: 1

Scheduler:
  Habilitat: Sí
  Freqüència: Cada minut

Laravel Cloud reinicia automàticament els workers després de cada desplegament perquè carreguin el codi nou. No cal executar queue:restart manualment ni configurar Supervisor.

Flux de desplegament#

El flux de desplegament de Laravel Cloud segueix un procés de quatre fases dissenyat per garantir desplegaments segurs amb zero downtime.

Fase 1: Push. Fas push del codi a la branca de producció (o fusiones un pull request). Laravel Cloud detecta el canvi a través del webhook de GitHub i inicia el procés de desplegament.

Fase 2: Build. Laravel Cloud clona el repositori, instal·la les dependències (Composer i npm), compila els assets frontend i crea una imatge de contenidor optimitzada. Si la construcció falla (per exemple, un error de compilació als assets), el desplegament s'atura i reps una notificació amb els detalls de l'error.

Fase 3: Deploy. La nova versió es desplega progressivament: les noves instàncies amb el codi actualitzat s'inicien mentre les antigues continuen servint tràfic. Un cop les noves instàncies estan llestes, el tràfic es redirigeix cap a elles i les antigues s'aturen. Això garanteix zero downtime durant el desplegament. Les comandes post-desplegament (migracions, caches) s'executen durant aquesta fase.

Fase 4: Health Check. Després del desplegament, Laravel Cloud verifica que l'aplicació funciona correctament enviant peticions de health check. Si l'aplicació no respon correctament (per exemple, retorna errors 500), el desplegament es reverteix automàticament a la versió anterior. Això protegeix contra desplegaments defectuosos: si alguna cosa va malament, els teus usuaris mai veuran l'error perquè el rollback automàtic restaura la versió estable en segons.

Per veure l'estat d'un desplegament en curs o l'historial de desplegaments anteriors, accedeix al dashboard. Cada desplegament mostra els logs de construcció, el temps de desplegament, l'estat del health check i qualsevol error que s'hagi produït.

Preview environments#

Els preview environments són una de les funcionalitats més destacades de Laravel Cloud i canvien radicalment el flux de treball de revisió de codi.

Funcionament automàtic#

Quan obres un pull request a GitHub, Laravel Cloud automàticament:

  1. Crea un entorn complet aïllat per a la PR
  2. Desplega la branca de la PR en aquest entorn
  3. Crea una base de dades dedicada (opcionalment amb un seed de dades)
  4. Configura Redis i workers de cues
  5. Genera una URL única per accedir a l'entorn (per exemple, pr-42.preview.laravelandorra.com)
  6. Publica la URL com a comentari al pull request de GitHub

Quan fas push de canvis addicionals a la branca de la PR, el preview environment s'actualitza automàticament. Quan fusiones o tanques la PR, l'entorn es destrueix i tots els recursos s'alliberen.

Bases de dades aïllades#

Cada preview environment té la seva pròpia base de dades. Pots configurar com s'inicialitza: amb una estructura buida (executant les migracions), amb dades de seed (php artisan db:seed), o amb una còpia de les dades de staging. L'aïllament de la base de dades és important perquè els tests i les proves al preview environment no afecten cap altre entorn.

Casos d'ús#

Els preview environments són especialment útils per a:

  • Revisió de codi visual: Els revisors poden veure exactament com es veuen els canvis de frontend sense executar res localment.
  • QA automatitzat: L'equip de QA pot provar funcionalitats completes en un entorn real amb dades realistes.
  • Demos a clients: Pots compartir la URL del preview environment amb un client perquè vegi una nova funcionalitat abans d'aprovar-la.
  • Tests d'integració: Pots executar tests E2E (Cypress, Playwright) contra el preview environment com a part del pipeline de CI.

Monitorització#

Dashboard integrat#

El dashboard de monitorització de Laravel Cloud proporciona una visió completa de la salut i el rendiment de l'aplicació. Les mètriques principals inclouen:

  • Peticions per minut: El volum de tràfic actual i les tendències al llarg del temps.
  • Temps de resposta: La mitjana, el percentil 95 i el percentil 99 del temps de resposta. El P95 i el P99 són especialment importants perquè mostren l'experiència dels usuaris més lents, no només la mitjana.
  • Taxa d'errors: El percentatge de peticions que retornen errors (4xx i 5xx).
  • Ús de CPU i memòria: Per cada instància de l'aplicació, els workers i els serveis gestionats.
  • Rendiment de la base de dades: Consultes per segon, consultes lentes, connexions actives.
  • Estat de les cues: Jobs pendents, jobs processats per minut, jobs fallits.

Logs#

La secció de logs centralitza tots els logs de l'aplicació. Pots filtrar per nivell de severitat (debug, info, warning, error, critical), per servei (web, workers, scheduler), per període de temps i per text lliure. Això permet trobar ràpidament l'error que busques sense haver de revisar fitxers de log manualment.

[2024-03-15 10:23:45] production.ERROR: SQLSTATE[42S02]: Base table or view not found
  → app/Http/Controllers/ProductController.php:42
  → Request: GET /products/electronics
  → User: user@example.com (ID: 42)

Alertes#

Laravel Cloud permet configurar alertes basades en mètriques. Per exemple:

  • Enviar una notificació per Slack si el temps de resposta P95 supera els 2 segons
  • Enviar un correu si la taxa d'errors supera l'1%
  • Notificar si la base de dades supera el 80% d'ús de CPU
  • Alertar si la cua de jobs pendents supera els 1.000

Les alertes ajuden a detectar problemes abans que els usuaris se n'adonin, permetent reaccionar proactivament.

Comparació: Forge vs Vapor vs Cloud#

| Característica | Forge | Vapor | Cloud | |---|---|---|---| | Gestió de servidors | Manual (tu gestioneixes) | No (serverless) | No (completament gestionat) | | Escalat | Manual (redimensionar servidor) | Automàtic (Lambda) | Automàtic (contenidors) | | Cold starts | No | Sí (200ms-1s) | No | | Websockets | Sí (natiu) | No (cal servei extern) | Sí (natiu) | | Sistema de fitxers | Complet (lectura/escriptura) | Només lectura (+ /tmp) | Complet (lectura/escriptura) | | Timeout peticions | Configurable (sense límit) | 30s (API Gateway) | Configurable | | Processos llargs | Sí (sense límit) | 15 min (Lambda) | Sí (sense límit) | | Proveïdor cloud | Qualsevol (DO, AWS, etc.) | Només AWS | Laravel Cloud | | Accés SSH | Sí | No | No | | Preview environments | No (manual) | Sí (semi-automàtic) | Sí (totalment automàtic) | | Backups automàtics BD | Configurable manualment | A través d'AWS | Sí (integrats) | | Certificats SSL | Let's Encrypt (automàtic) | AWS ACM (automàtic) | Automàtic | | Monitorització | Bàsica | CloudWatch | Integrada (completa) | | Facilitat d'ús | Mitjana | Mitjana-alta | Molt alta | | Corba d'aprenentatge | Mitjana (cal conèixer servidors) | Alta (cal conèixer AWS) | Baixa | | Flexibilitat | Molt alta | Mitjana (limitacions Lambda) | Alta | | Cost mensual mínim | ~12$ (Forge) + ~5$ (servidor) | ~39$ (Vapor) + AWS | Consultar plans | | Model de costos | Fix (servidor + Forge) | Variable (Vapor + AWS) | Basat en recursos |

Quan triar Laravel Cloud#

Laravel Cloud és la millor opció quan vols la combinació de simplicitat total i funcionalitat completa. Aquests són els escenaris on Laravel Cloud destaca:

Equips que volen centrar-se en el codi. Si el teu equip és de desenvolupadors que volen escriure codi Laravel i no volen aprendre a gestionar servidors, configurar Nginx, mantenir Supervisor ni navegar per la consola d'AWS, Laravel Cloud és l'opció ideal. Tot funciona sense configuració d'infraestructura.

Projectes que necessiten preview environments. Si el teu flux de treball inclou pull requests i revisió de codi, els preview environments automàtics de Laravel Cloud estalvien una quantitat enorme de temps i fricció. Els revisors poden provar els canvis en un entorn real en lloc de mirar codi abstracte.

Aplicacions amb tràfic variable. L'escalat automàtic sense cold starts fa que Laravel Cloud sigui excel·lent per a aplicacions que experimenten pics de tràfic. No pagues per capacitat que no utilitzes, però tampoc has de preocupar-te per si l'aplicació aguantarà un pic inesperat.

Equips que necessiten monitorització sense complexitat. En lloc d'integrar i configurar serveis externs de monitorització, logs i alertes, Laravel Cloud ho inclou tot de manera integrada. Això redueix el nombre de serveis que cal gestionar i el cost total.

Aplicacions que necessiten funcionalitat completa. Si la teva aplicació utilitza websockets, escriu al sistema de fitxers, executa processos llargs o fa qualsevol cosa que Lambda no suporta, Laravel Cloud et dona tota la flexibilitat d'un servidor complet amb tota la comoditat d'una plataforma gestionada.

Startups i projectes nous. Per a projectes que comencen de zero, Laravel Cloud permet arrencar ràpidament sense perdre temps en configuració d'infraestructura. A mesura que el projecte creix, Laravel Cloud escala automàticament sense necessitat de migrar a una plataforma diferent.

Preus#

Laravel Cloud ofereix plans basats en els recursos consumits. El model de preus inclou una tarifa base per l'ús de la plataforma i un cost variable segons els recursos que seleccionis (instàncies web, workers, bases de dades, Redis). El cost total depèn de la mida i el nombre de recursos que l'aplicació necessita.

Per a aplicacions petites o en fase inicial, el cost pot ser comparable al d'un servidor petit amb Forge. Per a aplicacions grans amb molts recursos, el cost reflecteix la infraestructura que hi ha darrere, però inclou funcionalitats (monitorització, logs, backups, preview environments, escalat automàtic) que amb Forge o Vapor requeririen serveis addicionals amb els seus propis costos.

Els plans i preus de Laravel Cloud poden canviar a mesura que la plataforma madura. Consulta cloud.laravel.com per als preus actualitzats i per veure quins plans s'adapten millor a les necessitats del teu projecte.