Jak uniknąć sytuacji rozgałęzień podczas pracy z dużymi organizacjami?
Współpracujemy z wieloma dużymi organizacjami finansowymi, których podejście polega na tym, aby nie wprowadzać aktualizacji oprogramowania, a jedynie wysokie / krytyczne łatki bezpieczeństwa i niestandardowe funkcje. Organizacje te będą pobierać łatki i wersje niestandardowe tylko między głównymi aktualizacjami. Poważne aktualizacje mogą obejmować lata i pociągać za sobą wysokie koszty. Takie podejście powoduje, że my (software house) mamy oddział naszego kodu na jednego dużego klienta, który niesie ze sobą wszystkie koszty i nieefektywności długoterminowego rozgałęziania.
Moje pytania do społeczności to:
- Czy doświadczyłeś podobnych podejść do akceptacji aktualizacji od swoich klientów?
- Jakie masz sugestie, aby pomóc w pracy z tym podejściem?
- Jakie masz sugestie, aby zmienić podejście organizacji do pobierania aktualizacji oprogramowania?
Odpowiedzi:
Jak wspomniał Michael, zaoferuj standardowe rozwiązanie oparte na wersjach / numerach wydań, z rozsądnie długim okresem użytkowania dla Twojej branży (może być przeplatane z jedną lub kilkoma krótszymi wersjami pośrednimi, jeśli ma to sens dla typowych klientów).
Daj swoim klientom opcję rozpoczęcia tej standardowej ścieżki wydania, być może z odpowiednim terminem migracji.
Jeśli nalegają na w pełni niestandardową strategię wsparcia oddziału, po prostu odpowiednio je obciążaj, aby właściwie pokryć wszystkie dodatkowe koszty związane z oferowaniem takiego w pełni niestandardowego wsparcia - ma to tylko sens biznesowy. Niektórzy klienci przeprowadzą migrację, aby zmniejszyć koszty (co pomoże ci zmniejszyć liczbę niestandardowych oddziałów), inni nie.
Zmienne naliczanie opłat za obsługę, rosnące stopniowo wraz z wiekiem wersji wydań, z których pochodzą niestandardowe oddziały, może również zachęcać klientów do szybszej migracji do nowszych oddziałów, pomagając w szybszym zamykaniu starszych niestandardowych oddziałów. Pomoże to zmniejszyć liczbę niestandardowych oddziałów na klienta - jeśli masz klientów, którzy jednocześnie obsługują wiele wersji oprogramowania.
Upewnij się, że nie wpadniesz w pułapkę wykonywania pełnych połączeń gałęzi z / do którejkolwiek gałęzi wydania (zarówno standardowej, jak i niestandardowej), wszystkie zmiany w nich powinny być albo indywidualnie opracowane, albo wybrane połączone poprawki.
Ponieważ każda z tych gałęzi będzie stopniowo się od siebie różnić, liczba poprawek wymagających dostosowywania / indywidualnego rozwoju będzie rosła wykładniczo (zwykłe łączenie metodą „wybijanie wiśni” zakończy się niepowodzeniem). Musisz wziąć pod uwagę koszty rozwoju tych programów.
Bez (znaczących) połączeń gałęzi na zdjęciu możesz (i powinienem, nie mogę podkreślić jego znaczenia) zbudować w pełni zautomatyzowane rurociągi CI / CD dla tych gałęzi, w połączeniu z dobrym systemem śledzenia / zarządzania poprawkami, który zapewnia dostarczanie poprawek po prostu rutyna (lub prawie).
źródło
Może gdybyś utrzymywał oddziały na wersje zamiast na klientów, mogłoby to pomóc zmniejszyć ich liczbę?
W przeciwnym razie jedynym sposobem, aby naprawdę się od tego uwolnić, jest możliwość samodzielnego hostowania oprogramowania i przejścia na model SaaS, w którym można utrzymywać tylko jedną jego wersję.
źródło