Azure-DevOps: 01 – wyjaśnienie pojęć

14-lis-2022

DevOps – może mieć różne definicje, bo jest różnie rozumiany. Zwykle rozumiemy przez niego połączenie pracy człowieka, procesów i produktów, które umożliwiają dostarczanie wartości klientowi w procesie Continous Delivery. Czasami łatwiej jest powiedzieć, co nie jest DevOps. Przykładami takich czynności są tworzenie dokumentacji, modyfikacja ustawień firewall. Te czynności nie przynoszą klientowi bezpośrednich korzyści. Co innego utworzenie nowej funkcjonalności w aplikacji.

Observe, Orient, Decide, Act – pętla OODA – każdorazowo, przy każdej iteracji należy obserwować skutki poprzednich zmian, określać czy są one pożądane, decydować o kolejnych krokach i wykonywać je. Dzięki częstej ocenie pracy, można uniknąć błądzenia po niepoprawnych rozwiązaniach, na bieżąco korygować błędy i w efekcie szybciej dostarczyć wyniki dla klienta.

Continous Integration – proces ma na celu upewnienie się, że wprowadzone zmiany działają z innymi zmianami, wykonywanymi przez innych programistów, w tym również że są zgodne z wymogami security itp. Programista wysyłając swój kod może powodować konflikty, które powinny być szybko wykryte. Łatwiej je wykrywać, gdy często są wykonywane testy. Programista wykonuje małą zmianę, oprogramowanie jest budowane i testowane w automatyczny sposób.

Continous Delivery – Jest to implementacja logiki „Fail Fast” – jeśli coś ma się nie udać, albo ma nie dać wartości dla klienta, to lepiej jeśli zostanie to wykryte wcześniej. Zmiany wykonane w rozwiązaniu, dostarczamy klientowi tak szybko jak się da. Z jednej strony, klient nie musi długo czekać na rezultaty, z drugiej strony może szybko zareagować, jeśli coś jest nie tak.

Version Control – utrzymywanie jednego prawdziwego miejsca gdzie utrzymywany jest kod aplikacji. Ten kod może być podzielony na różne etapy pracy (branch), ale jeśli szukasz odpowiedniego miejsca skąd można pobrać kod źródłowy – idziesz tam. Version Control wspiera zachowanie historii wszystkich zmian, możliwość przeglądu wysyłanego kodu itp.

Agile – metodologia dzieląca pracę na mniejsze fragmenty „sprinty”, co pozwala na dopasowanie pracy do możliwości zespołu i śledzenie postępu

Monitoring – pozwala na zbieranie i analizę danych w Azure, która nastęnie może być wykorzystana do podejmowania dalszych decyzji w rozwoju oprogramowania, a operacyjnie pomaga w utrzymaniu dostępności usługi.

Cloud – umieszczanie usług w chmurze: prywatnej, publicznej lub hybrydowej.

IaaC – tworzenie i zarządzanie infrastruktury za pomocą kodu

Microservice – podział aplikacji na wiele małych usług, z których każda jest odpowiedzialna za niewielki fragment funkcjonalności. Jest to przeciwieństwo architektury monolitycznej

Containers – technika uruchamiania aplikacji wyizolowanej z systemu operacyjnego do postaci tzw. kontenera. Kontener powołuje się na konfigurację utworzoną wcześniej w innym kontenerze i dodaje do niego swoją warstwę funkcjonalności, np. funkcjonalności specyficznej aplikacji.

Migracja w stronę DevOps wymaga stworzenia wyspecjalizowanych zespołów, dopasowania procesów, stąd właśnie taka a nie inna definicja tego czym jest DevOps. Konflikty z istniejącymi procesami są jednak nieuniknione.

DevOps team musi definiować swoje cele, a do tego są potrzebne metryki: ile czasu spędza się na naprawie błędów, ile czasu spędza się na wykonaniu powtarzalnych czynności, ile czasu trwa stworzenie określonej funkcjonalności.

 

Komentarze są wyłączone

Autor: Rafał Kraik