Integracja systemów, błędoodporność

0

No więc mam następujący problem:

  1. Mamy kilkanaście systemów z którymi komunikować się można na przeróżne sposoby.
  2. 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).
  3. Dane da się podzielić na paczki.
  4. 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.
  5. 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ę?

0

Klient/klienci muszą być przygotowani i uprzedzeni jak skomplikowana jest sprawa i że coś może pójść nie tak.

  1. Testy na realnych danych, nie tylko testowych, plus możliwie przypadki brzegowe łącznie ze sprawdzaniem czy się wykrzaczy gdy... powinno się wywalić :). Nic niezwykłego dla testów ;-)
  2. Jeśli coś się wykrzaczy "głośno" to jest poleci exception - możesz przerwać proces dla danej paczki i później sprawdzić co poszło nie tak (a najlepiej spróbować powtórzyć - transakcyjnie. Tu dobrym pomysłem były by jakieś kolejki). Jak takich błędów jest dużo, znaczy że jest sporo bugów i należało by poczekać naprawić i dopiero wtedy ruszyć z integracją.
  3. Jak coś się sypnie "cicho" - dane przeszły, wszystko cacy tylko np był bug dla danego przypadku i część danych - dajmy na to za długie nazwisko zostało strimowane , albo jakaś reguła biznesowa ma nie spójne dane - załóżmy że N+1 system zakłada, że A > B, a N zakładał że A>=B, i na 1M rekordów był taki jeden historyczny i nikt o tym nie pomyślał/zapomniał, i teraz jak dane danego hmm powiedzmy klienta wyciągamy z bazy to coś w systemie N+1 się sypie:
  • supportujecie. Na początku fajnie by było mieć programistów pod ręką, nawet 24h na dobę jeśli tak system działa, a później już standardowo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1