Technologie w chmurze przesunęły granicę między sprzętem a oprogramowaniem, tak że wiele operacji technicznych, które wcześniej były wyłącznym obywatelem świata sprzętu komputerowego, również podlegają sferze oprogramowania. Współdzielone środowiska komputerowe mogą być tak stare jak same komputery 1, ale technologie chmurowe mogą je spopularyzować, oferując wygodne i znane metafory do interakcji z nimi: użytkownicy chmury rezerwują instancję, kompletny komputer lub naśladownictwo, podczas gdy starsze udostępnione środowiska komputerowe mają wszystkie możliwe ustawienia nieporęcznych ograniczeń i „Twój program musi zostać załadowany na ten serwer FTP, będzie działał w środowisku X (zwykle z 10-letnią wersją dowolnego oprogramowania, którego chcesz używać), przez co najwyżej 60 minut” może brzmieć znajomo dla byłych lub rzeczywistych użytkowników centrów obliczeniowych.
Praktyczną konsekwencją tej zmiany jest to, że procedury wdrażania mogą być teraz reprezentowane przez artefakty oprogramowania. (Procedury wdrażania to instrukcje informujące o tym, jak skonfigurować infrastrukturę z bazami danych, serwerami internetowymi lub czymkolwiek należącym do tej infrastruktury, a także siecią, w której działają). W przypadku tych nowych soczewek ręczna konserwacja serwerów wygląda prawie jak ręczne łatanie kodu produkcyjnego - co w bardzo rzadkich przypadkach jest pożądane. Ręczna konserwacja jest podatna na wprowadzanie rozbieżności między systemami faktycznie działającymi w produkcji a kodem opisującym te systemy, co z kolei oznacza nieodwracalne zachowanie i niemożliwą analizę błędów, podwójne usuwanie błędów i inne nieszczęścia.
Niezmienny wzorzec serwer jest po prostu transpozycja do operacji chmura powyższym mantry, według których powinniśmy unikać konserwacji uruchomionych programów. Zamiast ręcznej konfiguracji serwerów, niezmienny wzorzec serwera zaleca zautomatyzowanie tej konfiguracji.
Smaki wdrożeniowe
Chociaż ogólna idea niezmiennego wzorca serwera jest dość jasna, istnieje wiele niuansów implementacyjnych. Na przykład niektóre podejścia sugerują, aby w ogóle nie aktualizować serwerów, ale zamiast tego systematycznie je zastępować . Jest tak, ponieważ aktualizacja powoduje sytuację, w której wdrożenie polega na tym, że serwery zostały uruchomione kilkakrotnie i przeszły przez kilka różnych procesów aktualizacji, co implikuje niejednorodny zestaw serwerów i może prowadzić do subtelnych różnic w sposobie obsługi zadań przez serwery. Drugim popularnym wariantem jest dyscyplina dotycząca zdalnego dostępu do serwerów. Niektórzy lubią całkowicie wyłączać zdalny dostęp administracyjny do serwerów, aby zagwarantować, że ręczna konserwacja nigdy nie nastąpi.
Notatka historyczna
Według mojej najlepszej wiedzy, „niezmienny serwer” został spopularyzowany przez Kief Morrisa, ale sam pomysł jest znacznie starszy. W 1999 roku więzienia FreeBSD spopularyzowały już ideę pełnej automatyzacji konfiguracji jednorazowych środowisk obliczeniowych. W ten sposób zacząłem wdrażać wzorzec „niezmiennego serwera” wiele lat, zanim usłyszałem tę nazwę, aby opisać tę technikę.
Niezmienność, w formie fizycznej niezmienności opartej na dyskach CD-ROM, jest również popularnym środkiem produkcji zaufanych systemów komputerowych. Nie należy tego mylić z niezmiennym wzorcem serwera.
1 Jeśli nie liczymy automatycznych tabel krosna lub organów rolkowych jako komputerów.