W odpowiedzi na proces wdrożeniowy jaki mamy w Banku i potrzebę zwinnego aplikowania zmian w konfiguracji rozwiązania pod konkretne banki proponujemy 2 ścieżki zmian:
standardowa ścieżka, zmiany/błędy/braki w mapowaniach wykryte przez Bank lub przez nas są aplikowane do core'owego rozwiązania i trafiają do Banku razem z kolejnym wdrożeniem wersji oprogramowania
szybka ścieżka, możliwość dodania nowego mapowania poprzez umieszczenie pliku w odpowiednim miejscu, który nadpisuje mapowanie core'owe do momentu zaaplikowania zmiany do core. Jedyne potrzebne działanie to utworzenie pliku w odpowiednim miejscu oraz restart konkretnych kontenerów.
Poniżej opis zmienionego mechanizmu aplikowania mapowań:
Aktualnie:
Mapowania służące do normalizacji danych bankowych znajdują się w plikach json. Tam znajdują się mapowania stringów i innych typów wartości na nasze słownikowe typy w celu unifikacji danych.
Rozszerzenie:
Dodany zostanie katalog overrides, który zostanie zmapowany na volume, tzn wystawiony poza kontener w celu umożliwienia wprowadzania zmian. Mapowania w katalogu overrides będą miały priorytet nad core'owymi mapowaniami w systemie, dzięki czemu będą mogły, do momentu zaaplikowania zmian w core, nadpisywać oryginalne mapy.
Oczywiście plik po zaczytaniu będzie walidowany i aplikowany będzie jedynie gdy nie pojawi się w nim błąd - wpp będzie w logach informacja, że plik nie jest poprawny i mapowanie nie zostanie zaaplikowane (ale same konektory uruchomią się bez problemu).
Uwaga:
Zakładamy, że zmiany wykonane na plikach przygotowywane są przez zespół banqware, dzięki czemu mamy ich świadomość i możemy je uwzględniać w naszym developmencie oraz konfiguracji, a także aplikować do mapowań core'owych.
Przykład:
Bank ABC, mapowanie typu kont
core
[
{
"source": "Payment card account",
"destination": "CurrentAccount"
},
{
"source": "Current account",
"destination": "CurrentAccount"
},
]
overrides:
[
{
"source": "Payment card account",
"destination": "CreditCard"
},
{
"source": "Some new account",
"destination": "CurrentAccount"
},
]
mapowanie wykorzystywane przez system:
[
{
"source": "Payment card account",
"destination": "CreditCard"
},
{
"source": "Current account",
"destination": "CurrentAccount"
},
{
"source": "Some new account",
"destination": "CurrentAccount"
},
]
Tzn. mapowanie nadpisujące:
dodało nowy typ konta "Some new account", który mapuje się na CurrentAccount
zmieniło mapowanie "Payment card account" by wskazywało na typ CreditCard
Zakładamy, że to wyczerpie scenariusze, który mogą pojawić się, gdy będziemy chcieli na szybko wprowadzić modyfikację w istniejącym mapowaniu.