Programmering

Azure Cosmos DB bliver serverløs

Azures Cosmos DB er en af ​​platformens fundament, der driver mange af dens nøgletjenester. Designet fra bunden som en distribueret database, implementerer den et sæt forskellige konsistensmodeller, der giver dig mulighed for at bytte mellem ydeevne og latens for dine applikationer. Derefter er der dens forskellige modeller til at arbejde med data, fra velkendte NoSQL og SQL API'er, til understøttelse af Mongo DB's API til Gremlin-grafdatabaseforespørgsmotoren.

Der er nok i Cosmos DB til at understøtte de mest almindelige skyudviklingsscenarier, hvilket giver dig en ensartet dataplatform, der kan dele data på global skala. Microsoft beskriver det ofte som en "planetarisk database", en passende beskrivelse.

Det serverløse alternativ til klargjort gennemløb

For alle fordelene har Cosmos DB nogle ulemper; ikke mindst dets omkostninger. Selvom der er en relativt begrænset gratis mulighed, kan det være dyrt at køre det i skala, og du skal tage det i betragtning, når du bygger applikationer omkring det. Budgettering af Cosmos DB-anmodningsenheder er en kompleks proces, der er svært at få lige første gang, især når du skalerer, manuelt eller automatisk.

Microsoft har kørt en forhåndsvisning af en serverløs mulighed for Cosmos DB i et stykke tid nu, baseret på dets centrale SQL API. Det er et interessant alternativ til den traditionelt tilvejebragte mulighed. Det opkræver kun dig, når det kører en anmodning og suspenderer din forekomst, når der ikke sker noget. Der vil være yderligere forsinkelse i databasehandlinger, da din forekomst skal dreje op, når den er suspenderet. Der er selvfølgelig et gebyr for opbevaring, men det er det samme med enhver Azure-database. Den indledende prøve er nu udvidet til alle Cosmos DB API'er, med generel tilgængelighed ikke for langt i fremtiden.

Tilføjelse af en serverløs mulighed til Cosmos DB giver meget mening for mange typer arbejdsbelastninger, hvor du får anmodninger i mindre antal og i batches. For en lille arbejdsbyrde med et uregelmæssigt driftsmønster giver en forbrugsbaseret prismodel meget mening - og kan spare en betydelig mængde penge på lang sigt, da der ikke er forpligtet til levering af gennemstrømning.

Omkostningerne er lave: Du betaler $ 0,282 pr. Serverløs anmodningsenhed for så mange som en million RU'er i en faktureringscyklus. Hvis du har brug for en mere pålidelig server, kan du oprette en tilgængelighedszone, selvom dette øger omkostningerne med 1,25 gange. Det er stadig en rimelig aftale, og hvad du mister i forudsigelighed, vinder du i lavere omkostninger. Opbevaringsomkostninger forbliver de samme for både manuel og automatisk klarlagt gennemstrømning.

Kom godt i gang med serverløs Cosmos DB

Det er let nok at springe ind. Ligesom en standard Cosmos DB-konto skal du tildele den til et abonnement og føje din serverløse forekomst til en ressourcegruppe. Vælg derefter den API, du planlægger at bruge til forespørgsler, og når du bliver bedt om at vælge en kapacitetstilstand, skal du vælge serverløs i stedet for klargjort gennemløb. Endelig knyt det til en region, og husk at du kun kan bruge serverløs i en enkelt Azure-region; der er ingen mulighed for geo-redundans. Du kan heller ikke bruge det med det gratis niveau.

Når din serverløse forekomst kører, kan du bruge dens API'er til at indlæse data og foretage forespørgsler. Som en standard forekomst af Cosmos DB kan du oprette JavaScript-funktioner og udløsere, der kører inde i databasen, samt bruge dens mange forskellige API'er til at administrere forespørgsler.

Serverløs Cosmos DB skulle snart gå ud af forhåndsvisning og tilføjer support til alle sine API'er, selv for dens nylige Cassandra API. Da det er en offentlig forhåndsvisning, kan du konfigurere det og udforske dets funktion direkte fra Azure Portal. Mens der i forhåndsvisning ikke er nogen understøttelse af ARM eller anden infrastruktur som kodeudrulningsværktøjer, skal det være, når tjenesten generelt er tilgængelig. Du kan ikke automatisere konfiguration og implementering, så du kan ikke bruge den som en del af en CI / CD-pipeline (kontinuerlig integration / kontinuerlig levering) indtil videre, da implementeringer skal være manuelle.

Bygningskode med serverløs Cosmos DB

Et sted, du skal få meget værdi fra serverfri Cosmos DB, er parallelt med Azure Functions. De to serverløse miljøer fungerer godt sammen og er ideelle til tunge, begivenhedsdrevne applikationer med lavt volumen. Serverløs Cosmos DB kan hurtigt stige fra nul til 5.000 anmodningsenheder i sekundet, så hvis du skriver kode, der bruger funktioner til at spore fejltilstande eller andre alarmer, er det en mulighed for hurtigt at indsamle og lagre data.

Microsoft anbefaler, at du bruger det som en del af et udviklingsmiljø, hvor du registrerer data om de anmodninger, som din applikation i fuld skala har brug for. Da levering af anmodningsenheder er noget sort, er en serverløs implementering, der kører med al din in-database-kode, et nyttigt udviklingsværktøj. Du kan oprette et operationelt miljø, køre dine tests, registrere antallet af anvendte anmodninger og derefter bruge disse data til at levere gennemløb til en produktionsinstallation.

Forståelse af serverløse begrænsninger

Der er begrænsninger for at bruge en serverløs Cosmos DB-konto. Det vigtigste er måske, at du ikke får adgang til multiregion-implementeringer, da serverløse konti kun kører på tværs af en enkelt region. Det er en begrænsning, der giver mening: Multiregion Cosmos DB-implementeringer har brug for flere forekomster, der kører på samme tid for replikering og konsistens mellem regioner. Hvis serverløse forekomster kun kører, når de behandler anmodninger, er der ingen garanti for, at en anden region er online til at håndtere replikering. Som et resultat er der ændringer i Cosmos DB-serviceniveau-målet for serverløse forekomster, med skrivning forventes at være 30 ms eller mindre og læser 10 ms eller mindre.

Den anden nøglebegrænsning er maksimalt 5.000 anmodningsenheder pr. Sekund. Igen skal det være tilstrækkeligt til de fleste enkle implementerings- eller udviklingsimplementeringer, men det kræver, at du holder øje med dine applikationer og er klar til at skifte til en klargjort Cosmos DB-forekomst, hvis du regelmæssigt overskrider dine grænser. På samme tid kan hver serverfri container kun gemme 50 GB data og indekser. Microsoft leverer værktøjer i Azure Portal til at hjælpe med at overvåge operationer såvel som i Azure Monitor.

Tilføjelse af en serverløs mulighed til Cosmos DB svarer på mange spørgsmål om omkostninger. For scenarier med lavt forbrug, hvor du ikke har brug for global dækning, bør det være dit første valg. Skift kun til at bruge en klargjort gennemstrømningsforekomst, når du er i stand til at forstå din applikations anmodningsmønster og kan budgettere i overensstemmelse hermed.