Chmura obliczeniowa – dlaczego? Zalety i wady

Cloud computing to często pojawiający się temat w dyskusjach o miejscu prowadzenia swojego biznesu w chmurze. Jednakże, przed podjęciem decyzji o wskoczeniu do AWS, Azure czy Google Cloud, warto zaznajomić się z konsekwencjami takiego wyboru.
Przygotowałem zestawienie, które może pomóc osobom borykającym się z dylematem co do wejścia na chmurę.

Zalety

  1. Niski próg wejścia. Jest to niezwykle istotne zwłaszcza w przypadku startupów nie przynoszących jeszcze zysków. Jesteśmy w stanie zaproponować i zwalidować nasze MVP (Minimum Viable Product) często nawet zerowym kosztem. Przykładowo AWS oferuje nam AWS Free Tier – https://aws.amazon.com/free/ a Azure https://azure.microsoft.com/pl-pl/free/
  2. Bezpieczeństwo dostępu do danych. O ile używamy usługi w chmurze w rozsądny sposób mamy do dyspozycji mechanizmy dzięki którym możemy w nocy spać spokojnie. Oczywiście należy być świadomym, że dane nie leżą u nas „na serwerze pod biurkiem” tylko są w bliżej nieokreślonym miejscu w chmurze i to po naszej stronie stoi odpowiedzialność za kontrolę dostępu do danych czy też ochrona haseł.
  3. Mniej kodu związanego z infrastrukturą. Używamy infrastruktury udostępnionej dla nas i możemy skupiać się na tym co jest istotne dla naszego systemu. Dzięki chmurze rozpowszechnił się popularny trend serverless.
  4. Brak potrzeby własnych serwerów. Poza finansowymi aspektami związanymi z zakupem, nie musimy się przejmować awariami tego sprzętu czy też serwisowaniem.
  5. Łatwa skalowalność. W zależności od konkretnej usługi często może dziać się automatycznie w zależności od aktualnego obciążenia systemu. Co to znaczy dla naszego biznesu? Jeżeli obłożenie jest nierównomierne w czasie (a zazwyczaj tak jest) to możemy cieszyć się niższymi rachunkami w czasie mniejszego obciążenia i jednocześnie być w stanie obsługiwać nawet kilkunastokrotnie zwiększone zapotrzebowanie na zasoby.
  6. Dostępność. Dzięki zarządzanym serwisom ciężar utrzymywania wysokiej dostępności jest w wielu aspektach zapewniany poprzez dostarczyciela usług w chmurze. SLA jest zazwyczaj na wysokim poziomie, zadowalającym dla 99% systemów. W przypadku systemów gdzie dostępność jest na prawdę rzeczą krytyczną można stosować podejścia zmniejszające ryzyko takie jak wykorzystanie więcej niż jednego dostawcy usług chmurowych.
  7. Koszty proporcjonalne do wykorzystania zasobów. W zależności od serwisu możemy dostosowywać koszt systemu poprzez zmianę parametrów wykorzystywanych usług takich jak przydział CPU, RAM, wielkość dysku. W przypadku innych serwisów możemy mieć możliwość płatności tylko za wykonaną pracę, czyli liczbę (mili)sekund w których nasz kod był wykonywany.
  8. Łatwe backupy. Tworzenie kopii zapasowych w przypadku baz danych, plików jest znacząco ułatwione, a serwisy często udostępniają możliwość eksportu danych do plików przechowywanych w innych usługach.
  9. Wielorakość serwisów pozwalających na wykorzystanie funkcjonalności: 
    1. Uruchamiania kodu w formie bezstanowych serwisów (np. Azure Functions, AWS Lambda) bądź też wirtualnych serwerów (np. Azure Virtual machines, AWS Elastic Compute Cloud – EC2)
    2. Baz danych (np. AWS RDS, DynamoDB, Azure Cosmos DB)
    3. DNS (np. AWS Route53, Azure DNS)
    4. CDN (np. AWS CloudFront, Azure Content Delivery Network)
    5. Serwer plików
    6. Fulltext search
    7. Kolejki wiadomości
    8. Wysyłka wiadomości
    9. Code integration/deployment
    10. Konteneryzacja (Docker)
    11. Big data i hurtownie danych, zarówno w procesie zbierania, przesyłania, przetwarzania jak i przechowywania danych
    12. Analiza danych
    13. Machine learning
    14. Zarządzanie, konfiguracja i monitoring naszych usług
    15. Internet of Things
    16. Usługi multimedialne 

Wady:

  1. Bezpieczeństwo danych. Tak tak, podobny punkt był też w zaletach 🙂 Brak kontroli z naszej strony co do tego w jaki sposób nasze są przetwarzane. W pewnych aspektach opieramy się na zaufaniu co do dostawcy usług chmurowych.
  2. Koszty
    1. Potrzebna jest ciągła analiza i kontrola kosztów tak by szybko identyfikować miejsca w których pieniądze zbyt szybko są spalane. Na szczęście mamy do dyspozycji narzędzia dzięki, którym nie wymaga to nie wiadomo jakiego nakładu pracy.
    2. Architektura systemu musi być rozwijana w oparciu o analizę przyszłego rozwoju projektu tak by dobrać odpowiednie rozwiązanie które spełnia wymagania i nie jest zbyt kosztowne.
  3. Vendor lock-in. Im więcej używamy usług danego dostawcy tym łatwiej dobrać kolejną usługę tego samego dostawcy (dzięki łatwej integracji między nimi), a tym samym tym bardziej jesteśmy uzależnieni od dokładnie tej chmury.
  4. Brak kontroli i uzależnienie od dostawcy. Nie mamy kontroli co do decyzji podejmowanych przez dostawcę usług chmurowych, który w jednej chwili może zdecydować o:
    1. likwidacji jednej z usług na której my polegamy
    2. wycofaniu się z interesu
    3. znaczącym podwyższeniu cennika usług
  5. Bezradność po wystąpieniu awarii. Jeżeli odpowiednio nie przygotujemy się na problemy z dostępnością danego serwisu to w przypadku wystąpienia danej trudności nie możemy już zbyt wiele zrobić niż czekać i przepraszać naszych klientów.
  6. Ochrona danych osobowych. Wiele z przepisów obowiązujących w danym kraju może obostrzać naszą swobodę w zakresie co do tego gdzie i w jaki sposób te dane mają być przechowywane.

Ogólny bilans, moim zdaniem, wychodzi zdecydowanie na plus. W generalnym rozrachunku przejście na zarządzane usługi z których składamy nasz system jest po prostu tańsze, jeżeli podejdziemy do tego tematu umiejętnie. Go cloud!

Jedna uwaga do wpisu “Chmura obliczeniowa – dlaczego? Zalety i wady

  1. Pingback: Pobij Netflixa | Me, Software and stuff

Dodaj komentarz