Infrastruktura jako kod: co to jest i dlaczego warto się tym zainteresować?
Opublikowano
1 września 2020 r.
Autor:
Exigo
Konieczność jest matką wynalazków, to prawda, ale równie dobrze można argumentować, że wynalazki są matką konieczności, szczególnie w erze napędzanej technologią informacyjną. Weźmy na przykład Internet. Jego wynalezienie zrodziło wcześniej niewyobrażalne pomysły, które szybko stały się koniecznością. Na tym późnym etapie ery informacyjnej łączność internetowa i powszechny dostęp do sieci są podstawowymi potrzebami.
Aby Twoja firma pozostała konkurencyjna i nie straciła na znaczeniu, potrzebujesz nie tylko obecności w Internecie, ale także narzędzi, które pozwolą Ci wykorzystać potencjał sieci do uproszczenia tworzenia, zarządzania i dystrybucji zasobów, na których hostowane jest oprogramowanie dostosowane do potrzeb Twojej branży. Infrastruktura jako kod jest jednym z technologicznych owoców tej biznesowej konieczności.
Czym jest infrastruktura jako kod?
Infrastruktura jako kod to kod zawierający definicje nadające się do odczytu maszynowego, które mogą zautomatyzować proces dostarczania i konfigurowania zasobów, na których będzie działać rozwiązanie programowe.

Infrastruktura jako kod może działać w lokalnym centrum danych, żeby uprościć zarządzanie zasobami tego centrum. Może też zawierać zastrzeżony kod, który działa w prywatnym centrum danych, a potem jest przenoszony do chmury. Takie rozwiązania to ulepszenia w stosunku do ciągłego ręcznego zarządzania serwerami typu bare metal, które tworzą centra danych.
Jednak tego typu rozwiązania nie wykorzystują innej potencjalnej zalety uruchamiania infrastruktury jako kodu. Gdy infrastruktura kodowana jest zaprojektowana tak, aby komunikować się bezpośrednio z chmurą za pomocą interfejsów programowania aplikacji (API) chmury, wówczas zarówno ona, jak i platforma, na której jest skonfigurowana do działania, w pełni wykorzystują zalety chmury, w tym nieograniczony dostęp do zasobów, które zawsze działają w oparciu o najnowszą technologię.
Microsoft Azure jest jedną z wiodących platform chmury publicznej i pionierem w rozwoju interfejsów API oraz szablonów zasobów, które umożliwiają infrastrukturę jako kod. W Exigo nasza infrastruktura jako kod komunikuje się z platformą Azure, wykorzystując te interfejsy API do alokacji i konfiguracji zasobów. Podczas opracowywania naszej zakodowanej infrastruktury i platformy w dużej mierze korzystaliśmy z języka programowania .NET, opracowanego przez Microsoft, który, co nie jest zaskoczeniem, jest pierwszorzędnym obywatelem Azure. (Kiedy mówię „pierwszorzędny obywatel”, mam na myśli to, że Azure rozpoznaje i akceptuje .net, a .net z kolei działa dobrze i płynnie w piaskownicy Azure).
Wykorzystanie informacji jako kodu automatyzuje proces zarządzania naszymi centrami danych w chmurze, automatycznie tworząc i udostępniając nowe zasoby (takie jak bazy danych i maszyny wirtualne) w razie potrzeby.
Dlaczego warto się tym zainteresować?
Infrastruktura jako kod, a konkretnie jej wdrożenie przez naszą firmę, oferuje szereg korzyści. (Niektóre z nich pokrywają się z „Korzyściami płynącymi z chmury obliczeniowej”).
- Natychmiastowe udostępnianie
- Skalowalność
- Testowanie przed uruchomieniem
- Niezawodność
Natychmiastowe udostępnianie:
Od zakupu do produktywności w mgnieniu oka
Kiedy wybierasz rozwiązanie typu Software as a Service (SaaS) w celu usprawnienia procesów biznesowych związanych ze sprzedażą bezpośrednią, czas potrzebny na przejście od zakupu do osiągnięcia produktywności może trwać miesiące, tygodnie — lub minuty.
Sposób, w jaki zaprojektowaliśmy i wdrożyliśmy naszą infrastrukturę jako kod, umożliwia to drugie, co jest znane jako „natychmiastowe udostępnianie”. Kiedy decydujemy się na utworzenie zasobu, takiego jak baza danych lub maszyna wirtualna, używamy szablonu Azure Resource Manager (ARM) do zdefiniowania nie tylko żądanego zasobu, ale wszystkich właściwości związanych z tym zasobem, a następnie zapisujemy ten kod w repozytorium.
Dzięki temu możemy tworzyć infrastrukturę dla nowych klientów po prostu poprzez uruchomienie zapisanego kodu, który z kolei automatycznie zapewnia niezbędne zasoby. Pozwala nam to uruchomić klienta w ciągu kilku minut od podpisania umowy.
Po przydzieleniu nowych zasobów w chmurze automatycznie otrzymujesz dane logowania, dzięki czemu możesz rozpocząć dostosowywanie naszego rozwiązania i potencjalnie przyjąć pierwsze zamówienie w ciągu kilku godzin.
Skalowalność:
Nie ma żadnych ograniczeń
Skalowalność to zdolność systemu do alokacji zasobów, a tym samym do poprawy wydajności w razie potrzeby. Istnieją dwie metody skalowania: skalowanie pionowe i skalowanie poziome.
Skalowanie pionowe polega na dodawaniu lub modernizacji istniejącego sprzętu. Proces ten wymaga praktycznego zarządzania, które jest kosztowne i nie zawsze pozwala na płynną rozbudowę.
Skalowanie poziome polega na automatycznym przydzielaniu zasobów w razie potrzeby, co jest przydatną funkcją możliwą do zrealizowania, gdy infrastruktura jest wdrażana jako kod.
Nasza zakodowana infrastruktura zawiera wskaźniki, które określają wymagania dotyczące wydajności, dzięki czemu jeśli obciążenie klienta nagle stanie się zbyt duże dla aktualnie wykorzystywanych zasobów, nasze rozwiązanie automatycznie zapewnia dostęp do większej ilości zasobów.
Nasze rozwiązanie jest jak elastyczna taśma, która rozciąga się i kurczy, aby szybko dostosować się do Twoich potrzeb w zakresie zwiększenia lub zmniejszenia obciążenia na żądanie. Proces ten przebiega płynnie, co oznacza, że nie będziesz wiedział, co się dzieje, a po prostu czerpać korzyści z zawsze uzyskiwanej wydajności, za którą płacisz, i nie płacić za zasoby, których nie wykorzystujesz.
Ponieważ nasze rozwiązanie zostało zaprojektowane tak, aby komunikować się bezpośrednio z platformą Azure, nasi klienci zyskują korzyści zarówno ze skalowania pionowego, jak i poziomego, bez związanych z tym utrudnień. Nasze rozwiązanie zapewnia automatyczne i płynne skalowanie poziome, a platforma Azure zarządza kosztami i utrudnieniami związanymi ze skalowaniem pionowym.
Podsumowując: gdy Twoja strona internetowa potrzebuje większej mocy, nasze rozwiązanie skaluje się w locie, aby obsłużyć zwiększone obciążenie. A ponieważ działamy w Azure, nie ma ograniczeń co do obciążenia, które możemy obsłużyć.
Testowanie przed uruchomieniem:
Ubezpieczenie Smooth Computing
Wdrażając infrastrukturę jako kod, traktujesz ją tak samo jak każdy inny kod, co daje takie korzyści, jak łatwe aktualizacje, które można przetestować przed wprowadzeniem do produkcji.
Dzięki infrastrukturze jako kodowi wszelkie zmiany w infrastrukturze można wprowadzać w jednym miejscu, a następnie testować je, aby upewnić się, że nie powodują one problemów z kompatybilnością i integracją (między innymi) przed wprowadzeniem ich do produkcji.
Na przykład, gdy jest to konieczne, Exigo wprowadza zmiany w swojej infrastrukturze kodowej, testuje je, a dopiero potem stosuje je do wszystkich elementów infrastruktury w środowisku produkcyjnym bezpośrednio poprzez interfejsy API platformy Azure, korzystając z szablonów online. Proces ten eliminuje ryzyko błędu ludzkiego: wystarczy wprowadzić i przetestować zmianę raz, a następnie zastosować ją we wszystkich obszarach.
Niezawodność:
Przywróć kropki nad „i” i przekreślenia „t”
Kolejną zaletą uruchamiania naszej infrastruktury jako kodu w Azure jest to, że możemy udostępniać naszą platformę w dowolnym miejscu na świecie za pomocą jednego kliknięcia.
Załóżmy na przykład, że centrum danych Azure we wschodniej części Stanów Zjednoczonych uległo awarii, a Twoja baza danych i inne zasoby były właśnie uruchomione w tym centrum danych. Dzięki sposobowi, w jaki zaprojektowaliśmy nasze rozwiązanie, możemy bardzo szybko zapewnić wszystko w innym miejscu (w Australii, zachodniej części Stanów Zjednoczonych, Europie — gdziekolwiek), tak aby czas przestoju związany z tą awarią był minimalny. Jest to zaleta znana jako przełączanie awaryjne.
W rzeczywistości obiecujemy naszym klientom nie tylko minimalny czas przestoju w przypadku awarii, ale także dokładną kopię tego, za co zapłacili — wszystko co do joty, tak jak było. Wszystkie dane Exigo, w tym dane naszych klientów, są replikowane w czasie rzeczywistym do więcej niż jednego centrum danych. Ponadto wszystkie nasze bazy danych można przywrócić do stanu z dowolnego momentu w ciągu 35 dni, co oznacza, że nasi klienci mogą wybrać dowolną minutę, w tym tę, i przywrócić bazę danych dokładnie taką, jaka była w tym momencie.
Rozwiązania SaaS, które są ograniczone do lokalnych lub prywatnych centrów danych i nadal obsługują swoje bazy danych z własnych centrów danych, muszą ponosić koszty związane z konfiguracją i zarządzaniem redundantnymi lokalizacjami, aby zapewnić kopię zapasową na wypadek awarii. Koszty te są przenoszone bezpośrednio na klientów. Exigo wykorzystuje moc chmury Azure, aby zapewnić ochronę danych przy niższych kosztach i w pełni wykorzystać globalną skalę platformy Azure.
Infrastruktura jako kod:
Wynalazek i konieczność
Szukając rozwiązania internetowego dostosowanego do potrzeb Twojej firmy, pamiętaj, że najszybsze i najskuteczniejsze rozwiązania opierają się na infrastrukturze jako kodzie, który łączy się bezpośrednio z chmurą publiczną. Rozważ zadanie potencjalnym dostawcom usług następujących pytań:
- Czy Twoje rozwiązanie działa lokalnie czy w chmurze?
- Jakiej technologii używasz do zarządzania zasobami komputerowymi i czy ta technologia pozwala na infrastrukturę jako kod?
- Czy Twoje rozwiązanie umożliwia definiowanie zakodowanej infrastruktury za pomocą interfejsu API lub szablonu?
- Czy Twoje rozwiązanie automatyzuje proces tworzenia i udostępniania zasobów?
- Czy Twoje rozwiązanie gwarantuje, że podczas tworzenia nowych zasobów za każdym razem otrzymujesz to, czego oczekujesz?
Słownik
Maszyna wirtualna:Maszyna wirtualna to emulacja pełnego systemu operacyjnego, która działa w pamięci innego systemu operacyjnego, zasadniczo zapewniając pojedynczemu komputerowi hosta funkcjonalność dwóch komputerów.
API:Interfejs programowania aplikacji (API) jest pośrednikiem, który umożliwia różnym systemom komputerowym skuteczną komunikację bez konieczności udostępniania przez nie informacji zastrzeżonych. (Wyobraź sobie, że musisz przekazać tę samą prośbę czterem osobom mówiącym w różnych językach. API jest jak tłumacz, który przekazuje Twoją wiadomość i zwraca cztery odpowiedzi w języku, który rozumiesz).
Szablon Azure Resource Manager (ARM):służy do wdrażania infrastruktury jako kodu dla rozwiązań Azure. Szablon jest plikiem JSON (Javascript Object Notation), który definiuje infrastrukturę i konfigurację rozwiązania. Szablon umożliwia zdefiniowanie zasobu bez konieczności pisania sekwencji poleceń programistycznych w celu jego utworzenia. W tych szablonach określa się zasoby, które mają zostać utworzone, oraz ich odpowiednie właściwości.
Baza danych:uporządkowany zbiór danych, który działa na komputerze i jest dostępny elektronicznie.
Centrum danych:zbiór komputerów (mogących znajdować się w jednym budynku lub być połączonych w sieć), które przechowują, przetwarzają i dystrybuują duże ilości danych.
Przełączanie awaryjne:Możliwość szybkiego udostępnienia identycznej kopii programu komputerowego lub platformy w celu zminimalizowania przestoju w przypadku awarii spowodowanej np. klęską żywiołową.
Wysoka dostępność:Proces uruchamiania wielu instancji programu, aplikacji lub platformy na różnych serwerach, które mogą znajdować się w różnych częściach świata, aby zapewnić zerowy czas przestoju. Proces ten jest skuteczny, ale bardzo kosztowny. Dzięki wysokiej dostępności płacisz za zasoby, których nie używasz, na wszelki wypadek.
Chmura publiczna:Chmury publiczne, należące do zewnętrznych dostawców i przez nich obsługiwane, zapewniają zasoby obliczeniowe (takie jak serwery i pamięć masowa) przez Internet. Konsumenci uzyskują dostęp do tych usług za pomocą przeglądarki internetowej.
SaaS:Software as a Service lub SaaS (wymawiane „sass”) to metoda dostarczania oprogramowania w ramach subskrypcji online, do której klient zazwyczaj uzyskuje dostęp przez Internet. SaaS odchodzi od tradycyjnego paradygmatu tworzenia programu, a następnie instalowania go i uruchamiania na fizycznym komputerze.
Skalowanie pionowe:proces dodawania większej ilości zasobów do istniejącego systemu komputerowego w celu zwiększenia lub poprawy wydajności. Na przykład skalowanie pionowe może polegać na dodaniu do centrum danych serwerów typu bare-metal o większej wydajności lub zwiększeniu pamięci w istniejących serwerach.
Skalowanie poziome:proces zwiększania liczby instancji oprogramowania w celu obsługi zwiększonego obciążenia (a tym samym poprawy wydajności) lub zmniejszenia liczby instancji, aby klient płacił tylko za to, z czego korzysta.
Provisioning:Proces uruchamiania lub wyłączania instancji platformy działającej w chmurze. Dzięki platformie oprogramowania działającej w oparciu o infrastrukturę jako kod, zaprojektowaną do bezpośredniej współpracy z chmurą, całą platformę można uruchomić jednym kliknięciem przycisku.






