Serverlös datoranvändning är en molnbaserad körningsmodell som gör det möjligt att vara hosting för program som en tjänst, utan att behöva underhålla en server.

Tjänsteleverantören upprätthåller resursallokeringen på servern och användaren faktureras baserat på den faktiska användningen. Fokus flyttas till den kärnapplikation som man skapar och infrastrukturen hanteras enbart av tjänsteleverantören. Serverlös databehandling kallas även Funktion för en tjänst (FaaS).

Med andra ord är Serverless PHP implementeringen av serverlös databehandling med en PHP-backend för att ge dig ett exempel.

I den här guiden kommer vi att titta närmare på vad Serverless PHP betyder, dess huvudfunktioner och fördelar vs nackdelar för att ge dig en bättre förståelse för detta tillvägagångssätt mot molnbaserad databehandling.

Specifikt kommer vi att titta på begreppet serverlös datoranvändning, dess användningsfall och omfattning, fördelar och nackdelar, en enkel implementering av serverlös PHP med Bref och statusen för serverlös PHP på de tre stora (Amazon, Microsoft och Google).

Redo? Låt oss börja!

Traditionellt behövde du maskinvaran för en server för att konfigurera ett program på Internet. Serverdatorn (eller datorerna) skulle vara fysiskt ansluten till Internet för att någon ska få åtkomst till ditt program. Serverunderhåll var en dyr affär.

Därefter tillät utvecklingen av hostingtjänster webbansvariga att köpa hostingutrymme – varje server kunde innehålla flera applikationer. Detta sänkte kostnaderna.

Med ökningen av molnbaserad databehandling, så minskade kostnaderna av skalfördelarna ytterligare, eftersom du kunde hyra en liten mängd utrymme på en stor, avlägsen servergård. Faktum är att serverlös databehandling gör att du bara kan betala för de tjänster du använder. När du inte används, så använder du praktiskt taget inte utrymme eller resurser i molnet.

Serverlös datoranvändning förenklar programutvecklingsprocessen: den gör det möjligt för en organisation som enbart fokuserar på utveckling utan att oroa sig för distribution, server underhåll och Skalning.

Serverlös PHP: Grunderna

Trender för termen "serverlös" på Google
Trender för termen ”serverlös” på Google

Om du vill distribuera ett serverlöst PHP-program bör du först utforska begreppet serverlös datoranvändning. Termen serverlös dök först upp i den här artikeln om framtiden för mjukvaruutveckling från 2012 på ReadWrite blev det populärt med lanseringen av AWS Lambda 2014.

I det här avsnittet, låt oss fokusera på några viktiga begrepp relaterade till serverlös datoranvändning och försöka svara på en vanlig fråga som omger denna teknik: är det verkligen serverlöst?

Funktioner i Serverless PHP

Distribution är en enkel uppgift utan att hantera servern. Du laddar helt enkelt upp din kod på servern och resten tas om hand av leverantören. Med serverlös teknik kan du ha språkoberoende funktioner som interagerar med varandra.

Om du till exempel har ett meddelandeprogram kan inloggningsmodulen kodas på ett språk och funktionen som uppdaterar din status kan kodas på ett annat språk.

Även om detta fortfarande är möjligt utan serverlös hosting, är det definitivt svårare att interagera. När en åtgärd utlöser din funktion skapas en förekomst för att hantera den.

Den här processen för att skapa en instans kan vara ”varm”, där du använder en befintlig instans eller ”kall”, där du startar en ny instans. Det finns en liten fördröjning i den här processen, särskilt en kall start, jämfört med traditionell hosting, där din server alltid är i standby-läge för att hantera förfrågningar.

Situationen mellan serverlös och traditionell hosting blir dock precis den motsatta när du har ett stort antal förfrågningar att hantera. Skalbarhet kommer till sin natur med serverlös teknik. Om du har ett plötsligt krav på tusen samtidiga förfrågningar kommer leverantören att ta hand om dem utan extra ansträngning eller konfiguration från din sida.

Är Serverless PHP verkligen serverlöst?

Låt inte termen ”serverlös” förvirra dig. Det betyder inte att ”servern” inte finns. När du använder ett serverlöst program finns det en server i bakgrunden som bearbetar indata och beräknar nödvändiga utdata.

”löst” är närvarande i termen ur perspektivet av Författare, som aldrig exponeras för olika delar av servern. Om du distribuerar ett serverlöst PHP-program körs därför en faktisk server i molnet som tillgodoser förfrågningar.

BaaS vs Serverlösa arkitekturer

Även om ”serverlös databehandling” inte är tätt definierad kan den också referera till BaaS-program (Backend as a Service). BaaS hänvisar också till en molnbaserad datormodell, där serveroperationer läggs ut på en tredje part och en utvecklare bara behöver fokusera på att skapa och underhåll av programvaran.

Den primära likheten mellan BaaS och Serverlös är det faktum att utvecklaren inte fokuserar på serverhantering. Många organisationer tillhandahåller BaaS- och FaaS-paket under samma paraply.

Här är de stora skillnaderna mellan BaaS och serverlös databehandling:

  • Komponenter: BaaS-applikationer liknar sina traditionella motsvarigheter, en utvecklare kanske inte gör ändringar i sin struktur för att anpassa sig till BaaS. I serverlös är programmet indelat i logiska delar som kallas funktioner, och var och en av dessa funktioner svarar på en händelse och utför en specifik uppgift.
  • Skalbarhet: Skalbarhet är en viktig komponent i ett serverlöst program – fler resurser allokeras med ökad trafik. Det är inte en nödvändig modul för BaaS-applikationer, även om vissa tjänsteleverantörer tillhandahåller det som ett tillägg.
  • Utlösare: Ett serverlöst program är händelsedrivet, vilket innebär att en viss aktivitet utlöser programmet varje gång det inträffar. Å andra sidan kan ett BaaS-program köras i bakgrunden med resurser kontinuerligt precis som ett traditionellt program.
  • Modulär arkitektur: I den serverlösa arkitekturen är det möjligt för olika funktioner i ett program att finnas och köras på olika servrar, men köras sömlöst på grund av deras integrering. En BaaS-applikation kan följa denna struktur eller inte.

Serverlös PHP: Användningsfall

Vi har diskuterat olika aspekter av serverlös databehandling och hur det skiljer sig från BaaS. Även om vi har täckt grunderna i serverlös databehandling, låt oss utforska situationer när du kanske vill använda en sådan arkitektur.

Du kanske har insett att det kanske inte är en bra idé att vara hosting för komplexa program på serverlös teknik. Men även om du bestämmer dig för att inte distribuera ett komplett program via serverlös PHP kan du distribuera moduler.

Vi kommer att diskutera två exempel på implementeringar av en serverlös stack i det här avsnittet: databaser och fillagring.

En serverlös databas är en på begäran-databas som låter dig köra frågor när du behöver dem. Skalning är enkelt på grund av den serverlösa stacken och leverantörsräkningarna som du bara fakturerar under den tid du använder resursen.

Amazon Aurora och Google Cloud Datastore är exempel på serverlösa databaser som är tillgängliga på marknaden idag. Ett serverlöst fillagringssystem implementeras som objektarkiv. Filer behandlas inte som en hierarki i ett filsystem, utan som objekt, som innehåller data för själva filen och dess metadata. Lagring och hämtning är genom en REST-liknande API.

IBM Cloud ger dig en objektlagringstjänst. Andra vanliga användningsfall av serverlösa program är API: er och mobila server delar, vars design är baserad på små, logiska, beroende funktioner.

Serverlös PHP: Fördelar

I det här avsnittet tittar vi på de viktigaste fördelarna med serverlös datoranvändning och varför den får dragkraft under de senaste åren.

Minskade serverkostnader

Teoretiskt sett leder serverlös databehandling till lägre kostnader jämfört med traditionell hosting. Den inneboende orsaken är enkel: du använder tjänsten under specifika tidsperioder och det finns inga underhållskostnader under inaktiva tider. Om du står inför konstant trafik över tid att anta en serverlös arkitektur kanske dock inte leder till någon större skillnad i kostnader.

Enklare distribution

Distribution av en serverlös tjänst kräver inte att du konfigurerar servern och konfigurerar den. Distribution av ett serverlöst program är också genom enkla funktioner. Det är enklare att skapa en version av programmet och göra det tillgängligt i molnet. Hela distributionsprocessen är därför enklare och effektivare.

Skalbarhet

I en traditionell installation måste man göra en hel del ansträngningar för att skala upp för att tillgodose högre trafik. Å andra sidan tar tjänsteleverantören hand om resursallokeringen när trafiken ökar. Därför är det enklare att skala upp när du distribuerar till en serverlös arkitektur.

Serverlös PHP: Nackdelar

Även om serverlös datoranvändning har sin rättvisa uppsättning av fördelar, måste man vara medveten om dess potentiella nackdelar innan man förbinder sig.

Prestanda

Det primära problemet som användare lyfter fram med serverlös databehandling är prestandadippen. Även om det är händelsedrivet krävs det några hundra millisekunder för att skapa en mikroinstans för att tjäna en begäran.

Denna fördröjning kan visa sig vara betydande för tidskritiska program. Med en ökning av komplexiteten i ett program lägger komponenter som är bosatta på olika platser till den här fördröjningen. Denna tillsatstidsfördröjning kan visa sig vara skadlig för användarupplevelsen.

(Föreslagen läsning: Introduktion till att bygga webbplatser med Gatsby och WordPress)

Inlåsning av leverantör

Medan serverlös arkitektur låter dig fokusera enbart på din kod får leverantören total kontroll över infrastrukturen. Därför kan du inte ändra din leverantör om du går serverlös, eftersom migrering kan vara en svår uppgift.

Felsökning

Leverantörer tar hand om distributionen från början till av serverlösa program. Därför måste en utvecklare vara beroende av leverantören för att tillhandahålla lämpliga loggar för felsökning. Processen att felsöka ett serverlöst program för att identifiera grundorsaken är också svår.

Serverlös PHP: Kom igång med Bref på Lambda

Medan vi har utforskat den serverlösa arkitekturen ser vi nu vad du behöver för att distribuera ett PHP-program via en serverlös tjänst.

Som du kanske redan har gissat är distributionen av ett serverlöst program mycket specifik för leverantören. Därför försöker det här inlägget ta itu med implementeringarna av en serverlös PHP-app på Amazon AWS. Bref, eller kortfattat på franska, är ett Composer-paket som låter dig distribuera PHP-applikationer på AWS via Lambda.

Bref utvecklas ständigt, så du bör förmodligen kontrollera Brefs mognadsmatris för att bedöma om det är en bra idé att importera ditt program till en serverlös arkitektur.

Pre-Nödvändiga för serverlös PHP med Bref

Gå först till Amazon AWS och skapa ett konto. Du behöver det för att distribuera ditt program. Därefter måste du installera det serverlösa ramverket för att hantera distributionen.

npm install -g serverless

Nästa generera ditt offentlig-privata nyckelpar på AWS och konfigurera det serverlösa ramverket lokalt.

serverless config credentials --provider aws --key <key> --secret <secret>

Installera sedan Bref via Composer:

composer require bref/bref

Innan distributionen måste du installera Composers beroenden.

composer install --prefer-dist --optimize-autoloader --no-dev

Skapa ett Hello World-program på Serverlösa PHP med Bref

För att skapa ett enkelt hello world-program med Bref kommer vi att skriva en funktion som utlöses av en händelse och returnerar strängen ”Hello World”.

Först måste du inkludera Brefs autoload.php och sedan använda dess lambda-funktion. Du kan också deklarera en kontextvariabel om du vill komma åt data från sammanhanget.

require __DIR__.'/vendor/autoload.php';
lambda(function ($event) {
 return 'Hello world');
});

När funktionen är klar måste du skapa en serverlös.yml-konfigurationsfil. Här är en grundläggande konfigurationsfil från Brefs guide.

service: app
provider:
 name: aws
 runtime: provided
plugins:
 - ./vendor/bref/bref
functions:
 hello:
 handler: index.php
 layers:
 - ${bref:layer.php-73}

Bref skapar den här konfigurationsfilen automatiskt när du kör följande kommando.

vendor/bin/bref init

Nu när du är redo med din funktion och konfigurationen kan du anropa funktionen för att kontrollera att den körs som avsett med kommandot i det serverlösa paketet:invoke

serverless invoke -f hello

Här är en guide om lokal distribution av serverlösa program med kommandoradsverktyget Sam från AWS. När projektet är klart kan du distribuera det med kommandot distribuera serverlöst. Använd alternativet för att få information om distributionsprocessen:--verbose

serverless deploy

Andra distributionsalternativ för serverlös PHP

Bref PHP på AWS Lambda är ett populärt val. Det finns dock några andra alternativ för dina serverlösa PHP-program.

Ånga, lanserad av Laravel (olika betydelser) i juli 2019, är en serverlös distributionsplattform för Laravel på AWS Lambda. Ånga omvandlar din Laravel-applikation till en enda lambda-funktion. Medan Azure-serverlös stöder inte officiellt PHP kan du fortfarande prova att använda det här distributions exemplet.

Sammanfattning

Här är viktiga aspekter som du bör ta bort från den här guiden om serverlös PHP:

  • Innan du överväger att använda serverlös PHP för ditt program, se till att du är fullt medveten om vad serverlös datoranvändning är, dess fördelar och nackdelar.
  • Det finns tre primära faktorer som du bör tänka på när du importerar ditt program till en serverlös PHP-ramverk. Tänk på programmets komplexitet, tidskritiskheten för dess komponenter och skalbarheten i framtiden.
  • Serverlös PHP är fortfarande ganska ny på marknaden. Se till att du kör en pilot med Bref på en av leverantörerna innan du engagerar dig fullt ut i den.

Även om serverlös blir mycket populär kräver det också en djup förståelse för hur tekniken fungerar för att dra nytta av den.

I alla andra fall kan du använda en hanterad WordPress-hosting som Kinsta som kan förenkla ditt arbetsflöde enormt.

Shaumik Daityari

Shaumik är en dataanalytiker på dagen, och en serietidningsentusiast på natten (eller han är kanske Batman?) Shaumik har skrivit tutorials och skapat screencasts i över fem år. När han inte arbetar är han upptagen med att automatisera vardagliga uppgifter genom noggrant skrivna skript!