Dziś rozpoczynamy cykl blogpostów na, już nie tak nowy, ale wciąż bardzo trendy temat, a mianowicie cloud computing. Czyli popularnej „chmury”. Niby wszyscy wiemy co to ta chmura, ale jak trzeba komuś wytłumaczyć, to… No właśnie 🙂 Dlatego w pierwszym artykule cyklu wprost powiemy, czym jest chmura i przybliżymy Ci podstawowe zasady panujące w tej sferze IT.

Czym jest chmura?

Cóż, to nadal są serwery. Takie same serwery jak te nie-w-chmurze, ale diabeł tkwi w szczegółach. Bo żeby środowisko nazwać chmurą, musi to być sieć serwerów, najczęściej rozmieszczonych w różnych lokalizacjach geograficznych, tworząca ekosystem gotowy stać się pełnoprawną infrastrukturą dla aplikacji. Kluczowym elementem w takim środowisku jest jego wysoka dostępność. W wypadku awarii instancji od razu możesz stworzyć nową, która będzie utrzymywać aplikację.

Chmura składa się z trzech komponentów, które odpowiadają za:

  • przetwarzanie danych, czyli moc obliczeniowa zapewniona przez maszyny wirtualne,
  • sieć, a więc routery, switche i firewalle z wykorzystaniem technologii SDN, pozwalająca na współpracę serwerów z różnych lokalizacji oraz odpowiednie kierowanie ruchu zależnie od lokalizacji klienta,
  • przestrzeń dyskową, czyli dyski HDD, SSD i stworzone z nich macierze, na których przechowywane są dane, kod aplikacji, bazy danych oraz kopie zapasowe.

Czym chmura różni się od klasycznych serwerów?

Jak już wspomnieliśmy, różnica tkwi w ilości i strukturze. W przypadku serwerów dedykowanych lub własnych urządzeń utrzymywanych  w serwerowni (on-premise) masz do czynienia z jedną lub wieloma maszynami, z których każda spełnia swoją określoną rolę. Jest to solidne rozwiązanie, jednak brakuje mu elastyczności. Jeżeli potrzebujesz więcej przestrzeni dyskowej lub pamięci, musisz skontaktować się z serwerownią lub administratorem i dowiedzieć, czy istnieje możliwość zwiększenia zasobów. Zwykle pochłania to nie tylko sporo czasu, ale też niemało kosztuje. No i wszystko musi być zaplanowane z wyprzedzeniem.

W przypadku chmury nie ma potrzeby kontaktu z serwerownią, ponieważ sam przy pomocy paru kliknięć jesteś w stanie zwiększyć zasoby. Zabiera to też znacznie mniej czasu.

Idąc dalej, wprowadzenie wirtualizacji do serwerów dedykowanych było przełomową zmianą i niewątpliwie ograniczyło problem marnowanych zasobów. Dzięki niej na jednym serwerze jesteś w stanie postawić od kilku do kilkudziesięciu wirtualnych maszyn. Od tej pory problem z dostosowywaniem zasobów lub tworzeniem oraz usuwaniem maszyn praktycznie znika. W wielu aplikacjach takie rozwiązanie jest zupełnie wystarczające, ale niestety nadal jesteś narażony na niedostępność usług z powodu awarii hypervisora, czyli w uproszczeniu – serwera, na którym skonfigurowane są wirtualne maszyny (najczęściej nazywane VM/VPS/Instancja).

Posiadanie infrastruktury w chmurze zabezpiecza przed taką sytuacją. W przypadku fizycznej awarii serwera z Twoją instancją (VM/VPS), zostanie ona automatycznie uruchomiona na innym dostępnym serwerze w klastrze. Przy odpowiedniej konfiguracji, jesteś w stanie zabezpieczyć się przed awarią prądu lub internetu w całym Datacenter, ponieważ w razie problemów, aplikacja zostanie natychmiast uruchomiona nawet na drugim końcu świata!

Co możesz zyskać przenosząc się do chmury?

Skalowalność – dzięki niej możesz szybko dodać nowe instancje lub zmienić konfigurację obecnych, z poziomu panelu lub API.

Elastyczność – czyli dynamiczna alokacja zasobów. Jeżeli serwis nagle potrzebuje więcej mocy obliczeniowej, powierzchni dyskowej lub pamięci to chmura bez problemu poradzi sobie z tym, dodając zasoby. Po zmniejszeniu ruchu, odpowiednio je też odejmie, więc nie płacimy za niepotrzebne zasoby.

Dostępność – w wypadku awarii instancje są automatyczne uruchamiane na innych serwerach. Przy odpowiedniej konfiguracji, uruchomienie jest możliwe nawet na innym kontynencie.

Oszczędność – płacisz tylko za zasoby z których korzystasz. Znika problem utrzymywania serwerów zbyt dużych na aktualne potrzeby.

Sprawność – dzięki skalowalności oraz elastyczności wiele procesów, takich jak wdrożenia oraz testy, może zostać w znacznym stopniu przyspieszone.

Prestiż – w niektórych przypadkach, korzystanie z najnowszych rozwiązań technologicznych jest dobrze widziane w oczach klientów oraz partnerów biznesowych.

Czy chmura dostępna jest w kilku wariantach?

Tak, obecnie możemy spotkać się z trzema modelami rozwiązań chmurowych:

Chmura prywatna – infrastruktura takiej chmury jest zbudowana na własnych serwerach lub maszynach wykupionych u dostawcy, które są przeznaczone tylko dla jednego klienta. Jest to najdroższe rozwiązanie, ale bezpieczniejsze i najlepiej dopasowane do potrzeb. Chmury prywatne są wykorzystywane przez organizacje rządowe oraz firmy operujące na bardzo wrażliwych danych.

Chmura publiczna – infrastruktura składająca się z wirtualnych maszyn, zbudowana na serwerach z których korzystają też inni klienci dostawcy. Nie oznacza to oczywiście, że inne osoby mają dostęp do Twoich instancji. Jest to najpopularniejsze rozwiązanie ze względu na swoją cenę oraz skalowalność.

Chmura hybrydowa – połączenie powyższych dwóch rozwiązań. Część danych (najczęściej te wrażliwe) jest przechowywana w części prywatnej, a reszta na poziomie chmury publicznej. Kombinacja może być również stosowana dla zapewnienia elastyczności Twojej infrastruktury. Przykładowo, część aplikacji, która operuje na wrażliwych danych będzie pracować w chmurze prywatnej, a pozostałe elementy – w chmurze publicznej.

Czy chmura jest dla mnie?

Rozwiązania typu cloud najlepiej sprawdzają się u klientów, których usługa okresowo cieszy się większym zainteresowaniem. Dzięki temu w czasie mniejszego obciążenia, klient płaci znacznie mniej, niż gdyby jego aplikacja pracowała nieprzerwanie na zasobach przewidzianych do utrzymania największego obciążenia.

Należy jednak pamiętać, że aby zalety środowiska cloud zostały w pełni wykorzystane, aplikacja musi zostać dostosowana do pracy z wieloma instancjami. Dzięki temu, będzie mogła odpowiednio rozkładać procesy na dodatkowe zasoby przy zmieniającym się obciążeniu. Takie ustawienia wymagają zmian w konfiguracji bazy danych, przechowywaniu sesji użytkowników, sposobie serwowania plików statycznych, współdzielenia plików w aplikacji oraz współdzielenia plików przesyłanych przez użytkowników (upload).

To dopiero pierwsza część naszego cyklu o chmurze. Zachęcamy Was gorąco do zadawania pytań – chętnie odpowiemy na nie w komentarzach, a najciekawsze zagadnienia opiszemy szerzej w kolejnych blogpostach.