Aplikacja z wykorzystaniem Traccar – nowoczesnego serwera lokalizacji urządzeń. Od czego zacząć?

Rozwój technologiczny rozpędził się na dobre. Zapotrzebowanie na funkcjonalne aplikacje rośnie, a co za tym idzie coraz więcej z nich wykorzystuje systemy lokalizacji GPS. Znajdują one zastosowanie w dużo szerszej gamie aplikacji niż jeszcze 10-15 lat temu. Mam tu na myśli wszelkiego rodzaju portale społecznościowe, aplikacje randkowe, czy też aplikacje pozwalające na zamawianie usług transportu samochodowego.

Każda z nich w mniejszym lub większym stopniu wykorzystuje informacje o pozycjach użytkowników. Obecnie jest tego naprawdę sporo. W itCraft, w ostatnim czasie, również pojawił się projekt systemu, który będzie miał za zadanie odbieranie informacji o lokalizacjach urządzeń. Kiedy się o tym dowiedzieliśmy, jednym z pierwszych pytań na które postanowiliśmy uzyskać odpowiedź było:

Czy warto pisać własne narzędzie czy lepiej byłoby wykorzystać któryś z gotowych serwerów Open Source?

Chcąc odpowiedzieć na to pytanie, przeprowadziliśmy szczegółową analizę funkcjonalności, których wymaga nasz projekt oraz spróbowaliśmy wyodrębnić wszystkie za i przeciw dla obu przypadków.

A może napiszemy własne rozwiązanie?

Na pierwszy ogień poszedł wariant z napisaniem własnego narzędzia. Bardzo istotnym argumentem, przemawiającym za takim rozwiązaniem było to, że mielibyśmy pełną kontrolę nad funkcjonalnościami serwera. Chodzi tutaj o uniknięcie sytuacji, gdy podczas korzystania z gotowego narzędzia natkniemy się na ścianę, która nie pozwoli na zrealizowanie jakieś specyficznej funkcjonalności. Minusem był natomiast fakt, że na zaprojektowanie oraz implementację takiego serwera potrzeba sporo czasu oraz pracy wielu osób. Warto również dodać, że aby takie narzędzie prawidłowo spełniało swoją rolę, powinno być bardzo dokładnie przemyślane, a sam kod źródłowy odpowiednio zoptymalizowany oraz na bieżąco wspierany.

To wszystko wiąże się ogromnym nakładem pracy, a co za tym idzie dużymi kosztami. W wyniku tego kontrargumentu, do ogródka z własnym rozwiązaniem wpadł mniej więcej tej samej wielkości kamyk co wyżej wspomniany plus. Podjęliśmy więc decyzję, aby sprawdzić co tak naprawdę mamy do dyspozycji, jeśli chodzi o gotowe serwery oraz czy któryś z nich sprosta naszym potrzebom. Mówiąc krótko, zróbmy research!

Jak znaleźć gotowe narzędzie które będzie odpowiadało naszym potrzebom?

Tutaj, jak zawsze, pomocą służy stary, poczciwy wujek Google. Jak się okazało, w sieci istnieje wiele porównań oraz opinii na temat najbardziej popularnych serwerów lokalizacji GPS. Głównymi kryteriami, które wyznaczały kierunek naszego poszukiwania były:

  • cena – najlepiej, żeby narzędzie było darmowe,
  • otwarty dostęp do kodu źródłowego – Open Source – być może, w miarę rozwoju projektu, zaistnieje potrzeba modyfikacji pewnych funkcjonalności,
  • zakres funkcjonalności, który w możliwie jak największym stopniu będzie pokrywał nasze zapotrzebowanie,
  • zależało nam również, aby oprogramowanie było na bieżąco wspierane oraz posiadało dobrą dokumentację – to zawsze pomaga w pracy.

Podczas naszych poszukiwań, natknęliśmy się na parę powtarzających się tytułów, między innymi: OpenGTS, Traccar, GPSWOX. Szczególną uwagę zwrócił na siebie ten drugi, głównie ze względu na to, że jest w pełni darmowy, napisany w Javie oraz na bieżąco uaktualniany. Ponadto miał bardzo dobre opinie, a sami twórcy obiecują wysoką wydajność serwera. Brzmi zachęcająco, więc postanowiliśmy dowiedzieć się o nim czegoś więcej. Kolejnym krokiem było zapoznanie się z narzędziem oraz zweryfikowanie pokrycia funkcjonalnego z naszymi wymaganiami.

Traccar – co dokładnie kryje się pod tą nazwą?

Zacznę od paru ogólnych informacji. Traccar Ltd to tak naprawdę nazwa spółki specjalizującej się w usługach śledzenia urządzeń GPS oraz wytwarzaniu oprogramowania. Sama platforma Traccar to ich produkt, który został zaprojektowany oraz zaimplementowany przez ponad 50-cio osobowy zespół – w tym pracowników firmy Traccar Ltd oraz zewnętrznych specjalistów. A więc możemy mieć pewność, że są to ludzie, którzy znają się na temacie.

Idąc dalej, na oficjalnej stronie projektu można znaleźć informację, że platforma Traccar jest wykorzystywana przez tysiące firm w ponad 140 krajach na całym świecie, co robi spore wrażenie. Serwer znajduje swoje zastosowanie w wielu, różnego rodzaju aplikacjach. Dla przykładu są to systemu śledzące lokalizację pojazdów oraz przedstawiające ich pozycje na mapie, aplikacje pomagające w znalezieniu najbliższych punktów POI lub programy obliczające oraz prezentujące odległość pomiędzy urządzeniami mobilnymi. To wszystko sugeruje nam, że mamy do czynienia z poważnym projektem, stworzonym przez zespół specjalistów z dziedziny lokalizowania GPS.

A jak to wygląda od strony technicznej?

Zobaczmy co dokładnie kryje się pod określeniem “Nowoczesna platforma lokalizacji GPS”. Przede wszystkim oprogramowanie możemy podzielić na dwa najważniejsze moduły: wieloplatformowy serwer oraz interfejs webowy. Do tego mamy do dyspozycji przykładowe aplikacje na systemy Android oraz iOS.

Protokoły, urządzenia GPS, notyfikatory

Serwer obsługuje ponad 170 protokołów komunikacji oraz wspiera ponad 1500 rodzajów urządzeń GPS, pozwala definiować grupy i obszary, a jeśli chodzi o powiadomienia to udostępnia kilka podstawowych notyfikatorów, opartych na zdarzeniach oraz pozwala wysyłać alarmy. Ponadto, przechowuje i udostępnia raporty na temat historii śledzonych urządzeń. Warto również wspomnieć, że jest to narzędzie na liberalnej licencji Apache License 2.0, pozwalającej na komercyjne wykorzystanie oraz modyfikacje kodu źródłowego. Do tego dokumentacja wygląda bardzo dobrze. Jak na początek brzmi całkiem fajnie, co dalej?

Instalator dla Windows, Linux oraz iOS

Z oficjalnej strony projektu możemy pobrać gotowy instalator. Do dyspozycji mamy wersje na systemy Windows, Linux oraz iOS. W przypadku, gdy chcielibyśmy przystosować nasz serwer do własnych potrzeb i wymagań, możemy definiować wiele parametrów konfiguracyjnych.

REST API i Realtime API

Jeśli chodzi o kontakt z serwerem to głównym kanałem komunikacji jest REST API, natomiast w ostatnich wersjach dodano również Realtime API, pozwalające na odbieranie informacji od serwera w czasie rzeczywistym. Co do autentykacji, mamy dwie opcje do wyboru: ciasteczka lub nagłówek HTTP. Dodatkowo, interfejs webowy pozwala na zarządzanie wszystkimi funkcjonalnościami serwera oraz pomaga dobrze zrozumieć jego działanie. Jeżeli chodzi o przedstawienie projektu, to by było na tyle.

Jak serwer sprawdza się w praktyce?

To chyba jedna z najważniejszych, jeśli nie najważniejsza kwestia, którą należało zweryfikować, mianowicie jak serwer poradzi sobie z dużym obciążeniem zapytań? Autorzy oprogramowania twierdzą, że zostało ono przetestowane na około stu tysiącach użytkowników oraz z odpowiednią konfiguracją sprzętową poradzi sobie z ośmioma tysiącami zapytań na sekundę. Można polegać tylko i wyłącznie na ich opinii lecz wyszliśmy z założenia, że chcemy mieć pewność i przetestujemy to na własną rękę. Napisaliśmy zatem test w JMeter. Wymagania naszego klienta były dużo mniejsze, niż opisane powyżej – chodziło o około 100 requestów na sekundę. Po przeprowadzeniu testu okazało się, że serwer poradził sobie z takim obciążeniem bardzo dobrze. Poskutkowało to kolejnym punktem zdobytym przez tego zawodnika.

A co z własnym protokołem i notyfikatorem?

Idąc dalej w las i analizując szczegółowo wymagania klienta, napotkaliśmy pewną przeszkodę. Okazało się, że będziemy potrzebowali zdefiniować własny protokół oraz notyfikator, który będzie powiadamiał naszą aplikację o zdarzeniach związanych z opuszczeniem oraz wkroczeniem urządzenia do obszaru na mapie. Według oficjalnej strony projektu, serwer jest zaprojektowany w taki sposób, aby można było dokonać tego bez większej ingerencji w kod źródłowy. Na szczęście język Java jest bardzo popularny w naszej firmie, więc postanowiliśmy podjąć to wyzwanie, co później okazało się słuszną decyzją. Po krótkim zapoznaniu z kodem, udało się nam dodać zarówno protokół jak i notyfikator, a przy okazji zaimplementowaliśmy własną metodę w API.

Traccar to przyjazne developerowi oprogramowanie

Wniosek z tego jest taki, że oprogramowanie jest elastyczne, a praca z nim raczej nie powinna sprawiać większych problemów. Natomiast zauważyliśmy też pewne funkcje, które można by nieco ulepszyć. Przede wszystkim, Realtime API, oparte na WebSocket’ach, póki co jest bardzo ubogie i pozwala jedynie na odbieranie nieprzefiltrowanych informacji. Tutaj na pewno istnieje przestrzeń dla rozwoju serwera.

Kolejnym pomysłem, który zrodził się w naszej firmie jest możliwość definiowania nowych protokołów z poziomu interfejsu webowego, tak aby wyeliminować konieczność budowania całego projektu przy każdej takiej sytuacji. I na tym chyba kończą się nasze uwagi. Jak widać, są to raczej pomysły na rozwój niż krytyczne problemy i nie wpływają na ogólną opinię na temat jakości oprogramowania .

Skoro jest całkiem nieźle, to czemu by nie spróbować?

Po przetestowaniu wydajności oraz analizie funkcjonalnej, przyszedł czas na wyciągnięcie konkretnych wniosków. Podsumowując nasz research, Traccar jest przemyślanym oraz bardzo wydajnym serwerem, bogatym w użyteczne funkcjonalności, a ewentualne modyfikacje kodu źródłowego są względnie łatwe. Bogata gama protokołów oraz obsługiwanych urządzeń pozwala na sprawną komunikację użytkowników z serwerem. Ponadto standardowe, restowe API jest zrozumiałe i łatwe w użytkowaniu. Bardzo istotnym argumentem podczas podejmowania decyzji czy chcemy wykorzystać go w naszej aplikacji był fakt, że narzędzie jest na bieżąco rozwijane oraz w razie jakichkolwiek problemów możemy liczyć na szybką pomoc na oficjalnym forum projektu.

Korzystamy z Traccar!

Ostatecznie postanowiliśmy porzucić temat pisania własnego serwera i wykorzystać w naszej aplikacji oprogramowanie Traccar, które póki co spisuje się bez zarzutów. Jest z pewnością jednym z najciekawszych, ogólnodostępnych oraz darmowych serwerów Open Source, a szeroki zakres funkcjonalny sprawia, że dobrze sprawdzi się we wszelkiego rodzaju nowoczesnych aplikacjach wykorzystujących lokalizowanie urządzeń z nadajnikami GPS.

5 (100%) 7 vote[s]