1. Aplikacje i Usługi Sieciowe

1.5. Chmura obliczeniowa

Chmura obliczeniowa to model świadczenia usług informatycznych, który umożliwia dostęp do zasobów obliczeniowych – takich jak serwery, pamięć masowa, bazy danych, sieci, oprogramowanie i inne komponenty infrastruktury – przez Internet, na żądanie i zazwyczaj w oparciu o rozliczenie za faktyczne zużycie. Koncepcja ta zrewolucjonizowała sposób, w jaki przedsiębiorstwa i indywidualni użytkownicy korzystają z technologii. Zamiast budować i utrzymywać własne centra danych, organizacje mogą wynajmować potrzebne im zasoby od dostawców usług chmurowych, dostosowując je dynamicznie do aktualnych potrzeb.

Chmura obliczeniowa opiera się na wirtualizacji zasobów fizycznych, co oznacza, że wiele maszyn wirtualnych może współdzielić jeden fizyczny serwer. Dzięki temu możliwe jest optymalne wykorzystanie infrastruktury, skalowanie usług w czasie rzeczywistym, szybkie uruchamianie nowych aplikacji oraz obniżenie kosztów związanych z utrzymaniem własnych serwerowni. Użytkownicy mają dostęp do usług chmurowych przez interfejsy programistyczne (API), panele administracyjne, linie poleceń lub portale webowe, niezależnie od fizycznej lokalizacji infrastruktury.

Rysunek: model koncepcyjny chmury

W chmurze obliczeniowej wyróżnia się kilka podstawowych modeli usługowych, które opisują poziom abstrakcji oferowany użytkownikowi. Infrastructure as a Service (IaaS) to najniższy poziom, w którym użytkownik uzyskuje dostęp do maszyn wirtualnych, wolumenów dyskowych, interfejsów sieciowych i innych zasobów infrastrukturalnych. Może samodzielnie zainstalować system operacyjny, skonfigurować środowisko i wdrożyć własne aplikacje. Przykłady usług IaaS to Amazon EC2, Microsoft Azure Virtual Machines, Google Compute Engine czy OpenStack.

Na kolejnym poziomie znajduje się Platform as a Service (PaaS), w którym użytkownik otrzymuje kompletną platformę do uruchamiania aplikacji, bez potrzeby zarządzania infrastrukturą. Usługi PaaS oferują zintegrowane środowiska programistyczne, bazy danych, systemy kolejkowania, skalowanie poziome i pionowe, zarządzanie stanem aplikacji. Programista może skupić się na kodzie i logice biznesowej, bez konieczności zajmowania się systemem operacyjnym, łatkami bezpieczeństwa czy serwerem webowym. Przykładami są Heroku, Google App Engine, Azure App Services czy Red Hat OpenShift.

Najwyższym poziomem usług są rozwiązania Software as a Service (SaaS), gdzie użytkownik korzysta z gotowych aplikacji dostępnych przez przeglądarkę lub klienta zdalnego. Nie zarządza infrastrukturą, systemem ani aktualizacjami – wszystko jest utrzymywane przez dostawcę. Przykładami SaaS są Google Workspace (Gmail, Docs, Sheets), Microsoft 365, Salesforce, Zoom czy Dropbox. Ten model pozwala na szybkie wdrażanie rozwiązań biznesowych bez inwestycji w sprzęt czy zespół IT.

Rysunek: model usług chmurowych

Z perspektywy modelu wdrożenia chmury można wyróżnić chmurę publiczną, prywatną, hybrydową oraz multicloud. Chmura publiczna to taka, której zasoby są współdzielone przez wielu klientów i udostępniane przez zewnętrznego dostawcę – np. Amazon Web Services, Microsoft Azure, Google Cloud. Klient płaci za wykorzystanie zasobów, bez fizycznego dostępu do sprzętu. Chmura prywatna to środowisko chmurowe zbudowane dla jednej organizacji, najczęściej we własnym centrum danych lub w odizolowanej przestrzeni u dostawcy. Umożliwia pełną kontrolę, zgodność z regulacjami prawnymi, ale wiąże się z większymi kosztami wdrożenia i utrzymania.

Chmura hybrydowa to połączenie chmury prywatnej i publicznej, które pozwala na dynamiczne przenoszenie obciążeń, zwiększanie mocy obliczeniowej w okresach szczytowych, czy separację krytycznych danych od mniej wrażliwych. Multicloud to natomiast strategia polegająca na korzystaniu z usług różnych dostawców chmurowych jednocześnie – np. jednej aplikacji używa się w AWS, drugiej w Azure, trzeciej w lokalnym Kubernetesie. Umożliwia to optymalizację kosztów, zwiększenie niezawodności i unikanie uzależnienia od jednego dostawcy (vendor lock-in).

Zastosowanie chmury obliczeniowej ma ogromne znaczenie dla skalowalności i elastyczności systemów. Aplikacja może rozpocząć działanie na jednym węźle, a w miarę wzrostu ruchu – automatycznie uruchamiać kolejne instancje. Mechanizmy takie jak autoscaling, load balancing i replikacja danych pozwalają zachować wysoką dostępność i wydajność nawet w warunkach dynamicznych zmian zapotrzebowania. W przypadku awarii jednego serwera ruch może zostać przekierowany do innej lokalizacji geograficznej bez ingerencji użytkownika.

Ważną cechą chmury jest też model płatności – pay-as-you-go – w którym klient płaci tylko za faktycznie zużyte zasoby. Może to być liczba godzin działania maszyny, liczba żądań HTTP, ilość przesłanych danych, objętość przechowywanych plików. Pozwala to uniknąć inwestycji kapitałowych (CAPEX) i przejść na model operacyjny (OPEX), co jest korzystne z punktu widzenia planowania budżetu i elastyczności biznesowej. Użytkownik może w każdej chwili zmniejszyć lub zwiększyć zużycie zasobów, co jest trudne do osiągnięcia w tradycyjnych środowiskach on-premises.

Bezpieczeństwo w chmurze obliczeniowej wymaga nowych podejść i odpowiedzialności zarówno po stronie dostawcy, jak i klienta. Model współodpowiedzialności (shared responsibility model) określa, że dostawca odpowiada za fizyczne bezpieczeństwo centrów danych, hipernadzorcę, sieć i podstawowe usługi, natomiast klient odpowiada za konfigurację systemów, kontrolę dostępu, szyfrowanie danych i zgodność z przepisami. W praktyce oznacza to konieczność stosowania silnych polityk IAM (Identity and Access Management), szyfrowania danych w spoczynku i w tranzycie, backupu, audytów, alertów bezpieczeństwa i automatycznego reagowania.

Z punktu widzenia inżyniera systemowego czy administratora, chmura oznacza przejście z zarządzania fizycznymi maszynami na zarządzanie infrastrukturą jako kodem (IaC – Infrastructure as Code). Zamiast ręcznego konfigurowania serwerów, sieci, reguł zapory, tworzy się pliki konfiguracyjne w językach takich jak YAML, HCL (Terraform), JSON, które można wersjonować, testować i wdrażać automatycznie. Daje to większą kontrolę, powtarzalność i możliwość automatyzacji procesów wdrożeniowych w środowiskach deweloperskich, testowych i produkcyjnych.

W świecie DevOps chmura obliczeniowa pozwala na szybkie budowanie środowisk CI/CD (Continuous Integration / Continuous Deployment), w których kod źródłowy po zatwierdzeniu automatycznie przechodzi testy, budowanie kontenerów, wdrożenie do środowiska stagingowego i ewentualnie do produkcji. Usługi takie jak AWS CodePipeline, GitHub Actions, GitLab CI, Azure DevOps czy Google Cloud Build umożliwiają tworzenie pełnych łańcuchów dostarczania oprogramowania w chmurze, z wykorzystaniem konteneryzacji, testów jednostkowych, skanowania bezpieczeństwa i rollbacków.

Dla programisty chmura to dostęp do gotowych komponentów – baz danych (np. Amazon RDS, Firebase Realtime DB), kolejek wiadomości (SQS, Pub/Sub), cache (Redis, Memcached), funkcji bezserwerowych (AWS Lambda, Cloud Functions), logowania użytkowników (Cognito, Firebase Auth), przechowywania plików (S3, Blob Storage). Dzięki temu możliwe jest skupienie się na kodzie biznesowym, a nie infrastrukturze. Usługi są dostępne przez REST API, SDK, interfejsy CLI i gotowe biblioteki dla różnych języków programowania.

Chmura obliczeniowa odgrywa też ogromną rolę w analizie danych i uczeniu maszynowym. Usługi takie jak AWS SageMaker, Google AI Platform, Azure ML Studio oferują środowiska do trenowania modeli, przechowywania zestawów danych, automatyzacji eksperymentów, wersjonowania modeli, wdrażania ich jako REST API i monitorowania ich wydajności. Dodatkowo usługi Big Data, takie jak BigQuery, Redshift, Snowflake czy Databricks umożliwiają analizę petabajtów danych w czasie rzeczywistym, agregacje, uczenie nienadzorowane i integrację z wizualizacją wyników.

Rysunek: uproszczony ekosystem chmurowy

Z perspektywy użytkownika końcowego chmura może być niewidoczna – korzysta on z aplikacji przez przeglądarkę lub aplikację mobilną, nie wiedząc, że zasoby te są dynamicznie skalowane, przenoszone między strefami dostępności, replikowane i utrzymywane przez setki maszyn w różnych lokalizacjach. Ale to właśnie dzięki chmurze możliwe jest zapewnienie globalnej dostępności usług 24/7, wysokiej dostępności SLA, błyskawicznej reakcji na zmiany obciążenia, i automatycznego odzyskiwania po awarii.