czwartek, lipca 07, 2011

Wdrożenie równoległe

Joshua Kerievsky jest autorem wzorca projektowego Parallel Change. Polega on na tym, że zmiana w kodzie nie jest wprowadzana na zasadzie 'teraz będzie rozwałka i nic nie będzie działać, bo zmieniamy' tylko pojawia się równoległa ścieżka wykonawcza, której wyniki nie są brane pod uwagę w przetwarzaniu. Czasem zdarza się tak, że nie ma szans na dobre wytestowanie dużego systemu w środowisku testowym i trzeba go poddać weryfikacji na produkcji, z drugiej strony chcielibyśmy mieć tranzycję z wersji działającej na działającą. Możemy na produkcji obok wersji n uruchomić n+1, w punktach styku wersji n z systemami zewnętrznymi możemy ustawić proxy (HTTP lub JMS) replikujące wywołania usługi systemu n do n+1 (replikacja jest tylko w jedną stronę, system n+1 dostaje żądania, ale nie odsyła odpowiedzi). Kroki ludzkie powinny być wykonywane na obu systemach. Możemy sprawdzać czy stan systemu n+1 jest poprawny (porównując do n) i jeśli po okresie stabilizacji uznamy że n+1 działa bez błędów w miejscach styku usuwamy proxy i przepinamy się na nową wersję systemu. Wdrożenie równoległe jest pracochłonne, ale jest bezpieczniejsze i w globalnym ujęciu szybsze niż inne podejścia.

0 komentarze: