Czym jest chmura? Wyjaśniamy teraźniejszość i przyszłość przetwarzania danych
Każdy zainteresowany oprogramowaniem i sprzętem doskonale zdaje sobie sprawę, że branża uwielbia chwytliwe i pojemne terminy, które wyznaczają kolejne trendy. Big data, deep learning czy w końcu chmura to tylko nieliczne z nich. Status memiczny mają youtube’owe filmy, na których były indyjski komisarz ds. inormatyzacji z pełnym przekonaniem przekazuje wyborcom swoje przekonanie, że ich dane przechowywane są w dryfujących po niebie skupiskach pary.
11.05.2017 | aktual.: 16.05.2017 16:15
Nawet dla słabo zorientowanych użytkowników, takie stwierdzenia są śmieszne. Ale czy oni sami udzieliliby odpowiedzi o wiele bardziej rzetelnej? Pojęcie jest rzeczywiście szerokie, a jego zakres może się równać być może jedynie z liczbą zastosowań chmury obliczeniowej. Tegoroczna odsłona naszej akcji Upoluj serwer jest doskonałą okazją na udzielenie wyczerpującej odpowiedzi na fundamentalne pytanie:
Czym ta chmura właściwie jest?
Synonimem chmury jest dziś Azure. Microsoft stworzył jedną z trzech największych chmur obliczeniowych na świecie. Usługi na platformie Azure są dostępne dla każdego, niezależnie, czy chce przechowywać kilka gigabajtów swoich plików, udostępniać prostą aplikację webową, czy budować rozwiązanie do przetwarzania terabajtów danych z wykorzystaniem kart graficznych.
Pojęcie chmury zostało przez marketing firm technologicznych rozdmuchane. Każdy producent chce teraz mieć coś chmurowego w swoich produktach. Mamy zatem NASy z chmurą prywatną, routery z chmurą, telefony z chmurą, pliki trzymane w chmurze, pocztę w chmurze... dosłownie wszystko podłączone jest do chmury lub coś w niej robi.
Chmura obliczeniowa to gotowe usługi obliczeniowe i usługa przechowywania danych, które można wykorzystać w dowolnym momencie. Co ważne, użytkownik płaci tylko za faktycznie wykorzystywane zasoby. Na przykład za maszyny wirtualne w Microsoft Azure płaci się w rozliczeniu minutowym. Potrzebujesz maszyny, która ma 32 rdzenie, prawie 0,5 terabajta RAM-u i 32 terabajty na dyskach SSD tylko na parę godzin? Nie ma problemu, maszyna zostanie postawiona w klika minut i płaci się tylko za czas, kiedy jest uruchomiona.
Jeśli samodzielne określenie parametrów maszyny nie jest konieczne, to nic nie stoi na przeszkodzie, by jako serwer wykorzystać usługę Azure Web Apps, która zapewnia automatyczne skalowanie i pozwala udostępniać aplikacje napisane w wielu językach. Zamiast serwera z bazą danych, dostajemy po prostu samą bazę danych o określonych parametrach (w Azure jest to usługa SQL Database). Do przechowywania plików z aplikacji służy Azure Storage. Pojedyncze konto w tej usłudze może przechowywać do 500 terabajtów danych.
Wszystko-jako-usługa
Premiera Windowsa 10 była okazją, by nawet przeciętny Kowalski zapoznał się ze dostarczaniem oprogramowania jako usługi (z ang. ‘as a Service’). Pojęcie “jako usługa” pojawiło się jednak wraz z chmurą. W Microsoft Azure wyróżniamy trzy oparte na nim modele: platformę jako usługę (PaaS), infrastrukturę jako usługę (IaaS) i oprogramowanie jako usługę (SaaS). Aktualnie w Microsoft Azure wyróżniamy ponad 80 usług reprezentujących te trzy modele. Różnice pomiędzy nimi najlepiej obrazuje poniższy schemat:
Poszczególne modele różnią się między sobą stopniem zaangażowania użytkownika w utrzymanie poszczególnych komponentów: na kolejnych etapach kwestia infrastruktury przestaje dostarczania i utrzymywania infrastruktury przestaje go dotyczyć. Zaczynając od własnej serwerowni, gdzie klient odpowiedzialny jest za wszystko, a kończąc na usługach SaaS w chmurze, gdzie interesują go tylko własne dane.
IaaS to maszyny wirtualne i usługi infrastrukturalne wokół nich. Przykładem takich usług są: load balancery, które odpowiadają za równomierne obciążenie jednostek, load balancery aplikacyjne z firewallem aplikacyjnym, usługi VPN do połączenia z własną lokalną siecią w firmie czy sieci wirtualne.
PaaS to usługi do budowy aplikacji. Dzięki nim nie trzeba używać maszyn wirtualnych i instalować potrzebnego oprogramowania. Takie podejście skraca czas dostarczania rozwiązania i zmniejsza koszty jego późniejszego utrzymania. Przykładami takich usług są:
- Azure SQL Database – relacyjna baza danych,
- Azure Web Apps – wysokoskalowalna usługa do hostowania aplikacji webowych,
- Azure Storage do przechowywania plików czy bardziej wyspecjalizowane usługi, jak np. Azure IoT Hub, który jest interfejsem do podłączania milionów urządzeń Internetu Rzeczy,
- Azure Bot do budowy własnych botów w aplikacjach,
- Azure Batch, który potrafi uruchomić przetwarzanie naszych zadań obliczeniowych na nawet 100 000 rdzeniach jednocześnie. Jest wykorzystywany między innymi do obliczeń przy badaniach farmaceutycznych i renderingu materiałów 3D. Oprogramowanie Blender potrafi wysłać bezpośrednio do Azure zadanie renderingu, wykorzystując właśnie Azure Batch.
Usługi Microsoft Azure w modelu PaaS są szeroko wykorzystywane na naszym rodzimym rynku. Przykładowo Ministerstwo Finansów stworzyło platformę do obsługi zbierania deklaracji w ramach Jednolitego Pliku Kontrolnego, nie wykorzystując przy tym ani jednej maszyny wirtualnej.
SaaS to usługi dostarczające gotowe aplikacje. Rozliczane są per użytkownik lub per pojemność. Jedną z nich jest Microsoft Office 365, gdzie w ramach subskrypcji klient otrzymuje między innymi usługę poczty elektronicznej oraz możliwość przechowywania i współdzielenia plików z innymi użytkownikami.
To samo na różne sposoby
Jednym z najpopularniejszych scenariuszy użycia serwerów w Internecie jest hostowanie aplikacji przeglądarkowych. W Microsoft Azure możemy to zrobić na kilka sposobów, wykorzystując PaaS lub IaaS.
Najbardziej intuicyjnym rozwiązaniem dla osób zaczynających pracę z chmurą jest użycie maszyny wirtualnej. Niestety, w tradycyjnym modelu (klasyczne, fizyczne serwery), lub wykorzystując serwery dedykowane/VPS, musimy założyć zakup lub wynajem sprzętu będącego w stanie sprostać maksymalnemu ruchowi w aplikacji i pogodzić się z faktem, że serwery nie będą w pełni wykorzystywane.
W przypadku użycia chmury takiej jak Microsoft Azure, scenariusz ten wygląda zupełnie inaczej. Załóżmy, że aplikacja potrzebuje w ciągu dnia 4 maszyn z 4 rdzeniami po 8 GB RAM każda. Dodatkowo ruch do aplikacji musi być równoważony za pomocą load balancera sieciowego. W godzinach nocnych, ze względu na mniejszy ruch użytkowników aplikacji, w zupełności wystarczą jej dwa serwery. Azure dostosowuje się do ruchu w aplikacji, dzięki czemu płacimy tylko za faktycznie wykorzystywane zasoby.
Do budowy środowiska potrzebne są maszyny wirtualne z dowolnym systemem operacyjnym wspieranym przez Azure, np. z Debianem (ponad 40% maszyn wirtualnych w Azure używa Linuxa), oraz usługa autoskalowalnych maszyn wirtualnych - Azure Virtual Machine Scale Sets. Po skonfigurowaniu usługa automatycznie dostosowuje potrzebną liczbę maszyn wirtualnych z przygotowanego wcześniej dysku. W zależności od obciążenia procesora i RAM-u, dodaje nowe maszyny wirtualne lub je usuwa. Na start wystarczy, że uruchomione będą dwie maszyny wirtualne – wraz z rozrastaniem się potrzeb Azure doda automatycznie kolejne. Gdy ruch, a tym samym obciążenie, zaczną spadać, maszyny będą automatycznie usuwane. Usługę Azure Virtual Machine Scale Sets klient otrzymuje w cenie maszyn wirtualnych. Microsoft zapewnia również dostęp do load balancera, którego konfiguracja odbywa się automatycznie w momencie dodawania lub usuwania maszyn wirtualnych.
Użyte w pierwszym przykładzie maszyny wirtualne do hostowania aplikacji webowych można zastąpić usługą w modelu PaaS, w której nie trzeba administrować systemem operacyjnym. Służy do tego Azure Web Apps. Usługa ta nie potrzebuje przygotowania maszyny wirtualnej czy konfiguracji load balancera. Wystarczy wgrać swoją aplikację, ustawić reguły autoskalowania, tak jak w przypadku maszyn wirtualnych, i aplikacja jest gotowa do udostępnienia jej użytkownikom. Azure Web Apps wspiera wiele języków programowania takich jak: .NET, Java, PHP, Phyton, Go i node.js.
Gdzie jest ten Azure?
Microsoft Azure dostępny jest dziś w 34 regionach, a udostępnienie usługi w kolejnych 4 zostało już zapowiedziane. W samej Europie znajduje się 6 regionów: Europa Północna (Dublin), Europa Zachodnia (Amsterdam), Niemcy Środkowe (Frankfurt), Niemcy Północno-Wschodnie (Magdeburg), Zachodnie Zjednoczone Królestwo (Cardiff) oraz Południowe Zjednoczone Królestwo (Londyn).
Pod nazwą “region” w Azure rozumiana jest pojedyncza duża serwerownia lub grupa serwerowni położonych w małej odległości od siebie. W sumie jest to ponad 100 centrów. Aby zobrazować skalę przedsięwzięcia, należy dodać, że cały Azure składa się z ponad miliona fizycznych serwerów. Microsoft zaczyna sam projektować swoje serwery, a co ciekawsze – udostępniać ich schematy publicznie w ramach projektu Open Compute Project. Istotnym faktem jest, że bazowym systemem do budowy infrastruktury pod platformę Azure jest ten sam Windows Server, który instaluje się w firmach. Azure wykorzystuje publiczny Windows Server od wersji 2012. Część firmy Microsoft odpowiedzialna za serwerownie posiada na YouTube kanał pokazujący serwerownie od środka. Jednym z takich nagrań wartych obejrzenia jest Microsoft Datacenter Tour.
Prywatność i regulacje
Jedną z istotnych kwestii w przypadku chmury publicznej jest kontrola prywatności i zgodność z regulacjami prawnymi. Najważniejsza informacja na temat przechowywania danych w Azure jest taka, że to klient jest właścicielem danych i w przypadku, gdy instytucja rządowa chce uzyskać dostęp do nich dostęp, w tym w kwestii spraw bezpieczeństwa narodowego, musi stosować się do odpowiednich przepisów prawa, tj. przedstawić nakaz sądowy dotyczący udostępnienia zawartości lub wezwanie do przekazania informacji o koncie. W przypadku konieczności ujawnienia danych klienta firma Microsoft niezwłocznie powiadamia użytkownika o tym fakcie i dostarcza mu kopię żądania. Dodatkowo nie umożliwia żadnym instytucjom rządowym bezpośredniego lub niekontrolowanego dostępu do danych jeśli nie otrzymała takiej prośby od klienta lub w sytuacjach, gdy firma jest do tego zobowiązana przez prawo.
Platforma Azure jest zgodna z wieloma międzynarodowymi i branżowymi standardami, np. ISO 27001, ISO 27018, HIPAA, FedRAMP, SOC 1 i SOC 2, jak również standardami krajowymi, takimi jak IRAP w Australii, G-Cloud w Wielkiej Brytanii i MTCS w Singapurze czy wprowadzana w następnym roku w ramach Unii Europejskiej inicjatywa GDPR. W sumie Microsoft Azure spełnia ponad 100 regulacji i certyfikacji prawnych.
Rygorystyczne inspekcje przeprowadzane przez podmioty zewnętrzne, takie jak British Standards Institute, potwierdzają, że na platformie Azure istnieją ścisłe kontrole zabezpieczeń, wymagane w tych standardach. Będąc klientem Microsoft można również uzyskać dostęp do raportów dotyczących inspekcji innych firm wystawiających certyfikaty.