Strategie
Migracji
Systemów
Michał Bieroński 218324
Mateusz Burniak 218321
Agenda
- Definicja
- Etapy
- Strategie
- Refronting
- Replacement
- Rehosting
- Rearchitecting
- Interoperation
- Retirement
- Big Bang
- Przykładowa technika
- Podsumowanie
Definicja migracji
- Konwersja lub przepisanie starego systemu
na nowocześniejszy język programowania lub OS - Przepływ technologii ze starej na nową
- Docelowo niższe koszty i lepsza współpraca
- Zwiększa niezawodność
Etapy migracji
1. Audyt
- dokumentacja zainstalowanych komponentów
- przydatny jest
- projekt systemu
- kopie oprogramowania
- jeśli brak - inwentaryzacja systemu
![](http://www.fss-finanse.pl/img/photo_2.jpg)
2. Analiza zasobów
- na podstawie dokumentacji z audytu
- lista wycofanych elementów
- uzupełnienie listy o następców dla wycofanych elementów
![](https://www.atm.org.uk/write/MediaUploads/Resources/bigstock-Modern-infographic-template-C-50890061.jpg)
3. Strategia
- przygotowanie scenariusza działań
- ścisła współpraca z klientem
- sprecyzowanie propozycji staretegii pod klienta
- możliwość podziału na etapy
- omówienie wszystkich alternatywnych rozwiązań
![](https://www.openspark.co/sites/default/files/images/openspark-event-marketing2.png)
4. Wybór rozwiązania
- porównanie proponowanych strategii
- wyłonienie najlepszej strategii na potrzeby klienta
![](https://img.clipartfest.com/1b81e947691c7c4496fb0d88667d8f3e_its-a-choice-hands-down-choice_4096-4096.jpeg)
5. Migracja
- dokonujemy migracji według ustalonego we wcześniejszych etapach planu
![](http://www.owletonline.com/images/services.jpg)
Strategie
Refronting
- Zmiana interfejsu
- Ta sama logika
- Jeśli możliwe, dodanie
interfejsu sieciowego
![](https://s3.amazonaws.com/media-p.slid.es/uploads/431621/images/3776906/a4ab848468c91db356aa8f4138043411.jpg)
Refronting - zalety
- Łatwość przeprowadzenia migracji
- Mała ingerencja w kod aplikacji
- Niski koszt
Refronting - wady
- Konieczność nauki nowego interfejsu
przez użytkowników
Replacement
- Rozbicie aplikacji na funkcjonalne komponenty
i zamiana fragmentów aplikacji - Zastąpienie kodem swoim lub innych firm
- Commercial of-the-shelf (COTS)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/431621/images/3776919/Hip-Replacement.jpg)
Rehosting
- Przeniesienie całej platformy z źródłowego środowiska bez zmian funkcjonalności
- Nie zmienia aplikacji i architektury
- Nowe możliwości zapewniane poprzez przeniesienie na nową platformę
![](http://nextitsoftware.com/wp-content/uploads/2015/06/Hand-writing-with-a-marker-aga-720200411.jpg)
Rehosting zalety
- Zmniejszone ryzyko niskiego dewelopmentu
- Szybki zwrot inwestycji
- Nie ma potrzeby na nowo wdrażać użytkowników do systemu - brak zmian funkcjonalności, architektury
- Dobre podejście by zmiejszyć koszty utrzymania i wsparcia systemu
- Preferowany, gdy aktualna logika biznesowa pozostaje konkurencyjna na rynku i jest warta zachowania
Rehosting wady
- Brak zmian w architekturze oprogramowania może oznaczać niemożliwość wykorzystania funkcjonalności oferowanych przez docelowe środowisko
Rearchitecting
- Aplikacje tworzone są od zera na nowej platformie
- Sugerowane dla aplikacji o słabej efektywności
- Wykorzystuje nowe technologie, najnowsze wzorce i paradygmaty programowania
![](https://polskiestadiony.files.wordpress.com/2009/09/sn_28082009_53.jpg)
Rearchitecting zalety
- Wykorzystanie najnowszych technologii
- Łatwo osiągnąć kompatybilność z nowym środowiskiem
- Łatwe wykorzystanie nowych funkcjonalności oferowanych przez nowe środowisko
- Szansa na zwiększenie efektywności aplikacji oraz dodanie nowych funkcjonalności
Rearchitecting wady
- Kosztowne
- Czasochłonne
- Wymaga ponownego wdrażania użytkowników, deweloperów oraz działu technicznego
Interoperation
- Nie ruszamy bezpośrednio aplikacji
- Otaczamy ją nową technologią, kiedy jest to wymagane
- Konieczność możliwej interakcji starego oprogramowania z nowym
![](http://www.dkoutletstore.com/wp-content/uploads/2016/05/Tendak-1080P-HDMI-to-AV-3RCA-CVBs-Composite-Video-Audio-Converter-Adapter-Supporting-PALNTSC-with-USB-Charge-Cable-for-PC-Laptop-Xbox-PS4-PS3-TV-STB-VHS-VCR-Camera-DVD-0-5.jpg)
Interoperation zalety
- Nie jest kosztochłonne
- Nie jest czasochłonne
- Wielu dostawców zapewnia technologie zapewniającą możliwość integracji starego oprogramowania z nowym
Interoperation wady
- Ryzykowne
- Może prowadzić do całkowitej bezużyteczności systemu - brak jego integralności z innymi modułami
- Może prowadzić do braku wsparcia dla wycofanych już technologii
- Możliwy brak oprogramowania integrującego stare wersje z nowymi
Retirement
- Wycofanie funkcjonalności, gdy przestaje być potrzebna
![](https://s3.amazonaws.com/media-p.slid.es/uploads/431621/images/3776960/retirement_intro__1329422884_6856.jpg)
Retirement - zalety
- Mniej kodu do utrzymania
Retirement - wady
- Usunięte funkcjonalności mogą okazać się potrzebne
Big Bang
- Nagłe wprowadzenie nowego systemu
i wyłączenie starego - Podobne do szybkiego odrywania plastra,
może zaboleć, ale któtko
![](https://s3.amazonaws.com/media-p.slid.es/uploads/431621/images/3777790/Noticia-97559-big_bang-cientificos-explosion.jpg)
Big Bang - zalety
- Niski koszt
- Brak konieczności utrzymania dwóch systemów
- Krótki czas wdrożenia
- Szkolenia z nowej wersji systemu
Big Bang - wady
- Wysokie ryzyko
- Wiele rzeczy może pójść źle
- Plany powrotu nie zawsze działają
Przykładowa technika
Branch by abstraction
Krok 0
Różne części systemu zależne są od dango modułu, biblioteki, frameworka, który chcemy wymienić
![](https://martinfowler.com/bliki/images/branch-by-abstraction/step-1.png)
Krok 1
Tworzymy warstwę abstrakcji, przez którą "przepuszczana" jest cała interakcja z aktualnym dostawcą.
Modyfikujemy jedną z sekcji klienta, tak by odwoływał się do dostawcy poprzez tę wartswę.
![](https://martinfowler.com/bliki/images/branch-by-abstraction/step-2.png)
Krok 2
Stopniowo wszystkie sekcje klienta powinny odwoływać się do dostawcy poprzez tę warstwę.
![](https://martinfowler.com/bliki/images/branch-by-abstraction/step-3.png)
Krok 3
Budujemy nowego dostawcę, który implementuje jedną część kodu klienta, wykorzystując zadaną warstwę abstrakcji.
Gdy jest już gotowy, przepinamy do niego obsługiwaną już sekcję klienta.
![](https://martinfowler.com/bliki/images/branch-by-abstraction/step-4.png)
Krok 4
Stopniowo przepinamy sekcje klienta do nowego dostawcy, aż do momentu gdy wszystkie sekcje są przez niego obsługiwane.
W tym momencie możemy już pozbyć się starego modułu.
![](https://martinfowler.com/bliki/images/branch-by-abstraction/step-5.png)
Podsumowanie
Źródła
- https://medium.com/aws-enterprise-collection/6-strategies-for-migrating-applications-to-the-cloud-eb4e85c412b4
- https://martinfowler.com/bliki/BranchByAbstraction.html
- https://speakerdeck.com/s0enke/software-migration-strategies
- http://www.mawos.com.pl/Files/MigracjaSystem%C3%B3wSterowania_INFO_PL.pdf
- https://www.platformmodernization.org/transvive/Lists/ResearchPapers/Attachments/1/Transvive-MainframeMigrationStrategy-WP.pdf
![](https://s3.amazonaws.com/media-p.slid.es/uploads/431621/images/3636093/0-thank-you1.jpg)
Michał Bieroński 218324
Mateusz Burniak 218321
Strategie migracji
By bierus
Strategie migracji
- 255