Kernpunten
- Al een paar jaar wordt ons beloofd dat serverless computing een nieuw tijdperk zal openen zonder specifieke OS voor het uitvoeren van applicaties. Er werd ons verteld dat deze structuur veel schaalbaarheidsproblemen zou oplossen. In werkelijkheid is alles echter anders.
- Hoewel velen serverless technologie als een nieuw idee beschouwen, zijn de wortels ervan terug te traceren tot 2006, toen Zimki PaaS en Google App Engine verschenen ā in beide gevallen wordt serverless architectuur gebruikt.
- Er zijn vier redenen waarom de serverless revolutie vastloopt: van beperkte ondersteuning voor programmeertalen tot prestatieproblemen.
- Serverless computing is niet helemaal nutteloos. Integendeel. Maar het moet niet worden gezien als een directe vervanging voor servers. Voor sommige applicaties kunnen ze een handig hulpmiddel zijn.
De server is dood, leve de server!
Dit is de strijdkreet van de aanhangers van de serverless revolutie. Een snelle blik op de branchepers van de afgelopen paar jaar laat gemakkelijk de conclusie ontstaan dat het traditionele servermodel dood is en dat we over een paar jaar allemaal serverless architecturen zullen gebruiken.
Zoals iedereen in de sector weet, en zoals wij ook in ons artikel over , is dit niet het geval. Ondanks het aantal artikelen over de voordelen van , is het niet gerealiseerd. In feite tonen , dat deze revolutie mogelijk vastgelopen is.
Sommige van de beloften voor serverless modellen zijn ongetwijfeld gerealiseerd, maar niet allemaal. Lang niet allemaal.
In dit artikel wil ik de redenen voor deze situatie bekijken. Waarom de gebrek aan flexibiliteit van serverless modellen nog steeds een belemmering is voor bredere acceptatie, hoewel ze nuttig blijven in specifieke, duidelijk gedefinieerde omstandigheden.
Wat de aanhangers van serverless computing beloofden
Voordat we naar de problemen van serverless computing gaan, laten we eens kijken naar wat ze zouden moeten bieden. waren talrijk en ā soms ā zeer ambitieus.
Voor degenen die niet bekend zijn met de term, hier is een korte definitie. Serverless computing definieert een architectuur waarin applicaties (of delen van applicaties) op aanvraag worden uitgevoerd in uitvoeringsomgevingen die meestal op afstand worden gehost. Bovendien kunnen serverless systemen ook lokaal worden gehost. Gedurende de afgelopen jaren was het creƫren van robuuste serverless systemen de grootste zorg van systeembeheerders en SaaS-bedrijven, aangezien (zo wordt beweerd) deze architectuur verschillende belangrijke voordelen biedt ten opzichte van het 'traditionele' client-servermodel:
- Serverless modellen vereisen niet dat gebruikers hun eigen besturingssystemen onderhouden of zelfs applicaties ontwikkelen die compatibel zijn met bepaalde besturingssystemen. In plaats daarvan creƫren ontwikkelaars algemene code, uploaden deze naar een serverless platform en observeren de uitvoering.
- Hulpbronnen in serverless frameworks worden meestal per minuut (of zelfs per seconde) betaald. Dit betekent dat klanten alleen betalen voor de tijd dat ze daadwerkelijk code uitvoeren. Dit is voordelig in vergelijking met een traditionele cloud VM, waar de machine het grootste deel van de tijd inactief is, maar waarvoor toch betaald moet worden.
- Het probleem van schaalbaarheid is ook opgelost. Hulpbronnen in serverless frameworks worden dynamisch toegewezen, zodat het systeem eenvoudig omgaat met plotselinge pieken in de vraag.
Kortom, serverless modellen bieden flexibele, goedkope, schaalbare oplossingen. Het is verbazingwekkend dat we niet eerder op dit idee zijn gekomen.
Is dit eigenlijk een nieuw idee?
Eigenlijk is het idee niet nieuw. Het concept waarmee gebruikers alleen betalen voor de tijd dat de code daadwerkelijk wordt uitgevoerd, bestaat al sinds het werd geĆÆntroduceerd in het kader van in 2006, en rond dezelfde tijd bood Google App Engine een zeer vergelijkbare oplossing aan.
Wat we nu de 'serverless' model noemen, is eigenlijk ouder dan veel technologieƫn die nu 'native cloud' worden genoemd, en die bijna hetzelfde bieden. Zoals reeds opgemerkt, zijn serverless modellen in wezen slechts een voortzetting van het SaaS-businessmodel dat al enkele decennia bestaat.
Het moet ook worden erkend dat het serverless model geen FaaS-architectuur is, hoewel er een verband tussen de twee bestaat. FaaS is in wezen het op computationele processen gerichte onderdeel van de serverless architectuur, maar het vertegenwoordigt niet het hele systeem.
Wat is al deze ophef? Nou, aangezien de snelheid van internetpenetratie in opkomende landen snel blijft toenemen, groeit tegelijkertijd de vraag naar computermiddelen. In veel landen met snelgroeiende sectoren van e-commerce is er simpelweg geen IT-infrastructuur voor de toepassingen op deze platforms. Dit is waar betaalde serverless platforms zich aandienen.
Problemen met serverless modellen
Het probleem is dat serverless modellen... problemen hebben. Begrijp me niet verkeerd: ik zeg niet dat ze op zich slecht zijn of geen aanzienlijke waarde bieden voor sommige bedrijven in bepaalde omstandigheden. Maar de belangrijkste bewering van de 'revolutie' ā dat serverless architectuur snel traditionele architectuur zal vervangen ā zal nooit worden gerealiseerd.
Dit is waarom.
Beperkte ondersteuning voor programmeertalen
De meeste serverless platforms laten alleen toepassingen draaien die zijn geschreven in bepaalde programmeertalen. Dit beperkt de flexibiliteit en adaptiviteit van deze systemen aanzienlijk.
Er wordt aangenomen dat serverless platforms de meeste gangbare talen ondersteunen. AWS Lambda en Azure Functions bieden ook een wrapper om toepassingen en functies uit te voeren in niet-ondersteunde talen, hoewel dit vaak ten koste gaat van de prestaties. Voor de meeste organisaties is deze beperking meestal niet zo belangrijk. Maar hier is het punt. Een van de veronderstelde voordelen van serverless modellen is dat minder bekende, zelden gebruikte programma's goedkoper kunnen worden ingezet, omdat je alleen betaalt voor de tijd dat ze draaien. En minder bekende, zelden gebruikte programma's zijn vaak geschreven in... minder bekende, zelden gebruikte programmeertalen.
Dit ondermijnt een van de belangrijkste voordelen van het serverless model.
Vendor lock-in
Het tweede probleem met serverloze platforms, of in ieder geval met hoe ze momenteel worden geĆÆmplementeerd, is dat ze op operationeel niveau meestal niet op elkaar lijken. Er is vrijwel geen standaardisatie als het gaat om het schrijven van functies, het implementeren ervan en het beheer. Dit betekent dat migratie van functies van het ene platform naar het andere extreem veel tijd kost.
Het moeilijkste aspect van de overstap naar een serverloos model zijn niet de rekenfuncties, die meestal slechts stukken code zijn, maar hoe applicaties zijn verbonden met gekoppelde systemen, zoals objectopslag, identiteitsbeheer en wachtrijen. Functies kunnen worden verplaatst, maar de rest van de applicatie niet. Dit staat in schril contrast met de beloofde goedkope en flexibele platforms.
Sommigen beweren dat serverloze modellen recent zijn ontstaan en dat er niet genoeg tijd is geweest om hun werking te standaardiseren. Maar ze zijn niet zo nieuw als ik hierboven al heb opgemerkt, en veel andere cloudtechnologieƫn, zoals containers, zijn al veel gebruiksvriendelijker geworden door de ontwikkeling en brede adoptie van goede standaarden.
Prestaties
De rekenprestaties van serverloze platforms zijn moeilijk te meten, deels omdat leveranciers informatie geheim proberen te houden. De meeste beweren dat functies op externe, serverloze platforms net zo snel werken als op interne servers, afgezien van enkele onvermijdelijke vertragingproblemen.
Echter, afzonderlijke feiten wijzen op het tegendeel. Functies die voorheen niet op een bepaald platform draaiden of enige tijd niet zijn uitgevoerd, hebben enige tijd nodig voor initiatie. Dit komt waarschijnlijk doordat hun code is overgezet naar een minder toegankelijke opslagmedium, hoewel ā net als bij benchmarks ā de meeste leveranciers je niet zullen vertellen over de gegevensmigratie.
Natuurlijk zijn er verschillende manieren om hieromheen te werken. Een daarvan is het optimaliseren van functies voor elke cloudtaal waarop je serverloze platform draait, maar dit ondermijnt enigszins de uitspraak dat deze platforms "flexibel" zijn.
Een andere benadering is om regelmatig kritische performance-applicaties uit te voeren om ze 'vers' te houden. Deze tweede benadering staat natuurlijk een beetje haaks op de bewering dat serverless platforms kostenefficiënter zijn, omdat je alleen betaalt voor de tijd dat je applicaties draaien. Cloudproviders hebben nieuwe manieren geïntroduceerd om koude starts te verminderen, maar veel van deze vereisen 'schalen naar één', wat de oorspronkelijke waarde van FaaS ondermijnt.
Het probleem van de 'koude start' kan gedeeltelijk worden opgelost door serverless systemen zelf te starten, maar dit brengt eigen kosten met zich mee en blijft een nicheoptie voor goed gefinancierde teams.
Je kunt geen complete applicaties draaien.
Ten slotte is misschien de belangrijkste reden waarom serverless architecturen de traditionele modellen niet snel zullen vervangen: je kunt er (over het algemeen) geen complete applicaties op draaien.
In feite is het kostentechnisch gezien niet haalbaar. Je succesvolle monolith is waarschijnlijk niet de moeite waard om te worden omgevormd tot een set van veertig functies, die met acht gateways, veertig queues en een dozijn database-instanties zijn verbonden. Om deze reden is serverless beter geschikt voor nieuwe ontwikkelingen. Bijna geen enkele bestaande applicatie (architectuur) kan worden overgezet. Je kunt migreren, maar je moet vanaf nul beginnen.
Dit betekent dat serverless platforms in de overgrote meerderheid van de gevallen worden gebruikt als aanvulling op interne servers voor taken die veel rekenkracht vereisen. Dit onderscheidt ze sterk van de twee andere vormen van cloudtechnologie - containers en virtuele machines, die een integrale manier bieden om gedistribueerde berekeningen uit te voeren. Dit illustreert een van de moeilijkheden bij de overstap van microservices naar serverless systemen.
Natuurlijk is dit niet altijd een probleem. De mogelijkheid om af en toe enorme rekencapaciteit te gebruiken zonder eigen hardware aan te schaffen, kan een aanzienlijke en langdurige voordelen bieden voor veel organisaties. Maar als sommige applicaties zich op interne servers bevinden en andere op serverless cloudarchitecturen, dan wordt het beheer een niveau complexer.
Leve de revolutie?
Ondanks al deze klachten ben ik niet tegen serverless oplossingen op zich. Eerlijk gezegd. Ontwikkelaars moeten echter begrijpen - vooral als ze serverless modellen voor het eerst verkennen - dat deze technologie geen directe vervanging voor servers is. Bekijk in plaats daarvan onze tips en middelen voor en bepaal hoe deze modellen het beste kunnen worden toegepast.
Bron: habr.com
