Jeśli jeszcze Cię to nie spotkało, na pewnym etapie swojej kariery z pewnością weźmiesz udział w tworzeniu monolitycznego wydania oprogramowania. Jest to wydanie oprogramowania zawierające uporczywe błędy i wzajemne zależności, które wymaga udziału całego zespołu i pochłania cały jego czas. Nie wspominając już o tym, że gdy trafi do środowiska produkcyjnego, najprawdopodobniej będzie wymagać kilku poprawek.
Dostarczanie kodu — wydania oprogramowania — jest dobrym wskaźnikiem zwinności osób biorących udział w tworzeniu produktu. Każdy wysiłek zmierzający do przyspieszenia planowania, pisania kodu oraz testowania jest bezcelowy, jeśli proces wydawania nie przebiega sprawnie. Dlatego właśnie zespoły Agile i DevOps skłaniają się ku automatyzacji, stawiają na współpracę zespołu programistycznego i operacyjnego już na wczesnych etapach procesu tworzenia oprogramowania, praktykują ciągłą integrację i niezwłocznie zajmują się wszelkimi usterkami.
Elementem rozpoznawczym programowania Agile jest utrzymywanie kodu w stanie gotowym do wydania. Całe planowanie Lean i iteracyjne podejście nie ma sensu, jeśli nie da się dostarczyć kodu, gdy uznasz, że jest gotowy.
Doskonałe wydawanie oprogramowania zaczyna się od architektury modułowej
W trakcie realizacji każdego programu zmierzającego do stworzenia oprogramowania najlepiej jest wydawać oprogramowanie często i w prosty sposób. Zespół może sprawić, że wydawanie będzie naturalnym elementem jego kultury Agile, jeśli opracuje architekturę modułową (lub wprowadził modyfikacje zmierzające w kierunku jej utworzenia). Zamiast tworzenia jednej dużej aplikacji (na przykład produktu monolitycznego, jak wspomniany powyżej), już na wczesnym etapie realizacji programu nadaj aplikacji charakter modułowy, dzieląc ją na kilka części.Pogrupuj podobne funkcje na mniejsze aplikacji lub komponenty i sprecyzuj interfejsy API między każdą z takich aplikacji lub każdym z komponentów. Takie interfejsy API można testować automatycznie przy każdej kompilacji, aby zapewnić zgodność i ograniczyć ryzyko związane z wydawaniem oprogramowania.
Architektura modułowa oznacza, że nie musisz wydawać całego zestawu oprogramowania za jednym razem, a interfejsy API ułatwiają aktualizowanie komponentów i zapewnianie zgodności między wersjami. Krótko mówiąc, wydania oprogramowania modułowego wymagają mniejszej liczby zmieniających się części. A to z kolei przekłada się na uproszczenie wydawania.
Doskonałe wydawanie oprogramowania opiera się na świetnych relacjach
Tworzenie oprogramowania rzadko odbywa się w próżni. W rzeczywistości w procesie tworzenia doskonałego oprogramowania uczestniczy cały zespół, od etapu zarządzania produktem po jego eksploatację. Zespół operacyjny jest na przykład kluczowym partnerem w dostarczaniu oprogramowania do środowiska produkcyjnego, ponieważ pomaga dotrzeć z oprogramowaniem do użytkowników końcowych.
Zespoły programistyczne mogą pomagać zespołom operacyjnym w podejmowaniu świadomych decyzji i lepszym realizowaniu zadań, stosując następujące techniki:
- Do każdego wydania oprogramowania warto wyraźnie zdefiniować listę składową. Zespoły operacyjne nie zawsze dysponują takim samym poziomem kontekstu dotyczącego wydania, jak zespół programistyczny.
- Do każdego zgłoszenia rozwiązanego w wydaniu można dodać łącze kierujące z powrotem do systemu śledzenia zgłoszeń i kontroli źródła, aby zespół operacyjny miał dostęp do kontekstu na tym samym poziomie w razie wystąpienia problemów podczas wdrażania.
- Czasami problemy występują podczas wypychania kodu ze środowiska programistycznego do przejściowego. Warto zwrócić uwagę na te problemy, ponieważ mogą one pojawić się ponownie podczas wypychania do środowiska produkcyjnego.
- Usterki podczas wdrażania się zdarzają, dlatego zawsze należy zapewnić zespołowi operacyjnemu czytelną ścieżkę eskalacji umożliwiającą sprawne rozwiązywanie problemów.
Członkowie zespołów operacyjnych mogą pomagać swoim odpowiednikom w zespole programistycznym, przekazując następujące sugestie:
- W razie wystąpienia problemów w środowisku produkcyjnym warto poświęcić czas na poznanie ich głównych przyczyn i opracowanie rozwiązań. Pozwoli to unikać ich w przyszłości (lub sprawniej się nimi zajmować).
- Dane konfiguracji ze środowiska produkcyjnego należy migrować z powrotem do środowiska przejściowego i programistycznego, aby uniknąć dryfu konfiguracji.
Gdy kod migruje ze środowiska programistycznego do przejściowego, a następnie produkcyjnego, kluczowe konfiguracje i dane użytkowników migrują w przeciwnym kierunku — ze środowiska produkcyjnego do przejściowego, a następnie programistycznego. Taka dwukierunkowa relacja ułatwia precyzyjne modelowanie środowiska produkcyjnego w środowisku programistycznym. Przekłada się to na mniejszą liczbę błędów i niespodzianek w dniu wydania.
Doskonałe wydawanie oprogramowania jest proste w realizacji
Automatyzacja, automatyzacja i jeszcze raz automatyzacja.
Automatyzacja wydawania oprogramowania to najlepszy sposób na udoskonalenie kultury wydawania. Jeśli proces wydawania oprogramowania nie jest obecnie jest zautomatyzowany, zacznij od automatyzacji wydawania oprogramowania do środowiska przejściowego. Gdy wszyscy zobaczą, jakie to proste, naturalnym krokiem będzie zautomatyzowanie także wdrożeń do środowiska produkcyjnego.
Jeśli wydania są trudne, wypracuj nawyk częstego wydawania oprogramowania — nawet jeśli ma być ono wydawane wyłącznie do środowiska przejściowego. Jeśli zespół programistyczny odczuje bolączki związane z wydawaniem, zachęci to jego członków do podjęcia innowacyjnych działań na rzecz ułatwienia (i zautomatyzowania) procesu.
Automatyczne testowanie i ciągła integracja to kluczowe elementy stanowiące o doskonałym wydawaniu. Postaraj się skrócić maksymalnie czasy kompilowania i testowania, pamiętając przy tym, że kompilacje, które łatwo zweryfikować, są również łatwiejsze do wydania. Wynika to z faktu, że cykl weryfikacji jest bliższy sposobowi pracy zespołu.
Doskonałe wydawanie oprogramowania jest świetne!
Elementem rozpoznawczym programowania Agile jest utrzymywanie kodu w stanie gotowym do wydania.
W przypadku naszych własnych rozwiązań SaaS łatwiej jest nam zarządzać małymi, a częstymi wydaniami oprogramowania. W przypadku produktów dostępnych do pobrania ścisła współpraca między zespołami programistycznymi, operacyjnymi i ds. inżynierii kompilacji jest trudniejsza. Te grupy powinny współpracować ze sobą w celu automatyzacji wydawania oprogramowania i proaktywnie dostosowywać automatyzacje do nadchodzących zmian w produktach. Wiele spośród zespołów Atlassian automatycznie wdraża każdą udaną kompilację gałęzi głównej do środowiska testowego. Gdy nadchodzi czas przekazania wydania oprogramowania do środowiska przejściowego lub udostępnienia klientom, te zespoły mogą wyzwolić automatyczne wdrożenie dosłownie jednym przyciskiem.
Dla nas, jako programistów, wydanie oprogramowania powinno być punktem kulminacyjnym naszego cyklu innowacji. Obserwujemy, jak klienci wchodzą w interakcje z napisanym przez nas kodem i dzielą się swoimi opiniami. Super! Uczynienie z wydawania naturalnej części dnia pracy ułatwia wprowadzanie kodu do środowiska produkcyjnego i daje satysfakcję związaną z możliwością stwierdzenia: „To mój kod!”.
Zacznij korzystać za darmo z szablonu planu projektu DevOps
Twórz i wdrażaj aplikacje oraz zarządzaj nimi dzięki otwartemu podejściu do narzędzi.