

Infrastructure as Code
Praca na komputerze to czasem żmudne i powtarzalne czynności – wykonywane w różnych aplikacjach: czy to w przeglądarce internetowej, pakiecie biurowym czy też specjalizowanym programie. Programiści od dawien dawna próbowali tworzyć rozwiązania wyręczające w tym człowieka. W obecnych czasach jest to często możliwe w prosty sposób, dzięki API – czyli standardowi w którym jedna aplikacja może korzystać z innej, bez pośrednictwa człowieka, o którym pisaliśmy tu Jednak to był dopiero wstęp do dalszego rozwoju technologii automatyzacji. W jaki sposób przełożyło się to na filozofię „agile” i co ma software wspólnego z placem budowy?
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 Cloud typu IaaS czy PaaS, w którym 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).–Może to być przydatne 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 czynności, które aż proszą się o zautomatyzowanie. 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. Obecne w świecie software hasło „agile”, oznaczające zwinność, powinno przekładać się nie tylko na sposób organizacji pracy, ale i na warsztat technologiczny pozwalający na szybkie wprowadzanie zmian, a to możliwe jest dopiero przy pewnym poziomie automatyzacji.
Jak już zostało wspomniane w poprzednim artykule „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 cloudowych. 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 chmur od różnych dostawców. Powstają one zarówno jako oddolne inicjatywy Open Source, jak i w formie produktów komercyjnych.
Jeden program do wszystkiego
Szczególnym przykładem automatyzacji są narzędzia i usługi z kategorii „Infrastructure as Code”. 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ę trzeba zasilić podając narzędziu opis środowiska, które chcemy finalnie otrzymać. 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.
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. Bywają 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 chmur, w tym VMware vCloud Director, co pozwala na automatyczne zarządzanie chmurą Integrated Computing Standard dostarczaną przez Integrated Solutions z Data Center Orange.