Eksplorowanie infrastruktury jako kodu
Infrastruktura jako kod jest integralnym składnikiem nowoczesnych rozwiązań programistycznych i operacyjnych. Obejmuje ona użycie metod programowania do aprowizowania usług infrastruktury i zarządzania nimi. IaC jest korzystne w środowiskach opartych na chmurze, takich jak opisane w przykładowym scenariuszu. Jednak każda organizacja, która opiera się na zasobach obliczeniowych dla swoich przychodów, może wykorzystać swoje możliwości. W tej lekcji poznasz główne zasady IaC i najbardziej typowe techniki implementowania tych zasad.
Jakie są główne zasady IaC?
Chociaż poszczególne implementacje IaC mogą się znacznie różnić, wszystkie mają tendencję do przestrzegania zestawu wspólnych zasad, w tym:
- Kontrola wersji: IaC definiuje składniki infrastruktury, w tym zasoby obliczeniowe, magazynowe i sieciowe przy użyciu kodu. Taki kod zwykle znajduje się w vcS, co ułatwia śledzenie zmian w infrastrukturze w taki sam sposób, jak śledzenie wersji oprogramowania.
- Składnia deklaratywna: IaC opiera się na składni deklaratywnej w celu opisania żądanego stanu infrastruktury. Jest to przeciwieństwo bardziej tradycyjnej składni imperatywnej , która polega na pisaniu kodu, który definiuje procedurę krok po kroku prowadzącą do tego stanu. Podejście deklaratywne wydaje się być bardziej wydajne z wielu powodów. W tym przypadku opiera się na analizie platformy obsługującej składniki infrastruktury, minimalizując możliwość błędów programowania lub nieefektywności. Ponadto zapewnia idempotencję.
- Idempotence: ten termin określa charakterystykę akcji, w której wynik jest zawsze taki sam, niezależnie od liczby wykonań akcji. Ponieważ składnia deklaratywna opisuje tylko stan końcowy, użycie go gwarantuje, że każde wykonanie kodu zawsze zwróci ten sam wynik. Zapewnia to spójność środowiska docelowego i wyklucza możliwość niezamierzonych skutków ubocznych zmian pośredniczących.
- Automatyzacja: użycie kodu ułatwia zautomatyzowaną aprowizację i konfigurację, zwiększenie wydajności, spójności i skalowalności. Eliminuje to również potencjalny wpływ błędów ręcznych.
- Integracja CI/CD: IaC może być (i często jest) zintegrowana z CI/CD, dając kompleksową strategię dostarczania oprogramowania poprzez połączenie udostępnienia infrastruktury z kompilacją aplikacji, testowaniem i wdrażaniem w jedną ciągłą, w pełni zautomatyzowaną sekwencję.
- Możliwość ponownego użycia: IaC promuje korzystanie z modułów kodu wielokrotnego użytku zgodnie z najlepszymi rozwiązaniami programistycznymi. Ułatwia to tworzenie bibliotek oprogramowania składających się ze standardowych bloków konstrukcyjnych infrastruktury, które mogą być współużytkowane w projektach. W rezultacie organizacje korzystają ze zwiększonej spójności, uproszczonej konserwacji i zminimalizowania duplikacji wysiłków.
Jak zaimplementować IaC?
Implementacja IaC rozpoczyna się od identyfikowania wymagań dotyczących infrastruktury, w tym składników obliczeniowych, magazynu i sieci. Szczegóły zależą w dużej mierze od platformy hostowania tej infrastruktury i mogą się znacznie różnić w zależności od użycia środowisk chmury publicznej lub prywatnej.
Wybór platformy będzie również miał wpływ na wybór technologii IaC i narzędzi. Na przykład każdy dostawca chmury publicznej oferuje własny zestaw funkcji IaC. W przypadku platformy Microsoft Azure te możliwości są oparte na szablonach usługi Azure Resource Manager (ARM) i Bicep. Istnieją również rozwiązania, które oferują obsługę wielochmurową, taką jak Terraform. Wybór narzędzia określa typ plików i odpowiednią strukturę katalogów projektów. Powinno to umożliwić skonfigurowanie repozytoriów w wybranym systemie kontroli wersji. Repozytoria VCS ułatwiają śledzenie zmian infrastruktury, współpracy wewnątrz i między zespołami, automatyzacji wdrożeń i wycofywania, a także integracji z przepływami pracy ciągłej integracji/ciągłego wdrażania.
Po wdrożeniu repozytorium należy rozpocząć tworzenie biblioteki kodu IaC składającej się z modułów reprezentujących bloki konstrukcyjne przyszłych wdrożeń infrastruktury. Takie bloki mogą na przykład reprezentować poszczególne serwery, sieci lub magazyny danych, które można mieszać i dopasowywać w dowolny sposób do tworzenia rozwiązań wielosóbowych.
Następnym krokiem jest zwykle zintegrowanie środowiska IaC z przepływami pracy ciągłej integracji/ciągłego wdrażania. Często wiąże się to z użyciem tego samego zestawu repozytoriów, co ułatwia łączenie wdrożenia infrastruktury z tworzeniem, testowaniem i dostarczaniem oprogramowania hostowanego w tej infrastrukturze. Jednak integracja powinna być rozszerzona na stosowanie praktyk ciągłej integracji/ciągłego wdrażania do wdrożeń IaC. W szczególności należy upewnić się, że podobnie jak w przypadku ciągłej integracji/ciągłego wdrażania będziesz używać środowisk programistycznych i przejściowych, automatyzować testowanie, implementować pętle monitorowania i przesyłania opinii oraz prawidłowo zabezpieczyć kod infrastruktury i procesy IaC.