Refaktoryzacja usług
W ramach paradygmatu projektowania zorientowanego na usługi Refaktoryzacja usług jest wzorcem projektowym , który jest stosowany do istniejącej usługi , aby można było zmienić logikę usługi lub jej implementację bez wpływu na konsumentów usługi.
Racjonalne uzasadnienie
To naturalne, że usługa ulega zmianom z różnych powodów. Zmiana może być wymagana, ponieważ podstawowa implementacja, np. bazy danych, starsze systemy itp., wymaga aktualizacji lub po prostu dlatego, że pierwotna logika usługi nie wykorzystywała efektywnie pamięci. W innych przypadkach zmiana mogłaby zostać zainicjowana przez samych usługobiorców. Na przykład przy ograniczonym równoczesnym użytkowaniu usługa działa zgodnie z umową SLA , jednak wraz ze wzrostem jej jednoczesnego wykorzystania usługa nie jest w stanie wypełnić umowy SLA, w związku z czym usługa musi odpowiadać na rosnące wymagania dotyczące wydajności ze strony konsumentów usług.
Sytuację tę należy rozwiązać w taki sposób, aby usługa została unowocześniona bez wpływu na konsumentów, którzy już są od niej uzależnieni. Chociaż można argumentować, że spełnienie któregokolwiek z wyżej wymienionych wymagań nie powinno być problematyczne, o ile usługa honoruje swoją umowę. Niepokoi nas jednak zarówno wynik realizacji możliwości serwisowych, jak i zachowanie oraz niezawodność serwisu. Wzorzec projektowy refaktoryzacji usług zapewnia strategię, która dąży do zapewnienia, że usługa może ewoluować bez negatywnego wpływu na konsumentów.
Stosowanie
Zastosowanie tego wzorca projektowego zaleca użycie tradycyjnych technik refaktoryzacji oprogramowania . Nacisk kładziony jest na refaktoryzację usługi w mniejszych krokach, tak aby wpływ każdego kroku był na tyle mały, aby można było go odwrócić w przypadku, gdyby taka zmiana negatywnie wpłynęła na konsumentów usługi. Po drugie, aby zapewnić, że umowa o świadczenie usług pozostanie nienaruszona przez zmiany w logice lub implementacji, umowa o świadczenie usług musi być w jak największym stopniu oddzielona od produkcji. Można tego dokonać poprzez wprowadzenie elementu fasadowego pomiędzy umowę serwisową a logikę serwisową. Jest to jednak możliwe tylko wtedy, gdy umowa o świadczenie usług jest fizycznie oddzielona od jej realizacji, co można osiągnąć poprzez zastosowanie wzorca projektowego Decoupled Contract. Można to dodatkowo wzmocnić poprzez zastosowanie wzorca projektowego Contract Centralization, który opowiada się za ustanowieniem kontraktu usługi jako jedynego oficjalnego punktu wejścia do usługi.
Z drugiej strony, aby odizolować logikę usługi od negatywnych skutków zmian w implementacji usługi, można ponownie zastosować wzorzec projektowy Service Façade w celu wprowadzenia kolejnego komponentu fasady między implementacją usługi a logiką usługi. Zastosowanie abstrakcji usług może dodatkowo pomóc w ograniczeniu możliwości jakichkolwiek szkodliwych skutków spowodowanych zastosowaniem tego wzorca projektowego.
Rozważania
Zastosowanie wzorca projektowego Service Refactoring wymaga szeroko zakrojonych testów, aby zapewnić niezawodną i sprawdzoną usługę, choć nieefektywną, zachowującą ten sam poziom stabilności behawioralnej i niezawodności. Mogłoby to zwiększyć koszty projektu i wymagałoby dodatkowych procedur zapewniania jakości i ścisłego zarządzania.
Z drugiej strony, wraz z jej zastosowaniem, może nastąpić zmiana obecnych poziomów abstrakcji usługi, co z kolei wymagałoby ponownego zastosowania zasady projektowania abstrakcji usług, aby zapewnić zachowanie odpowiedniego poziomu abstrakcji usługi. W niektórych sytuacjach ograniczenie efektu zmian w logice usługi lub jej implementacji może okazać się niemożliwe i niechcący umowa serwisowa musi zostać zaktualizowana. W takim przypadku można zastosować wzorzec projektowania umów równoległych, aby usługa nadal zapewniała rozrywkę konsumentom, którzy utworzyli zależność od starej umowy, jednocześnie dostarczając zaktualizowaną umowę, która jest zgodna ze zaktualizowaną logiką usługi lub implementacją usługi .
Dalsza lektura
- Erl i in., (2009). Wzorce projektowe SOA . Sala Prentice'a. ISBN 0-13-613516-1 .
- Mauro. i in. Integracja urządzeń zorientowana na usługi - analiza wzorców projektowych SOA . [Online], s. 1–10, 2010 43. Hawajska Międzynarodowa Konferencja Nauk Systemowych, 2010. Data dostępu: 5 kwietnia 2010 r.