Co to jest DevOps? Mówiąc najprościej, DevOps to połączenie dwóch funkcji, które są zwykle traktowane jako oddzielne — rozwój i operacje. Taka jest definicja metodyki DevOps. Powody jej wykorzystywania są jeszcze łatwiejsze do zrozumienia. Ujednolicona metodologia rozwoju, prosta komunikacja i udokumentowane procesy obsługiwane przez opartą na standardach, sprawdzoną platformę oprogramowania pośredniczącego usprawniają proces tworzenia aplikacji i zarządzania cyklami, zapewniają elastyczność, a także zwiększają dostępność i bezpieczeństwo infrastruktury IT. DevOps polega na łączeniu ludzi, produktów i procesów. Docelowo w metodyce tej chodzi o połączenie IT z biznesem.
Infrastruktura niezbędna do połączenia procesów rozwoju, od udostępniania zasobów po pisanie kodu i algorytmów dla aplikacji korporacyjnych, które mogą wykorzystywać zaawansowane funkcje, takie jak sztuczna inteligencja, uczenie maszynowe, kontenery i funkcje bezserwerowe. Ponadto na etapie rozwoju obsługiwane są testy, archiwizacja, śledzenie błędów i inne krytyczne zadania. Niektóre z popularnych narzędzi wykorzystywanych do programowania to: Git do rejestracji kodu, Github lub rozwijający się Bitbucket do zarządzania repozytoriami kodu.
Po wdrożeniu aplikacji strona operacyjna przejmuje kontrolę, koncentrując się na spełnieniu wymagań biznesowych platform chmurowych. Zajmuje się takimi kwestiami, jak bezpieczeństwo użytkowników, zarządzanie bazą danych, skalowalność obciążeń produkcyjnych i poprawki aplikacji. Niektóre z powszechnie używanych narzędzi w ramach operacji to Terraform, Ansible, Puppet oraz Chef. Służą one do zarządzania infrastrukturą i konfiguracjami.
W wielu organizacjach te dwie funkcje istnieją w różnych silosach. Metodyka DevOps łączy rozwój i operacje, umożliwiając stworzenie zunifikowanej infrastruktury, która maksymalizuje produktywność. Aby wspierać obie funkcje, infrastruktura musi być sprawna, elastyczna i skalowalna, a dane wejściowe i integracje z zakresu zabezpieczeń i zapewniania jakości powinny być współdzielone przez programistów i operatorów/administratorów systemów.
W rezultacie powstaje wydajny model, który maksymalizuje zasoby podczas pracy z coraz szybszym rozwojem oprogramowania — co jest coraz trudniejsze w ramach tradycyjnego modelu tworzenia oprogramowania. Silny model DevOps umożliwia firmom rozwiązywanie problemów, skalowanie przy wzrastającej liczbie użytkowników i lepszą obsługę klientów przez szybsze opracowywanie i iterowanie oprogramowania.
W ciągu ostatnich dwudziestu lat przedsiębiorstwa stopniowo wprowadzały oprogramowanie we wszystkie dziedziny, jak finanse, rozrywka, konsumpcja, łańcuch dostaw i inne. W przypadku każdej z tych funkcji miała miejsce wyraźna integracja oprogramowania i danych, a wraz z częstszą integracją wzrosło znaczenie wydajności i niezawodności. Pojedynczy błąd lub awaria dostępności może wpłynąć na niezliczonych użytkowników, a także spowodować milionowe straty przychodów.
Metodyki DevOps i DevSecOps zapewniają środki do zaspokojenia potrzeby zapewniania ciągłej integracji i ciągłego dostarczania (continuous integration and continuous delivery, CI/CD) w cyklu życia rozwoju oprogramowania (software development life cycle, SDLC). Integracja rozwoju, operacji i zabezpieczeń zapewnia praktyczne korzyści dla zasobów, jednocześnie umożliwiając szybszą komunikację i współpracę w całym cyklu życia. Możliwość zbudowania pomostu między tymi funkcjami — stale skracając przy tym cykl życia rozwoju oprogramowania — nadaje znaczenie i wartość metodyce DevOps bez względu na branżę.
Przyjęcie metodyki DevOps w celu wsparcia całego cyklu życia rozwoju oprogramowania, z naciskiem na sprawność i wydajność niezależnie od funkcji, zapewnia szereg korzyści:
Szybkie dostarczanie oprogramowania jest niezbędne do sprawnego działania aplikacji w chmurze. Ciągła integracja (CI) odnosi się do częstego łączenia nowego oprogramowania za pomocą jednej linii kodu. Ciągłe dostarczanie (CD) oznacza wytwarzanie gotowego oprogramowania w częstych cyklach. Analogicznie ciągłe wdrażanie odnosi się do wdrażania gotowego oprogramowania na platformie wykonawczej w cyklach okresowych. Pojawienie się metody CI/CD radykalnie zmieniło tradycyjny proces tworzenia aplikacji. Procesy oparte na CI/CD obejmują DevOps — zmianę paradygmatu, która łączy programistów, inżynierów kontroli jakości i kierowników operacyjnych na jednej platformie.
Ale czy proces tworzenia aplikacji oparty na metodzie CI/CD można jeszcze udoskonalić? Obecnie najnowocześniejszym podejściem jest wykorzystanie konteneryzacji w celu zapewnienia jeszcze większej elastyczności i korzyści.
Najważniejszym etapem ciągłego dostarczania oprogramowania jest ciągła integracja. Ciągła integracja to praktyka programowania, w ramach której programiści wprowadzają zmiany w kodzie (zwykle niewielkie i przyrostowe) do scentralizowanego repozytorium źródłowego, co uruchamia zbiór zautomatyzowanych kompilacji i testów. To repozytorium umożliwia programistom wczesne i automatyczne przechwytywanie błędów przed przekazaniem ich do produkcji. Potok ciągłej integracji obejmuje zazwyczaj szereg etapów, od zatwierdzenia kodu do przeprowadzania podstawowych, zautomatyzowanych analiz statycznych, przechwytywania zależności oraz tworzenia oprogramowania i wykonywania niektórych podstawowych testów jednostkowych przed utworzeniem artefaktu kompilacji. Systemy zarządzania kodami źródłowymi, takie jak Github czy Gitlab, zapewniają integrację webhooków, co narzędzia CI takie jak Jenkins mogą wykorzystać, aby rozpocząć uruchamianie automatycznych kompilacji i testów po każdym zarejestrowaniu kodu.
Ciągłe dostarczanie rozpoczyna się tam, gdzie kończy się ciągła integracja. CD automatyzuje dostarczanie aplikacji do środowisk infrastruktury chmurowej. Większość zespołów korzysta z wielu środowisk programistycznych i testowych innych niż podstawowy serwer produkcyjny. Ciągłe dostarczanie zapewnia zautomatyzowany sposób wprowadzania nowych, przetestowanych zmian w kodzie we wszystkich środowiskach chmurowych.
Programiści mają do czynienia nie tylko z etapem kodowania, lecz także z cyklem życia opracowywania oprogramowania CI/CD. Korzystając z doświadczenia, intuicji i dotychczasowych sukcesów, programiści pomagają całościowo nadzorować cykl CI/CD. Ponieważ poszczególne aspekty DevOps mogą zależeć od używanego stosu technologii, warto odwiedzić stronę DevOps i programista, aby zobaczyć, które z rozwiązań Oracle będzie najlepszym wyborem.