Programmering

Azure Cosmos DB blir serverløs

Azure's Cosmos DB er en av plattformens grunnlag, og driver mange av sine viktigste tjenester. Designet fra grunnen av som en distribuert database, implementerer den et sett med forskjellige konsistensmodeller som lar deg bytte mellom ytelse og ventetid for applikasjonene dine. Deretter er det forskjellige modeller for å jobbe med data, fra kjente NoSQL- og SQL API-er, til støtte for Mongo DBs API, til Gremlin-grafdatabasemotoren.

Det er nok i Cosmos DB til å støtte de vanligste skyutviklingsscenariene, noe som gir deg en konsistent dataplattform som kan dele data på global skala. Microsoft beskriver det ofte som en ”database i planetskala”, en passende beskrivelse.

Det serverløse alternativet til klargjort gjennomstrømning

For alle fordelene har Cosmos DB noen ulemper; ikke minst kostnadene. Selv om det er et relativt begrenset gratis alternativ, kan det være dyrt å kjøre det i skala, og du må ta hensyn til det når du bygger applikasjoner rundt det. Budsjettering for Cosmos DB-forespørselenheter er en kompleks prosess som er vanskelig å få riktig første gang, spesielt når du tar hensyn til skalering, enten manuelt eller automatisk.

Microsoft har kjørt en forhåndsvisning av et serverfritt alternativ for Cosmos DB en stund nå, basert på kjerne SQL API. Det er et interessant alternativ til det tradisjonelt tilrettelagte alternativet. Det belaster deg bare når det kjører en forespørsel og suspenderer forekomsten din når det ikke skjer noe. Det vil være ytterligere ventetid i databasedrift, ettersom forekomsten din må spinne opp når den er suspendert. Selvfølgelig koster det lagring, men det er det samme med enhver Azure-database. Den første prøveperioden er nå utvidet til alle Cosmos DB API-er, med generell tilgjengelighet ikke så langt i fremtiden.

Å legge til et serverfritt alternativ i Cosmos DB gir mye mening for mange typer arbeidsbelastninger der du får forespørsler i lite antall og i grupper. For en liten arbeidsmengde med et uregelmessig driftsmønster gir en forbruksbasert prisingsmodell mye mening - og kan spare en betydelig sum penger på lang sikt, da det ikke er noen forpliktelse til klargjort gjennomstrømning.

Kostnadene er lave: Du betaler $ 0,282 per serverløs forespørselenhet, for så mange som en million RUer i en faktureringssyklus. Hvis du trenger en mer pålitelig server, kan du sette opp en tilgjengelighetssone, men dette øker kostnadene med 1,25 ganger. Det er fortsatt en rimelig avtale, og det du taper i forutsigbarhet, får du lavere kostnader. Lagringskostnadene er de samme for både manuell og automatisk klargjøring.

Komme i gang med serverløs Cosmos DB

Å hoppe inn er lett nok. I likhet med en standard Cosmos DB-konto, må du tilordne den til et abonnement og legge til serverfri forekomst i en ressursgruppe. Velg deretter API-en du planlegger å bruke for spørsmål, og når du blir bedt om å velge en kapasitetsmodus, velg serverløs i stedet for klargjort gjennomstrømning. Til slutt koble den til en region, og husk at du bare kan bruke serverløs i en enkelt Azure-region; det er ikke noe alternativ for geo-redundans. Du vil heller ikke kunne bruke den med gratisnivået.

Når den serverløse forekomsten kjører, kan du bruke API-ene til å laste inn data og stille spørsmål. Som en vanlig forekomst av Cosmos DB, kan du bygge JavaScript-funksjoner og utløsere som kjører inne i databasen, samt bruke de mange forskjellige API-ene til å administrere spørsmål.

Serverless Cosmos DB bør snart gå ut av forhåndsvisning, og legger til støtte for alle API-ene, til og med for den nylige Cassandra API. Siden det er en offentlig forhåndsvisning, kan du sette den opp og utforske driften direkte fra Azure Portal. Mens det i forhåndsvisning ikke er støtte for ARM eller annen infrastruktur som verktøy for kodedistribusjon, bør det være når tjenesten generelt er tilgjengelig. Du kan ikke automatisere konfigurasjon og distribusjon, så du vil ikke kunne bruke den som en del av en CI / CD-rørledning (kontinuerlig integrasjon / kontinuerlig levering) for øyeblikket, da distribusjonene må være manuelle.

Byggekode med serverløs Cosmos DB

Et sted du bør få mye verdi av serverløs Cosmos DB er parallelt med Azure Functions. De to serverløse miljøene fungerer godt sammen og er ideelle for tunge, hendelsesdrevne applikasjoner med lite volum. Serverløs Cosmos DB kan raskt øke fra null til 5000 forespørselenheter per sekund, så hvis du skriver kode som bruker Funksjoner til å spore feilforhold eller andre varsler, er det et alternativ for rask innsamling og lagring av data.

Microsoft anbefaler at du bruker den som en del av et utviklingsmiljø der du fanger inn data om forespørslene applikasjonen din trenger i full skala. Ettersom klargjøring av forespørselenheter er noe av en svart kunst, er en serverløs implementering som kjører med all din in-database-kode, et nyttig utviklingsverktøy. Du kan sette opp et driftsmiljø, kjøre testene dine, registrere antall forespørsler som brukes, og deretter bruke dataene til å levere gjennomstrømning for en produksjonsutplassering.

Forstå serverløse begrensninger

Det er begrensninger for å bruke en serverløs Cosmos DB-konto. Det viktigste er kanskje at du ikke får tilgang til multiregion-distribusjoner, da serverløse kontoer bare kjører over en enkelt region. Det er en begrensning som gir mening: Multiregion Cosmos DB-implementeringer trenger flere forekomster som kjører samtidig for replikering og konsistens mellom regioner. Hvis serverløse forekomster bare kjører når de behandler forespørsler, er det ingen garanti for at en annen region vil være online for å håndtere replikering. Som et resultat er det endringer i Cosmos DB-tjenestenivåmålet for serverløse forekomster, med skrivinger som forventes å være 30 ms eller mindre, og leser 10 ms eller mindre.

Den andre nøkkelbegrensningen er maksimalt 5000 forespørselenheter per sekund. Igjen, det burde være tilstrekkelig for de fleste enkle implementerings- eller utviklingsimplementeringer, men det krever at du holder øye med applikasjonene og er klar til å bytte til en klargjort Cosmos DB-forekomst hvis du regelmessig overskrider grensene. Samtidig kan hver serverløse container bare lagre 50 GB data og indekser. Microsoft tilbyr verktøy i Azure Portal for å overvåke operasjoner, så vel som i Azure Monitor.

Å legge til et serverfritt alternativ i Cosmos DB svarer på mange spørsmål om kostnad. For scenarier med lite bruk der du ikke trenger global dekning, bør det være ditt førstevalg. Skift til å bruke en klargjort gjennomstrømningsforekomst bare når du er i stand til å forstå søknadsmønsteret i applikasjonen og kan budsjettere deretter.