Infrastruktura jako kod umożliwia firmom efektywniej kontrolować zmiany i konfiguracje w środowisku chmurowym. IaC umożliwia stosowania praktyk DevOps, które umożliwiają zespołom deweloperów i operacyjnym zacieśnienie współpracy w zakresie wdrażania wirtualnych maszyn i sieci zbudowanych wokół nich oraz działających w nich aplikacji.
Jedną z decyzji, które należy podjąć, aby móc korzystać z IaC, jest wybór automatyzacji imperatywnej lub deklaratywnej na potrzeby wprowadzania zmian do środowiska. IaC z natury ma charakter głównie deklaratywny. Różnica między podejściem imperatywnym i deklaratywnym jest taka sama, jak różnica między tym, jak program powinien działać, a tym, jaki cel powinien osiągnąć.
Aby wprowadzać imperatywne zmiany z zastosowaniem automatyzacji imperatywnej, można użyć interfejsu wiersza polecenia (Command Line Interface – CLI). Najpierw kieruje zmiany do chmury w kontenerze, następnie do maszyny wirtualnej (VM), a następnie do wirtualnej chmury prywatnej przy użyciu skryptu. Taka lista może zawierać szczegółowe instrukcje, ale jeśli po ich zrealizowaniu na wielu maszynach wystąpi konieczność zmiany konfiguracji, wszystkie kroki i wykonanie skryptu będzie trzeba powtórzyć.
Automatyzacja deklaratywna wymaga określenia celu. Przykładowo zamiast używać wiersza polecenia i tworzyć szczegółową listę czynności konfiguracyjnych do wykonania na potrzeby maszyny wirtualnej, można po prostu określić, że potrzebna jest maszyna wirtualna z dołączoną domeną i poczekać na jej automatyczne utworzenie. W podejściu deklaratywnym łatwiej jest określić, co chce się osiągnąć za pomocą narzędzi automatyzacji.
Wszystkie części infrastruktury dotyka problem dryfu konfiguracji. Występuje on, gdy infrastruktura może być modyfikowana. Możliwość modyfikacji oznacza, że coś może się zmienić. Zmiana jednej części infrastruktury sprawia, że traci ona synchronizację z resztą. Z punktu widzenia bezpieczeństwa bardzo ważna jest spójność konfiguracji we wszystkich elementach infrastruktury.
Infrastruktury bez możliwości modyfikacji, jak nazwa wskazuje, nie można zmienić po wdrożeniu. Zmiany będą się pojawiać, ale będą one wprowadzane w oryginalnych instrukcjach deklaracyjnych. Po przygotowaniu zestawu zmian można je konsekwentnie wprowadzać na wszystkich właściwych urządzeniach lub konfiguracjach. Spójność jest bardzo ważna z punktu widzenia bezpieczeństwa, ponieważ hackerowi wystarczy tylko jedna luka, aby włamać się do systemu. Zamknięcie wszystkich potencjalnych wejść znacznie komplikuje jego pracę.
Tworzenie, testowanie i wdrażanie aplikacji w środowisku produkcyjnym trwa, przez co deweloperzy muszą czekać na wykonanie zadań przez zespół produkcyjny lub odwrotnie. Sprawniejsze, szybsze wdrożenie jest możliwe, gdy sieci i maszyny wirtualne są konfigurowane przy użyciu kontrolowanego systemu. Następnie deweloperzy mogą żądać udostępnienia kontenerów lub maszyn wirtualnych automatycznie, przy zachowaniu takiej samej stabilności jak w przypadku kodu. Dzięki temu proces tworzenia kolejnych wersji jest efektywniejszy i łatwiejszy do śledzenia.
Powiązane artykuły
Powiązane badania