Integracja systemów informatycznych
Najczęściej z wykorzystaniem różnych interfejsów REST API, SOAP, GraphQL, kolejek MQTT oraz plików XML i CSV.
Integracja systemów informatycznych jest niezbędnym elementem, by osiągnąć automatyczną wymianę danych między równymi systemami, a nie rzadko i różnymi firmami. Potrzeba automatyzacji przepływu danych dotyczy zarówno małych firm jak i olbrzymich korporacji. Zazwyczaj integracja ma na celu zmniejszenie ilości ręcznie wykonywanej pracy, ale często również pozwala na śledzenie nowych metryk niedostępne wcześniej w organizacji.
Korzyści z integracji
Mniejsza ilość pracy ręcznej to większa produktywność i kreatywność zespołu.
Zwiększenie wiarygodności danych poprzez wyeliminowanie pomyłek przy wprowadzaniu danych.
Zwiększenie bezpieczeństwa przez wyeliminowanie potrzeby ręcznego importu danych.
Przyspieszenie raportowania lub wręcz umożliwienie mierzenia nowych metryk zwiększa konkurencyjność organizacji.
Automatyczny przepływ danych może poprawić komunikację i transparentność między działami/firmami zmniejszając ilość nieporozumień.
Czym jest integracja systemów informatycznych?
Mówiąc ogólnie, integracja systemów informatycznych to proces umożliwiający wymianę danych miedzy różnymi systemami IT. Pozwala im to na funkcjonalną współpracę, poprawiając komunikację pomiędzy poszczególnymi oddziałami czy procesami firmy. Integracja systemów IT umożliwia różnym systemom na korzystanie nawzajem ze swoich zasobów takich jak pliki, dane czy informacje.
Duża część przedsiębiorców bywa zaskoczona, jak czasochłonny i skomplikowany bywa proces integracji systemów IT. Powód jest prosty - niektóre systemy operują danymi w bardzo odmienny sposób i nie zawsze łatwe jest przetłumaczenie informacji z języka jednej aplikacji na język innej. Oczywiście wszystko zależy od tego, jakie oprogramowania posiada dana firma i jaki jest planowany zakres wymiany danych. Czasem może się okazać, że integracja z niektórymi systemami będą wymagać niewiele pracy, ale bywa także, że trudność może stanowić już samo wydobycie danych z jednego systemu (a zdarza się, że i z obu). Nierzadko przy integracji systemów informatycznych programiści muszą poświęcić sporo czasu na zrozumienie, w jaki sposób dane są zorganizowane i jakie jest ich znaczenie dla użytkowników systemów.
Bardzo często interesujące nas dane pochodzą i są przetwarzane przez wiele niezależnych systemów. W takim wypadku integracja każdego systemu z osobna może prowadzić do bardzo dużej ilości pojedynczych integracji i częstej duplikacji kodu (np. w różnych miejscach łącznym się z tym samym API). W takich sytuacjach warto rozważyć zbudowanie szyny integracyjnej, w której to zostanie zaimplementowana cała logika przepływu danych między systemami i każdy z systemów zostanie połączony wyłącznie z tą szyną danych.
Nasi klienci
Polski Związek Motorowy
Adamed
Polska Agencja Prasowa
Astor
IFX Payments
TEB Edukacja
Fundacja Moc Pomocy
Elemental Holding
French Touch
Polski Komitet Normalizacyjny
TU
Bergakademie Freiberg
Bank Nowy BFG
Narodowe Centrum Promieniowania Synchrotronowego SOLARIS
Astorino Kawasaki Robotics
DTK&W Zespół Ogłoszeniowy
Opegieka
Crazy shop
PartyBox
WUOZ w Krakowie
Uniwersytet Medyczny w Łodzi
Grupa Mo
Jeleniogórska Organizacja Turystyczna
eFitness
Instytut Badań Literackich PAN
Danhoss
Fundacja Sztuki, Przygody i Przyjemności ARTS
Opennet.pl
Centrum Medyczne Intermed
Centrum Rozwoju Edukacji Edicon
Winner Europe
Po amputacji
MamMoc.pl
EtnoStoria
Widzisz Wszystko
EMKA Project
NowaLed ILL
Eco Light LED
LoxiMide
Fundacja AVLab.pl
RCC Nova
Vector Controls
Virtual SMS
Parus Holdings
Biuro Partner
Optime.AI
M2M Team
Powierzono nam rozwój szyny integracyjnej będącej centralnym elementem infrastruktury IT w firmie. Szyna danych została zbudowana przy użyciu Apache Pulsar, w której również mieści się logika przepływu danych między różnymi systemami.
Głównym językiem programowani w projekcie jest Java.
Co rozważyć przed rozpoczęciem integracji?
W swojej praktyce spotkaliśmy się z wieloma różnymi sytuacjami i do każdego projektu podchodzimy indywidualnie. W integracjach jest kilka kluczowych zagadnień, które należy dokładnie omówić z klientem przed przystąpieniem do prac. Oto lista najważniejszych z nich:
- Ile systemów ma wymieniać dane? Czy tylko dwa, czy też może więcej? Nawet jeśli teraz rozważamy tylko dwa, to czy w przyszłości nie będzie potrzeby dodania kolejnych?
- Kto zarządza każdym z objętych integracją systemów? Czy wszystkie są pod kontrolą firmy, czy też niektóre są u klientów/dostawców lub w innych instytucjach?
- Czy wymiana danych ma być automatyczna czy na żądanie? Jeśli automatyczna, to czy konieczne jest działanie w czasie rzeczywistym, czy też można lub trzeba realizować ją w większych interwałach czasowych? A może wymiana danych ma być uruchamiana w efekcie jakiejś akcji jednego z systemów lub ludzkiego operatora?
- Jaki będzie kierunek przepływu danych? Czy tylko z systemu A do systemu B, czy też w obu kierunkach?
- Co z konfliktami danych? Czy może się okazać, że dane w jednym systemie są sprzeczne z danymi w drugim systemie? Jeśli tak, to który z systemów ma rolę nadrzędną? A może konflikty należy pozostawić do rozwiązania człowiekowi?
- Czy wszystkie objęte projektem integracyjnym systemy udostępniają jakąś formę interfejsu wymiany danych? Czy jest jakieś API, a może konieczne będzie łączenie się bezpośrednio do bazy danych lub zaimplementować jakąś formę wymiany plików? Czy API (jeśli jest) jest udokumentowane, a dokumentacja jest aktualna, czy też trzeba będzie je "rozpracowywać"?
- Czy zachodzi potrzeba komunikacji z maszynami/sterownikami PLC/mikrokontrolerami? Warto ustalić po jakim standardzie rozmawia dane urządzenie i czy mamy kontakt do producenta/dystrybutora w celu uzyskania specyfikacji. W firmie ImpiCode wielokrotnie łączyliśmy się z urządzeniami, zarówno po porcie szeregowym, jak i przy pomocy przemysłowych protokołów komunikacyjnych (np. EtherNet/IP, EtherCAT, Modbus) by uzyskać niezbędne dane potrzebne dla systemów IT.
To tylko kilka najważniejszych kwestii, które pomogą określić pracochłonność projektu integracyjnego.
Najpopularniejsze interfejsy komunikacji z systemami
REST API
Jest najpopularniejszą metodą komunikacji z systemami. Zazwyczaj nie sprawia większych problemów z integracją. Czasami występują problemy ze słabo udokumentowanymi niestandardowymi metodami autoryzacji.
GraphQL API
Zyskujący na popularności standard, pozwala odpytywać serwer o dane (tylko odczyt). Ogranicza ilość zapytań o dane do serwera, gdyż to klient definiuje, jakie warunki mają spełniać pobrane dane oraz jakie informacje/pola mają zawierać.
WebSockets
W tym standardzie obie strony inicjalizują stałe połączenie i przesyłają między sobą komunikaty. W przeciwieństwie do pozostałych architektur komunikacja w tym standardzie posiada stan, a te same wiadomości mogą zwracać różny rezultat w zależności od poprzednich komunikatów.
SOAP API
Komunikacja w modelu SOAP często występuje w starszych z dłuższą historią systemach (np. ERP) jak i w systemach rządowych. Konfiguracja komunikacji jest zdefiniowana w plikach WSDL i dla większości języków programowania istnieją narzędzia, które z danego pliku WSDL wygenerują odpowiedni kod API.
MQTT
MQTT to lekki protokół komunikacyjny opierający się na wzorcu Publisher-Subscriber. Integracje z MQTT są często spotykane w zastosowaniach IoT, gdzie kluczowa jest efektywna i niezawodna wymiana danych między rozproszonymi urządzeniami.
SQL
Integracja systemów poprzez SQL polega na udzieleniu dostępu do bazy danych systemu. Rozwiązanie to niesie wiele zagrożeń bezpieczeństwa oraz duże ryzyko dezaktualizacji integracji po aktualizacji systemu.
Pliki
Wymiana danych poprzez pliki często jest spotykana w systemach, które w swym założeniu mogą działać bez dostępu do sieci i wspierają ręczne importy i eksporty danych. Zazwyczaj wykorzystuje się pliki w formacie CSV, XML, XLS.
EDIFACT
Międzynarodowy standard (utworzony w ramach ONZ) opisujący elektroniczną wymianę danych w sektorach administracji, handlu i transporcie. Opisuje obszerni jak przesłać różne parametry transakcji biznesowych, tak by żadna ze stron nie musiała tworzyć własnych nagłówków.
gRPC
Unowocześniona wersja JSON-RPC. Może posłużyć do łączenia różnych mikroserwisów (napisanych nawet w różnych językach programowania) przez wywoływanie funkcji w innym serwisie, i otrzymywania rezultatu wykonanego kodu.
Kiedy integracja systemów IT jest możliwa?
Jeśli systemy udostępniają API lub inny mechanizm umożliwiający uzyskanie ustrukturyzowanych danych wtedy mamy pewność, że integracja jest możliwa.
Kłopoty zaczynają się wówczas, gdy któryś z systemów nie tylko nie udostępnia API, lecz również (mniej lub bardziej celowo) utrudnia inne formy wymiany danych. Niemniej jednak również w takich przypadkach wymiana danych zazwyczaj jest możliwa (np. bot symulujące użytkownika systemu), jednak znaczącą wzrasta ryzyko zawodności takiego rozwiązania i konieczności częstego supportowania (częściej zachodzą zmiany na UI/UX niż w API).
Większość dużych dostawców oprogramowania udostępnia API do swoich systemów, nie zawsze jednak dają oni możliwość integracji wszystkim swoim klientom, często w takim wypadku warto zwrócić się do partnerów technologicznych takich firm, którzy chętniej udostępniają API.
W przypadku systemów mniejszych dostawców warto skontaktować się z daną firmą i poprosić ich o wystawienie/zaimplementowanie danego API (czasami odpłatnie). Jeśli to nie pomoże może spróbować namówić dostawcę o wystawienie odpowiednio ograniczonego dostępu do bazy danych. W razie potrzeby możemy reprezentować Twoją firmę podczas takiej rozmowy.
Wybrane systemy z jakimi można się zintegrować
W firmie ImpiCode zrealizowaliśmy wiele różnych integracji, poniżej przedstawiamy najpopularniejsze na polskim rynku oprogramowania, dla których możemy zaimplementować integracje. Jeśli nie widzisz loga, które Cię interesuje, nic nie szkodzi, nie ma tu wszystkich systemów, z którymi się łączyliśmy, ponadto w znacznej większości przypadków bez większych problemów łączymy się z nieznanymi nam do tej pory systemami. Jeśli masz do zintegrowania jakieś rozwiązanie, napisz do nas, powiemy Ci czy jest możliwe i ile będzie kosztowało.
Oprogramowania klasy ERP
Oprogramowania klasy CRM
Oprogramowanie do współpracy i komunikacji
Systemy administracji publicznej i rządowe
To tylko nieliczne oprogramowania z którymi można się zintegrować, masz jakieś inne do zintegrowania?
Napisz do nas!
Kiedy warto integrować systemy informatyczne?
Przedsiębiorstwa integrują systemy informatyczne głównie dla poprawy wydajności i jakości działań w firmie, bowiem jej zastosowanie zmniejsza koszty utrzymania wielu systemów. Jest to świetne rozwiązanie dla firm, które pracują na wielu niezintegrowanych systemach i tracą dużo czasu na ręczne wprowadzanie danych, informacji czy plików do każdego z systemów. Dzięki automatycznej integracji można uniknąć przepisywania danych oraz niechcianych błędów, które pojawiają się przy wielokrotnym wprowadzaniu tych samych danych np. literówka w danych kontaktowych klienta. Jeśli pracownicy Twojej firmy dużo czasu poświęcają na pracę w trybie "kopiuj-wklej", prawdopodobnie warto rozważyć integrację.
Na czym polega integracja systemów informatycznych?
Proces integracji systemów informatycznych bywa zadaniem dość prostym, ale w zależności od złożoności procesu i organizacji może też być dużym przedsięwzięciem. W najprostszym przypadku wymaga tylko zaimplementowania integracji z poziomu jednego z systemów (np. utworzenia funkcji wysyłającej zapytanie do API drugiego systemu i zapisanie tych danych w danym systemie).
Zdarza się również, że z powodów technicznych lub licencyjnych nie możemy modyfikować/dopisywać własnych akcji/skryptów. Konieczne jest wówczas przygotowanie kolektora, czyli dodatkowej aplikacji, która łączy z oboma systemami i pośredniczy w wymianie danych. Zazwyczaj taki kolektor jest uruchamiany cyklicznie, np. raz na 15 min.
W przypadku złożonych procesów lub gdy interesujące nas dane przechodzą przez wiele niezależnych systemów, może zajść potrzeba wielu niezależnych integracji między systemami. Np. gdy pracownik BOK przyjmuje zgłoszenie o zmianie adresu firmy, informacja o tym powinna trafić do wielu systemów (np. księgowego, CRMu, spedycyjnego). Klient tej firmy może również poinformować o zmianie adresu handlowca firmy, który pracuje wyłącznie w swoim CRM, zaś zmiana adresu musi nastąpić w każdym z systemów. W takim wypadku zmiana adresu, w którym kol wiek z systemów powinna uruchamiać procedurę rozsyłającą nowy adres do każdego z systemów.
Do takich właśnie zastosowania najlepiej nadaje się Szyna Integracyjna. Integrujemy wtedy wszystkie systemy wyłącznie z szyną, implementujemy w niej funkcję ustawiania nowego adres, oraz śledzenie zmiany adresów w systemie, które spowodują odpalenie funkcji. Dzięki temu nie duplikujemy kodu odpowiedzialnego za integracje z API oraz logiką rozsyłania nowego adresu.
Wyróżnia się dwa podstawowe rodzaje integracji systemów IT – jednokierunkową i dwukierunkową. W pierwszej z nich jeden z systemów tylko wysyła, a drugi odbiera dane. Natomiast integracja dwukierunkowa zakłada, że systemy wzajemnie uzupełniają swoje zasoby danych.
Integracja systemów informatycznych zachodzi w pierwszej kolejności poprzez różnego rodzaju API, czyli moduły oprogramowania stworzone specjalnie w celu umożliwienia wymiany danych i tę wymianę kontrolujące. Zapewnia to, że każdy nowy rekord dodany lub pobrany przez API będzie miał prawidłowy format i zostanie właściwie przetworzony. To rozwiązanie jest najprostszym z możliwych, ponieważ API dba o zachowanie standardu komunikacji i nie pozwoli na przesłanie danych niespełniających wyznaczonych standardów. Zwykle API obsługują szeroko stosowane standardy i protokoły wymiany danych (najczęściej XML, JSON, webservice, http/https, SOAP, REST), dzięki czemu integracja staje się jeszcze łatwiejsza.
W przypadku braku API w systemie integracja nadal jest możliwa, choćby przez bezpośredni dostęp do bazy danych. To rozwiązanie jest jednak bardziej skomplikowane. Wymaga zdecydowanie większej wiedzy na temat systemu i jego działania, przez co na ogół wymaga więcej pracy. Bywa tak, że dodanie czegoś, co w systemie źródłowym jest jednym rekordem, wymusza utworzenie kilku rekordów w różnych tabelach w systemie docelowym. Czyli programista musi zadbać o coś, co normalnie byłoby realizowane przez moduł obsługujący API. Co więcej, API zapewnia, że wymiana danych będzie działać, niezależnie od tego, jak zmieni się system (np. wskutek aktualizacji). Bezpośrednie połączenie z bazą danych nie daje tego bezpieczeństwa i może okazać się, że aktualizacja systemu wymusi aktualizację modułu oprogramowania integrującego.
Są przypadki, w których nie ma możliwości komunikacji przez API ani przez bazy danych. W takiej sytuacji jakimś rozwiązaniem może być wymiana przez pliki. Może to być wymiana "ręczna" (na zasadzie pobrania pliku z jednego systemu i wysłania do drugiego), ale bywa też tak, że może być zautomatyzowana, jeśli jeden z systemów może odczytywać pliki z dysku sieciowego lub innego serwera.
W skrajnych przypadkach w kontekście integracji, kiedy nie da się problemu rozwiązać inaczej, można próbować korzystać z technik reverse engineering (inżynierii odwrotnej) oraz tworzeniu specjalnych botów symulujących działanie użytkowników.
Koszt integracji systemów IT
W zależności od sposobu integracji i zakresu wymiany danych koszty integracji systemów informatycznych mogą się bardzo różnić. Prosta integracja poprzez dobrze udokumentowane API bez złożonej logiki przetwarzania danych zazwyczaj da się wykonać w kilka dni (koszt kilku-kilkunastu tysięcy zł). Takie mikro projekty najczęściej realizujemy w ramach 80 godzinowego pakietu konsultingowo-programistycznego (koszt ok. 20 000 zł), w ramach którego połączymy się z API i zaimplementujemy niezbędną integrację. Niewykorzystane godziny prac będziesz mógł wykorzystać na szerszą integrację z API lub zautomatyzujemy inny pokrewny proces w Twojej firmie.
Integracje z API mogą być też zdecydowanie bardziej pracochłonne, np. w przypadku połączenia z rządowymi systemem "System e-zdrowie" (P1) samo ustalenie zakresu niezbędnych uprawnieni, komunikacja z urzędnikami w celu uzyskania odpowiednich kluczy, weryfikacja przyznanych uprawnieni i implementacja łączności i uwierzytelniania z API może pochłonąć od 120 do 200 godzin. Tutaj w całym tym procesie reprezentujemy klienta w komunikacji z urzędnikami, by możliwie najszybciej uzyskać właściwy dostęp do systemu. Następnie należy uwzględnić pracochłonność implementacji akcji do wykonania po API, w tym wypadku wynosiło to od 16 do 40 godzin. I tak w zależności od zakresu integracji z tym konkretnym systemem rządowym koszt integracji może dość szybko przekroczyć kwotę 50 000 zł.
Do tej pory omawialiśmy integracje z pojedynczym API, w przypadku bardziej złożonej infrastruktury i konieczności budowania szyny integracyjnej warto rozważyć pracę iteracyjnie. Na początku wybrać najpilniejsze dwa/trzy systemy do zintegrowania z szyną i wyłącznie w najważniejszym zakresie. Po wykonaniu i wdrożeniu tej integracji zacząć iteracyjnie rozszerzać o kolejne system i zakresy funkcjonalności. W takim wypadku warto rozważyć dłuższą współpracę w wymiarze 80/160 godzin miesięcznie (ok. 16 000 / 32 000 zł miesięcznie), gdzie przypisany do Twojego projektu konkretny programista i Team Leader będzie systematycznie poznawał procesy panujące w Twojej firmie i implementował kolejne integrację. Po roku takiej współpracy nawet duże organizacje będą miały w znacznej większości zautomatyzowane procesy firmowe.
Wyzwania związane z integracją systemów
Duża część problemów związanych z integracją systemów IT nie wynika z technicznych kwestii, ale z kwestii zarządzania takim systemem i jego ewentualnymi zmianami. Np. jeden z objętych integracją systemów może po jakimś czasie użytkowania zostać zaktualizowany, co może mieć wpływ na jego działania. Aktualizacji może ulec także API. W przypadku takiej zmiany może się okazać konieczna zmiana również rozwiązania integrującego.
Decydując się na integrację, należy pamiętać, że aktualizacja każdego z objętych nią systemów musi uwzględnić działanie integratora. Gdy mowa o własnych wewnętrznych systemach, zwykle nie jest to duży problem. Niestety bywa, że zewnętrzny dostawca lub operator zewnętrznego systemu decyduje się na aktualizację (a praktyka pokazuje, że czasem dzieje się to bez ostrzeżenia). W takiej sytuacji należy liczyć się z tym, że wymiana danych między systemami przestanie działać do czasu aktualizacji rozwiązania integrującego. Wiąże się to z dodatkowymi kosztami czy przestojami w pracy. Dlatego w niektórych sytuacjach warto objąć integrację stałą opieką techniczną.
Inną kwestią jest, że przeprowadzenie integracji własnymi zasobami IT (jeśli je mamy) nie zawsze jest możliwe. Wiele firm ma trudności ze znalezieniem pracowników o umiejętnościach niezbędnych do konkretnej integracji. Zresztą angażowanie pracownika pod tylko ten jeden projekt nie zawsze jest opłacalne. Dlatego warto takie zadanie powierzyć nam, prawdopodobnie wykonamy dane integracje znacznie szybciej, bazując na naszych doświadczeniach. Ponadto doświadczenie zdobyte w ponad stu projektach pozwala nam przewidzieć potencjalne awarie API i już zawczasu oprogramować ich obsługę.