The main purpose of this project is to create a distributed, scalable system and try out as many technologies and frameworks as possible, which could be useful for work.
Twitter is a relatively simple, read-heavy application that can be used for practice purposes.
Todo
- Caching
- DB optimizations
- Testing
- Rate limiting
- Cassandra instead of postgres for tweets
- Followers implementation
- Likes
- Replies
- Views count
- Simple timeline implementation
- Swagger
- Frontend
- Redis pub/sub
- Kafka for notifications
- Search (elasticsearch)
- Security (https, sql injections)
- Docker
- Docs
- Kubernetes
- MiniO
- Image/video processing
- Recommendation service (optional)
- ELK
- Prometheus/Grafana
- ClickHouse (don't know why yet)
- Hadoop/Flink (just to learn what it is)
- Overengineer things for a simple app
Notes
- 6.5k rps for create tweet handler (using postgres)