Architecture Overview¶
System Architecture¶
Macumba Travel follows a modern, scalable architecture designed for high performance and cost efficiency.
graph TB
User[π€ User] --> Frontend[π¨ Vue.js Frontend]
Frontend --> LB[βοΈ Load Balancer]
LB --> API[π§ FastAPI Backend]
API --> DB[(ποΈ PostgreSQL)]
API --> Cache[(β‘ PostgreSQL Cache)]
API --> AI[π€ AI Services]
AI --> Gemini[π§ Gemini 2.0]
AI --> Claude[π€ Claude 3.5]
API --> External[π External APIs]
External --> Amadeus[βοΈ Amadeus]
External --> Weather[π€οΈ Weather API]
External --> Maps[πΊοΈ Google Maps] Core Components¶
1. Frontend (Vue.js 3)¶
- Framework: Vue.js 3 with Composition API
- Styling: Tailwind CSS for responsive design
- State Management: Pinia for predictable state
- Hosting: Firebase Hosting with CDN
2. Backend (FastAPI)¶
- Framework: FastAPI with async/await
- Database: PostgreSQL with SQLAlchemy ORM
- Cache: PostgreSQL-based cache (cost-optimized)
- AI Integration: Multi-provider with fallback
3. Infrastructure¶
- AWS: ECS deployment with Terraform
- GCP: Cloud Run deployment with Terraform
- CI/CD: GitHub Actions for automated deployment
- Monitoring: Built-in logging and health checks
Key Architectural Decisions¶
PostgreSQL Cache vs Redis¶
Decision: Use PostgreSQL for caching instead of Redis Rationale: - Cost savings: ~$110/month reduction - Simplified infrastructure: One database system - JSONB support: Rich data structure storage - TTL support: Built-in expiration handling
Two-Tier Recommendation System¶
Decision: Separate initial recommendations from enrichment Rationale: - Performance: 4.5s initial vs 15s+ enriched - User experience: Fast initial results - Cost optimization: Only enrich when requested
AI Provider Strategy¶
Decision: Gemini primary, Claude fallback Rationale: - Cost efficiency: Gemini more cost-effective - Performance: Both providers optimized for speed - Reliability: Automatic fallback prevents downtime
Data Flow¶
Recommendation Generation¶
- User submits travel request
- System checks PostgreSQL cache
- If cache miss, AI service generates recommendations
- Results stored in cache with TTL
- Initial recommendations returned to user
- Optional enrichment for detailed data
Enrichment Process¶
- User selects recommendation for details
- System retrieves cached recommendation
- External APIs called for enrichment:
- Flight pricing (Amadeus)
- Weather data
- Images and maps
- Enriched data cached and returned
Scalability Patterns¶
Horizontal Scaling¶
- Stateless API: All services are stateless
- Load Balancing: Multiple backend instances
- Cache Layer: Reduces database load
- CDN: Global content delivery
Performance Optimization¶
- Async Processing: Non-blocking I/O operations
- Connection Pooling: Efficient database connections
- Caching Strategy: Multi-layer caching
- AI Prompt Optimization: Faster AI responses
Security Architecture¶
Authentication & Authorization¶
- JWT Tokens: Stateless authentication
- Rate Limiting: IP and user-based limits
- CORS: Proper cross-origin configuration
- Input Validation: Comprehensive request validation
Data Protection¶
- Encryption: Data encrypted in transit and at rest
- Secrets Management: Environment-based configuration
- Database Security: Connection encryption and access controls
- API Security: Rate limiting and input sanitization
Monitoring & Observability¶
Logging¶
- Structured Logging: JSON-formatted logs
- Request Tracking: Unique request IDs
- Error Tracking: Comprehensive error logging
- Performance Metrics: Response time tracking
Health Checks¶
- Database Health: Connection and query checks
- AI Service Health: Provider availability checks
- Cache Health: Cache connectivity verification
- External API Health: Dependency monitoring
Deployment Architecture¶
Development Environment¶
- Docker Compose: Local development setup
- Hot Reload: Fast development iteration
- Test Database: Isolated testing environment
- Mock Services: External API mocking
Production Environment¶
- Container Orchestration: ECS and Cloud Run
- Auto Scaling: Traffic-based scaling
- Blue-Green Deployment: Zero-downtime deployments
- Health Monitoring: Automated health checks
Future Architecture Considerations¶
Planned Enhancements¶
- Microservices: Split into focused services
- Event-Driven: Asynchronous event processing
- Machine Learning: Personalization and optimization
- Global CDN: Improved global performance
- Real-time Updates: WebSocket integration
Scalability Roadmap¶
- Database Sharding: Horizontal database scaling
- Read Replicas: Improved read performance
- Distributed Caching: Global cache distribution
- Message Queues: Asynchronous task processing