Paweł Łukasiewicz
2021-09-20
Paweł Łukasiewicz
2021-09-20
Udostępnij Udostępnij Kontakt
Wprowadzenie

Historia AWS rozpoczęła się w roku 2006, kiedy firma Amazon zaczęła oferować na rynku IT usługi w formie usług internetowych, które dzisiaj znane są pod nazwą cloud computing. Dzięki rozwiązaniom oferowanym w chmurze nie musimy zajmować się planowaniem całej infrastruktury IT przed przystąpieniem do projektu oraz narażać się na bardzo wysokie koszty w przypadku jej rozbudowy. Usługi chmurowe pozwalają nam (od razu) na uruchomienie dziesiątek czy setek serwerów w ciągu kilku minut i skupienie się na natychmiastowym tworzeniu oprogramowania oraz szybszym dostarczaniu rezultatów naszej pracy. Płacimy tylko za to z czego korzystamy, nie ponosimy żadnych kosztów wstępnych oraz nie musimy podejmować żadnych długoterminowych zobowiązań*.

Mała adnotacja do ostatniego zdania: zobowiązania długoterminowe mogą przynieść nam wiele korzyści – wszystko zależy od analizy naszej architektury oraz sposobu użycia poszczególnych komponentów – jest to jednak temat, którego nie będziemy rozszerzać na tym poziomie.

W obecnej formie AWS zapewnia wysoce skalowalną i tanią infrastrukturę w chmurze z której usług korzystają setki firm rozsianych po całym świecie. Do najpopularniejszych z nich należą Netflix z miesięcznymi wydatkami rzędu $19 milonów dolarów, Twich: $15 milionów, Linkedin: $13 milionów czy Twitter: $7 milionów. Dane pochodzą z podsumowania roku 2020 i obejmują wydatki w skali miesiąca…pamiętajcie jednak o skali funkcjonowania powyższych serwisów.

Czym jest Cloud Computing?

W najprostszym tłumaczeniu (chmura obliczeniowa) jest to usługa internetowa w której duże grupy serwerów zdalnych połączone są w sieć pozwalając na scentralizowane przechowywanie danych i dostęp online do usług oraz zasobów.

Organizacje korzystające z chmury obliczeniowej mogą korzystać ze wspólnych zasobów oraz pamięci masowej zamiast samodzielnie budować, obsługiwać i ulepszać infrastrukturę.

Chmura obliczeniowa jest modelem, który możemy opisać poniższymi cechami:

  • zasoby mogą być automatycznie skalowane w górę lub dół w zależności od obciążenia;
  • dostęp do zasobów odbywa się przez sieć z odpowiednimi zabezpieczeniami;
  • dostawcy usług wykorzystują model pay-as-you-go w którym klienci są obciążani w zależności od rodzaju zasobów oraz ich wykorzystania.

Rodzaje chmur obliczeniowych

Obecnie możemy wyróżnić trzy rodzaje chmur: chmura publiczna, prywatna oraz hybrydowa.

Chmura publiczna
W chmurze publicznej zewnętrzni dostawcy usług udostępniają zasoby i usługi swoimi klientom przez Internet. Dane klienta i związane z nim zabezpieczenia znajdują się w infrastrukturze należącej do usługodawców.

Chmura prywatna
Chmura prywatna również zapewnia podobne funkcje jak chmura publiczna ale dane i usługi są zarządzane przez organizację lub przez stronę trzecią tylko dla organizacji klienta. W tym typie chmury główna kontrola nad infrastrukturą polega na zminimalizowaniu problemów związanych z bezpieczeństwem.

Chmura hybrydowa
Chmura hybrydowa jest połączeniem chmury prywatnej i publicznej. Decyzja o uruchomieniu w chmurze prywatnej lub publicznej zależy zazwyczaj od różnych parametrów, takich jak wrażliwość danych i aplikacji, certyfikaty branżowe i wymagane standardy, przepisy, etc.

Modele usług w chmurze

Obecnie możemy wyróżnić trzy rodzaje modeli usług w chmurze: IaaS, PaaS oraz SaaS.

IaaS
IaaS to skrót od Infrastructure as a Service (infrastruktura jako usługa). Podejście takie zapewnia użytkownikom możliwość dostarczania przetwarzania, przechowywania danych i łączności sieciowej na żądanie. Korzystając z tego modelu usług klienci mogą rozwijać swoje własne aplikacje na tych zasobach.

PaaS
PaaS to skrót od Platform as a Service (platforma jako usługa). W tym wypadku dostawca usług udostępnia swoim klientom różne usługi do których zaliczamy bazy danych, kolejki, funkcje czy możliwość wysyłania wiadomości e-mail (oraz oczywiście szereg innych usług). Na bazie dostępnych komponentów klient może budować swoją własną aplikację. Usługi, dostępność zasobów czy backup danych obsługiwany jest przez dostawcę usługi, który pomaga klientom skupić się bardziej na funkcjonalności ich aplikacji.

SaaS
SaaS to skrót od Software as a Service (oprogramowanie jako usługa). W takim modelu zewnętrzni dostawcy dostarczają aplikacje swoim klientom z pewnymi możliwościami administracyjnymi na poziomie aplikacji takich jak zdolność do tworzenia i zarządzania użytkownikami czy ich uprawnieniami do poszczególnych komponentów aplikacji. Dodatkowo w przypadku takich rozwiązań klient np. może dostać możliwość korzystania z własnego logo firmy, specyficznego zestawu kolorów (css template) czy innych, kluczowych z poziomu klienta, wymagań.

Zalety rozwiązań chmurowych

Spójrzcie na ponższą listę zalet, którą mają do zaoferowania rozwiązania chmurowe:

  • Oszczędność kosztów: budowa własnej infrastruktury serwerowej jest czasochłonna i kosztowna a sam proces konfiguracji powinien odbywać się na długo przed roczpoczęciem właściwej pracy. Wykorzystanie chmury obliczeniowej po części eliminuje te problemy skupiając się jedynie na płatności za komponenty, których zasoby obliczeniowe wykorzystujemy;
  • Niezawodność: Platforma cloud computing zapewnia znacznie lepiej zarządzalną, niezawodną i spójną usługę niż wewnętrza infrastruktura IT. Gwarantuje usługi w trybie 24x7 przez wszystkie dni w roku. Jeżeli dojdzie do awarii któregoś z komponentów dochodzi do automatycznego przeniesienia hostowanej usługi i danych na dowolny z dostępnych serwerów. Pamiętajcie, że w przypadku rozwiązań SaaS oferowane jest oprogramowanie z poziomem dostępności na poziomie nawet 99.9% czasu;
  • Nieograniczona przestrzeń przechowywania: w przypadku rozwiązań chmurowach mamy dostęp do praktycznie nieograniczonej przestrzeni dyskowej. Oznacza to, ni mniej ni więcej, że nie musimy się martwić, że zabraknie nam miejsca na dysku. W przypadku rozwiązań chmurowych możemy mieć dostęp do tak dużej lub tak małej przestrzeni dyskowej jaka jest nam potrzebna;
  • Kopie zapasowe oraz odzyskiwanie danych: tworzenie kopii zapasowych oraz przywracanie danych jest znacznie łatwiejsze niż w przypadku przechowywania danych na fizycznym nośniku. Dostawcy usług chmurowych dostarczają nam zaawansowane technologie pozwalające na odzyskiwanie naszych danych. Dodatkowo, możemy wykorzystać dostępne komponenty do własnego archiwizowania danych, np. Amazon Glacier;
  • Łatwy dostęp do informacji: Wraz z rejestracją dostajemy dostęp do swojego konta z dowolnego miejsca na ziemi (w którym mamy oczywiście połącznie z Internetem). Bezpieczeństwo dostępu do danych (lub ich modyfikacji) jest gwarantowane przez dostawcę naszych usług. Dodatkowo możemy przygotować odpowiednie polityki, np. pełny dostęp do środowiska deweloperskiego (operacje read & write) oraz polityka ograniczonego zaufowania (read) w przypadku środowiska produkcyjnego.

Wady rozwiązań chmurowych

Cloud Computing to niestety nie tylko same zalety. Musimy pamiętać o różnych wadach, które nie dość, że budzą wątpliwości co do samej efektywności wybranego rozwiązania to czasami jest niezwykle ciężko przekonać potencjalnych klientów (banki...) do wyboru takiego podejścia. Ze względu na szeroko pojęte bezpieczeństwo branża bankowa stara się unikać takiego rozwiązania z obawy przez wyciekiem danych drażliwych. Przejdźmy zatem do list wad:

  • Bezpieczeństwo: Jest to główny problem w rozwiązaniach chmurowych. Dostawy usług wdrażają najlepsze standardy bezpieczeństwa i szyfrowania danych jednakże sam fakt przechowywania danych i ważnych plików u zewnętrznych dostawców niesie za sobą ryzyko. Musimy jednak pamiętać, że skalowalność oraz zastosowane rozwiązania pozwalają na bezpiecznie wdrażanie aplikacji;
  • Kwestie techniczne: Usługi w chmurze dostępne są dla wielu klientów przez 24 godziny na dobę i siedem dni w tygodniu – nigdy nie możemy wykluczyć czasowego zawieszenia procesów biznesowanych. Z drugiej strony brak połączenia internetowego będzie skutkował kompletnym brakiem możliwości skorzystania z aplikacji, serwera czy jakichkolwiek danych;
  • Zmiana dostawcy: Kluczowa z perspektywy czasu jest decyzja na którego dostawcę usług się zdecydujemy. Wraz z rozwojem naszego oprogramowania i rozrastającą się architekturą trudno będzie dokonać migracji do innego dostawcy.

To tyle tytułem wprowadzenia. W kolejnym wpisie skupimy się na podstawowej architekturze i omówieniu poszczególnych składowych.