Wygraj Sony Playstation 5!
Wypełnij ankietę wynagrodzeń — Więcej
Bazy danych w chmurze: nowoczesne podejście w IT

Bazy danych w chmurze: nowoczesne podejście w IT

Cześć! Nazywam się Ilya Reznykov (Europe Lead of Cloud Practice) i wraz z moim kolegą Arkadiuszem Ryszewskim (Senior Fullstack Engineer) pracujemy na co dzień w Svitla Systems. Przygotowaliśmy wspólnie artykuł, w którym wyjaśniamy zagadnienia związane z wykorzystywaniem baz danych w środowisku chmurowym. Dokument przeznaczony jest dla każdego i ma na celu zbudowanie podstaw i/lub rozszerzenie wiedzy na powyższy temat.

Prawie każdy projekt informatyczny wymaga zastosowania bazy danych. Za każdym razem, gdy dokonujemy zakupu online, odwiedzamy stronę internetową, oglądamy program w serwisie streamingowym lub uzyskujemy dostęp do naszych kont bankowych, pośrednio wchodzimy w interakcję z bazami danych. Kryją się one praktycznie wszędzie.

Koncepcja bazy danych istniała na długo przed pojawieniem się komputerów. Czasopisma, biblioteki i setki kartotek były w dawnych czasach głównymi miejscami przechowywania informacji. Jak można sobie wyobrazić, dokumenty papierowe zajmowały dużo miejsca i były trudne do znalezienia i wykonania kopii zapasowej.

Wraz z pojawieniem się komputerów stworzono komputerowe bazy danych w celu wydajnego przechowywania rekordów. Historia cyfrowych baz danych zaczyna się od pracy Charles Bachmana, który w latach 60. stworzył pierwszą skomputeryzowaną bazę danych. Oryginalna baza nosiła nazwę Integrated Data Store (IDS). Następnie IBM wprowadził swój system baz danych, który nazwano Information Management System.

W latach siedemdziesiątych XX wieku miało miejsce jedno z najważniejszych wydarzeń w historii baz danych, kiedy ukazał się artykuł „A Relational Data Model for Large Shared Databases” autorstwa E. F. Codda. Na przełomie dekad badania te spopularyzowały termin „relacyjna baza danych” i doprowadziły do ​​innowacyjnego podejścia do przechowywania i wyszukiwania danych.

Dziś trudno wyobrazić sobie nowoczesną architekturę bez wykorzystania baz danych. Ponieważ możliwości oferowane przez rozwiązania chmurowe rozwijały się w ostatnich latach bardzo dynamicznie, coraz więcej aplikacji migruje do chmury lub od samego początku ma architekturę chmurową. Z tego powodu w procesie tworzenia baz danych dla rozwiązań chmurowych powstały różne usługi bazodanowe dostępne w chmurze, różniące się modelami wdrażania, mechanizmami bazodanowymi, modelami użytkowania i oferujące różnorodne funkcje unikalne dla chmury. Jednocześnie każda usługa ma swoje zalety i zakres zastosowania: do małych aplikacji webowych, przechowywania dużych wolumenów danych czy analityki w czasie rzeczywistym.

Usługi baz danych w chmurze są oferowane przez dostawców usług chmurowych, ale  również producenci baz danych uwzględniają w swoich liniach produktów oferty tego typu. Ze względu na swój charakter bazy te posiadają wiele zalet, takich jak niezawodność, wysoka dostępność, skalowalność, bezpieczeństwo na różnych poziomach i łatwość zarządzania, interoperacyjność z innymi usługami chmurowymi.

W tym artykule wybierzemy się w podróż do świata baz danych w chmurze, w tym do standardowych definicji, typów wdrożeń i różnych silników baz danych, możliwości i cech ofert rozwiązań chmurowych.


Czym są chmurowe bazy danych?


Chmurowe bazy danych (Cloud Databases) to usługi bazodanowe tworzone i dostępne za pośrednictwem platformy chmurowej, które można wdrażać w różnych modelach i, które wspierają różnorodne mechanizmy baz danych. Analogicznie do klasycznych terminów baza danych (DB) i system zarządzania bazą danych (DBMS), pojęcia usługa bazy danych w chmurze jak i chmurowa baza danych mogą być używane jako synonimy. Popularnym pojęciem o takim samym znaczeniu jest także usługa baza danych jako usługa (Database-as-a-Service). Opisuje podejście, zgodnie z którym usługodawcy wdrażają infrastrukturę i wykonują niektóre zadania związane z zarządzaniem i konserwacją DBMS, który umożliwia użytkownikom korzystanie z bazy danych udostępnianej jako usługa bez martwienia się o część kwestii technicznych. Należy jednak podkreślić, że powyższe pojęcia w praktyce nieczęsto pojawiają się w mowie czy piśmie w polskiej wersji i dla wielu odbiorców, także polskojęzycznych bardziej naturalne będzie używanie ich oryginalnych, anglojęzycznych odpowiedników.

Termin zarządzane bazy danych (Managed Databases) używany jest do opisywania baz danych lub usług bazodanowych wdrożonych w modelu oprogramowanie jako usługa (Software-as-a-Service - SaaS). W tym przypadku dostawcy chmury oferują różne mechanizmy baz danych SQL i NoSQL. Wiele z nich zaprojektowanych jest tak, aby jak najlepiej wspierać jakieś określone zastosowanie. Mnogość rodzajów baz danych pozwala klientom wybrać bazę, dokładnie odpowiada ich potrzebom.



Modele wdrażania baz danych


Modele wdrażania baz danych różnią się możliwościami dostosowywania i nakładem pracy związanym z zarządzaniem bazą i/lub serwerem, przy czym większe dostosowanie wiąże się z większym wysiłkiem związanym z zarządzaniem i większą odpowiedzialnością klienta. I odwrotnie, niewielki lub żaden wysiłek związany z zarządzaniem zapewnia mniejsze dopasowanie do potrzeb ale za to mniejszą odpowiedzialność klienta i więcej wbudowanych dobrych praktyk. Przyjrzyjmy się głównym modelom wdrażania baz danych: infrastruktura jako usługa (Infrastructure-as-a-Service - IaaS), platforma jako usługa (PaaS), oprogramowanie jako usługa (SaaS) i tak zwane usługi Serverless.


Model wdrażania infrastruktury jako usługi (IaaS)


Prawdopodobnie najbardziej popularnym modelem wdrażania baz danych w chmurze jest infrastruktura jako usługa lub IaaS. Model infrastruktury jako usługi oznacza, że ​​dostawca chmury zapewnia wirtualną platformę, na której klient instaluje i obsługuje swoją bazę danych, tak jak mógłby zarządzać bazą danych na swoich fizycznych serwerach na miejscu. Dobrym przykładem tego modelu jest serwis SQL Server na Azure Virtual Machines od Microsoft Azure.



Dostawca chmury umożliwia użytkownikom zakup i uruchomienie instancji maszyn wirtualnych. Obraz może być czystym systemem operacyjnym, w którym użytkownik musi zainstalować serwer bazy danych, zakupić niezbędną licencję, jeśli jest to oprogramowanie komercyjne, oraz skonfigurować dostęp do sieci i reguły bezpieczeństwa. Ponadto użytkownicy mogą pobrać niestandardowy obraz z zainstalowanym systemem DBMS lub skorzystać z gotowych obrazów maszyn wirtualnych, które zawierają zoptymalizowaną instalację bazy danych, dostarczoną przez dostawcę chmury lub dostawcę bazy danych. W tym przypadku podstawowy system operacyjny jest już skonfigurowany, ale użytkownicy muszą również zadbać o dostęp do sieci i zasady bezpieczeństwa.

Baza danych w modelu wdrażania infrastruktury jako usługi może być używana w scenariuszach migracji, takich relokacja (Relocate) і przeniesienie (Rehost / Lift and shift). W scenariuszu relokacji serwery baz danych działające lokalnie jako maszyny wirtualne są migrowane do infrastruktury chmury i konwertowane na instancje w chmurze bez żadnych zmian. W scenariuszu przeniesienia, bazy danych z serwerów lokalnych są przenoszone na serwery baz danych hostowane w wystąpieniach wirtualnych w chmurze.

Usługa bazy danych w modelu IaaS nie daje znaczących korzyści w porównaniu z bazą danych hostowaną na serwerach organizacji. Różnica polega na modelu cenowym i integracji z usługami chmurowymi:

  • Użytkownicy płacą za czas spędzony na maszynie wirtualnej oraz za licencję komercyjną, jeśli dotyczy. Opcje płatności z góry są dostępne dla maszyny wirtualnej, ale nie ma płatności z góry za korzystanie z bazy danych. Miesięczna opłata za faktyczne wypożyczenie bazy danych w chmurze staje się kosztem operacyjnym.
  • Pamięć masowa i moc obliczeniowa baz danych w chmurze stają się elastyczne, dając użytkownikom więcej opcji w miarę wzrostu ich obciążeń.
  • Ponieważ usługa bazy danych jest hostowana w chmurze, można ją łatwo zintegrować z różnymi usługami w chmurze.

Wady tego modelu wdrażania są dość oczywiste:

  • Wysokie koszty klienta związane z obsługą infrastruktury.
  • Dopłata za infrastrukturę, licencję komercyjną i personel zarządzający tą infrastrukturą.
  • Być może najważniejsze jest to, że tego rodzaju konfiguracja jest podatna na błędy użytkownika.


Model wdrażania platformy jako usługi (PaaS)


Kolejnym modelem wdrożenia jest Platforma jako usługa (PaaS). W tym przypadku podstawowa infrastruktura, taka jak sprzęt, system operacyjny i DBMS, jest dostarczana jako usługa przez dostawców chmury, a użytkownicy tworzą bazy danych w chmurze za pomocą tej platformy. Model ten łączy ekonomiczną, skalowalną pojemność serwera bazy danych klasy przemysłowej z zaletami w pełni zarządzanej, nowoczesnej platformy jako usługi. Przykładem takiego modelu wdrażania jest Usługa Amazon RDS z AWS.



W przypadku usługi zarządzanej bazy danych w modelu PaaS dostawca chmury zapewnia predefiniowany zestaw parametrów dla infrastruktury bazowej. Pozwala użytkownikom wybrać rozmiar i typ instancji, opcje przechowywania i łączności, ale wszystkie ogólne zadania administrowania bazą danych, takie jak wdrażanie, aktualizacje i konserwacja, leżą wyłącznie w gestii dostawcy chmury. Takie usługi baz danych w chmurze mogą udostępniać dodatkowe funkcje, takie jak repliki do odczytu i zapisu w celu poprawy wydajności, wdrażanie w wielu strefach lub regionach dostępności w celu poprawy niezawodności i dostępności, dostosowywanie skali oraz integracja z narzędziami do monitorowania.

Model wdrażania bazy danych PaaS może być używany w scenariuszach migracji, takich jak powtórny zakup (Repurchase) i zmiana platformy (Replatform). Scenariusz migracji Repurchase można zrealizować poprzez zakup i migrację bazy danych do nowszej wersji tej samej bazy oferowanej przez usługę bazy danych w modelu PaaS. W scenariuszu Replatform architektura i struktura danych aplikacji nie ulegają zmianie, ale bazy danych są przenoszone do usługi zarządzanej bazy danych z tym samym lub zgodnym silnikiem.

Takie podejście zapewnia klientom więcej korzyści niż model wdrażania IaaS:

  • Klient może pracować z tą samą bazą danych co lokalnie i skupić się na zadaniach tworzenia aplikacji zamiast na zarządzaniu infrastrukturą.
  • Dostępnych jest więcej modeli płatności, takich jak pay-as-you-go lub przedpłata ze zniżkami.
  • Silnik bazy danych i bazowy system operacyjny można dostosowywać i optymalizować, co pozwala użytkownikom pozostać przy już wdrożonej architekturze bazy danych, ale osiągnąć lepszą wydajność, stabilność i niezawodność.
  • Dostawca chmury zarządza kopiami zapasowymi, aktualizacją oprogramowania, automatycznym wykrywaniem awarii i odzyskiwaniem. Ponadto dostawcy chmury umożliwiają użytkownikom tworzenie ręcznych kopii zapasowych i przywracanie baz danych z ręcznych i automatycznie tworzonych kopii zapasowych.

Wady modelu wdrażania PaaS są następujące:

  • Klienci muszą skonfigurować ustawienia infrastruktury, takie jak rozmiar instancji, pamięć masowa, zabezpieczenia i łączność. Niektórzy dostawcy chmury zapewniają nawet ograniczony dostęp do podstawowej infrastruktury, aby umożliwić użytkownikom debugowanie starszych aplikacji biznesowych.
  • Ten model jest najczęściej używany w przypadku relacyjnych baz danych, ponieważ wymagają one kontroli nad złożoną infrastrukturą bazową.
  • Koszty użytkowania są nadal wysokie, a użytkownicy zwykle płacą za usługi bazy danych nawet w okresach przestojów. Ponadto ważne jest dobranie parametrów platformy do planowanych obciążeń, tak aby nie płacić za niewykorzystane pojemności.


“Bezserwerowe” usługi bazodanowe (Serverless)


Bezserwerowe usługi bazodanowe to najnowszy trend, czyli następna generacja usług bazodanowych wdrażanych w modelu platform-as-a-service. W takim scenariuszu dostawca chmury nadal odpowiada za całą infrastrukturę, ale w przeciwieństwie do modelu PaaS programiści nie mogą wybrać konkretnych parametrów serwera (rozmiar pamięci masowej, parametry procesora itp.). Bezserwerowa usługa bazy danych samodzielnie skaluje parametry platformy w zależności od obciążenia, a w niektórych implementacjach nawet do całkowitego zatrzymania w okresach braku żądań. Dlatego przez „bezserwerową bazę danych” rozumiemy bazę danych, która może automatycznie uruchamiać się, zamykać i skalować zgodnie z potrzebami Twojej aplikacji.

Najbardziej znanym przykładem zastosowania takiego podejścia jest przetwarzanie w chmurze, którego doskonałymi przykładami są AWS Lambda czy Funkcje chmury GCP. Są to narzędzia, które wykonują kod w odizolowanym środowisku i wymagają minimalnej konfiguracji. Deweloper jest rozliczany tylko za zużytą moc obliczeniową. Dostawca chmury odpowiada za zapewnienie wysokiej dostępności usługi i jej skalowanie w miarę potrzeb.

Dzięki takiemu podejściu bezserwerowe bazy danych są wysoce dostępne, skalowalne i zapewniają minimalne opóźnienie. Większość baz danych tego typu umożliwia łatwe tworzenie dodatkowych instancji bazy w celu uzyskania lepszej wydajności, dostępności, stabilności i automatycznego przełączania awaryjnego. Przykładami baz danych serverless w chmurze są: Amazon Aurora Serverless i Serverless compute tier for Azure SQL Database. Ponieważ żaden z parametrów serwera nie jest stały, ceny są oparte na rzeczywistym wykorzystaniu. Na przykład w przypadku usługi Aurora wycena oparta jest na ilości przestrzeni dyskowej wykorzystywanej na główną bazę danych, instancje i kopie zapasowe, a także liczbę operacji odczytu/zapisu i transferów danych.