Multimodal routing search platform

Multimodal routing search platform

Solution:

  • Search Engine that finds multi-modal (flights, trains, suburban trains, buses, ferries, in-city transfers) routes
  • White-label platform for travel companies (for airlines/railway/bus companies, and travel agencies) that allows offering their clients connectivity with other modalities (e.g. airlines can offer routes connected with trains to advance offer for the customers)
  • Schedules of millions of flights, trains, and buses, updated in realtime depending on flight/train/bus/ferries providers’ answers
  • Millions of combinations of flexible settings to prioritize/deprioritize certain directions/nodes/races to display the routes to customers that the business prefers to display
  • Detailed and aggregates statistics for each request and result by any dimensions and fields
  • Predictions for tickets availability and prices

Tech stack:

  • Golang for all services
  • Protobuf + GRPC for all internal communications
  • Streaming REST API for front-end systems
  • Postgres
  • Mongo (initially we used Cassandra, but after couple of years we migrated to Mongo)
  • Redis
  • ClickHouse
  • Rabbit (initially it was Rabbit, but then we migrated to Kafka)
  • Ruby on Rails for Admin Panel (migrating to ReactJS)
  • Docker
  • Kubernetes (in the Cloud and on bare metal) to maintain 7 different fully-pledged environments
  • Python + TensorFlow and SciKit-Learn for ML
  • Math RAM- and CPU- optimized structures and algorithms for Sorted Trees, Priority Queues, Finding Best K-paths, etc…
  • Technical RAM- and CPU- optimizations such as stateful services with pre-loaded dictionaries and configs and the whole graph, sharded graph, bitmasks and direct references instead of hashmaps, reusable structures via memory pools on top of arrays, multi-level (RAM + local Redis + remote Redis) caches, immutable dictionaries for repeating parts of the replies, request/response packets inside bidirectional streamed requests to reduce the number of calls and implement request-level sub-cache, etc…
  • Prometheus and Grafana
  • ELK stack
  • Gitlab, Jenkins, Unit Tests, Cucumber Integration Tests, Load Tests

Results:

  • Our client was able to start a new business - one of the first in the world to offer an innovative Whitelabel B2B / B2C Multimodal routing solution.
  • The client won a 97mln USD (according to mass media) contract with a major 1-billion passengers/year transport corporation, where our solution is the key part.
  • The overall major transport corporation innovation program where our solution is the key IT part costs 2bln USD (according to mass media). So, the long-term expected benefits for the client and major transport corporation are quite high.
  • Our client was also able to win new partnerships with other largest airline companies - that will bring him many more millions of USD (our fair guess).
comments powered by Disqus