Przełom 2007 i 2008 roku to czas, w którym zaczęto wykorzystywać metodę DevOps. Była ona swojego rodzaju buntem przeciwko tradycyjnemu modelowi, zakładającemu odseparowanie programistów zajmujących się pisaniem kodu od tych, którzy go wdrażają. Jakie były argumenty zwolenników DevOps, które pozwoliły na spopularyzowanie tego podejścia? Czy dziś nadal możemy uznawać je za niezawodne? Zwolennicy DevOps zauważyli, że zespoły pracujące w tradycyjny sposób koncentrowały się wyłącznie na swoich zadaniach, w związku z tym nie
komunikowały się między sobą. To z kolei skutkowało błędami w oprogramowaniu, które pisali, opóźnieniami oraz ogólnym niezadowoleniem klientów. Mimo, że branża IT zdawała sobie sprawę z tego jak poważne są to wady, na rewolucję trzeba było trochę poczekać. Przełom nastąpił w 2011 roku, gdy koncepcją DevOps zajęła się firma Gartner. Od tego momentu coraz więcej przedsiębiorstw zaczęło wdrażać tę metodę, a praktyki charakterystyczne dla tzw. zwinnego programowania, takie jak zautomatyzowane testowanie oraz ciągłe wdrażanie, stały się nową normą.
Bezpieczeństwo i zgodność z przepisami
Dzięki DevOps współpraca pomiędzy zespołami programistycznymi a operacyjnymi stała się znacznie bardziej efektywna. Każda ze stron była świadoma końcowego celu bieżącej fazy projektu, co w razie problemów zapewniało większą elastyczność przy wprowadzaniu zmian i ulepszeń.
– Takie podejście przyczyniło się do zwiększenia tempa pracy nad wysokiej jakości oprogramowaniem. Niestety, w pierwszych latach funkcjonowania DevOps kwestie bezpieczeństwa i zgodności z przepisami nie zostały należycie uwzględnione – wspomina Mark Troester, wiceprezes ds. strategii w Progress.
W 2014 roku nastąpił gwałtowny wzrost liczby przypadków naruszeń bezpieczeństwa danych w porównaniu z rokiem poprzednim1. Zanotowano ponad 1500 wycieków danych, w wyniku których na niebezpieczeństwo narażonych zostało ponad miliard rekordów. Ofiarami hakerów padły wielkie amerykańskie korporacje, takie jak Home Depot, JP Morgan Chase i eBay. Ataki na duże i znane firmy były sygnałem, że czas na ponowną ocenę procesów DevOps, z uwzględnieniem kwestii bezpieczeństwa oraz zgodności z przepisami.
Rozwiązanie w postaci DevSecOps
Badania przeprowadzone m.in. przez Microsoft wykazały, że 80% naruszeń bezpieczeństwa wynikało z błędów konfiguracji. Odpowiedzią na taki stan rzeczy była koncepcja DevSecOps. Jej głównym założeniem jest utrzymanie wysokiego poziomu bezpieczeństwa w procesie zwinnego programowania. Zastosowanie DevSecOps pozwoliło na zapewnienie prawidłowej konfiguracji zasobów oraz zagwarantowało ciągłą integrację kodu poprzez nieustanne skanowanie go w celu identyfikacji zmian.
– Dziś można pokusić się o stwierdzenie, że podejście DevOps nie jest już tak wydajne, jak kilka lat temu. Niemniej, metoda DevSecOps wciąż jest istotna z punktu widzenia bezpieczeństwa danych. Narzędzia i techniki stosowane w firmach mają zasadnicze znaczenie dla DevSecOps. Podobnie jak kultywowanie kultury organizacyjnej, zakładającej, że dbałość o kwestie bezpieczeństwa jest kolektywnym obowiązkiem wszystkich pracowników. Podejście to wymaga edukowania zespołów w tematach związanych z cyberbezpieczeństem, a także wdrożenia niezbędnych, zautomatyzowanych narzędzi do testowania mechanizmów ochronnych – mówi Mark Troester.
Rola inżynierii platformowej
W ostatnim czasie spore zainteresowanie wzbudziła inżynieria platformowa. Łączona jest z koncepcją budowania samoobsługowych, wewnętrznych platform deweloperskich (IDP), służących do dostarczania oprogramowania i zarządzania cyklem życia produktu. Przykładowa platforma jest wspierana przez system usług lub narzędzi, tworzonych i zarządzanych przez wyznaczony do tego celu zespół produktowy. Kwestią priorytetową jest tutaj dbałość o potrzeby twórców oprogramowania poprzez łączenie poszczególnych komponentów, aby ich praca była bardziej płynna.
Według firmy Gartner2, inżynieria platformowa to nowe podejście, które może przyspieszyć tworzenie aplikacji oraz tempo, w jakim generują one wartość biznesową. Analitycy przewidują także, że do 2026 roku 80% przedsiębiorstw zajmujących się inżynierią oprogramowania ustanowi zespoły platformowe jako wewnętrznych dostawców wielokrotnie używanych usług, komponentów oraz narzędzi do dostarczania aplikacji. Koncept ten będzie ostatecznym rozwiązaniem problemu współpracy między twórcami oprogramowania, a zespołami operacyjnymi.
W tym kontekście inżynieria platformowa z pewnością czerpie z konceptu zwinnego programowania DevOps i DevSecOps. Chociaż podobieństwa pomiędzy nimi są niezaprzeczalne, wskazane jest wręcz łączenie wszystkich koncepcji w celu maksymalizacji korzyści. Oto przykłady, które pokazują integralny związek między inżynierią platformową, DevSecOps oraz zarządzaniem infrastrukturą:
- Doświadczenie i produktywność deweloperów – DevSecOps wspiera pracę programistów i zespołów operacyjnych, a także zapewnia bezpieczeństwo danych i zgodność z przepisami.
- Automatyzacja – Podstawę DevSecOps stanowi automatyzacja konfiguracji infrastruktury oraz zadań związanych ze zgodnością z przepisami przy użyciu podejścia „policy-as-code”. Z kolei inżynieria platformowa zapewnia możliwość rozszerzenia automatyzacji na inne części cyklu życia oprogramowania.
- Samoobsługa – Inżynieria platformowa może bazować na automatyzacji i podejściu zorientowanym na usługi. Te z kolei są wykorzystywane przez DevSecOps nie tylko w celu umożliwienia programistom samoobsługi w zakresie kodowania, testowania oraz wdrażania, lecz także aby pozwolić im na proaktywne i skuteczne działanie w sferze bezpieczeństwa oraz zgodności z przepisami.
- Zwiększenie wartości – Zapewnianie dodatkowej wartości jest głównym celem każdego rozwiązania technicznego, od platform po narzędzia i procesy.
Wspierane przez DevOps/DevSecOps zwinne programowanie oraz inżynieria platformowa mają ten sam cel – przyspieszenie procesu dostarczania wysoce odpornych, niezawodnych i bezpiecznych aplikacji, o dużym znaczeniu, z uwzględnieniem ich ciągłych aktualizacji. Biorąc pod uwagę oczekiwania wobec firm w kwestii jak najszybszego dostarczania produktów, przy konieczności równoczesnego zwalczania cyberzagrożeń, wszelkie procesy związane z inżynierią platformową powinny uwzględniać podejście DevOps/DevSecOps.
– Chociaż terminy DevOps oraz – do pewnego stopnia – DevSecOps brzmią już nieco przestarzale, nie należy lekceważyć roli, jaką z pewnością przyjdzie im odegrać, gdy inżynieria platformowa zyska na znaczeniu – podsumowuje Mark Troester.