Uber follows micro services architecture catering to mobile and web apps. Here goes the key technologies in the stack. Please visit the links given under references for comprehensive listing.
APIs
- Multiple levels of APIs such as web, business layer.
- User interfacing APIs are primarily written in NodeJS.
- Mapping services provides ETA prediction, location auto complete, etc.
Apps
- Native mobile apps .
- Web – ReactJS based.
Storage & analytcis
- Temporary data such as location information – Cassandra clusters.
- Permanent data such as trip information – Schemaless (In-house sustomization of MySql).
- Datawarehouse for analytics – Hadoop ecosystem.
- Redis for caching and queuing.
- Storm, splunk for analytics.
Infrastructure
- Hybrid cloud leveraging multiple cloud providers and in-house data centers.
- Datacenter OS – Mesos.
- Containers – Docker run on Mesos.
- NGINX font ends the requests from users (SSL termination happens here).
- HAProxy for load balancing.
- Webserver based on ExpressJS.
Log analytics
- Kafka clusters, archived in to hadoop warehouse.
- Searching and visualization – elastic search, Logstash and Kibana.
Configuration Management
- Source code repos – Github for open source projects. Phabricator for in-house dev, code review, etc.
- Jenkins for continious integration.
- Puppet for configurations.
APM (Applicaton Performance Monitoing)
- Nagios.
Devops
- Terraform for provisioning (Infrastructure as code).
Programming languages
- NodeJS
- Python
- Java
- Google Go.