Vad är serverlös?

Serverless computing-konceptet är en uppåtgående exekveringsmodell som försöker tillgodose behoven hos modern, molnbaserad programvara. 

I den här videon från min kurs, Introduktion till Serverlös, introducerar jag dig till den serverlösa arkitekturen. Vi pratar om sina viktigaste punkter och jämför det med andra modeller för att abstrahera serverns funktionalitet till molnet.

Vad är serverlös?

 

Den serverlösa arkitekturen

Först och främst finns det servrar i ett serverlöst system. Förhoppningsvis är det inte en stor överraskning för dig. Det handlar om vem som hanterar dem.

Låt oss ta en titt på ett mycket vanligt diagram som visar olika typer av tjänster. 

Till vänster har du ditt traditionella lokalsystem. Allt hanteras av dig, helt ner till den fysiska maskinen och nätverket. Sedan har du olika nivåer av abstraktion.

Infrastruktur som en tjänst

Den första nivån av abstraktion är infrastruktur som en tjänst. Här är du ansvarig för allt från operativsystemet upp. Exempel skulle vara DigitalOcean eller Amazons EC2. Leverantören är en förekomst för dig, och från det ögonblicket är du själv. 

Container som en tjänst

Nästa lager av abstraktion är behållare som en tjänst. Det är också en ganska ny spelare som har mycket dragkraft på grund av Dockers popularitet. I en AWS-värld skulle detta vara EC2 Container Services. 

Plattform som en tjänst

Då har vi plattform som en tjänst, där du inte ansvarar för hantering av operativsystem eller containrar. Du är ensam ansvarig för din ansökan. Framstående exempel från denna kategori är Heroku, AWS Elastic Beanstalk och Google Compute Engine.

Funktioner som en tjänst (aka serverlös)

Några år tillbaka skulle grafiken ha slutat här. Men nuförtiden har vi en ny terminologi, det vill säga fungerar som en tjänst. I stället för att köra en applikation som har tillstånd, vilket är sant för alla traditionella webbramar, även om du använder REST och andra saker, har du ett system som använder statlösa behållare som är händelseutlösade, efemera och hanteras helt av tjänsten leverantör.

Det här kallas serverlös. Det finns ett annat koncept som kallas back end som en tjänst som ibland också betraktas som en del av serverns arkitektur. Men enligt min mening hör det till mer som programvara som en tjänst, vilket är i huvudsak vad du försöker bygga. 

Viktiga verksamhetsområden som en tjänst

Så låt oss prata mer om funktioner som en tjänst.

Som namnet antyder är du som utvecklare ansvarig för att skriva exekverbara funktioner som utlöses och exekveras av händelser. Det här kan vara en slutförd filuppladdning till S3 eller en förfrågan via en API-ändpunkt. Hittills, så enkelt. För att helt förstå konceptet kommer jag dock att prata om några nyckelområden som definierar funktioner som en tjänst.

stat

Den första är staten. Funktionerna är mycket begränsade när det gäller att bevara tillståndet. I allmänhet bör du anta att du inte alls kan göra det. Funktionerna följer mer av en eld och glömmer principen. Om du vill lagra någonting, gör det med en extern tjänst, till exempel fillagring eller en databas eller cache-server.

Exekveringslängd

Den andra är körningstid. Du kanske har ett serverns program som körs i timmar eller dagar utan att starta om, beroende på din installationsprocess. Detsamma gäller för bakgrundsbehandling. Med funktioner är körtiden begränsad. Det förväntas inte att funktionen körs i mer än några sekunder, och AWS Lambda avslutar till exempel varje funktion som inte har körts efter fem minuter. Om du har en mycket långvarig uppgift, fungerar funktioner som en tjänst kanske inte bäst. 

Start Latency

Då har vi startfördröjning. Detta kan vara allt mellan några millisekunder och minuter. Det beror givetvis på vilket språk och system du använder. Vanligtvis startar en Python- eller JavaScript-funktion på AWS inom millisekunder, men om du använder Java Virtual Machine kan det ta ett tag tills maskinen är spunnen upp-speciellt om din funktion inte har genomförts under de senaste tio minuterna, eller om du upplever en plötslig ökning i körning. 

Skalbarhet och kostnad

Detta leder till frågor om skalbarhet och exekveringskostnad, och svaret du letar efter är: oroa dig inte för det. Skalning hanteras av tjänsteleverantören, och kostnaden är enkel.

Om du utför en funktion tio gånger betalar du för exakt dessa tio anropningar. Om du kör 1000 gånger betalar du för 1 000. Det är lite mer komplicerat än det självklart, men det är kärnan av det. 

Slutsats

Att ha ett serverlöst system kan vara mycket fördelaktigt. Det är bra om du har inkonsekvent trafik, till exempel en spik högst upp i timmen eller mycket få tillfälliga förfrågningar, eftersom du inte behöver allokera resurser som är ofrivilliga för det mesta.

För att återskapa har serverlösa system servrar, men de hanteras helt av molnleverantörer. Funktioner är kärnan i en serverlös arkitektur och de körs genom att använda triggers. Skalning och hög tillgänglighet är redan omhändertagna av molnleverantörerna. Om du har mycket efterfrågan, eller en stor men kort sökning, hjälper serverlösa dig att hålla din kostnad nere.

Titta på hela kursen

I hela kursen, Introduktion till Serverlös, visar jag dig hur du använder Amazon Web Services för att skapa en "serverlös" webbapp, komplett med ett REST API-back-end. Du kommer också att se hur man hanterar några avancerade scenarier som att integrera andra AWS-tjänster och orkestrera statligt medvetna funktioner. På vägen kommer du att bygga en cool webbtjänst för att konvertera text till tal.

Du kan ta kursen direkt med en abonnemang på Envato Elements. För en enda månatlig avgift får du inte bara tillgång till kursen utan också till vårt växande bibliotek med över 1000 videokurser och branschledande e-böcker på Envato Tuts+. 

Dessutom får du obegränsade nedladdningar från det enorma Envato Elements-biblioteket med 400 000 kreativa tillgångar. Skapa med unika teckensnitt, foton, grafik och mallar, och leverera bättre projekt snabbare.