Ohjelmointi

Mikä on palvelimeton? Palvelimeton laskenta selitetty

Kehittäjät käyttävät lukemattomia tunteja liiketoiminnan ongelmien ratkaisemiseen koodilla. Sitten on ops-tiimin vuoro viettää lukemattomia tunteja, ensin selvittämällä, miten hankitaan koodi, jonka kehittäjät kirjoittavat ja käyttävät käytettävissä olevilla tietokoneilla, ja toiseksi varmistaen, että nämä tietokoneet toimivat moitteettomasti. Toinen osa on todella loputon tehtävä. Miksi et jätä sitä osaa jollekin muulle?

Viimeisen kahden vuosikymmenen aikana IT-alalla on tehty paljon innovaatioita - virtuaalikoneet, pilvipalvelut, kontit -, ja keskitytty siihen, että sinun ei tarvitse ajatella paljoakaan fyysisestä koneesta, jolla koodisi toimii. Palvelimeton tietojenkäsittely on yhä suositumpi paradigma, joka vie tämän halun loogiseen johtopäätökseen: Palvelimettoman laskennan avulla sinun ei tarvitse tietää mitä tahansa laitteistosta tai käyttöjärjestelmästä, jossa koodisi toimii, koska palveluntarjoaja huolehtii siitä kaikesta.

Mikä on palvelimeton tietojenkäsittely?

Palvelimeton tietojenkäsittely on pilven suoritusmalli, jossa pilvipalvelujen tarjoaja jakaa dynaamisesti - ja veloittaa käyttäjältä - vain tietyn koodinpätkän suorittamiseen tarvittavat laskentaresurssit ja tallennustilan. Luonnollisesti palvelimia on edelleen mukana, mutta palvelujen tarjoaja huolehtii niiden ylläpidosta ja ylläpidosta kokonaan. Amazonin palvelimettoman puolestapuhuja Chris Munns sanoi vuoden 2017 konferenssissa, että koodin kirjoittamisen ja käyttöönoton tiimin näkökulmasta "ei ole palvelimia, joita hallita tai tarjota. Tämä ei sisällä mitään, mikä olisi paljasta metallia, ei mitään virtuaalista, ei mitään, joka on kontti - mikä tahansa, johon kuuluu isännän hallinta, isännän korjaaminen tai minkä tahansa käyttöjärjestelmän tason käsittely, ei ole sinun pitäisi tehdä palvelimettomassa maailmassa. "

Kuten kehittäjä Mike Roberts selittää, termiä käytettiin aikoinaan ns back-end-a-service skenaariot, joissa mobiilisovellus muodostaisi yhteyden pilvipalvelimeen. Mutta tänään, kun ihmiset puhuvat palvelimettomasta tietojenkäsittelystä tai a palvelimeton arkkitehtuuri, he tarkoittavat toiminto palveluna tarjouksia, joihin asiakas kirjoittaa koodin vain käsittelee liiketoimintalogiikkaa ja lähettää sen palveluntarjoajalle. Kyseinen palveluntarjoaja huolehtii kaikesta laitteistojen valmistelusta, virtuaalikoneiden ja konttien hallinnasta ja jopa tehtävistä, kuten monisäikeinen, jotka usein on rakennettu sovelluskoodiin.

Palvelimettomat toiminnot ovat tapahtumavetoinen, eli koodiin vedotaan vain, kun pyyntö laukaisee. Palveluntarjoaja veloittaa vain suorituksen käyttämästä laskenta-ajasta kiinteän kuukausimaksun sijasta fyysisen tai virtuaalisen palvelimen ylläpidosta. Nämä toiminnot voidaan yhdistää toisiinsa prosessointiputken luomiseksi, tai ne voivat toimia suuremman sovelluksen komponentteina vuorovaikutuksessa muiden säiliöissä tai tavanomaisilla palvelimilla ajettavien koodien kanssa.

Palvelimettoman tietojenkäsittelyn edut ja haitat

Tämän kuvauksen perusteella palvelimettoman tietojenkäsittelyn kahden suurimman edun pitäisi olla selvä: kehittäjät voivat keskittyä kirjoittamansa koodin liiketoiminnan tavoitteisiin infrastruktuurikysymysten sijaan; ja organisaatiot maksavat vain tosiasiallisesti käyttämistä laskentaresursseista hyvin rakeisella tavalla sen sijaan, että ostaisivat fyysisiä laitteistoja tai vuokrasivat enimmäkseen lepotilassa olevia pilvi-instansseja.

Kuten Bernard Golden huomauttaa, jälkimmäinen kohta on erityisen hyödyllinen tapahtumavetoisille sovelluksille. Esimerkiksi sinulla voi olla sovellus, joka on käyttämättömänä suurimman osan ajasta, mutta tietyissä olosuhteissa sen on käsiteltävä useita tapahtumapyyntöjä kerralla. Tai sinulla voi olla sovellus, joka käsittelee tietoja, jotka lähetetään IoT-laitteista, joilla on rajoitettu tai ajoittainen Internet-yhteys. Molemmissa tapauksissa perinteinen lähestymistapa edellyttäisi sellaisen palvelimen hankkimista, joka pystyy käsittelemään huipputyökapasiteetin - mutta palvelinta ei käytetä suurimmaksi osaksi aikaa. Palvelimettomalla arkkitehtuurilla maksat vain tosiasiallisesti käyttämistäsi palvelinresursseista. Palvelimeton tietojenkäsittely olisi hyvä myös tietyntyyppisille eräkäsittelyille. Yksi kanonisista esimerkeistä palvelimettoman arkkitehtuurin käyttötapauksista on palvelu, joka lataa ja käsittelee sarjan yksittäisiä kuvatiedostoja ja lähettää ne sovelluksen toiseen osaan.

Palvelimettomien toimintojen ehkä ilmeisin haittapuoli on se, että ne ovat tarkoituksellisesti lyhytaikaisia ​​ja AlexSoftin sanoin "sopimattomia pitkäaikaisiin tehtäviin". Suurin osa palvelimettomista palveluntarjoajista ei anna koodisi suorittaa muutama minuutti, ja kun kehrät toimintoa, se ei säilytä tilastollisia tietoja aiemmin suoritetuista instansseista. Aiheeseen liittyvä ongelma on, että palvelimettoman koodin pyöriminen voi kestää jopa useita sekunteja - ei ole ongelma monissa käyttötapauksissa, mutta jos sovelluksesi vaatii pientä viivettä, varoitetaan.

Monet muut haittapuolet, kuten Rohit Akiwatkar ja Gary Arora huomauttavat, liittyvät myyjän lukitsemiseen. Vaikka käytettävissä on avoimen lähdekoodin vaihtoehtoja, palvelimettomia markkinoita hallitsevat suuret kaupalliset pilvipalvelujen tarjoajat, kuten keskustelemme hetken kuluttua. Tämä tarkoittaa sitä, että kehittäjät käyttävät usein toimittajiensa työkaluja, mikä vaikeuttaa vaihtamista, jos he ovat tyytymättömiä. Ja koska niin paljon palvelimetonta tietojenkäsittelyä tapahtuu määritelmän mukaan toimittajan infrastruktuurissa, voi olla vaikeaa integroida palvelimetonta koodia yrityksen sisäisiin kehitys- ja testausputkiin.

Palvelimettomat toimittajat: AWS Lambda, Azure-toiminnot ja Google Cloud -toiminnot

Palvelimettoman laskennan nykyaika alkoi käynnistämällä Amazonin pilvipalveluun perustuva AWS Lambda -alusta vuonna 2014. Microsoft seurasi esimerkkiä Azure Functions -toiminnon kanssa vuonna 2016. Google Cloud Functions, joka oli ollut beetaversiossa vuodesta 2017, saavutti lopulta tuotantotilan heinäkuussa 2018. Näillä kolmella palvelulla on hieman erilaiset rajoitukset, edut, tuetut kielet ja toimintatavat. Rohit Akiwatkarilla on hyvä ja yksityiskohtainen selvitys näiden kolmen eroista. Myös käynnissä on IBM Cloud Functions, joka perustuu avoimen lähdekoodin Apache OpenWhisk -alustaan.

Kaikista palvelimettomista tietokonealustoista AWS Lambda on merkittävin, ja sillä on ilmeisesti ollut eniten aikaa kehittyä ja kehittyä. sisältää kattavuuden päivityksistä ja uusista ominaisuuksista, jotka on lisätty AWS Lambdaan kuluneen vuoden aikana.

Palvelimettomat pinot

Kuten monissa ohjelmistoalueissa, palvelimettomassa maailmassa on tapahtunut kehitystä pinoja ohjelmistoja, jotka kokoavat yhteen eri komponentteja, joita tarvitaan palvelimettoman sovelluksen rakentamiseen. Jokainen pino koostuu a ohjelmointiKieli että kirjoitat koodin sisään, sovelluskehys joka tarjoaa rakenteen koodillesi ja joukon liipaisimet jonka alusta ymmärtää ja käyttää koodin suorittamisen aloittamiseen.

Vaikka voit sekoittaa ja sovittaa eri erityistarjouksia kussakin näistä luokista, on rajoituksia riippuen siitä, mitä toimittajaa käytät, ja päällekkäisyyksiä. Esimerkiksi kielille voit käyttää Node.js, Java, Go, C # ja Pythonia AWS Lambdassa, mutta vain JavaScript, C # ja F # toimivat luonnollisesti Azure-toiminnoissa. Käynnistimien osalta AWS Lambdalla on pisin luettelo, mutta monet niistä ovat ominaisia ​​AWS-alustalle, kuten Amazon Simple Email Service ja AWS CodeCommit; Sillä välin Google Cloud Functions voidaan laukaista yleisten HTTP-pyyntöjen avulla. Paul Jaworskilla on syvällinen katsaus kolmen suuren tarjouksen pinoihin.

Palvelimettomat kehykset

On syytä viipyä hieman puitteet osa yhtälöä, koska se määrittää paljon siitä, miten päädyt rakentamaan sovellustasi. Amazonilla on oma natiivitarjonta, avoimen lähdekoodin Serverless Application Model (SAM), mutta on myös muita, joista suurin osa on alustojen välisiä ja myös avoimen lähdekoodin. Yksi suosituimmista on nimeltään melko yleisesti Serverless, ja korostaa, että se tarjoaa saman kokemuksen jokaiselle tuetulle alustalle, eli AWS Lambda, Azure Functions, Google Cloud Functions ja IBM OpenWhisk. Toinen suosittu tarjonta on Apex, joka voi auttaa saattamaan joitain kieliä, jotka eivät muuten ole käytettävissä tietyille palveluntarjoajille.

Palvelimettomat tietokannat

Kuten edellä todettiin, yksi palvelimettoman koodin kanssa työskentelemisen mieliala on se, että sillä ei ole pysyvää tilaa, mikä tarkoittaa, että paikallisten muuttujien arvot eivät pysy kaikissa instansseissa. Kaikki pysyvät tiedot, joita koodisi tarvitsee käyttää, on tallennettava muualle, ja suurimpien toimittajien pinoissa käytettävissä olevat liipaisimet sisältävät kaikki tietokannat, joiden kanssa toiminnot voivat olla vuorovaikutuksessa.

Joihinkin näistä tietokannoista itse kutsutaan palvelimeton. Tämä tarkoittaa, että ne käyttäytyvät aivan kuten muutkin tässä artikkelissa käsittelemämme palvelimettomat toiminnot, lukuun ottamatta ilmeistä, että tietoja tallennetaan loputtomiin. Mutta suuri osa tietokannan valmisteluun ja ylläpitoon liittyvistä johdon yleiskustannuksista jätetään syrjään. Kehittäjä Jeremy Daly sanoo: "Sinun tarvitsee vain määrittää klusteri ja sitten kaikki ylläpito, korjaus, varmuuskopiot, replikointi ja skaalaus hoidetaan automaattisesti." Kuten toiminto palveluna -palveluissa, maksat vain tosiasiallisesti käyttämästäsi laskentajaksosta, ja resursseja pyöritetään ylös ja alas tarpeen mukaan vastaamaan kysyntää.

Kolme suurta palvelinta tarjoavaa palveluntarjoajaa tarjoaa kukin omat palvelimettomat tietokantansa: Amazonilla on Aurora Serverless ja DynamoDB, Microsoftilla Azure Cosmos DB ja Googlella Cloud Firestore. Nämä eivät kuitenkaan ole ainoat käytettävissä olevat tietokannat. Nemanja Novkovicilla on tietoa lisää tarjouksista.

Palvelimeton tietojenkäsittely ja Kubernetes

Säiliöt auttavat palvelimettomia tekniikoita konepellin alla, mutta toimittaja huolehtii niiden hallinnan yleiskustannuksista ja on siten käyttäjälle näkymätön. Monet näkevät palvelimettoman tietojenkäsittelyn keinona saada monet konttipohjaisten mikropalvelujen edut tarvitsematta huolehtia niiden monimutkaisuudesta, ja ovat jopa alkaneet puhua konttien jälkeisestä maailmasta.

Todellisuudessa kontit ja palvelimeton tietojenkäsittely ovat lähes varmasti rinnakkain monien vuosien ajan, ja itse asiassa palvelimettomat toiminnot voivat esiintyä samassa sovelluksessa kuin konttipohjaiset mikropalvelut. Kubernetes, suosituin kontti-orkestrointiympäristö, voi hallita myös palvelimettoman infrastruktuurin. Kubernetesin avulla voit integroida erityyppisiä palveluja yhteen klusteriin.

Palvelimeton offline-tilassa

Palvelimettoman tietojenkäsittelyn aloittamisen mahdollisuus saattaa olla hieman pelottava, koska näyttää siltä, ​​että sinun on kirjauduttava myyjään pelaamaan ja katsomaan, miten se toimii. Mutta älä pelkää: On olemassa tapoja suorittaa palvelimeton koodi offline-tilassa omalla paikallisella laitteellasi. Esimerkiksi AWS SAM tarjoaa paikallisen ominaisuuden, jonka avulla voit testata Lambda-koodia offline-tilassa. Ja jos käytät Serverless-sovelluskehystä, tutustu serverless-offline-laajennukseen, jonka avulla voit suorittaa koodin paikallisesti. Hyvää kokeilua!