Artykuł zaktualizowany 17.12.2020 przez Magdalenę Korgul, Content Specialist w Deviniti
Statystyki nie pozostawiają złudzeń – wprowadzenie metodyki DevOps pozwala na szybsze i sprawniejsze tworzenie oprogramowania, napotykając po drodze znacznie mniej problemów w porównaniu do zespołów pracujących w oparciu o inne metodyki. Z raportu 2020 wynika, że zespoły praktykujące DevOps mają 3 razy mniejszy wskaźnik średniej awarii, o 22% mniej czasu na nieplanowane prace i poprawki w stosunku do innych zespołów. Jak więc opisać DevOps i jakich narzędzi używać, praktykując tę metodę? Dzisiaj przyjrzymy się sprawdzonym rozwiązaniom oferowanym przez Atlassian, jedną z najszybciej rozwijających się firm technologicznych na świecie, tworzącą produkty umożliwiające zarządzanie zwinną metodyką programowania.
Czym jest DevOps?
Na początku warto wyjaśnić, czym jest DevOps i komu ma służyć. Termin DevOps, złożony ze słów development (programowanie) i operations (operacje), określa metodykę pracy stworzoną z o zespołach pracujących nad wytwarzaniem oprogramowania. Kultura DevOps, zakładająca korzystanie z odpowiednich praktyk i narzędzi, ma na celu poprawę współpracy zespołów rozwoju i utrzymania.
Wybór odpowiednich narzędzi pomaga wzmocnić transformacje procesowe, z którymi zmagają się zespoły IT, przyjmując zwinne metodyki tworzenia oprogramowania. Metodyki te zmierzają do znalezienia wspólnego języka między iteracyjnie działającymi w Scrumie deweloperami a klientami oczekującymi jak najszybszego i najlepiej skomunikowanego werbalnie rozwiązania spraw przez nich zgłaszanych.
W miarę dzielenia projektów na mniejsze etapy ich workflow staje się coraz płynniejszy. Dzięki odpowiedniej strukturze i procesom umożliwiającym dostosowanie się do mniejszych zadań można tworzyć funkcje, których potrzebują klienci i uwzględnić ich opinie w celu przeprowadzenia kolejnej aktualizacji oprogramowania.
DevOps najlepiej wyobrazić sobie na przykładzie organizacji, w których wdrażanie oprogramowania podlega nieustannym zmianom w środowiskach produkcyjnych i jest szczególnie wrażliwe ze względu na główne procesy biznesowe, relacje z klientami oraz czas. Takie aspekty najczęściej dotyczą organizacji z sektora bankowego, mediów i telekomunikacji, a także portali internetowych i e-commerce.
Metodyka DevOps
Zmiany w projektach informatycznych to chleb powszedni. Metodyka DevOps opiera się na współpracy dwóch obszarów i wzajemnego zrozumienia swoich potrzeb w zakresie zobowiązań, ograniczeń i wymagań. Chodzi o to, aby stworzyć takie środowisko, które jest w stanie podołać nieustannym modyfikacjom, które stosuje uszczuplone procesy dla skomplikowanych wdrożeń i bazuje na kulturze pracy, charakteryzującej się wysoką wydajnością.
Taka metodyka wytwarzania oprogramowania przyczynia się do szybkiego wprowadzenia usług i produktów do obiegu, a także pozwala zaoszczędzić czas i pieniądze. Dobrze realizowany DevOps praktycznie wyklucza przerwy w pracy zespołów tworzących, umożliwia uniknięcie problemów z wdrożeniami oraz w skrajnych przypadkach konieczności przeprowadzania roll-backs, zawierających ogromną liczbę zmian. Wszystkie rozwiązania w miarę możliwości wprowadzamy bezpiecznie i małymi etapami.
Podołanie takim wyzwaniom niesie za sobą konieczność „uzbrojenia się” w odpowiednie narzędzia wspierające procesy. Mają one służyć całemu zespołowi do sprawnej współpracy oraz zapewniać najwyższą jakość produktów i usług. Główną filozofię DevOps stanowi fundament niezakłóconej współpracy programistów, działów utrzymania i wsparcia. Gdybyśmy mieli zobrazować cały cykl tworzenia oprogramowania w ramach DevOps, najlepiej przedstawić to w formie :
Narzędzia Atlassian wspierające DevOps
Dla poszczególnych elementów Atlassian przygotował wsparcie użytecznych narzędzi. Przejdźmy więc przez procesy wytwarzania, wdrażania i utrzymywania produktu w metodyce DevOps z wykorzystaniem narzędzi dostarczanych przez Atlassian.
Plan: Jira Software, Confluence
Jira Software
to zdecydowanie najbardziej powszechne i najlepsze narzędzie do rozwoju oprogramowania wykorzystywane w zespołach pracujących z metodykami zwinnymi. Jest to do zwinnego wytwarzania oprogramowania oraz pogłębionej integracji. Za pomocą Jiry zespoły mogą planować, śledzić, i raportować wszystko to, co jest niezbędne w procesie wytwórczym. Narzędzie jest szczególnie polecane organizacjom, którym potrzebna jest większa przejrzystość działań, uporządkowanie komunikacji i ulepszenie sposobu wykorzystania zwinnych metod tworzenia. Jira pozwala miarodajnie ocenić wydajność zespołów i ją poprawić.
Do planowania tworzenia oprogramowania niezwykle przydatne są też dostępne w narzędziu tablice Scrum i Kanban, pozwalające śledzenie przepływu pracy i zarządzanie nim. Z kolei panel kontrolny umożliwia sprawdzanie aktualnego stanu wersji, śledzenie podsumowania i zestawienia problemów pogrupowanych według stanu, co pozwala szybko zorientować się, jaka praca została jeszcze przed nami.
Integracja Jira Software z pozostałymi narzędziami Atlassian oraz możliwość rozszerzania funkcjonalności czyni z niej najlepszy system dla funkcjonowania zespołów programistycznych. Ponadto narzędzie integruje się z repozytoriami kodu oraz narzędziami Continuous Integration, dzięki czemu widzimy wszystkie zmiany w kodzie dotyczące konkretnych .
Confluence
Na tym etapie DevOps wykorzystujemy również oprogramowanie Atlassian do tworzenia bazy wiedzy za pomocą . Narzędzie daje możliwość tworzenia, udostępniania i jednoczesnej pracy nad wymaganiami, pomysłami oraz gromadzenia informacji zwrotnej w jednym miejscu, co znacznie przyspiesza realizację projektów. Platforma jest bardzo elastyczna i przydatna do organizacji pracy oraz wpływa na przejrzystość obecnych realizacji. Z kolei łatwość publikowania i uzyskiwania informacji na temat realizowanych projektów ułatwia zarządzanie procesami tworzenia oprogramowania i zapewnia równą dostępność wiedzy dla wszystkich.
Dzięki Confluence łączymy szybkość, jaką daje samodzielne tworzenie oprogramowania, z zaletami wspólnej pracy zespołowej. W ramach tej aplikacji można tworzyć m.in.:
notatki na spotkania i notatki z informacjami zebranymi podczas spotkań,
i notatki z informacjami zebranymi podczas spotkań, plany projektów ,
, opisy wymagań dotyczących oprogramowania,
a także dołączać multimedia i dynamiczne treści. To wszystko pozwala zbudować ogromną wewnętrzną bazę wiedzy, do której dostęp mają wszyscy pracownicy, wybrane zespoły projektowe czy poszczególne osoby pracujące nad daną treścią.
Confluence ma intuicyjny i elastyczny edytor stron. Pozwala na śledzenie zmian, dokumentację prac i produktów, elastyczne wyszukiwanie, a także podgląd załączników dodanych do stron. Aplikacja tworzy drzewiastą strukturę stron dla bazy wiedzy oraz podpowiada wybrane artykuły klientom Jira Service Management, dzięki czemu mogą oni samodzielnie rozwiązywać podstawowe problemy.
Confluence jest dobrym rozwiązaniem pod kątem przechowywania specyfikacji wymagań, instrukcji, dokumentacji i bazy wiedzy dla klientów Service Management. Oczywiście Atlassian zadbał o to, aby administrator w Confluence miał pełną kontrolę nad uprawnieniami związanymi z dostępem i panował nad widocznością treści i zwracanymi przez wyszukiwarkę .
Build: Jira Software, Bitbucket
Bitbucket
Bitbucket to narzędzie obsługujące repozytoria Git i Mercurial, pozwalające na sprawną i skalowalną pracę z rozproszonymi systemami kontroli wersji. Bitbucket posiada prosty mechanizm do code review, umożliwiając prowadzenie dyskusji bezpośrednio w wybranych miejscach kodu źródłowego poprzez dodawanie komentarzy w jego poszczególnych fragmentach. Praca jest przyjemniejsza dzięki intuicyjnemu webowemu interfejsowi.
Narzędzie ma także wbudowaną opcję konfiguracji tego, w jaki sposób odbywa się akceptacja zmian przed scaleniem gałęzi kodu. Development panel dostarczany przez Jira Software sprawia, że użytkownicy mają możliwość stworzenia nowego brancha już z poziomu zgłoszenia. Jego nazwa uzupełnia się automatycznie, wykorzystując dane ze zgłoszenia ( ), na podstawie których zadanie jest obustronnie linkowane przez Jira Software oraz Bitbucket. Ułatwia to późniejsze wyszukiwanie zmian dotyczących konkretnego zadania oraz utrzymanie porządku w repozytorium.
Bitbucket i Jira Software
Także w dalszych etapach prac nad oprogramowaniem korzystamy z tego połączenia, gdy zaimplementowane w narzędziu triggery potrafią reagować na zdarzenia (takie jak utworzenie pull request wykorzystywanego w code review) i automatycznie procesować zadanie wraz z postępem prac deweloperów. Integracja pomiędzy Bitbucketem i Jira Software prowadzi do automatycznej aktualizacji wszystkich działań, nad którymi pracujemy w
Deweloperzy nie muszą przełączać się między aplikacjami, aby dokładnie wiedzieć, co właściwie dzieje się w zespole. Bitbucket w Cloud ma również łatwą w użyciu funkcję Pipeline, która nie wymaga konfiguracji serwerów CI ani repozytoriów do synchronizacji. Pipeline uruchamiamy jednym kliknięciem. Dla klientów wymagających szczególnej kontroli, indywidualnego dostosowania oraz zaawansowanej konfiguracji Atlassian oferuje Bitbucket . Ta wersja zapewnia też dużą wydajność i wysoką dostępność, szczególnie potrzebną przedsiębiorstwom o dużej skali.
Do kogo w szczególności adresowany jest Bitbucket? Dla zespołów deweloperskich pracujących w sposób rozproszony oraz dla wszystkich, którzy chcą prowadzić uproszczony, szybki i intuicyjny code review.
Continuous Integration: Bamboo, Bitbucket
Teraz rozpoczyna się kolejny etap stosowany w metodyce DevOps: etap ciągłej integracji. W tym momencie produkt powinien zacząć działać i przynosić ważne informacje zwrotne. to praktyka polegająca na ciągłej integracji zmian wprowadzanych przez deweloperów. Takie rozwiązanie pozwala zapobiegać konieczności łączenia ogromnych paczek kodu dotyczących złożonych funkcjonalności, których scalanie może zajmować długie godziny.
Po każdej zmianie w repozytorium projekt jest przebudowywany i przeprowadzane są testy jednostkowe. Ciągłe testowanie aplikacji bardzo się opłaca, ponieważ przyspiesza cały cykl programowania, a przede wszystkim zwiększa świadomość tego, co się dzieje z naszym projektem. Oddawanie projektu i weryfikacja jego działania w małych etapach pozwalają znacznie ułatwić kontrolę nad całym procesem. To niezbędny element DevOps.
Ponieważ procesy ciągłego tworzenia nowych gałęzi kodu i ich scalania (branch&merge) są nieco monotonne, każde narzędzie, które wspiera ten proces, będzie mile widziane. Atlassian dedykuje odpowiednie rozwiązanie dla powyższych czynności tak, aby utrzymać rygor testowy oraz szybkość wdrażania tworzonych aplikacji w ramach CI.
Bamboo ma funkcje służące automatyzacji procesów związanych z ciągłą integracją. Jest to w pełni profesjonalne, skalowalne narzędzie do CI, w dodatku świetnie skomunikowane z pozostałymi narzędziami Atlassian. Bamboo jest w stanie automatycznie, po wykryciu zdarzenia w repozytorium kodu, zbudować aplikację, wykonać testy oraz umieścić ją w na dowolnym środowisku testowym lub produkcyjnym.
Bamboo to aplikacja szczególnie polecana dla zespołów, które:
chcą przyspieszenia wykonywania buildów,
nie mają rozwiązania automatycznie budującego kod z repozytorium,
nie posiadają serwerów wykonujących automatyczne testy oraz zorientowanych na automatyzacje release na wybrane środowiska.
Więcej informacji o niesamowitych korzyściach z używania Bamboo w ramach Continuous Integration uzyskasz w tym miejscu.
Deploy: Bamboo, Jira Software
Jednym z bardziej stresujących procesów w trakcie przygotowania oprogramowania do wdrożenia jest zebranie wszystkich wyników, zmian, testów i informacji w jednym miejscu. I na pewno jedną z ostatnich rzeczy, na jaką ochotę, jest tworzenie kompleksowych raportów zawierających dosłownie wszystko, co potrzebne.
Rozwiązaniem tego problemu są aplikacje oferujące zintegrowane pulpity obsługujące repozytoria oraz narzędzia wdrożeniowe. Najlepiej, jeśli jest to takie oprogramowanie, które daje pełną widoczność , buildów, pull requests oraz innych zgłoszeń dotyczących wdrożenia. Tutaj ponownie najlepszym rozwiązaniem jest Jira Software. To narzędzie zapewnia możliwość śledzenia tego, co dzieje się z naszą nową aplikacją oraz weryfikacji i wglądu w historię każdej zmiany.
Operate: Jira Service Management, Statuspage, Jira Software, Confluence
Kluczem do odblokowania współpracy między zespołami jest upewnienie się, że oglądają tę samą pracę. Co dzieje się po zgłoszeniu problemu? Czy problemy można sprawnie identyfikować i powiązać ze sobą?
Istnieją dwa rodzaje monitoringu, które powinny być zautomatyzowane: monitorowanie serwera i monitorowanie wydajności aplikacji. Testowanie API jest jak najbardziej sensowne, jeśli chodzi o wybiórczy monitoring, ale żeby zrozumieć trend, w jakim kierunku podąża rozwijane oprogramowanie oraz jego ogólny stan, potrzeba oprogramowania, które nasłuchuje i zapisuje dane dwadzieścia cztery godziny na dobę, przez siedem dni w tygodniu.
Istnieją różne aplikacje, które temu służą, m.in. New Relic, Splunk, Nagios. Jeśli chodzi o produkty Atlassian, w ofercie znajdziemy ciekawą aplikację Statuspage, którą można zintegrować z Customer Portalem w Jira Service Management. Statuspage może pobierać dane i wyświetlać je użytkownikowi, pokazując u góry portalu informację o tym, że został wykryty jakiś problem. Poinformowanie użytkowników o już wykrytym incydencie i możliwość wglądu w status prac nad jego rozwiązaniem zmniejsza szansę na tworzenie nowych zgłoszeń dotyczących tego samego problemu.
Atlassian dostarcza rozwiązanie bazy wiedzy, Confluence, które również doskonale integruje się z portalem klienta oferowanym przez Jira Service Management. Połączenie dwóch aplikacji pomaga w podpowiadaniu potencjalnych rozwiązań oraz stworzeniu self-service dla popularnych problemów, których rozwiązanie nie wymaga specjalistycznej wiedzy.
Konsekwencją takiego podejścia jest obniżenie liczby tworzonych zgłoszeń i konieczności ich obsługi przez zespół agentów w sytuacji, w której baza wiedzy oferuje dokładny opis postępowania oraz sposobu rozwiązywania problemów przez samych użytkowników. W przypadku pojawienia się zgłoszenia, które wymaga reakcji deweloperów, agent może stworzyć odpowiednie zgłoszenie w projekcie Jira Software i monitorować jego status.
Continuous Feedback: Jira Service Management, Slack, Grape.io
W tej fazie klient daje nam rozbudowany feedback, obejmujący dane NPS, ankiety Churn (powody rezygnacji, porzucania aplikacji), raporty o błędach, zgłoszenia do service desk, a nawet tweety w mediach społecznościowych. Wszystko jest weryfikacją tego, czy to, co stworzyliśmy, odpowiada jego potrzebom.
Dzięki możemy zarządzać wszystkimi zapytaniami klienta w ramach continuous feedback w naszym zespole programistycznym. Aby współpraca z zespołem przebiegała płynnie, nawet przy dużej liczbie zgłoszeń, warto korzystać z komunikatora zintegrowanego z oprogramowaniem Jira. Można wykorzystać popularne narzędzie Slack lub Grape.io, którego integrację z Jirą przeprowadziliśmy w naszym zespole w Deviniti. Integracja pozwala m.in. na tworzenie zgłoszeń i przypisywanie ich poszczególnym użytkownikom bezpośrednio z poziomu
Więcej o stworzonych przez nas integracjach między narzędziami biznesowymi przeczytasz .
Najlepsze rozszerzenia dla Jira w kontekście DevOps
Na koniec warto zwrócić uwagę na trzy rozszerzenia w Jira, które mogą przydać się zespołom pracującym nad tworzeniem nowego oprogramowania w ramach DevOps przy wsparciu produktów Atlassian.
Przydatne zarówno dla pracowników, jak i klientów będzie rozszerzenie . Dodatek usprawnia funkcjonalności portalu klienta poprzez udostępnianie poszczególnych request type’ów dla wybranych grup, dynamiczne ukrywanie pól i widoczne dla klienta metryki SLA.
Kolejnym rozszerzeniem zasługującym na uwagę jest for Jira, które pozwala na opracowywanie szablonów ułatwiających tworzenie gotowych zgłoszeń, automatyczne uzupełnianie pól, .
Dodatek for Jira gwarantuje z kolei nowoczesne zarządzanie testami aplikacji, które zapewnia planowanie testów, tworzenie szablonów, raportowanie oraz automatyzację. Jest dedykowany managerom zespołów testerskich oraz testerom.
Coraz lepsze wykorzystanie narzędzi DevOps
Atlassian tworzy narzędzia wspierające współpracę zespołów na każdym etapie cyklu rozwoju oprogramowania. Zestaw tych narzędzi jest stale wzbogacany o kolejne funkcje i dodatki. mamy do czynienia z małą firmą, czy dużą organizacją, działania DevOps opierają się na integracji działów rozwoju i utrzymania. Ma to na celu wydatne przyspieszenie całego procesu i jego zautomatyzowanie zarówno w przypadku małej grupy programistów, jak i działów dużej korporacji.
Wybór odpowiednich narzędzi wspierających działania DevOps jest kluczowy dla procesu operacyjnego programowania w IT, a produkty Atlassian odgrywają w nim niezwykle istotną rolę. Skontaktuj się z nami, jeśli chcesz dowiedzieć się więcej o możliwościach produktów Atlassian i wsparciu, jakie dzięki nim można uzyskać w zakresie realizacji DevOps.
Dowiedz się więcej o DevOps:
Leave a Comment