API czy pliki CSV? Jak wybrać sposób wymiany danych między systemami
Stan magazynowy z wczoraj może wystarczyć do raportu, ale przy sprzedaży ostatniej sztuki produktu bywa już bezużyteczny. Dlatego wymiana danych między systemami powinna odpowiadać na konkretne potrzeby procesu. Integracja przez API i okresowy import i eksport CSV sprawdzają się w różnych sytuacjach. O wyborze decydują przede wszystkim dopuszczalne opóźnienie, ilość przesyłanych danych oraz możliwości używanego oprogramowania.
API i CSV — co właściwie porównujemy?
API to interfejs, przez który programy mogą komunikować się według określonych reguł. Zależnie od dostępnych funkcji pozwala na przykład pobrać zamówienie, dodać kontrahenta albo zaktualizować stan produktu. Integracja wykorzystuje te operacje automatycznie, bez przepisywania danych przez pracownika.
CSV jest natomiast formatem pliku przechowującego dane tabelaryczne: wiersze i kolumny. Jeden system eksportuje zestaw informacji, a drugi go importuje. Takie zadanie można wykonywać ręcznie lub uruchamiać automatycznie według harmonogramu.
API opisuje sposób komunikacji, a CSV — sposób zapisu danych. Nie są więc ścisłymi przeciwieństwami: API może udostępniać plik CSV. Rozróżnienie to widać również w rządowym opracowaniu standardów otwartości danych, które osobno omawia interfejsy API i wymagania dotyczące formatów, w tym CSV.
W praktyce biznesowej wybór zwykle dotyczy komunikacji przez API albo wymiany plików przetwarzanych w określonych odstępach czasu.
Jak szybko dane muszą dotrzeć do drugiego systemu?
Najpierw ustal maksymalne akceptowalne opóźnienie. „Jak najszybciej” jest mniej użyteczne niż konkretne wymaganie: zamówienie ma trafić do magazynu w ciągu dwóch minut, a raport sprzedaży wystarczy przygotować następnego ranka.
Kiedy warto wybrać API?
Integracja przez API jest dobrym kandydatem, gdy aktualizacja uruchamia kolejną czynność, na przykład:
- nowe zamówienie powinno rozpocząć kompletację;
- zmiana dostępności produktu ma szybko pojawić się w sklepie;
- handlowiec potrzebuje aktualnego statusu realizacji w systemie obsługi klientów.
Samo API nie gwarantuje jednak natychmiastowej synchronizacji. Jeśli integracja sprawdza zmiany co godzinę, dane nadal mogą być opóźnione o godzinę. Krótszy czas reakcji można uzyskać przez częstsze odpytywanie albo powiadomienia o zdarzeniach, nazywane webhookami — o ile dostawca je udostępnia.
Kiedy wystarczy CSV?
Wymiana plików dobrze pasuje do procesów okresowych: nocnego zasilania raportów, cotygodniowej aktualizacji katalogu czy jednorazowego przeniesienia bazy produktów.
Warunkiem jest akceptacja opóźnienia. Jeżeli dane służą do porannej analizy, nocny import może całkowicie wystarczyć. Jeśli na ich podstawie system przyjmuje zamówienia przez cały dzień, taki harmonogram może powodować problemy.
Ilość danych: liczy się również to, ile się zmienia
Duży zbiór nie oznacza automatycznie konieczności użycia API. Przy pierwszym przeniesieniu kilkuset tysięcy produktów import pliku może być sprawniejszy niż wykonywanie osobnego żądania dla każdego rekordu. Trzeba jednak sprawdzić limity rozmiaru pliku, czas przetwarzania i możliwości importera.
Z kolei codzienne przesyłanie całego katalogu jest mało efektywne, jeśli zmienia się tylko niewielka część pozycji. W takiej sytuacji przydaje się wymiana przyrostowa, czyli przekazywanie wyłącznie nowych i zmienionych rekordów.
API może pozwalać na pobieranie zmian od wskazanego momentu, lecz nie każdy interfejs oferuje taką funkcję. Podobnie plik CSV może zawierać jedynie zmiany, jeżeli oba systemy potrafią je poprawnie interpretować.
Przed wyborem sprawdź:
- liczbę rekordów przy pierwszym zasileniu i podczas zwykłego dnia;
- wielkość pojedynczego rekordu;
- limity zapytań API oraz dostępność operacji zbiorczych;
- ograniczenia importu plików;
- sposób przekazywania usunięć i anulowań.
Nieobecność produktu w kolejnym pliku nie powinna samoczynnie oznaczać jego usunięcia. Taką regułę trzeba świadomie uzgodnić.
Możliwości oprogramowania mogą przesądzić o rozwiązaniu
Informacja „system ma API” to dopiero początek oceny. Interfejs może umożliwiać odczyt produktów, ale nie pozwalać na zapis zamówień. Dostęp do potrzebnych funkcji bywa też zależny od wersji programu, licencji lub dodatkowego modułu.
W przypadku CSV równie ważne są szczegóły importera. Czy aktualizuje istniejące rekordy, czy tylko dodaje nowe? Czy można uruchamiać go automatycznie? Czy zwraca listę błędnych wierszy?
W obu wariantach potrzebne jest mapowanie danych, czyli przypisanie pól jednego systemu do pól drugiego. „Kod produktu” w sklepie musi odpowiadać właściwemu identyfikatorowi w magazynie. Trzeba także ustalić jednostki miary, znaczenie statusów i system odpowiedzialny za aktualizację każdego rodzaju informacji.
| Kryterium | Integracja przez API | Import i eksport CSV |
|---|---|---|
| Częste aktualizacje | Dobrze pasuje, jeśli pozwalają na to funkcje i limity | Możliwe, jeśli eksport i import działają automatycznie |
| Duże zasilenie początkowe | Wymaga oceny operacji zbiorczych i limitów | Często praktyczne przy sprawnym importerze |
| Praca okresowa | Można uruchamiać według harmonogramu | Naturalne zastosowanie |
| Obsługa błędów | Zależna od odpowiedzi API i mechanizmów integracji | Zależna od raportów importera |
| Koszt utrzymania | Obejmuje m.in. zmiany interfejsu i dostępów | Obejmuje m.in. zmiany struktury plików i kontrolę importów |
Niezawodność wymaga więcej niż przesłania danych
Udane połączenie lub dostarczenie pliku nie oznacza jeszcze poprawnego zapisu wszystkich rekordów. Integracja powinna potwierdzać wynik przetwarzania i wskazywać, co wymaga interwencji.
Przy API zadbaj o bezpieczne ponawianie operacji
Gdy po wysłaniu zamówienia połączenie zostanie przerwane, nadawca może nie wiedzieć, czy odbiorca zdążył je zapisać. Ponowienie nie powinno tworzyć drugiego zamówienia. Pomaga w tym stały identyfikator operacji oraz sprawdzanie, czy została już wykonana.
Potrzebne są również obsługa limitów zapytań, ponowienia po chwilowych awariach i alerty, gdy zaległości rosną.
Przy CSV ustal jednoznaczny format i kontrolę plików
Należy uzgodnić kodowanie znaków, separator kolumn, zapis dat, separator dziesiętny oraz sposób oznaczania pustych wartości. Identyfikator „00125” powinien pozostać tekstem, jeśli początkowe zera mają znaczenie. Ręczna edycja w arkuszu może nieświadomie zmienić takie dane.
Automatyczny proces powinien też rozpoznawać już przetworzone pliki, pomijać pliki jeszcze kopiowane i raportować odrzucone wiersze. Dostęp do plików lub API należy ograniczyć do potrzebnego zakresu, a dane przesyłać zabezpieczonym kanałem.
Często najlepszy jest wariant mieszany
Wyobraźmy sobie hurtownię z Krakowa, która łączy system magazynowy ze sklepem internetowym. Cały katalog produktów przenosi na początku przez CSV. Później zamówienia i zmiany dostępności przekazuje przez API, a nocą wykonuje dodatkową kontrolę zgodności stanów.
Taki podział pozwala dopasować sposób wymiany do poszczególnych zadań. Nie wymaga stosowania jednego mechanizmu do wszystkich danych.
Przed wdrożeniem warto przeprowadzić próbę na reprezentatywnej próbce: z polskimi znakami, brakującymi polami, duplikatem oraz celowo błędnym rekordem. Sprawdź także zachowanie po awarii i ponownym uruchomieniu procesu.
Decyzję oprzyj na koszcie całego procesu: wdrożenia, utrzymania, pracy ręcznej oraz skutków opóźnień i błędów. Jeżeli plik dostarczany raz dziennie spełnia wymagania, CSV może być trwałym rozwiązaniem. Gdy kolejne działania zależą od szybkiej aktualizacji pojedynczych rekordów, warto zacząć od sprawdzenia możliwości API.