Ucieczka przed „śmiercią informatyczną”
Świat bez automatyzacji
Wyobraźmy sobie dzisiejsze firmy istniejące na rynku już jakiś czas, które utknęły w miejscu i nie poddały się procesowi automatyzacji. W przeszłości mogły być liderami w segmencie IT, “pompując” ogromne pieniądze na starcie w nowe technologie i rozwiązania. Dziś, prawdopodobnie zajmują się w główne “gaszeniem pożarów”, pracownicy wykonują pracę po godzinach, przez to że infrastruktura jest koszmarnie zaniedbana. Dlaczego tak się dzieje? Odpowiedzi musimy szukać w leniwej ludzkiej naturze.
Jest to tak naprawdę długi i powolny proces, który się zaczyna od zaniedbań takich jak brak tworzenia dokumentacji na temat projektów które są wdrażane, czy choćby nawet opisu instalowanych serwerów. Co powinno być priorytetem jeśli robimy coś nowego, gdy tego nie przestrzegamy prędzej czy później, dochodzi do sytuacji w których boimy się wprowadzić zmiany. Zaczyna wtedy obowiązywać zasada “działa? to zostaw, po co kombinować”. Do tego przeważnie dana maszyna jest tylko w środowisku produkcyjnym co znacznie zwiększa ryzyko, że coś się nie powiedzie przy wprowadzanych zmianach, a nierzadko są to serwery od których zależy praca całej firmy. Te wszystkie czynniki się nawarstwiają co sprawia, że zaniedbanie które występuje już teraz, zaczyna się jeszcze bardziej pogłębiać.
Wytłumaczmy sobie na prostym przykładzie z życia wziętym, czym jest to zaniedbanie infrastruktury IT? Każdy z nas codziennie wykonuje taką czynność jak mycie zębów (a przynajmniej powinien) , gdy robimy to regularnie i chodzimy do dentysty na kontrolę to nawet jak się pojawi problem, rozwiążemy go szybko i unikniemy cierpienia. Jednak jeśli zaniedbamy tą czynność to nasze zęby zaczną się psuć co w konsekwencji doprowadzi do próchnicy, bólu i dużego dyskomfortu w codziennym funkcjonowaniu. W konsekwencji czeka nas przymusowa wizyta u dentysty, znacznie dłuższa niż rutynowa kontrola, do tego nasz portfel ucierpi na tym o wiele bardziej. W dużym uproszczeniu tak możemy przedstawić ten proces.
Jeśli trwa on wystarczająco długo, to zaniedbanie może urosnąć do takich rozmiarów, że zaczynamy się bać, wprowadzać jakąkolwiek zmianę. Nasze systemy zostaną kilka lat do tyłu, co wiąże się z tym, że serwisy na nich zainstalowane również. Prawdopodobnie skok z wersji systemu kilka lat do tyłu na nowy, będzie niemożliwy, gdyż zmiany po aktualizacji, doprowadzą do niepoprawnego działa naszych narzędzi, lub nawet ich nie uruchomimy, co jest wielce prawdopodobne. Trochę przypomina to “dług techniczny”, który może powstawać, gdy zespół programistów podczas projektu idzie “na skróty”, aby szybko osiągnąć jakiś cel, a później w nieskończoność obiecują, że poprawią to co zostało niedbale wprowadzone i zrobią jak należy, gdy będzie czas. W efekcie spada produktywność, zaczynają być przekładane wdrożenia produktu, rośnie liczba błędów, pojawia się stres przed wdrożeniem, aż w końcu strach przed zmianami w kodzie.
Kolejnym problemem jest brak jasnych zasad mówiących o tym jak mają wyglądać instalowane systemy operacyjne. Co powinny zawierać, w jaki sposób powinny zostać skonfigurowane, który system ma być zainstalowany, czyli doprecyzowując – brak standaryzacji. Weźmy sytuację w której pracownicy sami stawiają nowe maszyny, na systemach które im odpowiadają. Doprowadza to do sytuacji w której infrastruktura przestaje być spójna, ponieważ każda osoba konfiguruje serwer tak jak jej wygodnie. Do tego nie jest powiedziane, że nawet jak ta sama osoba konfiguruje serwery tego samego typu, będą one wyglądać identycznie. W międzyczasie może odkryć, że jednak można coś zrobić prościej. W efekcie pojawia się cała masa serwerów, które się diametralnie od siebie różnią. To prowadzi do kolejnych problemów takich jak zarządzanie środowiskami wielozadaniowymi (o ile w ogóle są) w których jest podział na środowiska np. test, dev, production. Jeśli zaczynają one od siebie znacząco odbiegać, testy przestają być wiarygodne i mieć jakikolwiek sens. Co w takiej sytuacji, jeśli zaczną pojawiać się błędy? Prowadzi to do tego, że zaczyna być problem ze znalezieniem ich (brak dokumentacji, każda maszyna wygląda inaczej). Ludzie tracą dużo czasu na zlokalizowanie błędu, do tego nie mogą wesprzeć się konfiguracją z “bliźniaczego” serwera. Wszystko to doprowadza w końcu do tego, że pojawia się problem ze zrozumieniem infrastruktury.
Przy tak wyglądającej konfiguracji, wyłania się kolejny problem, mianowicie z zarządzaniem dostępami i bezpieczeństwem systemów. Nie potrzeba wiele, aby firma znalazła się w sytuacji w której trzeba na 500 serwerach linuxowych założyć konto dla nowego pracownika. Co natomiast w sytuacji gdy jeden z pracowników poda hasło roota wysyłając maila na skrzynkę ogólną? Katastrofa i ręczne zmienianie hasła po haśle na każdym serwerze.
Z kolei testerzy czy programiści składający zapotrzebowanie na serwer do testów, czekają całymi tygodniami, aż go dostaną i to często pomimo wprowadzonej wirtualizacji. Z racji tego, że trzeba znaleźć czas, żeby w ogóle taki serwer postawić, skonfigurować manualnie i przekazać do użytku, przez co zaczyna narastać poczucie bezsilności i bezradności.
Wszystkie powyższe sytuację sprawiają, że firma nie ma zaufania do własnej infrastruktury, a większość testów i zmian, musi się odbywać w środowisku produkcyjnym w którym nie trudno o katastrofę, szczególnie przy takim zaniedbaniu. Wiąże się to z tym, że pracownicy zamiast korzystać z czasu wolnego, muszą ręcznie wykonywać wiele czynności po godzinach pracy, ponieważ nie mogą sobie pozwolić na przestój w czasie normalnych godzin. Do tego w razie niepowodzenia, potrzebują sporo czasu na przywrócenie konfiguracji z backupu. Całości dopełnia fakt, że główne serwery odpowiadające za funkcjonowanie firmy, stoją na systemach które straciły wsparcie i nikt nie chce się podjąć aktualizacji ani przeniesienia. W tym miejscu pojawia się kultura strachu, która objawia się tym, że nikt nie chce się podjąć danego zadania zdając sobie z tego sprawę, że jeśli coś się nie uda, to będzie jego wina i prawdopodobnie będzie musiał sam się zajmować rozwiązaniem problemu. Jest to jednym z gorszych czynników, który przyczynia się do blokowania rozwoju i wprowadzania nowych rozwiązań oraz technologii. Trzeba sobie zdawać jednak sprawę, że jeśli faktycznie zaistnieje problem, to rozwiązanie go zajmie o wiele więcej czasu, a same straty dla firmy mogą być olbrzymie.
Automatyzacja
Tutaj z pomocą przychodzi automatyzacja. Prawda jest taka, że sama automatyzacja nie jest czymś nowym, ludzie od zawsze próbowali automatyzować różne czynności przez siebie wykonywane. Wcześniej odbywało się to po prostu za pomocą pisania różnych skryptów. W dzisiejszych czasach natomiast, mamy do tego świetne narzędzia, które znacznie ten proces upraszczają i możemy zarządzać całą infrastrukturą opisaną jako kod. Pojawia się jednak dość trudna sytuacja, gdyż im firma jest większa, tym bardziej takiej zmiany potrzebuje, jednak im posiada większe zaniedbanie, tym trudniej taką zmianę będzie przeprowadzić. W takim przypadku wprowadzenie zmiany, może zająć dużo czasu, jednak jest krokiem koniecznym. W przeciwnym razie może się okazać, że w ciągu kolejnych 5 lat firma doświadczy tytułowej “śmierci informatycznej”. Dlaczego tak się dzieje? Ponieważ świat nie stoi w miejscu i technologia bardzo szybko się rozwija. Do tego w każdej chwili może pojawić się konkurencja, która z powodzeniem wdrożyła automatyzację, lub młoda firma która wkracza na rynek już zautomatyzowana.
Co zmienia automatyzacja?
Dzięki automatyzacji jesteśmy w stanie konfigurować cała masę systemów operacyjnych, od Linuxów z rodziny RedHat, czy Debian, po takie systemy jak Suse, AIX, Solaris, Mac OSX, Windows, BSD, czy nawet Cisco iOS, Junos OS etc. I za pomocą kodu określić stan w jakim dane maszyny mają się znaleźć. Oznacza to, że serwer na którym będzie się znajdował np. Apache, będzie skonfigurowany w sposób w jaki zostanie przez nas opisany, identycznie na każdej z maszyn którą będziemy stawiać.
A więc jakie korzyści za sobą niesie dla firmy?
Przede wszystkim oszczędność czasu ponieważ możemy zarządzać cała infrastruktura i dokonywać zmian z jednego miejsca na wszystkich serwerach, bądź wybranej grupie. Do tego dochodzi powtarzalność zadań, z racji że konfiguracja jest opisana w kodzie to każde zadanie wykonane na poszczególnych maszynach będzie identyczne, dzięki temu nie będzie błędów w konfiguracji. Tutaj pojawia się kolejny plus infrastruktury jako kod, dzięki temu, że wszystko mamy opisane w kodzie, możemy to wykorzystać jako naszą dokumentację. Całą konfiguracje mamy możliwość umieścić w łatwy sposób w lokalnych repozytoriach git, co da nam kontrolę wersji, opis zmian i ułatwi testowanie. Serwery zaczną wyglądać tak samo, a więc mamy spójność infrastruktury. Dzięki temu wszystkiemu zyskujemy zaufanie od naszej infrastruktury i łatwy sposób możemy wystawiać środowiska testowe czy instalować kolejne serwery, co przekłada się na znacznie precyzyjniejsze testy, jeśli w każdej chwili możemy mieć maszynę 1:1 z produkcyjną. Testerzy czy programiści mogą postawić potrzebną maszynę kilkoma kliknięciami. W samej firmie natomiast, zaczynamy być w stanie wprowadzać zmiany w standardowych godzinach pracy, jak również pozwolić na to, aby zmiany wprowadzały się po godzinach bez naszego udziału. W dużym skrócie automatyzacja jest w stanie zniwelować wszystkie problemy opisywane na początku, a firma zyskuje zwinność i niezawodność której jej brakowało.
To wszystko nie uda się jednak, bez zmiany kultury strachu, na kulturę zaufania. Ludzie, też muszą się przyzwyczaić, że nie wprowadzają pojedynczej zmiany na szybko, bo tak im wygodnie, tylko robią zmianę w kodzie, który znajduje się w repozytorium, a następnie wdrożenie. W zamian otrzymujemy nieporównywalny komfort pracy, gdy osoba dokonująca zmiany wie, że jeśli się coś nie uda, jest w stanie w ciągu paru minut wrócić do poprzedniej wersji konfiguracji.
Jak to określiła firma Gartner “automatyzacja jest kolejną granicą IT”. Ponieważ opisanie infrastruktury jako kod, daje nam korzyści nie tylko w czasie teraźniejszym, ale również dużą elastyczność na technologie, które będą się pojawiać się przyszłości.
Trochę danych
Pomiędzy 9 grudnia 2016 r. a 5 stycznia 2017 Enterprise Strategy Group przeprowadziło badanie sponsorowane przez Dell EMC, które objęło 1000 członków z firm w takich krajach jak: Japonia, USA, Niemcy, Francja, Australia, Chiny czy Wielka Brytania. Okazuję się, że tylko 5% działów IT dużych firm, przeszło cyfrową transformację. Natomiast 95% respondentów przyznało, że czują zagrożenie ze strony mniejszych przedsiębiorstw które przekształcają swoja infrastrukturę. Do tego 71% nie będzie w stanie konkurować na rynku bez przeprowadzenia transformacji infrastruktury informatycznej. Na podstawie wyników zostały wyłonione cztery etapy transformacji:
- Zacofanie (12%): znalazły się tutaj przedsiębiorstwa, które nie spełniają zdecydowanej większości, lub żadnych kryteriów transformacji infrastruktury IT;
- Zalążek zmian (42%): firmy, które w minimalnym stopniu wprowadziły nowe rozwiązania i technologie;
- Ewolucja (41%): przedsiębiorstwa, które w średnim stopniu wprowadziły nowe rozwiązania w zakresie centrów danych oraz metody świadczenia usług IT;
- Pełna transformacja (5%): firmy, które wprowadziły najdalej posunięta transformację IT;
Firmy, które wdrożyły automatyzację, infrastrukturę działającą na zasadach chmury publiczne, oraz metodykę DevOps, osiągnęły etap czwarty. Tutaj badanie wykazało:
- 26% ma szerokie, lub rozwinięte możliwości automatyzacji;
- 65% zapewnia użytkownikom znaczne, lub zadowalające rozwiązania, na poziomie podobnym do dostawców chmury publicznej;
- 43% zadeklarowało, że wdrożyło najlepsze praktyki DevOps w szerokim, lub zadowalającym stopniu.
Zródło: dell
W Polsce badanie zostało przeprowadzone przez IDC DX Survey, również na zlecenie Dell EMC, a dane zostały przedstawione na Dell EMC Forum 2017 w Warszawie. Badanie objęło 200 firm zatrudniających powyżej 50 osób z różnych sektorów, z pominięciem bankowości i telekomunikacji, gdyż te branże obecnie wyznaczają trendy w cyfrowej transformacji. Z badania wynika, że tylko 6% firm, nie dostrzega żadnych barier, aby wprowadzić cyfrową transformację. Najczęściej wymieniane problemy to:
- 52% niewystarczający budżet i zasoby;
- 42% brak kompetencji lub pracowników do przeprowadzenia transformacji;
- 32% brak możliwości jasnego wykazania zwrotu z inwestycji (REO)
Z badanych firm 1/3 zgłasza, że przyjęła strategię cyfrowej transformacji, natomiast 1/2 stawia na automatyzację. Do tego, tylko 21% managerów jest zadowolona z szybkości reakcji działów IT, a co szósty przyznał, że opieszałość IT powoduje wymierne straty biznesowe dla firmy.
Zródło: businessinsider
Na uwagę w tym miejscu zasługują słowa Dyrektora Technicznego Wsparcia Sprzedaży w Dell EMC, który wyraził się następująco:
„Korzyści płynące z nowoczesnej infrastruktury informatycznej da się odczuć w każdym z działów biznesowych przedsiębiorstwa. Nowe technologie w znacznym stopniu zwiększają wydajność pracowników, pozwalają również skrócić czas wprowadzania na rynek nowych usług i podejmować decyzje biznesowe w oparciu o efektywną analizę wielkich zbiorów danych. Dlatego budżetu przeznaczanego na transformację IT nie należy traktować jako inwestycji wyłącznie w rozwiązania informatyczne”
Słowem zakończenia
Celowo w tym wpisie nie zostały wymienione żadne narzędzia, uważam że każda firma powinna dobierać je indywidualnie i według własnych potrzeb. Automatyzacja ma to do siebie, że nie koniecznie narzędzia których używa jedna firma do częstego budowania i przebudowywania środowisk. Sprawdzą się w firmie, której zależy na tym, aby konfiguracja w produkcji nie została zmieniona po za kodem. Nie da się tego podpatrzeć w jednej firmie i skopiować do drugiej. Organizacje w których funkcjonuje automatyzacja i nowe technologie, wypracowały swój własny model, który tak naprawdę pracuje dla nich, a nie na odwrót. Nie ma jednak wątpliwości, że działy IT, które będą w stanie na bieżąco dostosowywać się do wymagań biznesu, staną się osią przyszłych sukcesów firmy niezależnie od branży.