Azure Block Blob Storage – ghid pentru estimarea costurilor

Eduard Plesu

BDM Microsoft

eduard.plesu@alef.com

Azure Blob Storage este serviciul Microsoft pe care îl puteți folosi pentru stocarea unor cantități foarte mari de date nestructurate (documente Office, pdf-uri, imagini, fișiere audio/video, backup-uri) și pe care îl puteți accesa de oriunde prin HTTP sau HTTPS.

Utilizatorii sau aplicațiile pot accesa fișierele salvate într-un blob storage direct prin URL sau prin Azure Storage Rest API, Azure PowerShell, Azure CLI sau Azure Storage client library.  

Serviciul de stocare Azure Blob oferă numeroase avantaje:

  • Durabilitate, datele sunt replicate de mai multe ori în același datacenter sau, în funcție de nivelul de redundanță, datele sunt replicate de mai multe ori în datacentere din regiuni pereche (de ex. West Europe și North Europe)
  • Siguranță, datele salvate sunt criptate și accesul sau permisiunile sunt acordate granular în funcție de RBAC (Roll Based Access Control)
  • Scalabilitate, serviciul de stocare este scalabil pentru a atinge exigențele și nevoile de stocare și performanță ale aplicațiilor
  • Managed, Microsoft se ocupă de gestionarea infrastructurii hardware, update-uri și patch-uri de siguranță

Accesibilitate, datele salvate pot fi accesate de oriunde prin HTTP sau HTTPS

Înainte de a începe să urcați date într-un Azure Blob Storage, aveți nevoie în primul rând de o subscripție Azure. Vă putem ajuta cu deschiderea unei subscripții Azure prin completarea acestui formular. Ulterior, trebuie să configurați un Storage Account > Container > Blob

Azure Storage suportă 3 tipuri de blob storage:

  1. Block Blobs
  2. Append Blobs
  3. Page Blobs

În Azure Storage Account, în bara de navigare din stânga veți găși opțiunea „Data Transfer”. Pe baza datelor introduse în câmpurile „Resource type”, „Transfer Ratio”, „Estimated data size for transfer”, „Approximate available network bandwidth” și „Transfer frequency” vor fi afișate soluțiile pe care le puteți folosi pentru a face upload-ul datelor. Despre aceste soluții puteți citi mai multe de la acest link.

În exemplul prezentat am luat în calcul un scenariu de transfer date din local/on-premises către un Azure Blob Storage, un necesar de stocare de 50 Gb, bandwidth-ul de 100 Mbps și transfer repetat. În funcție de specificul datelor, fiecare soluție vine cu o recomandare care s-ar potrivi respectivului scenariu (best use).

La această adresă veți descoperi cum puteți face upload, download sau lista blob-uri, utilizând instrumente ca Azure Portal, Storage Explorer, Azure PowerShell și Azure CLI.

Prețurile lunare pe care o companie le are cu serviciul Azure Block Blob Storage sunt constituite din următoarele:

  • Tierul de performanță (Premium sau Standard)
  • Tierul de acces (hot, cool, archive – se aplică doar la Blob Storage cu tier de perfomanță Standard)
  • Volumul de date stocat (exprimat în Gb)
  • Regiune (de ex. North EU, West US etc.)
  • Cantitatea de operațiuni/tranzacții efectuate
  • Cantitatea de date descărcate/uploadate (bandwidth igress/egress)
  • Nivelul de redundanță selectat

În funcție de workload-ul pe care îl aveți in vedere, va trebui să alegeți un tier de perfomanță care va influența nivelul throughput-ului, latența și viteza de răspuns. În Azure Blob Storage acesta este de 2 tipuri:

  • Premium
  • Standard

O comparație între cele două tier-uri de performanță găsiți la această adresă.

Din punct de vedere costuri, pentru o comparație de prețuri între standard și premium vom lua ca exemplu un volum de date stocat de 1 Tera.

Premium Tier: 1 TB – 168.39 EUR/lună

În ceea ce privește tier-ul standard, costul cu volumul de date stocat este influențat de tier-ul de acces. Acesta poate fi de 3 feluri:

  • Hot, recomandat pt. a stoca date ce sunt accesate frecvent
  • Cool, recomandat pt. a stoca date ce sunt accesate mai rar și sunt păstrate cel puțin 30 de zile
  • Archive, recomandat pt. a stoca date ce sunt accesate foarte rar și sunt păstrate pt. cel puțin 180 de zile și pentru care latența scăzută și viteza mare de descărcare nu sunt esențiale.

Astfel, costurile cu volumul de date stocate în funcție de tier se prezintă astfel: Hot>Cool>Archive

Pentru exemplificare, vom păstra volumul de date stocat de 1 Tera.

Standard Tier Performance, Hot tier access: 1 TB - 16.93 EUR/lună

Standard Tier Performance, Cool tier access: 1 TB – 8.64 EUR/lună

Standard Tier Performance, Archive tier access: 1 TB – 1.55 EUR/lună

Costurile cu Azure Storage sunt influențate și de regiunea aleasă. În acest link veți găsi detalii despre fiecare regiune în parte, precum și sfaturi pe care să le urmați pentru alegerea regiunii potrivite conform nevoilor dvs.

Păstrând exemplul de mai sus cu 1 TB de date stocate, la un access tier de tip Hot, vom observa că sunt costuri diferite de la o regiune la alta:

Un alt factor care influențează costurile cu Azure Block Blob Storage este reprezentat de numărul de tranzacții/operațiuni.

În momentul în care facem upload unui fișier într-un Azure Block Blob Storage vom avea în vedere operațiuni/tranzacții de următoarele feluri:

  • Write operations (operațiuni de scriere), exprimate în număr tranzacții (per 10k/tranzacții)
  • Data Write operations (operatiuni de scriere date), exprimate în Gb (per Gb) – acestea sunt gratuite

Următoarele tipuri de operațiuni sunt considerate Write Operations: PutBlob, PutBlock, PutBlockList, AppendBlock, SnapshotBlob, CopyBlob și SetBlobTier (când se trece de la un access tier de tip Hot la Cool, Cool la Archive sau Hot la Archive).

Block Blob-urile sunt costituite din mai multe block-uri, fiecare fiind identificat printr-un block ID. Un Block Blob poate conține până la 50.000 block-uri. Atunci când scriem date într-un block blob putem alege dimensiunea block-ului. (block size, care poate fi de la 64kb până la 100 Mb - standard este 4 MB)

Dacă fișierul pe care îl vom urca în block blob va avea mai mult de 4 MB, Azure Storage Client Library va sparge acel fișier în mai multe block-uri de câte 4 MB, by default, și fiecare operațiune de scriere PutBlock va fi contorizată ca 1 tranzacție.

În exemplul de mai jos am fact upload unui fișier video de 256.64 MB, într-un block bloc cu dimensiunea block-ului de 4MB. Asa cum se observă, pentru acest fișier au fost contorizate 64 tranzacții de tip „PutBlock”.

Astfel, dacă aveți fișiere cu dimensiuni mai mari decât dimensiunea block-ului (4 MB default), în estimarea de costuri trebuie să aveți în vedere numărul de tranzacții de scriere conform dimensiunii și numărului fișierelor.

Prețul operațiunilor de tip scriere (write operations) sunt diferite în funcție de access tier (tierul de acces hot, cool, archive). Costuri cu operațiunile de scriere: hot<cool<archive.

Totodată, dacă deschideți un block blob cu access tier hot și realizați că s-ar potrivi mai degrabă un access tier de tip cool sau archive, puteți face această schimbare și veți fi contorizat pentru operațiunile de scriere de tip „SetBlobTier.”

Așadar, dacă uploadați frecvent multe fișiere de dimensuni mari, este recomandat să optați pentru un access tier de tip hot, unde veți plăti cel mai scăzut cost cu tranzacțiile, dar un preț mai mare pentru volumul de date stocat.

Denumire OperațiunePremiumHotCoolArchive
Operațiuni de scriere (per 10000 tranzacții) € 0.018 € 0.042 € 0.084 € 0.093
Operațiuni de scriere date (per GB) gratuit gratuit gratuit gratuit

În momentul în care citim un document aflat într-un block blob, vom considera această operațiunea ca fiind una de tip read operation și se va contoriza într-o singură tranzacție. Acestea pot fi: GetBlob și SetBlobTier (atunci când se trece de la un access tier de tip Archive la Cool, Cool la Hot sau Archive la Hot).

Dacă avem datele salvate într-un block blob cu acces tier de tip archive, datele sunt offline și nu pot fi accesate decât dacă trecem într-un access tier online (cool sau hot). Această operațiune se numește rehidratare.

În aceasă situație se vor contoriza atât operațiuni de citiere (per 10000 tranzacții) cât și pentru data retrieval (per GB).

Rehidratarea datelor este de 2 tipuri, standard (poate dura până la 15 ore) sau priority (poate dura pana la 1 oră).

Costurile cu operațiunile de citiere și trecere către un tier „mai cald” archive>cool>hot sunt prezentate în tabelul de mai jos.

Denumire OperațiunePremiumHotCoolArchive
Operațiuni de citire(per 10000 tranzacții) € 0.0015 € 0.0034 € 0.0085 € 4.6382
Archive High Priority Read (per 10000 tranzacții)       € 50.5980
Data Retrieval (per GB) gratuit gratuit € 0.0085 € 0.0186
Archive High Priority Retrieval (per GB)       € 0.1012

Astfel, dacă din motive de conformitate cu legislația locală, aveți nevoie să păstrați de ex. facturile pe o perioadă mare de timp și aveți nevoie să le accesați foarte rar, să spunem în cazul unui control, puteți alege un Azure Block Blob Storage de tip archive. Cu mențiunea că în momentul în care vreți să citiți sau să descărcați un fișier salvat trebuie să-l treceți printr-un proces de rehidratare, într-un access tier cool sau hot și aștepați câteva ore până se finalizează operațiunea sau alegeți opțiunea „Rehydrate priority high” și veți avea acces la documente într-un timp mult mai scurt.  Mai multe detalii puteți citi la aceasă adresă.

O altă mențiune importanță legată de access tier-ul cool și archive este legată de „early deletion fee”. Limita de stocare a fișierelor într-un access tier de tip cool este de 30 de zile si respectiv 180 zile pentru archive. Despre acest „early deletion fee” puteți citi mai multe aici.

Alte operațiuni contorizate într-un Azure Block Blob Storage sunt:

  • Operațiunile de listare și creare containere (per 10000 tranzacții): ListBlobs, ListContainers, FindBlobsByTags și CreateContainer.  
  • Alte operațiuni (în afara de write, read, list) cu excepția celor de ștergere care sunt gratuite
Denumire OperațiunePremiumHotCoolArchive
Operațiuni de listare și creare containere (per 10000 tranzacții) € 0.0506 € 0.0422 € 0.0422 € 0.0422
Toate celelalte operațiuni (în afară de scriere, citire, listare) cu excepția ștergerii € 0.0015 € 0.0034 € 0.0034 € 0.0034

Pentru a vă ajuta în contorizarea tranzacțiilor, aveți posibilitatea să accesați Storage account>Metrics și să filtrați după Transacții, cu opțiunea „Apply splitting>value=API name”

Astfel, veți vedea un raport detaliat cu numărul de tranzacții pe care îl puteți filtra inclusiv după un interval de timp.

Pentru durabilitate și high availability, Azure Storage vă permite să alegeți între mai multe opțiuni de „Data redundancy”. Mai multe detalii aici:

Local Redundant Storage (LRS) - SLA 99.999999999% (11 9's)

Zonal Redundant Storage (ZRS) - SLA 99.999999999% (11 9's)

Geo Redundant Storage (GRS) - 99.99999999999999% (16 9's)

Geo Zone Redundant Storage (GZRS) - 99.99999999999999% (16 9's)

Atunci când efectuați operațiuni de scriere date într-un Azure Block Blob Storage cu redundanță de tip GRS, datele sunt replicate într-o regiune pair (de ex. North Europe cu West Europe). Veți plăti un cost cu bandwidth-ul care este contorizat per GB și care ajunge la €0.0169 EUR. În cazul în care țineți datele într-un Block Blob Storage cu redunanță LRS nu veți plăți în plus pentru aceste operațiuni de transfer, pentru că datele sunt replicate de 3 ori într-un datacenter dintr-o singură regiune aleasă (de ex. North Europe).

Un ultim aspect ce ține de costurile cu stocarea datelor într-un block blob storage este reprezentat de Outbount Data Transfer cost (bandwitdh) – datele care sunt descărcate din Azure (preț per Gb). Pentru Azure Storage, Microsoft recomandă rutarea prin Microsoft Global Netwrok (detalii aici).

Primii 5 Gb de date descărcate sunt gratuiți, ulterior bandwidth-ul este contorizat conform tabelului din acest link. De ex. pentru Europa, până în 10 TB, datele descărcate costă €0.0738 per GB. 

În final, am pregătit o estimare de costuri realizată prin Azure Price Calculator pe un scenariu de Block Blob Storage, în care am presupus că voi ține aici date însumând 1 TB, pe care le voi accesa destul de des (access tier hot), fișierele au dimensiuni variabile.  Detaliile le găsiți în continuare în secțiunea „Description”:

După cum vedeți, estimarea arată că putem ajunge la costuri de cca. 36.40 EUR pe lună, pentru cei 1 TB de date stocate, ceea ce înseamnă un preț interesant dacă punem în balanță toate beneficiile Azure.

Dacă doriți să lucrăm împreună la o astfel de estimare sau pur si simplu doriți să abordăm subiectul Azure Storage sau un alt topic ce ține de Azure, îmi puteți scrie oricând la adresa eduard.plesu@alef.com și vă voi răspunde cu plăcere.