Back
dot dot dot
2022-12-01 10:29:00

Infrastruktura jako kod (IaC): Czym jest i jak może ułatwić Ci życie

2022-12-01 10:29:00

Wieloletnie doświadczenie w branży zmienia sposób postrzegania modelu infrastruktury IT jako kodu (Infrastructure as code – IaC). 

Próbując wymyślić odpowiednie porównanie, stwierdziłem, że pomocna możne być taka perspektywa: specjalista w branży IT urodzony w 1990 roku zupełnie inaczej postrzega aplikacje i narzędzia dostępne w 2022 roku niż ktoś urodzony na przykład w roku 2003. 

Juniorzy mogli słyszeć opowieści o tym, jak pewne rzeczy robiło się wcześniej, ale nigdy nie mieli okazji doświadczyć tego osobiście, więc znają tylko produkty swoich czasów. Jednak w świecie DevOps rozumienie istoty IaC ma wiele sensu. 

Automatyzacja i rozwój stały się wszechobecnymi elementami naszego życia. Nowicjusz w świecie DevOps może się natknąć na różne stwierdzenia na temat IaC podczas przeszukiwania najgłębszych zakamarków Internetu.

Rzeczywiście, infrastruktura jako kod to rozległy temat, który raz zrozumiany ułatwia życie – szczególnie w złożonych projektach IT.

Oto, co musisz wiedzieć o IaC.  

Czym jest infrastruktura jako kod?

Z początku nasz sposób zarządzania infrastrukturą był przeważnie dość złożony. Musieliśmy też regularnie kontaktować się z pracownikami serwerowni i omawiać istotne problemy z połączeniem sieciowym. 

 

Zarządzaliśmy dostępem poprzez serwery zamknięte w sieci bez dostępu do innych elementów. Ręczne instalacje również były bardzo czasochłonne. Z perspektywy czasu widzimy, że przetwarzanie w chmurze mogło znacznie to przyspieszyć. 

 

Obecnie żyjemy w świecie, w którym błędy ludzkie i brak integracji między środowiskami mają być niwelowane, a aplikacje klienta powinny być skalowalne i wysoce dostępne.  

 

Infrastruktura jako kod (IaC) pomaga osiągnąć ten cel poprzez automatyczne zarządzanie infrastrukturą i dostarczanie jej za pomocą kodu zamiast procesów manualnych.

 

Korzyści z IaC jest mnóstwo – od łatwiejszego utrzymania, przez poprawę bezpieczeństwa i spójności konfiguracji, po zmniejszenie ryzyka i kosztów oraz szybsze wdrożenia. Oto, jak to działa w praktyce. 

Przykłady IaC

Powiedzmy, że musimy stworzyć cztery środowiska klienta o identycznej infrastrukturze. Chcemy rozważyć pełny pakiet komponentów opartych na AWS: EKS, RDS, DynamoDB, Lambda, GW API, SQS, SNS, S3, ElastiCache, OpenSearch, CodeArtifact, EC2, EFS, ALB, NLB, KMS. 

Dlaczego aż tyle? Wkrótce będzie to jasne. Przeprowadzenie manualnych testów i kontroli na różnych kontach klientów w każdym środowisku może się wydawać niemożliwe. Chociaż da się to zrobić, to nie ma sensu wymyślać koła na nowo i robić tego wszystkiego ręcznie. 

Skalowanie ręcznie skonfigurowanych środowisk jest nie lada wyzwaniem. To właśnie IaC sprawia, że ich wdrożenie jest szybkie i wydajne. 

Znaczenie IaC dla zespołów DevOps

Wdrażanie infrastruktury z Terraform jest procesem iteracyjnym. Możesz wdrożyć wszystkie zmiany w kodzie i śledzić je w historii. Możesz również sprawdzić różnice w środowiskach i w przypadku jakiegokolwiek błędu przywrócić je do pożądanego stanu przy następnym uruchomieniu. 

 

W rezultacie infrastruktura jako kod pomaga osiągnąć spójność. Dzięki IaC stworzysz kod, który następnie możesz wykorzystać w wielu miejscach i infrastrukturach oraz zmodyfikować do różnych celów i aktualizacji. 

 

To sprawia, że Infrastruktura jako kod jest kluczowym zasobem dla zespołów DevOps. Wykorzystując IaC, zespoły te mogą opracować ujednolicony zestaw praktyk i narzędzi, aby skutecznie i niezawodnie dostarczać aplikacje i ich infrastrukturę na większą skalę. Ponadto pozwala to włączyć testy na wczesnym etapie cyklu rozwoju i zapobiec powszechnym problemom z wdrożeniem.   

 

Kluczową kwestią dla właścicieli firm jest to, że koszty infrastruktury mogą być znacznie niższe, gdy jest ona odpowiednio wykorzystywana. Nie musisz poświęcać czasu na wdrażanie i obsługę; możesz wyłączać środowiska lub tworzyć je na żądanie. 

 

Dodatkowo możesz wykorzystać CI/CD (ciągła integracja i ciągłe dostarczanie) i w pełni zautomatyzować wdrażanie infrastruktury – testować kod po każdorazowym wgraniu komponentów, a następnie go uruchamiać i skalować. Skonstruowanie tego procesu jest również w pełni zależne od Twoich potrzeb i wyobraźni.   

 

Pozostaje więc jedno istotne pytanie:  

Jak wdrożyć metodę Infrastruktura jako kod?

Kluczowym pojęciem, na które warto zwrócić uwagę, są przestrzenie robocze umożliwiające wydzielenie plików stanu infrastruktury. Taki krok pozwala na stworzenie spójnych środowisk w tym samym lub różnych regionach.

Proces ten polega na napisaniu kodu, wygenerowaniu planu opisującego infrastrukturę, która może tworzyć, aktualizować lub niszczyć zasoby, a następnie zastosowaniu zmian na swoim koncie. 

Oto kilka narzędzi umożliwiających ten proces. 

 

Popularne narzędzia IaC

1: Terraform

Stworzone przez HashiCorp Terraform jest wszechstronnym narzędziem do tworzenia infrastruktury. Terraform używa języka dziedzinowego (DSL) o nazwie HashiCorp Configuration Language (HCL). Korzystając z HCL, można tworzyć pliki konfiguracyjne opisujące zasoby infrastruktury, które mają zostać wdrożone. 

Narzędzie to bez problemu współpracuje z tysiącami dostawców, których można znaleźć w Rejestrze Terraform

2: AWS Cloudformation

Podobnie jak Terraform, AWS CloudFormation jest narzędziem do zarządzania konfiguracjami umożliwiającym kodowanie infrastruktury w celu automatyzacji serwerów i wdrożeń. Jednak w przeciwieństwie do Terraform jest on głęboko zintegrowany z AWS i działa tylko w środowiskach Amazona.  

3: Chef 

Chef to popularne narzędzie konfiguracyjne dla procesów CI i CD. Jego DSL umożliwia tworzenie „przepisów” (recipes) i „książek kucharskich” (cookbooks). Chef jest narzędziem typu „cloud-agnostic” i współpracuje z wieloma dostawcami, w tym AWS, Azure, GCP i innymi.                                                                                  

4: Puppet

Podobnie jak Chef, Puppet jest kolejnym popularnym narzędziem do zarządzania konfiguracją wspierającym proces ciągłego dostarczania oprogramowania. Język dziedzinowy wykorzystywany przez Puppet pozwala zdefiniować pożądany stan docelowy infrastruktury oraz jej działania. Ponadto Puppet jest kompatybilne ze wszystkimi najpopularniejszymi chmurami i umożliwia automatyzację na wielu chmurach.

5: Ansible 

Ansible to narzędzie do automatyzacji infrastruktury od Red Hat – wiodącego dostawcy rozwiązań typu open-source dla firm. Kod Ansible jest napisany językiem YAML w formie Ansible Playbooks, więc wdrażanie jego konfiguracji jest bardzo wydajne.                                              

Oczywiście istnieje o wiele więcej świetnych rozwiązań do zarządzania infrastrukturą. Wystarczy, że wybierzesz te, które najlepiej odpowiadają Twoim potrzebom, i połączysz je z właściwym sposobem przekazywania aplikacji. Zakres możliwości jest równie obszerny, co Twoja wyobraźnia. 

Podsumowanie

IaC otwiera drzwi do nowych możliwości związanych z zarządzaniem infrastrukturą: poprawy spójności i bezpieczeństwa, redukcji błędów, generowania oszczędności i usprawnienia procesów. 

 

To, co umożliwia tak znakomity rozwój, to automatyzacja. Połączmy więc siły, aby przekroczyć granice i stworzyć bardziej zautomatyzowane rozwiązania. IaC to droga do nowej cyfrowej rzeczywistości – wykorzystajmy tę szansę i stwórzmy coś innowacyjnego! 

Skontaktuj się z nami i zacznijmy działać! 

O autorze: 

Mateusz Grządzielski, posiada prawie 10-letnie doświadczenie w branży IT. Pracował na wielu stanowiskach wsparcia technicznego – od specjalisty po team leadera.

W Tenesys kieruje zespołem Inżynierów DevOps, skupiając się na projektach klientów i dobrej atmosferze całego zespołu. Poza informatyką Mateusz studiuje na Uniwersytecie Ekonomicznym w Poznaniu i prowadzi własną firmę. 

previous next
scroll