Plusy i minusy hostowania narzędzi CI/CD w chmurze

Każda firma, która zajmuje się wytwarzaniem oprogramowania, prędzej czy później staje przed koniecznością wyboru infrastruktury ITDane pokazują, że coraz większą popularnością na rynku cieszy się infrastruktura w chmurze – już 5 lat temu korzystało z niej aż 72% przedsiębiorstw na świecie, a w 2018 roku systemy cloudowe były wdrożone aż w 88% firm w Wielkiej Brytanii. Zanim jednak wprowadzimy wybrane rozwiązanie do naszej organizacji, warto poznać wady i zalety hostowania narzędzi serwerowych na swoich serwerach lub w chmurze. Dzięki temu zyskamy pewność, że wybieramy dla naszej firmy to, z czego będzie mogła najlepiej skorzystać.

Zalety CI/CD w chmurze

Wysoka dostępność

Jedną z głównych zalet rozwiązań cloudowych jest szybkie osiągnięcie wysokiej dostępności bez konieczności tworzenia infrastruktury serwerowej od podstaw. Dodatkowo takie rozwiązanie zdejmuje z nas konieczność samodzielnego administrowania serwerami. Nie musimy się martwić o utrzymanie oprogramowania do sprzętu i samego sprzętu, zgodność i aktualizacje, gdyż usługi te zapewnia dostawca chmury. Dostępność na żądanie pozwala na stały dostęp do aplikacji, ale też możliwość szybkiego przywrócenia centrum danych po awarii.

Chmura pozwala też na dostępność z wielu lokalizacji, co może stanowić zarówno zaletę, jak i wadę. W pierwszym przypadku plusem będzie zdecydowanie krótszy czas odpowiedzi stron, niż ma to miejsce przy tych opartych o rozwiązanie on-premise. Hosting w chmurze to prosty sposób na wsparcie dla firm globalnych lub lokalnych przedsiębiorstw opartych o pracę w rozproszonych zespołach.

Koszty pod kontrolą

Kwestii kosztów korzystania z infrastruktury w chmurze nie można ocenić jednoznacznie: wszystko zależy od indywidualnego przypadku. Kiedy cloud to rozwiązanie opłacalne finansowo?

Niewątpliwym plusem rozwiązań cloudowych jest niski próg wejścia, który wiąże się z niewielkimi kosztami początkowymi. Firma nie musi martwić się o wkład finansowy związany z rozwojem fizycznej infrastruktury, ani z inwestycją w wykwalifikowanych pracowników, którzy będą ją obsługiwać. Te elementy otrzymuje w pakiecie od dostawcy chmury. Według badania Oracle Netsuite ERP w chmurze może wymagać o 50% mniej inwestycji niż lokalny ERP przy zatrudnieniu 100 osób w okresie 4 lat.

Co więcej, dużą zaletą chmury jest przewidywalność miesięcznych kosztów, do których zaliczamy licencje, upgrady, wsparcie, kopie zapasowe systemów i usługi konserwacyjne. Wydatki rozkładają się w czasie, co eliminuje ryzyko konieczności nagłych dużych nakładów. Duże znaczenie w optymalizacji kosztów ma też model pay as you go, dostępny w chmurze. Dzięki niemu ponosimy wydatki tylko za tę część infrastruktury, która jest realnie używana, nie musząc martwić się o koszty związane z zasobami nieużywanymi do implementacji produktu. Istnieje również możliwość optymalizacji kosztów rozwiązań chmurowych.

Rozwiązania w chmurze wymagają stałych nakładów kosztowych przez cały czas stosowania, natomiast rozwiązania onsite wymagają o wiele większych nakładów kosztowych na początku stosowania

Skalowalność

Chmura to elastyczność, co doceniają nie tylko start-upy w fazie gwałtownego rozwoju, ale też te przedsiębiorstwa, które zauważają nagłe potrzeby rozbudowy. Tylko kilka kliknięć dzieli nas od możliwości zwielokrotnienia pojemności chmury, potrzebnej nam do wykonania danej operacji czy zwiększenia przepustowości ruchu w tygodniach, dniach lub godzinach szczytu. Wydajność inftastruktury zwiększa się tylko na ten czas, kiedy jest to potrzebne, a potem zmniejsza lub może być całkowicie wyłączona. Pozwala to na wykorzystywanie tylko tych zasobów, które są aktualnie potrzebne, a więc również na dokładną optymalizację kosztów.

Przy okazji skalowania warto wspomnieć o Grupie Auto Scaling dostępnej na AWS, zawierającej zbiór instancji EC2. W środowiskach testowych można wykorzystać autoskalowanie do zera, umożliwiające wyłączenie całego klastra o danej godzinie. Dzięki temu AWS nie obciąża nas kosztami, kiedy nie korzystamy z EC2. Wówczas wystarczy ustawić wyzwalacz na konkretne godziny, w których zasoby będą się automatycznie zmniejszać i zwiększać. Grupy skalują się w zależności od wykorzystanych zasobów CPU czy RAM lub od tego, czy dany serwer przeszedł Health Check. Rozmiar Grupy Automatycznego Skalowania zależy od liczby instancji ustawionych jako żądana pojemność.

Infrastruktura jako kod

Infrastruktura jako kod (ang. Insfrastructure as Code – IaC) to koncepcja mówiąca o tym, że cała infrastruktura aplikacji powinna być traktowana w ten sam sposób, co kod tej aplikacji. Infrastruktura przechowywana w chmurze staje się wirtualna. Konteneryzacja aplikacji pozwala na łatwą komunikację kontenerów między sobą, a IaC na zautomatyzowanie obsługi platformy. Infrastruktura jako kod umożliwia więc stworzenie skryptów lub aplikacji, które wspomogą proces automatycznej konfiguracji infrastruktury i pozwolą zrezygnować z dokonywania zmian manualnie, a więc zaoszczędzą czas.

IaC może być również zrealizowane w środowisku on-premises, jednak wiąże się to z dużymi dodatkowymi nakładami finansowymi i czasowymi związanymi z wdrożeniem automatyzacji i orkiestracji infrastruktury sieciowej, obliczeniowej i przestrzeni dyskowych. U dostawcy chmury otrzymujemy to już w cenie usługi.

Zgodnie z założeniem cała infrastruktura aplikacji powinna być traktowana w ten sam sposób, co kod tej aplikacji

Wady CI/CD w chmurze

Dostępność i lokalizacja danych nie dla każdego

Przyjęty model w niektórych przypadkach może stanowić też wadę rozwiązania chmurowego, a dokładnie ograniczenie możliwości dostosowania serwera do indywidualnych potrzeb. W ramach wybranego modelu Iaas, Paas czy Saas dostajemy usługę, którą zarządza dostawca chmury, ale przyjmujemy ograniczenia, które są nam narzucane, a które wynikają z standaryzowania usług. Im wyżej idziemy w drabinie (IaaS, PaaS, SaaS, itd,), tym więcej obowiązków przekładamy na dostawcę chmury, równocześnie tym więcej tracąc kontroli nad naszym środowiskiem.

Przykładem może być poczta e-mail:

  • w przypadku IaaS bierzemy instancję wirtualnej maszyny i samodzielnie instalujemy serwer pocztowy. Tym samym tracimy kontrolę nad warstwą wirtualizacyjną, siecią i przestrzenią dyskową, ale utrzymujemy pełną kontrolę nad aplikacją pocztową,
  • w przypadku PaaS usługą może być Exchange. W tym momencie tracimy kontrolę nad wirtualną maszyną. Mamy też ograniczoną kontrolę nad środowiskiem, wersją i konfiguracją oprogramowania pocztowego,
  • w przypadku SaaS możemy skorzystać z usługi Google Workplace (dawniej G Suite.) Nie mamy już żadnej kontroli nad dostępnymi funkcjonalnościami lub ich rozszerzaniem. Jednak w zamian oczekujemy dostępności naszej poczty i jej bezpieczeństwa (np. filtrowania spamu).

W przypadku rozwiązań on-premise mamy pewność, że nasze dane, zmiany, oprogramowanie i jego konfiguracja są pod naszą ścisłą kontrolą. Warto mieć jednak świadomość, że sprawdzeni dostawcy usług chmurowych korzystają ze środków bezpieczeństwa wykraczających poza możliwości kosztowe wielu firm, stąd w wielu przypadkach dane często są bezpieczniejsze w chmurze niż na lokalnych serwerach.

Wspomniana już wyżej geolokalizacja również ma swoje słabe strony, choć dużo zależy od charakteru korzystającej z rozwiązania firmy. Decydując się na opcję hostingu w chmurze, warto dotrzeć do informacji, gdzie fizycznie znajdują się serwery dostawcy. Może mieć to niebagatelne znaczenie w przypadku chociażby prawników, banków czy innych przedsiębiorstw finansowych, które są zobligowane do przetrzymywania danych wrażliwych na konkretnym terenie, np. Unii Europejskiej lub do zapewnienia odpowiedniej ochrony danych w przypadku ich przechowywania poza określonymi państwami.

Koszty przy dużym zapotrzebowaniu zasobów

O ile na początku rozwoju produktu hosting w chmurze jest zdecydowanie tańszą opcją niż on-premise, z biegiem czasu koszty mogą wzrosnąć. W przypadku rozwiązań cloudowych są one zależne od ruchu sieciowego: im wyższy ruch, tym wyższy koszt. Na większe wydatki mają wpływ również ilość przechowywanych danych, częstotliwość zapytań czy prędkość zasobów.

W przypadku rozwiązań serwerowych konieczność postawienia fizycznego serwera w jednej czy wielu lokalizacjach to na początku duży koszt, ale jest to wydatek jednorazowy. Kolejne inwestycje związane z utrzymaniem infrastruktury (np. prąd, obsługa, eksploatacja, wynajem pomieszczeń) są zdecydowanie niższe i bardziej opłacalne w rozrachunku długoterminowym, z założeniem ciągłego rozwijania produktu. Z punktu widzenia kosztów utrzymywanie aplikacji w chmurze może nie sprawdzić się więc w przypadku obciążeń wymagających dużej ilości transferów, np. synchronizowania danych między środowiskiem chmurowym a on-premise.

Jeśli rozważamy migrację z on-premises do chmury, warto wziąć pod uwagę kwestię uzależnienia od dostawcy (vendor lock-in), która może być spowodowana m.in. zastrzeżoną technologią, ale też nieefektywnymi procesami. Chociaż koszt takiej migracji może być niewielki, to jednak może nie być opłacalny ze względu na fundusze, które już zostały zainwestowane w infrastrukturę. Należy przy tym pamiętać, że ostateczny koszt migracji zależy także od architektury aplikacji, jej implementacji i stosu technologicznego. Tak wiele czynników może go znacząco podwyższyć.

Dla kogo rozwiązania hybrydowe?

Jeśli żadne z rozwiązań nie przekonuje Cię do końca, możesz rozważyć skorzystanie ze stworzenia hybrydowej struktury CI/CD, gdzie dane są przechowywane na serwerach lokalnych, a paczki budują się w chmurze. Korzystanie z hybryd jest popularne w szczególnych przypadkach, m.in. w branżach medycznej i finansowej, które muszą szczególnie dbać o bezpieczeństwo przechowywanych informacji. Wówczas zbudowany artefakt trafia do środowiska on-premise, gdzie można go z powodzeniem wydawać.

Model hybrydowy charakteryzuje się amortyzacją (opłatami tylko za obecne zasoby), skalowalnością i mniejszym uzależnieniem od danego dostawcy. Warto wziąć pod uwagę też minusy tego rozwiązania: podwojone opłaty za utrzymanie i możliwe utrudnienia we wdrażaniu aplikacji.

Cloud czy on-premise?

Które rozwiązanie jest lepsze? Na to pytanie nie ma jednoznacznej odpowiedzi – wszystko zależy od indywidualnych potrzeb Twojej działalności. Jeśli nie wiesz, w którą stronę rozwinie się Twój produkt, a jednocześnie masz wysokie wymagania, przetestuj chmurę. Po wdrożeniu i ustabilizowaniu wszystkich procesów będziesz mieć możliwość bezstratnego przeniesienia się na infrastrukturę lokalną lub przetestowania struktury hybrydowej. Warto skorzystać też z pomocy firmy dwrożeniowej z szerokim doświadczeniem w rozwiązaniach chmurowych, on-premises oraz w migracjach.

Szukasz rozwiązania dla swojego biznesu? Zobacz, co możemy Ci zaoferować w kwestii hostingu, implementacji i utrzymania w chmurze. Skontaktuj się z nami, by dobrać rozwiązanie optymalne dla Twojej firmy.

Dowiedz się więcej o CI/CD: