Primary project and documentation for Thrift Shop
The Thrift Shop is a micro-services application built using Thrift-Server. It is used to demonstrate how to build a complete application based on the Thrift tools built @creditkarama.
- 100k per minute
- 25% writes
- 50% reads
- 99% GraphQL query latency < 500ms
- Eventually consistent within 100ms
- No single point of failure
- Service discovery
- Routing
- Failure handling
- Machine and human readable service contracts
- Sync and Async APIs consistent contracts
- Centralized / discoverable API repository
All services have well defined API contracts
- Performance metrics
- Distributed tracing
- Log aggregation
- Dashboard
- Login and authentication
- Identity restricted data access
- Service to service ACL
- Event tracking
- User behavior tracking
- Dashboard
- A/B testing
- Canary deploy
- Orchestration
- Service discovery
- Elastic scaling
- GraphQL API gateway
- Request / response API with Thrift
- RPC with HTTP/2 and LinkerD
- Event sourcing with Kafka and Cassandra
- Metrics and monitoring with Kafka / Influxdb / Grafana
- GraphQL server - Provides client API
- Catalog Service - Maintains the list of available products and prices
- Inventory Service - Immutable store that tracks current qty
- Shopping Cart - Maintains the active shopping carts by user
- Order Management - An async service that transitions a shopping cart into an order and notifies other services
- Users - Maintain users credentials and settings
- Session - Session management services that tracks active tokens and sessions
- Recommender - A recommendation service based on previous purchasing behavior