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).