11. CO DAJE APACHE CAMEL
• IMPLEMENTACJĘ WZORCÓW INTEGRACYJNYCH EIP
• SZEROKI WACHLARZ KOMPONENTÓW UMOŻLIWIAJĄCYCH
WYKORZYSTANIE RÓŻNYCH INTERFEJSÓW KOMUNIKACJI I
API DO SYSTEMÓW I USŁUG
• WYGODNE JĘZYKI KONFIGURACJI (DSL) DO
ROZWIĄZYWANIA PROBLEMÓW INTEGRACYJNYCH
O czym będziemy mówić:
O problemach w integrowaniu systemów i usług
O wzorcach integracyjnych jako remedium na powtarzalne problemy
O Camelu jako implementacji wzorców
Prezentacja zastosowana Camela do rozwiązania problemów integracyjnych
Podczas integrowania usług i systemów napotykamy na powtarzalne problemy:
Różne interfejsy komunikacji
Różne formaty przesyłanych danych
Niedopasowane interfejsy usług
Silne wiązania między systemami
Wiele powiązań point 2 point
Systemy i usługi wykorzystują różne kanały transportu
Nie zawsze znajdziemy wspólny kanał komunikacji
Czasami jedynym wyjściem jest zastosowanie interfejsu białkowego ( anegdota )
Format przesyłanych danych też jest często różny
Istnieje więc konieczność transformacji z jednej postaci na drugą
- Wreszcie nawet gdy mamy to szczęście i mamy system który gada WebServiceami wykorzystując XML’owego SOAPa itak może się okazać że biznesowa postać interfejsu jest inna i zachodzi konieczność transformacji przesyłanych message’y nie tylko pod kontem formatu ale także i struktury
Nawet jeżeli na etapie budowy serwisu zachowaliśmy zgodność interfejsów, może się okazać że uzależnienie od wspólnych kanału/formatu/struktury powoduje silne wiązanie pomiędzy częściami naszego systemu które skutkuje czasami koniecznością dziwnej ekwilibrystyki podczas rozwijania jednej z końcówek.
Nie zapominajmy również o wiązaniach czasowych ( uzależnienie od obecności drugiego systemu), niewydajność wołań synchronicznych
- Wiązania pomiędzy systemami mogą być szczególnie uciążliwe wraz z rosnącą ilością integrowanych końcówek
- Każde powiązanie to nowe mapowanie trasportu/formatu/struktury
Tam gdzie są powtarzalne problemy tam są i wzorcowe rozwiązania
>10 lat
Pojęcia i wzorce
Różne obszary
Nadana notacja
Wzorcowe rozwiązania
- Logo w zasadzie dromadera.
Teoria eip została zaimplementowana w postaci gotowych rozwiązań w bibliotece Camel
- a Camel can carry 4 times the load of other beasts of burden
- a Camel can travel for great distances without water; similarly a Camel does not require bucket loads of XML as you can use a pure Java DSL
- some members of the team used to love Camel cigarettes!
Władza, pieniądze, sława i sex
Takie jak idempotent consumer, resequencer, message filter, spliter, agregator ( tu mówiliśmy wcześniej)
Wiele endpointów do transportów/ systemów i technologii ( tu za chwilę zestawienie)
Dla uczulonych na xml, ale my użyjemy xml’a żeby pokazać że implementacja jest po stronie biblioteki (tu za chwilę zestawienie)
Blueprint – uniformizacja deskryptorów springowych, implementowany przez Aries
Groovy z wykorzystaniem closure’ów
Kotlin się pisze
Kontener integracyjny zbudowany z powszechnie dostępnych technologii
Komercyjnie supportowany pod nazwą Fuse przez RedHata’a
Może być traktowany jako lekka szyna integracyjna
Historia pewnego sklepu internetowego
Zbieżność faktów przypadkowa choć bardzo prawdopodobna i przemyślana ;)
Webshop i ERP komunikujące się za pomocą synchronicznych webservice’ów
Webshop nie działa gdy ERP przechodzi maintenance
Webshop musi dopasowywać się do zmian interfejsu w ERPie
Requesty webshopa wydłużają się o czas potrzebny na realizację zadań po stronie ERP’a
Super tak zróbmy!
WebShop Team nie ma czasu
ERP Team nie ma pieniędzy
Rozwiązane suboptymalne
Na dobrą sprawę jest semi synchroniczne ( trzeba wprowadzić obsługę niedostępności którejś z końcówek)
Dodajmy powiadomienia o statusach przes SMS dla klientów
Najlepiej po stronie ERP, ale znowu nie ma na to pieniędzy
Przechwycimy zmianę statusu,
Dociągniemy info o zamówieniu
Zamienimy xml’owego soap’a na jsonowego resta
Śledzenia potrafią się zwielokrotnić, wprowadzimy idempotentConsume’ra by wyeliminować powtórki
Możemy wszystko.
To obsłużcie aplikacje mobilne, wysyłające grupowe zamówienia!