Co to jest wdrażanie oprogramowania?
- 3 min
Według Wikipedii", "wdrażanie oprogramowania" składa się ze wszystkich działań, które udostępniają system oprogramowania do użytku. Ogólny proces wdrażania składa się z kilku powiązanych działań z możliwymi przejściami między nimi. Każdy system oprogramowania jest unikatowy i w związku z tym „wdrożenie” powinno być interpretowane jako ogólny proces, który należy dostosować odpowiednio do określonych wymagań lub cech.
Niektóre używają terminów "wdrażanie" i "instalacja" zamiennie, ale instalacja oprogramowania jest tylko częścią procesu wdrażania. Wdrożenie obejmuje o wiele więcej. Działania wdrażania mogą obejmować:
- Instalacja i układanie serwera w stojaku
- Wdrażanie zaktualizowanego oprogramowania na tym serwerze.
- Używanie takich elementów jak skrypty i infrastruktura jako kod.
- Nawet poruszanie się po biurze z dyskiem USB, ręczne instalowanie oprogramowania na komputerach.
Ręczne wdrażanie oprogramowania jest pracochłonne i nie skaluje się dobrze. Automatyzacja ułatwia i bardziej opłacalne zapewnienie spójności podczas wdrażania nowego oprogramowania lub aktualizowania istniejącego oprogramowania w organizacji.
Naszym celem w ramach tej ścieżki szkoleniowej jest to, jak najlepiej wdrożyć oprogramowanie pod kątem niezawodności. Ten moduł dotyczy nie tylko wdrażania oprogramowania, ale także wdrażania infrastruktury w chmurze. Odwołania do wdrażania usługi lub rozwiązania mogą oznaczać wdrażanie oprogramowania, infrastruktury chmury obliczeniowej, konfiguracji i wszystkich elementów, które są konieczne do niezawodnego udostępnienia systemu oprogramowania do użytku.
Scenariusz: wdrożenie epickie
Słowo epicka oznacza "wielkie, monumentalne lub rozległe", ale w kontekście tej dyskusji nie jest to dobra rzecz. Termin "epos" został ukuty przez Jez Humble w swojej książce Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, ponieważ reprezentuje ogromne (i niezwykle przełomowe) przedsięwzięcie. Oto przykład tego, co zwykle się dzieje:
- Organizacja opracowuje aplikację do sprzedaży. Ta aplikacja jest aktualizowana dokładnie dwa razy w roku.
- Podczas tych aktualizacji wdrażane są wszystkie nowe funkcje, poprawki błędów (duże i małe) oraz aktualizacje zależności.
- Pierwsze wdrożenie w roku jest planowane na weekend Święta Pracy, a drugie na weekend po Dniu Dziękczynienia.
- Każda aktualizacja to sytuacja w stylu „wszystkie ręce na pokład”. Zespół ds. aplikacji, zespół pomocy technicznej, zespół infrastruktury, zarządzanie; wszyscy biorą udział we wdrożeniu.
- Usługi są tymczasowo przełączane w tryb offline, gdy wdrożenie jest w toku.
- Historia wykazała, że wdrożenie jest zawsze obarczone problemami, inżynierią na żądanie, rozwiązywaniem problemów i zmianami zarządzania konfiguracją.
- Rzadko idzie dobrze, a po jego zakończeniu rozwiązanie sprawia wrażenie skleconego z poszczególnych elementów w niepowtarzalny sposób.
To nie jest dobra sytuacja wdrożeniowa. Epicka metoda wdrożenia to intensywne zadanie manualne, które wiąże się z wieloma problemami:
- To złożone.
- To stresujące.
- To ryzykowne.
- To powolne.
- Nie można go odtworzyć ze względu na wszystkie złożone kroki.
- Często wymaga zaangażowania kilku indywidualnych ekspertów do ukończenia wdrożenia.
Ponieważ ten proces jest długi i uciążliwy, musi być zaplanowany na czas, kiedy spowoduje najmniejsze zakłócenia w pracy użytkowników, co oznacza prawdopodobnie czas niewygodny dla zespołu wdrożeniowego, taki jak weekend lub wakacje.
Członkowie zespołu mogą czuć presję czasu, aby ukończyć ogromną operację w wyznaczonym czasie, co prowadzi do błędów konfiguracyjnych. Ponadto długi czas między wdrożeniami może spowodować, że zapomnisz dokładnie, jak działają elementy.
Dylemat wdrożenia
Wdrażanie oprogramowania to złożone zadanie, a w przypadku "zaoszczędzenia" wielu istotnych zmian, poprawek i dodatków funkcji w celu wdrożenia wszystkich w jednym z nich zwiększasz złożoność, a tym samym zwiększasz prawdopodobieństwo wystąpienia błędu. Ponadto jeśli coś zaczyna iść źle, ta złożoność utrudnia wyśledzenie zasadniczej przyczyny problemu.
Złożoność może również powodować problemy dla użytkowników końcowych, ponieważ mogą one mieć do czynienia z uczeniem się wielu nowych funkcji i zmian jednocześnie, nie wspominając o błędach, które są wprowadzane przez złożoność wdrożenia epickiego.
Powinien być lepszy sposób, a tam jest. Dobra wiadomość jest taka, że tradycyjna epicka strategia wdrażania nie jest jedyną opcją. W następnej jednostce dowiemy się lepszego sposobu realizacji tego procesu.