Azure Storage – uniwersalny magazyn danych

Azure Storage to magazyn danych wykorzystywany do przechowywania wszelkiego rodzaju informacji. Znajdujące się w nim dane mogą być wykorzystywane przez dowolne aplikacje webowe, mobilne lub inne usługi znajdujące się wewnątrz chmury. Konto Azure Storage pozwala na przechowywanie aż 500TB danych, natomiast w ramach jednej subskrypcji można posiadać do 100 takich kont. Łatwo można przekalkulować ile miejsca jesteśmy w stanie zagospodarować w ramach jednej subskrypcji.

Magazyn danych rozliczany jest w modelu Pay as you go – płacimy za tyle danych, ile przechowujemy. Transfer danych w ramach tego samego regionu jest darmowy, natomiast pomiędzy różnymi regionami pociąga za sobą dodatkową opłatę. Dodatkowo rozliczamy się za wybrany rodzaj konta, strategie replikacji, liczbę transakcji wejścia/wyjścia (o ile się nie mylę dopiero po 10 000 transakcjach widać jakieś tam naliczanie) czy warstwę dostępu. Warto dodać, że im więcej danych przechowujesz w ramach magazynu, tym mniej za to niego płacisz 🙂 Więcej szczegółów na temat płatności znajdziesz tutaj.

W ramach Azure Storage dostępne są następujące rodzaje magazynów:

  • blob storage – wykorzystywany do przechowywania nieustrukturalizowanych danych binarnych (unstructutred binary data), potocznie nazywany jako object storage. Może przechowywać pliki audio, video, jakieś pliki graficzne czy obrazy maszyn wirtualnych,
  • table storage – służy do przechowywania danych ustrukturalizowantych (structured data). Magazyn ten został zaimplementowany na wzór NoSQL’owych baz danych. Dane są przechowywane w prostej strukturze tablicowej, zrealizowanej w oparciu o pary klucz-wartość,
  • queue storage – mechanizm wykorzystywany do wymiany informacji pomiędzy różnymi aplikacjami. Jedna aplikacja wysyła dane na kolejkę za pośrednictwem wiadomości, druga pobiera część danych z tej kolejki, a następnie je przetwarza. Kiedy dane zostaną przetworzone, zostają ściągnięte z kolejki, a następnie aplikacja nasłuchująca sięga po kolejną porcję danych,
  • file storage – wykorzystywany do współdzielenia plików w chmurze. Przestrzeń przechowująca pliki może zostać zmapowana na lokalnym komputerze jako osobny dysk lub partycja dzięki czemu zyskujemy bezpośredni dostęp do wgranych plików.

Do poszczególnych magazynów możesz dostać się za pomocą następujących adresów url:

Zacznijmy od stworzenia konta magazynu danych. Po kliknięciu na plus wybierz Storage, a następnie Strorage Account. Nazwa magazynu musi być unikatowa i co najciekawsze musi składać się TYLKO z małych liter oraz cyfr. Nie wiem skąd takie ograniczenie, ale już jest i koniec. Azure Storage może działać w dwóch modelach wdrożeniowych (Deployment model). Chodzi tutaj oczywiście o Resource Manager (ARM) oraz o model klasyczny (ASM). Magazyny mają w obydwóch modelach te same funkcjonalności, aczkolwiek Azure Storage Account dla ARM nie będzie dostępny w ASM oraz ASM’owy magazyn nie będzie widoczny w ARM (można go tam tylko stworzyć).

Magazyn danych może działać w trybie blob, gdzie skupiamy się na przechowywaniu większych obiektów. Ponadto w tym trybie obsługiwane są tzw. warstwy dostępu. Drugi tryb, mianowicie tryb ogólnego przeznaczenia (General purpose) pozwala na automatyczne dostosowaniu magazynu na dodatkowe typy danych, takie jak tabele czy kolejki. Wspomniana wcześniej warstwa dostępu może działać w trybie chłodnym (cold), co oznacza, że nie będziemy do tych plików odwoływać się za często, oraz gorącym (hot) gdzie będziemy do tych danych sięgać znacznie częściej.

Jeżeli chodzi o wydajność mamy do wyboru: Standard Azure Storage Account, opierający się na wykorzystaniu klasycznych dysków magnetycznych, co w przypadku zwykłego magazynu jest w pełni wystarczające, oraz Premium Azure Storage Account, posiadający dyski SSD, charakteryzujące się znacznie lepszą wydajnością – dzięki czemu magazyn znacznie lepiej sprawuje się w aplikacjach wymagających częstego dostępu do danych. Przykładem wykorzystania konta typu Premium może być przechowywanie plików maszyn wirtualnych VHD (virtual hard disk). Wysoka wydajność oraz krótki czas oczekiwania są tym czego oczekujemy od każdej maszyny wirtualnej. Oczywiście koszt kont Premium jest wyższy.

Warto jeszcze powiedzieć nieco o replikacji danych. Do wyboru mamy następujące strategie replikacji:

  • Locally Redundant Storage (LSR) – dostajesz 3 kopie swojego storage’u w jednym data center. Storage będzie się znajdował na trzech oddzielnych serwerach. Jeśli padnie jeden dysk, bez większych problemów będzie można przywrócić wszystkie dane, dzięki dwóm dodatkowym kopiom zapasowym,
  • Zone-Redundant Storage (ZRS) – tworzy 3 kopie w ramach różnych data center. Dalej znajdujemy się w tym samym regionie, aczkolwiek kopie wędrują pomiędzy centrami danych. Dane będą dostępne nawet w sytuacji, gdy jakiś data center przestanie odpowiadać. Jeżeli cały region padnie, niestety magazyn nie działa,
  • Geo-Redundant Storage (GRS) – dostajesz aż 6 kopii swojego storage’a. 3 kopie znajdują się w podstawowym regionie, kolejne 3 kopiowane są do dodatkowego regionu. Nie masz dostępu do danych znajdujących się w dodatkowym regionie, są one tylko i wyłącznie wykorzystywane przez Azure’a na potrzeby backapu,
  • Read-Access-Geo-Redundant Storage (RA-GRS) – działa na tej samej zasadzie co GRS, aczkolwiek z dodatkowym dostępem do 3 kopii magazynu znajdujących się w dodatkowym regionie. Można wykorzystać dodatkowy read-only storage do pobierania danych przez dodatkowe aplikacje.

Oczywiście LRS jest najtańszą dostępna strategią replikacji, natomiast RA-GRS tą najdroższą. Z poziomu portalu nie będziesz już w stanie zmodyfikować strategii replikacji – aczkolwiek można to zrobić za pomocą PowerShell’a.

Azure Storage Emulator

Gdy z różnych powodów nie masz dostępu do subskrypcji Azure’owej, albo projekt nad którym pracujesz znajduje się na razie w fazie developmentu lub po prostu chcesz trochę poeksperymentować, polecam Ci zaopatrzyć się w emulator magazynu danych. Azure Storage Emulator pobierzesz ze strony Microsoft’u odwiedzając następujący adres. Emulator to nic innego jak zwykłe darmowe narzędzie konsolowe. Storage uruchamiany jest na Twojej maszynie lokalnej.  Polecam zaznajomić się z podstawowymi komendami emulatora:

Adresy poszczególnych magazynów podejrzysz za pomocą komendy status:

Azure Storage Explorer

Microsoft udostępnił prostą aplikację Azure Storage Explorer, pozwalającą na zdalne podłączenie do magazynu danych znajdującego się wewnątrz chmury (do tego emulowanego także). Aplikację możesz pobrać pod tym linkiem. Po zainstalowaniu i uruchomieniu zostaniesz poproszony o podanie adresu swojego konta Azure Storage – opcją Use a storage account name and key” może nie jest najbezpieczniejszą, ale na potrzeby testu aplikacji najprostszą. Następnie skopiuj z portalu nazwę magazynu oraz klucz – znajdziesz je w zakładce Klucze dostępu (Access keys). Z poziomu aplikacji masz dostęp do wszystkich magazynów danych. Możesz wgrywać i pobierać pliki, stworzyć nowy blob lub file storage, dodawać nowe wiadomości do kolejek czy przeglądać informacje znajdujące się na table storage. Poniżej zrzut ekranu z aplikacji Azure Storage Explorer oraz przykładowej kolejki:

Microsoft Azure Storage Explorer
Microsoft Azure Storage Explorer

Na koniec trochę PowerShella oraz Azure CLI:

PowerShell

Azure CLI