Terraform vs CloudFormation: porównanie dwóch ofert infrastruktury jako kodu (2022)
Opublikowany: 2022-04-10Infrastruktura jako kod [IaC] stała się coraz bardziej popularna w ciągu ostatnich kilku lat i nie ma się co dziwić. IaC, znany również jako infrastruktura zdefiniowana programowo, to konfiguracja IT, której programiści lub zespoły operacyjne mogą używać do automatycznego zarządzania i dostarczania stosu technologicznego aplikacji za pomocą oprogramowania.
Dzięki IaC nie ma potrzeby ręcznego konfigurowania oddzielnych urządzeń sprzętowych i systemów operacyjnych. To także jeden z fundamentów DevOps , który podnosi wydajność i jakość pracy. Dwa najczęściej używane narzędzia do wdrażania IaC w AWS to narzędzia typu open source Terraform i CloudFormation .
Co to jest Terraform?
- Terraform umożliwia definiowanie zasobów lokalnych i w chmurze w czytelnych plikach konfiguracyjnych, które można łatwo udostępniać, poprawiać i ponownie wykorzystywać.
- Zapewnia trwały, spójny przepływ pracy w celu dostarczania i zarządzania całą infrastrukturą.
- Terraform może zarządzać komponentami niskiego poziomu, takimi jak:
- przetwarzanie danych
- zasoby sieciowe
- składowanie
Jak działa Terraform?
- Terraform może tworzyć zasoby i zarządzać nimi za pośrednictwem interfejsów programowania aplikacji (API) na platformach w chmurze i różnych usługach.
- Dostawcy umożliwiają mu pracę z praktycznie każdą platformą lub usługą z dostępnym interfejsem API.
- Społeczność Terraform współpracuje z ponad 1700 dostawcami i zarządza tysiącami rodzajów usług i zasobów, a firma stale się rozwija.
- Wszystkich publicznie dostępnych dostawców można znaleźć w rejestrze Terraform :
- Usługi internetowe Amazon (AWS)
- Azure, Google Cloud Platform (GCP)
- Kubernetes
- Hełm
- GitHub
- Splunk
- DataDog
Podstawowy przepływ pracy Terraform składa się z trzech etapów:
- Napisz: zdefiniuj swoje zasoby, które mogą działać w wielu usługach i dostawcach w chmurze.
- Plan: Terraform skompiluje plan wykonania określający infrastrukturę, którą utworzy, zaktualizuje lub zniszczy w oparciu o istniejącą infrastrukturę i konfigurację.
- Zastosuj: Po zatwierdzeniu Terraform wykona wszystkie proponowane operacje we właściwej kolejności i rozważy wszelkie zależności zasobów.
Dlaczego Terraforma?
- Zarządzaj dowolną infrastrukturą
Terraform stosuje nieusuwalne podejście do infrastruktury, aby zmniejszyć złożoność modyfikacji lub aktualizacji infrastruktury i usług. Śledzi również rzeczywistą infrastrukturę w pliku stanu . Ten plik określi wszystkie niezbędne zmiany, które należy wprowadzić w Twojej infrastrukturze, dopasowując ją do plików konfiguracyjnych. Te pliki opisują końcowy stan Twojej infrastruktury. Ponieważ Terraform kontroluje podstawową logikę, nie musisz pisać szczegółowych instrukcji tworzenia zasobów. Zbuduje wykres zasobów, który reguluje zależności zasobów. Utworzy lub zmodyfikuje niezależne zasoby, pomagając w łatwym śledzeniu wszystkich zasobów.
- Konfiguracje standaryzacyjne
Terraform jest wysoce wydajny, ponieważ obsługuje moduły lub komponenty konfiguracji wielokrotnego użytku. Moduły oferują bezproblemowy sposób pakowania i ponownego wykorzystywania kodu i są równoważne z metodami lub funkcjami w językach programowania lub skryptów. Moduły są uważane za interfejs standardowy, ponieważ tworzą zasoby poprzez przydzielanie danych wejściowych i zwracanie danych wyjściowych. To znacznie upraszcza projekty, zwiększając czytelność i umożliwiając zespołom wykorzystanie bloków logicznych do organizowania infrastruktury.
Kolejną zaletą modułów jest to, że można je łatwo pozyskiwać i udostępniać w dowolnym projekcie Terraform. Moduły są zwykle używane jako interfejs do zarządzania i tworzenia wielu zasobów. To znacznie zmniejsza liczbę duplikatów kodu w projekcie, ale kopiowanie i wklejanie sekcji kodu podczas zmiany tylko wybranych parametrów może być monotonne. Używając zmiennych wejściowych, możesz dostosować zachowanie modułu i ewentualnie sposób, w jaki oznacza on zasoby. Moduły Terraform mogą również zwracać dane wyjściowe, które mogą pełnić funkcję danych wejściowych do różnych modułów lub zasobów.
Podczas prowadzenia infrastruktury dowolnej wielkości bez wątpienia będzie przytłaczająca liczba komponentów i konfiguracji. Może to być trudne, ponieważ istnieje wiele subtelnych zmian w infrastrukturze używanej przez różne zespoły w organizacji. Może to jeszcze bardziej skomplikować sytuację, ponieważ infrastruktura może obejmować wiele różnych topografii, od lokalnych po wielu dostawców chmury. W rezultacie organizacja i utrzymanie infrastruktury to skomplikowany proces.
Co to jest AWS CloudFormation?
AWS CloudFormation oferuje firmom i programistom prosty sposób tworzenia różnorodnych powiązanych AWS i innych zasobów. Deweloperzy mogą instalować i aktualizować bazy danych, zasoby obliczeniowe i wiele innych zasobów w prostym, deklaratywnym stylu, eliminując problem wyznaczania określonych interfejsów API zasobów. Cloudformation zarządza również cyklami życia zasobów regularnie, przewidywalnie i bezpiecznie. Umożliwia również automatyczne wycofywanie zmian, automatyczne zarządzanie stanem oraz zarządzanie zasobami dla wszystkich kont i regionów.
CloudFormation pozwala poświęcić więcej czasu na skupienie się na aplikacjach działających w AWS, a mniej na zarządzaniu zasobami. Możesz zaprojektować szablon, który definiuje wszystkie żądane zasoby AWS, w tym instancje Amazon EC2 lub Amazon RDS DB itp. CloudFormation zajmie się udostępnianiem i konfiguracją Twoich zasobów. Zajmuje się również tworzeniem i konfiguracją zasobów AWS oraz analizuje całą logistykę zależności.
Dlaczego CloudFormation?
- Uprość zarządzanie infrastrukturą
Aby zbudować skalowalną aplikację internetową, która zawiera bazę danych zaplecza, możesz użyć relacyjnej bazy danych Amazon, instancji bazy danych usługi lub grupy automatycznego skalowania. Po utworzeniu zasobów z wybraną usługą do świadczenia usług będziesz musiał skonfigurować je do współpracy. Te dodatkowe kroki mogą skomplikować i spowolnić proces uruchamiania aplikacji. CloudFormation pozwala na stworzenie szablonu lub modyfikację już istniejącego. Szablon definiuje wszystkie Twoje zasoby i wszystkie ich komponenty.
Użycie tego szablonu do utworzenia stosu CloudFormation umożliwi usłudze pełną kontrolę nad grupą Autoskalowania, systemem równoważenia obciążenia i bazą danych. Twoje zasoby AWS będą w pełni funkcjonalne po pomyślnym utworzeniu stosu. Usunięcie stosu jest proste, ale pamiętaj, że usunięcie stosu oznacza usunięcie wszystkich przechowywanych w nim zasobów. Podsumowując, CloudFormation sprawia, że zarządzanie zbiorem zasobów w jednej jednostce jest łatwym doświadczeniem.
- Szybko zreplikuj swoją infrastrukturę
Jeśli Twoja aplikacja wymaga dodatkowej dostępności, możesz potencjalnie replikować ją w wielu regionach, dzięki czemu jeśli jeden region stanie się niedostępny, użytkownicy będą mogli nadal korzystać z Twojej aplikacji w innym miejscu. Łatwiej to powiedzieć niż zrobić. Replikacja aplikacji może być trudna, ponieważ wymaga również zduplikowania zasobów. Musisz rejestrować każdy zasób wymagany przez aplikację podczas zarządzania tymi zasobami i ich konfigurowania w każdym regionie.
Szablony CloudFormation są świetne, ponieważ możesz ich ponownie używać do spójnego i wielokrotnego tworzenia zasobów. Aby to zrobić, musisz raz zdefiniować swoje zasoby, a następnie stale je udostępniać w wielu regionach. CloudFormation stale się dostosowuje, a najnowsze aktualizacje i nowe opcje umożliwiają korzystanie z wielu metod tworzenia zasobów. Obejmują one wykorzystanie AWS CDK do kodowania w językach poziomu zaawansowanego, wykrywanie odchyleń w konfiguracji i importowanie istniejących zasobów. Istnieje teraz Rejestr, który ułatwia tworzenie niestandardowych typów, które mają wiele podstawowych zalet Cloudformation.
CloudFormation Cztery główne koncepcje
- Szablon to plik tekstowy w formacie JSON lub YAML, który opisuje zamierzony stan wszystkich zasobów potrzebnych do pomyślnego uruchomienia aplikacji. Składają się z następujących elementów:
- Opcjonalna lista parametrów szablonu (wartości wejściowe podawane w czasie tworzenia stosu)
- Opcjonalna lista wartości wyjściowych (np. pełny adres URL aplikacji internetowej)
- Opcjonalna lista tabel danych służy do wyszukiwania statycznych wartości konfiguracji (np. nazw AMI).
- Lista zasobów AWS i ich wartości konfiguracyjne
2. Numer wersji formatu pliku szablonu
3. Stos wymusza i zarządza wszystkimi zasobami w szablonie, co pozwala na wspólne zarządzanie stanem i zależnościami tych zasobów.
4. Zestaw zmian to podgląd wszystkich aktualizacji, które zostaną wykonane przez operacje stosu w celu utworzenia, aktualizacji lub usunięcia zasobów.
5. Zestaw stosów to grupa stosów, którymi zarządzasz jednocześnie, które mogą kopiować grupę.