Requirements & Scope
Scale
- p99 < 100ms message latency
- 1M concurrent connections
- 100K messages/sec
- 1 year message retention
Core Requirements
- 1:1 and group messaging with up to 500 members
- Read receipts, typing indicators, and online presence
- Message types: text, image, file, and system notifications
- End-to-end encryption for private conversations
- Offline message queue and delivery on reconnect
- Search across message history with full-text indexing
Key Points
- Understanding Chat Backend is essential for production systems
- Always consider scalability and maintainability
- Test thoroughly before deploying to production
- Monitor performance and set up alerting
Common Patterns
- Validation: Always validate input at the boundary
- Error Handling: Use structured error responses
- Logging: Log key events for debugging
- Testing: Unit, integration, and load tests
- Documentation: Keep docs updated with code changes
Architecture & WebSocket
Connection Management
- OnOpen: store connection, set online, send pending messages
- OnMessage: persist to DB, route to recipient
- OnClose: remove connection, set offline
Presence
Redis SET for online users + heartbeat (30s interval, offline after 60s)
Message Delivery
At-least-once: persist -> push -> ACK -> retry -> pending queue -> deliver on reconnect
Key Points
- Understanding Chat Backend is essential for production systems
- Always consider scalability and maintainability
- Test thoroughly before deploying to production
- Monitor performance and set up alerting
Common Patterns
- Validation: Always validate input at the boundary
- Error Handling: Use structured error responses
- Logging: Log key events for debugging
- Testing: Unit, integration, and load tests
- Documentation: Keep docs updated with code changes
Message Persistence
Tables
- messages(id, conversation_id, sender_id, content, message_type, created_at, read_at)
- conversations(id, type, name, created_at)
- conversation_members(conversation_id, user_id, last_read_at)
Key Points
- Understanding Chat Backend is essential for production systems
- Always consider scalability and maintainability
- Test thoroughly before deploying to production
- Monitor performance and set up alerting
Common Patterns
- Validation: Always validate input at the boundary
- Error Handling: Use structured error responses
- Logging: Log key events for debugging
- Testing: Unit, integration, and load tests
- Documentation: Keep docs updated with code changes
Practice Problems
Design and implement a solution for Chat Backend in a backend system. Consider scalability, error handling, and production readiness.
Solution
// Chat Backend implementation
// Key aspects: validation, error handling, logging, testing
public class ChatBackend {
// Production-ready implementation
} Identify and handle edge cases for Chat Backend. What happens under high load, with invalid input, or during failures?
Solution
// Edge case handling:
// 1. Null/empty input -> validation
// 2. High load -> rate limiting, queuing
// 3. Failures -> retries, circuit breaker
// 4. Concurrent access -> locks, idempotency Write a testing strategy for Chat Backend. Include unit tests, integration tests, and performance tests.
Solution
// Test plan:
// - Unit: 80% coverage target
// - Integration: API contracts
// - Performance: latency, throughput
// - Chaos: failure injection Quiz
1. User goes offline during delivery?
2. Why WebSocket over HTTP polling?
3. What is a common mistake when implementing Chat Backend?
Flashcards
Question
How to ensure message delivery?
Click to reveal answer
Answer
At-least-once: persist -> push -> ACK -> retry
Question
How is presence tracked?
Click to reveal answer
Answer
WebSocket connection + Redis SET + heartbeat
Question
Chat Backend best practices
Click to reveal answer
Answer
Follow SOLID principles, write clean code, test thoroughly, document decisions, and monitor in production.
Revision Notes
Key Takeaways
- 1. WebSocket for real-time bidirectional
- 2. Persist before pushing for reliability
- 3. Redis tracks presence with heartbeat
- 4. At-least-once with pending queue
Interview Tips
- • Explain WebSocket lifecycle
- • Discuss delivery guarantees
Cheat Sheet
Chat Backend
- Protocol: WebSocket (real-time, bidirectional)
- Presence: Redis SET + heartbeat
- Delivery: At-least-once (persist -> push -> ACK)
- Pending: Queue for offline users