No więc mam następujący problem:
- Mamy kilkanaście systemów z którymi komunikować się można na przeróżne sposoby.
- Istnieje niezerowe prawdopodobieństwo, że rozbieżność pomiędzy dwoma systemami może zaowocować dużymi konsekwencjami (tzn. burdel jest, ale nie chcemy żeby przy procesie integracyjnym powstawał inny burdel).
- Dane da się podzielić na paczki.
- Została napisana taka usługa REST, która nieomylnie (założenie) wskazuje, który z systemów posiada poprawną wersję danych dla danej paczki.
- Możliwe jest napisanie funkcji mapującej paczkę danych z dowolnego systemu na dowolny.
Celem jest oczywiście uspójnienie stanów baz danych.
Proces wygląda tak:
Tworzymy strumień identyfikatorów danych do przepchnięcia, dla każdego ID'ka zaciągamy dane z systemu wskazanego przez usługę z pkt.4, potem konwertujemy na format pośredni, a potem dane w każdym systemie uaktualniamy na podstawie danych z modelu pośredniego.
Niebezpieczeństwem jest pkt. 2, tzn. jeśli w systemie N się coś wykrzaczy, to rozbieżność pomiędzy danymi w systemach N-1 i N może doprowadzić do potencjalnie kosztownych konsekwencji. Danych jest dużo i nie da raczej rady, żeby przypilnować każdej paczki z osobna.
Ktoś kiedyś przeprowadzał podobne operacje? Zabezpieczał się przed niedoskonałościami funkcji mapujących (wyjątki, błędy) i sieci? Może jeszcze coś poradzić, na co zwracać uwagę?