Zorientowani na sukces zespołu

Nauka oraz feedback w jednym miejscu

Wyzwanie

Trans.eu to największa w Europie giełda ładunków oraz pojazdów. Wraz z rozwojem platformy wzrasta także liczba jej użytkowników – aktualnie notowanych jest około 40-50 tys. nowych ładunków dziennie. Nasz Klient potrzebował zwiększyć responsywność aplikacji oraz uruchomić funkcjonalność, dzięki której użytkownik byłby informowany na bieżąco o zmieniających się statusach ofert oraz wysyłanych frachtów. Spełnienie powyższych wymagań wymagało radykalnej zmiany w podejściu do wytwarzania oprogramowania.

Rozwiązanie

Rolą Netins Software jest wytwarzanie i utrzymanie części aplikacji odpowiedzialnej za zarządzanie ładunkami (Frachty). To fundamentalna funkcjonalność systemu, od której zależy poprawne działanie całej aplikacji. Kluczowym zagadnieniem jest utrzymanie wysokiej wydajności. Udaje się to osiągnąć poprzez przerzucenie złożonych algorytmów na system kolejkowy oraz wykorzystanie odpowiedniego systemu cache. Dzięki temu aplikacja jest w stanie obsłużyć około 250 zapytań na sekundę. Od strony frontendowej przygotowany został moduł aplikacji w bibliotece React.js.

Co zostało zrobione?

  1. Analiza potrzeb i wymagań Klienta.
  2. Aktywne uczestnictwo w poszukiwaniu rozwiązań dla całej platformy.
  3. Implementacja mikrousług zgodnie z założeniami wzorca projektowego Domain Driven Design. Interfejs komunikacyjny to REST API.
  4. Przygotowanie mechanizmu cache w oparciu o bazę NoSQL Redis ograniczającego liczbę zapytań do bazy danych wraz z systemem automatycznego odświeżania.
  5. Wdrożenie takich systemów monitorujących działanie aplikacji, jak: Grafana, Kibana oraz Nagios. Dodatkowo – utworzenie specjalnej strony statusowej.
  6. Wdrożenie LoadBalancera opartego o system Consul i HaProxy.
  7. Utworzenie modułów frontendowych w oparciu o bibliotekę React.js z wykorzystaniem RxJS.
  8. Zapewnienie SLA na poziomie 99.9%.

Jak to zostało zrobione?

W projekcie najważniejsza jest elastyczność oraz czystość kodu. Aby sprostać wymaganiom Klienta, przygotowaliśmy dwa zespoły liczące łącznie 11 osób. W projekcie utrzymane są bardzo restrykcyjne procesy dokonywania zmian w kodzie. Dodatkowo:

  • Jesteśmy częścią wielkiego projektu złożonego z 29 zespołów.
  • Pracujemy w SAFe (Agile w skali) .
  • Do konteneryzacji wykorzystaliśmy Docker.
  • Wdrożyliśmy procedury CI/CD (Continuous Integration/Continuous Delivery).
  • Zagwarantowaliśmy pokrycie kodu testami jednostkowymi na poziomie 85%.
  • Przygotowaliśmy automatyczne testy end to end w oparciu o bibliotekę Selenium.
Suche fakty

Team

  • Back-end developer (PHP, Node.js)
  • Front-end developer (React.js)
  • QA

Zgrany i kompetentny team to podstawa! Taki też wystawiliśmy do tego projektu.

Technologia

Zend + Apigility (PHP), Doctrine ORM, RabbitMQ, Redis, Consul, Grafana, Kibana, Haproxy, React.js, RxJS

Najnowsza technologia pozwala nam osiągać ambitne cele.