Jak rozwiązywać typowe problemy integracji legacy systems
Być może w Twojej firmie funkcjonują legacy systems i stoisz przed wyzwaniem ich integracji? W tym artykule podzielę się z Tobą praktycznymi wskazówkami i radami, które pomogą Ci sprostać temu wyzwaniu.
Co to są legacy systems?
Pojęcie legacy system może być różnie rozumiane, w zależności od osoby posługującej się tym terminem. Najczęściej mówi się, że legacy system to przestarzałe oprogramowanie czy technologia, które są trudne i/lub kosztowne do zmiany na nowsze rozwiązanie.
Jednak legacy system nie zawsze musi być „stary” w dosłownym znaczeniu.
O tym, że będzie to legacy system, świadczą pewne jego cechy, widziane przez osoby pracujące z tym systemem. Osoba odpowiedzialna za utrzymanie takiego legacy system będzie borykać się z dużą ilością błędów lub nagłymi problemami ze stabilnością. Programiści będą narzekać na brak wsparcia i stare wersje narzędzi i bibliotek, które bardzo trudno jest aktualizować. Dla analityków i projektantów nie będzie odpowiedniej dokumentacji.
Z perspektywy całej firmy, legacy systems to wyzwania związane z zaspokojeniem rosnących potrzeb biznesowych oraz kłopot z integracją przestarzałej technologii z nowszymi rozwiązaniami.
Integracja legacy systems – wyzwania
Zdarza się, że dobrze działający system, który nie ma jeszcze biznesowego uzasadnienia do zmiany, jest trudnym przypadkiem w kontekście integracji z innymi systemami firmy.
Dlaczego? Największym problemem, jaki mają systemy zastane, to brak nowoczesnych interfejsów oraz API, bez których nie można łatwo zintegrować kluczowych dla biznesu platform. Jakie są więc najpowszechniejsze opcje integracji legacy systems?
Sposoby integracji legacy systems
Legacy systems mogą mieć różne opcje integracji. Zwykle spotykamy się z poniższymi przypadkami.
- Legacy system posiada API REST lub SOAP – i jest to zazwyczaj najlepsza sytuacja w kontekście integracji legacy systems. Integracje za pomocą API umożliwiają łatwą komunikację między różnymi technologiami, językami programowania i platformami, co jest kluczowe w przypadku integracji aplikacji i systemów legacy z nowszymi systemami.
- Legacy system nie ma API – w tym przypadku niestety pozostaje nam próba integracji przez dostęp do bazy danych. Należy tutaj pamiętać, że jeżeli inny system ma ingerować w bazę danych, to należy zachować szczególną ostrożność (więcej o zagrożeniach poniżej).
- Legacy system umożliwia tylko wymianę plików – w niektórych legacy software i systemach zastanych, można napotkać, mechanizmy do komunikacji przez wymianę plików (XML, CSV, XLS), zarówno uruchamiane ręcznie lub działające automatycznie.
Która metoda integracji legacy systems jest najkorzystniejsza?
Jak widzisz, legacy systems mogą mieć różne opcje integracji. Z perspektywy dzisiejszego szybko rozwijającego się świata i konieczności budowania biznesów zwinnych i elastycznych, firmy powinny stawiać – w kontekście integracji systemów – na szybką wymianę danych.
Do minimum powinien być sprowadzony czas pomiędzy wystąpieniem zdarzenia w systemie X a przekazaniem informacji do systemu Y. Taka szybka migracja danych jest oczekiwana w handlu online, np. przy składaniu zamówienia, zmianie ceny, aktualizacji stanów magazynowych czy w branży produkcyjnej, np. przy zmianie planu produkcji.
Oczywiście są sytuacje, w których integracja działa z opóźnieniem, ponieważ nie ma potrzeby, aby dane przepływały natychmiast. Dzieje się tak na przykład przy rekomendacjach i ofertach promocyjnych wysyłanych niezdecydowanym klientom. Wraz z rozwojem systemów opartych o data science i AI, jednak i tutaj ten czas będzie się skracać.
Aby sprostać wymaganiom związanym z szybkością przesyłania danych, najlepszym rozwiązaniem przy integracji legacy systems jest wykorzystanie API REST, ewentualnie API SOAP, tak, aby system, w którym wystąpiło dane zdarzenie, niezwłocznie informował o tym inne systemy. Oba rodzaje API służą do integracji systemów, ale REST jest częściej stosowany ze względu na prostotę i elastyczność.
Co jednak w sytuacji, gdy API jest starego typu lub wykorzystanie go nie jest w ogóle możliwe?
Za chwilę przekonasz się, jak poradzić sobie z najczęściej występującymi wyzwaniami w kontekście integracji legacy systems.
Integracja legacy systems – wyzwanie / rozwiązanie
Wiedząc już, z czym się mierzymy i jakie efekty chcemy osiągnąć, zobaczmy, jak rozwiązać najpowszechniejsze wyzwania, które generują legacy systems. Dla każdego z nich mamy też rozwiązanie, aby pokazać Ci, jak możesz sobie z nimi poradzić.
Wyzwanie 1 / System posiada „legacy” API
Zdarza się, że system zastany, który należy zintegrować z innymi, posiada API, ale niestety używa ono niestandardowych protokołów lub formatów danych. Takie „legacy” API będzie raczej trudne do użycia.
Rozwiązanie: W takiej sytuacji dobrym wyjściem będzie przygotowanie współczesnego API np. REST, które będzie udostępnione w organizacji, ale oparte będzie o „legacy” API. Dobrym narzędziem do realizacji tego pomysłu będą rozwiązania integracyjne klasy ESB lub biblioteki integracyjne np. Apache Camel.
Wyzwanie 2 / API zawsze zwraca wszystkie dane
Innym spotykanym problemem są API, które umożliwiają pobranie tylko wszystkich danych konkretnego typu, bez możliwości wybrania tylko danych zmienionych. Na przykład, zamiast tylko najnowszych zamówień, można pobrać wszystkie zamówienia w ogóle lub wszystkie zamówienia konkretnego typu.
Taki sposób działania jest bardzo nieefektywny, zwłaszcza jeśli masz dużo danych historycznych. Pozostałe systemy w firmie potrzebowałyby dużo zasobów, aby za każdym razem przetworzyć taką ilość danych i wybrać tylko to, co się zmieniło.
Rozwiązanie: Aby zniwelować powyższy problem, można przygotować komponent, który będzie odczytywał dane z API, a następnie wykrywał zmiany i tylko zmienione obiekty wysyłał do docelowych systemów. Wykrywanie zmian można zrealizować przez high watermark, jeżeli dane, które przetwarzamy, są tylko dodawane. Jeżeli dane są zarówno dodawane, jak i zmieniane, wówczas można wyznaczyć sumę kontrolną np. za pomocą algorytmu MD5 i zapisać ją, aby na tej podstawie przy kolejnym przetwarzaniu danych wykryć, czy dane są zmieniły, czy nie. Liczenie sumy kontrolnej jest też użyteczne, jeżeli zależy Ci na wykryciu zmian tylko na wybranych atrybutach, a nie dowolnych zmianach obiektu.
Takie rozwiązanie zmieni schemat komunikacji legacy software, jednak będzie o wiele efektywniej informować docelowy system o zmianach.
Co więcej, jeżeli w przyszłości zdecydujesz się na modernizację legacy system lub wymianę go na nowy, w którym API będzie pozwalało na bardziej efektywne integrowanie zmian, to nie musi to wiązać się z dużymi zmianami w Twoim podejściu do integracji.
Wyzwanie 3 / Legacy system wysyła plik ze wszystkimi danymi
Częstym przypadkiem, zwłaszcza w legacy systems, są mechanizmy integracji oparte o generowanie plików zawierających kompletne dane wszystkich obiektów np. Produkty z systemu PIM. Tak jak wcześniej wspomniałem, pożądaną sytuacją jest przesyłanie danych, które uległy zmianie. Ten przypadek jest podobny do sytuacji z API, które zwraca wszystkie dane.
Rozwiązanie: Sposób rozwiązania jest podobny jak wcześniej – należy dodać komponent, który wykryje zmiany w danych. Różnicą będzie sposób pozyskania danych, czyli czytanie plików zamiast pobieranie ich z API.
Co prawda, nie będziesz w stanie skrócić czasu, po jakim zmiany dotrą do systemu docelowego, ale z perspektywy organizacji uda Ci się wymienić dane między systemami przez łatwo konsumowalne API. Systemy docelowe dostaną tylko zmienione dane, dzięki czemu Twoje procesy integracyjne zostaną przestawione na bardziej nowoczesne tory.
Wyzwanie 4 / Legacy system nie ma żadnego API
Jak już wiesz, dużo lepszą sytuacją będzie, gdy legacy system posiada jakiekolwiek API. Niestety, czasami nie jest możliwe dodanie API w rozsądnym czasie. Co zrobić w takiej sytuacji?
Rozwiązanie: Możesz pokusić się o bezpośrednią integrację z bazą danych systemu legacy. O ile sam odczyt z takiej bazy nie stanowi raczej zagrożenia dla systemu, ponieważ nic się nie zmienia, to z modyfikacją danych należy szczególnie uważać. Zapisując dane do tabel innego systemu, musisz mieć pewność, że reguły biznesowe są odwzorowane, ponieważ jeżeli się pomylisz, spowodujesz błędy w tym systemie. Trzeba mieć na uwadze to ryzyko, decydując się na powyższe rozwiązanie.
System legacy nie taki straszny!
Jak widać nawet systemy, które z perspektywy integracji wydają się legacy, będziesz w stanie zintegrować z innymi systemami w Twojej firmie. Nie wyeliminujesz niektórych bolączek, ale zrobisz już duży krok w kierunku efektywnych i nowoczesnych integracji systemów w organizacji. Takie przyszłościowe podejście zaowocuje, kiedy zaczniesz w końcu modernizować lub wymieniać systemy legacy.
Masz więcej pytań na temat integracji legacy systems?