ATLANTA — Jeśli Terraform sprawia problemy, a YAML przyprawia o ból głowy, startup Platform Engineering Labs przygotował alternatywę. Firma zaprezentowała na KubeCon+CloudNativeCon North America rozwiązanie o nazwie Formae — otwartoźródłową platformę, która wykorzystuje rzadziej znany język konfiguracji Pkl opracowany w Apple oraz architekturę opartą na agentach, aby zmniejszyć kruchość konfiguracji w operacjach „Day 2”. Demo Formae można zobaczyć na stoisku nr 2152.
Dlaczego Infrastructure as Code bywa problematyczne
Infrastructure as Code (IaC) polega na zapisywaniu konfiguracji systemów w plikach — najczęściej w YAML lub JSON — które następnie orkiestratory wykorzystują do wdrożeń infrastruktury. W teorii IaC automatyzuje wdrożenia i pomaga zapobiegać dryfowi systemów, czyli sytuacji, gdy stan rzeczywisty odbiega od stanu pożądanego z powodu ręcznych zmian.
W praktyce pliki IaC szybko stają się skomplikowane i kruche. Pavlo Baron, współzałożyciel i CEO Platform Engineering Labs, tłumaczy, że pliki tego typu łatwo jest uszkodzić przez „shadow IT”, trudniej je zrozumieć i łatwo popełnić błąd — a same pliki nie podpowiadają, czy wprowadzone wartości są poprawne. „Zbudowaliśmy Formae z powodu naszego własnego bólu” — mówi Baron.
Skąd pomysł i kto za tym stoi
Pavlo Baron był jednym z założycieli dostawcy oprogramowania do obserwowalności Instana, który został przejęty przez IBM w 2020 roku. Pozostał w IBM do momentu, gdy firma przejęła HashiCorp, i dostrzegł szansę na poprawę automatyzacji IT. Do Platform Engineering Labs jako CTO dołączył Zachary Schneider, również z doświadczeniem z Instana.
Jak działa Formae
W Formae każdy zasób IT jest wyodrębniany jako wersjonowany, deklaratywny artefakt nazywany „forma” (liczba pojedyncza od łacińskiego „forma”) i może być dalej programowany. W odróżnieniu od narzędzi takich jak Terraform czy Pulumi, zarządzanie stanem nie odbywa się po stronie klientów, lecz przez agenty. To podejście ma chronić przed dryfem systemu — zmiany są rozprowadzane podobnie jak łaty bezpieczeństwa, co ogranicza potencjalny zasięg błędów przy aktualizacjach.
Operatorzy mogą też wprowadzać zmiany bezpośrednio z wiersza poleceń. Polecenia od różnych osób trafiają do kolejki i są wykonywane w ustalonej kolejności. Zasoby są wersjonowane i przechowywane w magazynie danych, co ułatwia śledzenie zmian i przywracanie poprzednich stanów.
Pkl — język konfiguracji z typami
Formae korzysta z języka Pkl, opracowanego wewnętrznie przez Apple do zarządzania własnymi wdrożeniami. Pkl różni się od JSON i YAML tym, że wymusza tworzenie schematu dla każdego typu zasobu oraz wprowadza adnotacje typów. Dzięki temu dla zmiennych ustalone są typy, a czasem nawet zakres dozwolonych wartości, co zmniejsza ryzyko literówek i nieprawidłowych ustawień.
YAML nie oferuje takiej weryfikacji ani wskazówek dotyczących poprawnych wartości. Adnotacje Pkl mogą informować deweloperów o dostępnych opcjach i służyć jako podstawa do budowy dodatkowych narzędzi automatyzujących wdrożenia. Jak mówi Baron, Pkl umożliwia zarówno niskopoziomowe programowanie z funkcjami i klasami, jak i wysokopoziomowe deklarowanie właściwości obiektów.
Praktyczny przykład: inżynierowie platformy w Formae mogą zdefiniować zestaw dopuszczalnych rozmiarów bazy danych (np. small, medium, large), a deweloperzy wybierają jedną z tych opcji, co upraszcza wybór i ogranicza możliwość błędu.
Formae jest projektem otwartoźródłowym i – jak podkreślają twórcy – powstało jako odpowiedź na realne problemy operacyjne. Osoby zainteresowane mogą zobaczyć demonstrację na stoisku Platform Engineering Labs podczas KubeCon+CloudNativeCon North America (stoisko nr 2152).
