Infrastructure as Code, czyli szeroka automatyzacja procesów IT
Praca na komputerze to czasem żmudne i powtarzalne czynności wykonywane w różnych aplikacjach. Programiści od dawna próbowali tworzyć rozwiązania wyręczające w tym człowieka. Obecnie jest to możliwe dzięki API, standardowi, w którym jedna aplikacja może korzystać z innej. Jednak to był dopiero wstęp do dalszej automatyzacji IT. Jego rozwinięciem jest Infrastructure as Code (IaC).
Podstawy automatyzacji IT: gdy programy sterują programami
Naturalnie obszarem, gdzie świadomość zalet API jest największa, są szeroko pojęte usługi dla programistów i administratorów. A w szczególności: usługi cloud (chmurowe) typu IaaS czy PaaS, w których można uruchamiać własne aplikacje. W związku z tym często takie usługi udostępniają swoje API. Mamy wtedy sytuację, kiedy za pomocą jednej aplikacji (np. własnego skryptu) możemy sterować pośrednio środowiskiem innej aplikacji (np. sklepu internetowego uruchamianego na chmurze). I tu już zaczyna się zauważalnie odciążająca automatyzacja procesów IT.
Taka automatyzacja IT może być przydatna na różnych etapach życia aplikacji „sterowanej”. Instalowanie i uruchamianie (wersji testowej albo produkcyjnej), zwiększanie albo zmniejszanie ilości zasobów (aby podążać za aktualnym zapotrzebowaniem), kopie zapasowe i naprawianie awarii, czy w reszcie deinstalacja i wyczyszczenie środowiska – to przykłady procesów IT, które aż proszą się o automatyzację.
Idą za tym dodatkowe korzyści – jeśli na przykład instalacja nowej wersji serwisu internetowego nie wymaga ręcznej interwencji, to można niewielkim wysiłkiem uruchamiać i sprawdzać działanie każdej najmniejszej zmiany.
Podejście agile w świecie kodów
Obecne w świecie software podejście agile, które opiera się na elastyczności (zwinności) w realizacji projektów, powinno przekładać się nie tylko na sposób organizacji pracy. Metodologia ta powinna dotyczyć też warsztatu technologicznego pozwalającego na szybkie wprowadzanie zmian. A to możliwe jest dopiero przy pewnym poziomie automatyzacji procesów IT.
Jak wspomnieliśmy w artykule o API, lenistwo jest cnotą programisty. Trudno więc wymagać, aby do każdej aplikacji powstawał pisany od zera zestaw skryptów obsługujący jej cykl życia. To po prostu oznaczałoby zbyt wiele powtarzalnej pracy, nawet jeśli pracą tą jest programowanie.
Z jednej strony z pomocą przychodzą dostawcy usług chmurowych. W miarę rozwoju swojej oferty proponują oni poszczególne ze wspomnianych elementów wymagających automatyzacji jako gotowe usługi swojej platformy, jak na przykład automatyczne kopie zapasowe. Z drugiej zaś strony, tworzone są uniwersalne narzędzia potrafiące obsłużyć API usług cloud od różnych dostawców. Powstają one zarówno jako oddolne inicjatywy Open Source, jak i w formie produktów komercyjnych.
IaC, czyli jeden program do wszystkiego
Szczególnym przykładem automatyzacji w IT są narzędzia i usługi z kategorii Infrastructure as Code (IaC), z ang. „infrastruktura jako kod”. IaC to szwajcarski scyzoryk w świecie chmur typu IaaS i PaaS. Może powołać do życia najróżniejsze elementy składowe, skonfigurować i połączyć w całość, tworząc, jak za dotknięciem magicznej różdżki, gotowe środowisko dla danej aplikacji.
Nie ma jednak nic za darmo – za tę wszechstronność trzeba zapłacić pewnym wysiłkiem umysłowym: nie dostajemy gotowego przycisku „uruchom”. Wspomnianą magię Infrastructure as a Code trzeba zasilić, podając narzędziu opis środowiska, które chcemy finalnie otrzymać.
IaC a programowanie deklaratywne
Gdzie więc różnica, w stosunku do pisania własnej aplikacji wykonującej to samo zadanie? Tworzymy opis, a nie procedurę. To podejście nazywane programowaniem deklaratywnym można przyrównać do rozmowy z architektem o tym, jak ma wyglądać dom, w porównaniu do wydawania poleceń ekipom budowlanym. Przeciwieństwem programowania deklaratywnego jest imperatywne, w przypadku, którego trzeba wskazać komputerowi krok po kroku, co ma robić, a nie tylko wskazać oczekiwany efekt i jego cel.
Narzędzia typu Infrastructure as Code, podobnie jak inne, bywają wbudowaną usługą danej platformy chmurowej jak CloudFormation w AWS czy Heat w ramach OpenStack. Rozwiązania IaC występują również w formie uniwersalnych narzędzi.
W tej kategorii prym wiedzie Terraform, narzędzie Open Source wspierane przez cenioną przez programistów firmę HashiCorp. Pozwala on na zarządzanie najróżniejszymi typami usług cloud, w tym VMware vCloud Director. Umożliwia to zautomatyzowaną obsługę narzędzi chmurowych Integrated Computing Standard dostarczanych przez Integrated Solutions z Data Center Orange.