Challenge Project Booking
- JWT access + refresh token with Redis (revoke/rotation).
- Multi-device login(device + user_id), role-based + permission-based authorization.
- Middleware: logging TraceID, rate-limit, IP blocking.
- Challenge: Stateless performance vs. real-time revocation. Flow: Login: 1. user & password 2. ensure device 3. create session 4. issue access Token
- Flow: booking → hold → payment → confirmation.
- Ensure idempotency: prevent duplicate bookings.
- DB transaction + Redis lock for race conditions (double booking).
- Challenge: balance speed & data safety (overselling rooms).
- Redis cache for property/room list.
- Handle cache invalidation when landlord updates room info.
- Use versioning keys (room:v{n}:{id}).
- Challenge: stale cache leading to data mismatch.
- GitHub Actions: build → push GHCR → deploy.
- Auto migration + rollback if failed.
- Hot-reload service / blue-green deployment.
- Challenge: heavy ALTER TABLE migration may lock DB.
- Zap structured JSON logs, integrate with ELK / Grafana Loki.
- TraceID from FE → API → DB query.
- Alerts when API 5xx exceed threshold.
- Challenge: avoid noisy logs while keeping debug info.
- Current: monolith (internal/api, internal/service…).
- Task: split into Auth, Booking, Payment services.
- Communication via gRPC or message queue (Kafka/NATS).
- Challenge: ensure data consistency (saga pattern, eventual consistency).
sudo rm -f /etc/apt/sources.list.d/docker.list
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
ARCH=$(dpkg --print-architecture)
CODENAME=focal # hoặc: CODENAME=$(. /etc/os-release && echo
sudo sed -i 's/\r$//' /etc/apt/sources.list.d/docker.list
cat -n /etc/apt/sources.list.d/docker.list
sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin