W jaki sposób mogłaby wyglądać architektura platformy integracyjnej typu ConnectALL? (wybaczcie za konkretną nazwę, tak najłatwiej mi opisać o co chodzi)
Czyli sytuacja jest taka, że mamy dwa systemy do wyboru, które możemy zintegrować i synchronizować przykładowo zadania w przypadku systemów typu Jira. W jaki sposób podzielić projekt, tak aby jak najmniej kodu duplikować i uniknąć sytuacji, że po dodaniu kolejnego systemu, musimy pisać ogrom kodu dla każdej nowej kombinacji systemów?
co to jest ConnectALL? To coś takiego jak Zapier?
eee po prostu budować logikę uniwersalną i posiadać interfejs który określa komunikacje z kodem odpowiedzialnym za docelową komunikację z konkretnym serwisem. To tak jak byś budował system obługi bazy ale tak, że możesz w configu określić jaki silnik bazy użyjesz.
Tworzysz jakiś wspólny model i mapery w obie strony. Musi być na tyle ogólny, żeby pasował do wielu systemów jak i na tyle szczegółowy, że dane są wystarczające.
Alternatywnym podejściem jest napisanie mapowania dla każdej kombinacji. Możesz zrobić to tak, że używasz modelu ogólnego jako domyślnego rozwiązania i piszemy customowy kod, jeśli coś nie wpisuje się w model a warto to mieć
Odpowiedź zależy od wielu czynników, głównie to od modelu, który uda nam się wymyślić i liczby obsługiwanych dostawców
Jako, że mam doświadczenie w projektowaniu i budowie takich platform i wiem że to nie są proste rzeczy to moje pierwsze pytanie będzie ile płacisz za odpowiedź? :P
Chyba, że chcesz jakieś ogólniki, ale to lepiej będzie ci wygooglować integration platform architecture
i przeglądnąć przykładowe rozwiązania, które się tak bardzo od siebie różnią, że nie ma jednej odpowiedzi na twoje pytanie.
A nie prosciej w oparciu o arch. MOA ( Message Oriented Arch. ) - masz np. szyne ( Msg. Bus ) na przechwytywanie msg, (kolejkowanie wiadomosci ) / albo jakis serwis na zasysanie streams i kolejkowanie do innych sewisow / microserwisow. EDD / Arch zorientowana na Eventy.