Files
chat/docs/ARCHITECTURE.md
Andrew K. Choi 537e7b363f
All checks were successful
continuous-integration/drone/push Build is passing
main commit
2025-10-16 16:30:25 +09:00

12 KiB

Architecture Documentation - Women's Safety App

Overview

This document describes the microservices architecture of the Women's Safety App backend, designed to handle millions of users with high availability, scalability, and performance.

System Architecture

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Mobile App    │    │    Web Client    │    │  Admin Panel   │
└─────────────────┘    └──────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 │
                 ┌───────────────────────────┐
                 │      Load Balancer       │
                 │     (NGINX/HAProxy)      │
                 └───────────────────────────┘
                                 │
                 ┌───────────────────────────┐
                 │     API Gateway          │
                 │   (Rate Limiting,        │
                 │   Authentication,        │
                 │   Request Routing)       │
                 └───────────────────────────┘
                                 │
    ┌─────────────┬──────────────┼──────────────┬─────────────┬─────────────┐
    │             │              │              │             │             │
┌─────────┐ ┌─────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│  User   │ │Emergency│ │  Location   │ │  Calendar   │ │Notification │ │  Nutrition  │
│Service  │ │Service  │ │   Service   │ │  Service    │ │  Service    │ │  Service    │
│:8001    │ │:8002    │ │    :8003    │ │   :8004     │ │   :8005     │ │   :8006     │
└─────────┘ └─────────┘ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
    │             │              │              │             │             │
    └─────────────┼──────────────┼──────────────┼─────────────┼─────────────┘
                  │              │              │              │
         ┌────────────────────────────────────────────────┐
         │              Message Bus                       │
         │            (Kafka/RabbitMQ)                   │
         └────────────────────────────────────────────────┘
                                 │
    ┌─────────────┬──────────────┼──────────────┬─────────────┐
    │             │              │              │             │
┌─────────┐ ┌─────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│PostgreSQL│ │ Redis   │ │   Kafka     │ │Prometheus   │ │  Grafana    │
│(Database)│ │(Cache)  │ │(Events)     │ │(Monitoring) │ │(Dashboards) │
└─────────┘ └─────────┘ └─────────────┘ └─────────────┘ └─────────────┘

Microservices Details

1. User Service (Port 8001)

Responsibilities:

  • User registration and authentication
  • Profile management
  • JWT token generation and validation
  • User settings and preferences

Database Tables:

  • users - User profiles and authentication data

Key Features:

  • JWT-based authentication
  • Password hashing with bcrypt
  • Email/phone verification
  • Profile picture upload
  • Privacy settings

2. Emergency Service (Port 8002)

Responsibilities:

  • Emergency alert creation and management
  • SOS signal processing
  • Emergency response coordination
  • Alert resolution tracking

Database Tables:

  • emergency_alerts - Emergency incidents
  • emergency_responses - User responses to alerts

Key Features:

  • Real-time alert broadcasting
  • Geolocation-based alert targeting
  • Response tracking and statistics
  • Integration with external emergency services

3. Location Service (Port 8003)

Responsibilities:

  • User location tracking
  • Geospatial queries
  • Proximity calculations
  • Location history management

Database Tables:

  • user_locations - Current user locations
  • location_history - Historical location data (partitioned)

Key Features:

  • Efficient geospatial indexing
  • Privacy-preserving location sharing
  • Location-based user discovery
  • Geographic data anonymization

4. Calendar Service (Port 8004)

Responsibilities:

  • Women's health calendar
  • Menstrual cycle tracking
  • Health insights generation
  • Reminder notifications

Database Tables:

  • calendar_entries - Daily health entries
  • cycle_data - Menstrual cycle information
  • health_insights - AI-generated insights

Key Features:

  • Cycle prediction algorithms
  • Health pattern analysis
  • Personalized insights
  • Data export for healthcare providers

5. Notification Service (Port 8005)

Responsibilities:

  • Push notification delivery
  • Device token management
  • Notification templates
  • Delivery tracking

Technologies:

  • Firebase Cloud Messaging (FCM)
  • Apple Push Notification Service (APNs)
  • WebSocket for real-time notifications

Key Features:

  • Multi-platform push notifications
  • Notification preferences
  • Delivery confirmation
  • Batch notification processing

6. API Gateway (Port 8000)

Responsibilities:

  • Request routing and load balancing
  • Authentication and authorization
  • Rate limiting and throttling
  • Request/response transformation
  • API versioning

Key Features:

  • Circuit breaker pattern
  • Request caching
  • API analytics
  • CORS handling
  • SSL termination

Data Storage Strategy

PostgreSQL - Primary Database

  • Partitioning Strategy:

    • Location history partitioned by date (monthly)
    • Emergency alerts partitioned by geographic region
    • Calendar entries partitioned by user ID ranges
  • Replication:

    • Master-slave replication for read scaling
    • Geographic replicas for global distribution

Redis - Caching Layer

  • Cache Types:

    • Session storage (JWT tokens)
    • User location cache (5-minute TTL)
    • Frequently accessed user profiles
    • Emergency alert counters
  • Cache Patterns:

    • Write-through for user profiles
    • Write-behind for analytics data
    • Cache-aside for location data

Message Queue (Kafka)

  • Topics:
    • emergency-alerts - New emergency alerts
    • user-locations - Location updates
    • notifications - Push notification requests
    • analytics-events - User behavior tracking

Scalability Considerations

Horizontal Scaling

  • Each microservice can be scaled independently
  • Load balancing with consistent hashing
  • Database sharding by geographic region
  • Auto-scaling based on CPU/memory metrics

Performance Optimizations

  • Database connection pooling
  • Query optimization with proper indexing
  • Async/await for I/O operations
  • Response compression
  • CDN for static assets

High Availability

  • Multi-zone deployment
  • Health checks and auto-recovery
  • Circuit breakers for external dependencies
  • Graceful degradation strategies

Security Architecture

Authentication & Authorization

  • JWT tokens with short expiration
  • Refresh token rotation
  • Multi-factor authentication support
  • OAuth2/OIDC integration ready

Data Protection

  • Encryption at rest (AES-256)
  • Encryption in transit (TLS 1.3)
  • PII data anonymization
  • GDPR compliance features

Network Security

  • API rate limiting per user/IP
  • DDoS protection
  • Input validation and sanitization
  • SQL injection prevention
  • CORS policy enforcement

Monitoring & Observability

Metrics (Prometheus)

  • Service health metrics
  • Request rate and latency
  • Error rates and types
  • Database connection pool status
  • Cache hit/miss ratios

Logging

  • Structured logging (JSON format)
  • Centralized log aggregation
  • Log levels and filtering
  • Sensitive data masking

Alerting

  • Service downtime alerts
  • High error rate notifications
  • Performance degradation warnings
  • Security incident alerts

Dashboards (Grafana)

  • Service performance overview
  • User activity metrics
  • Emergency alert statistics
  • System resource utilization

Deployment Strategy

Containerization (Docker)

  • Multi-stage builds for optimization
  • Distroless base images for security
  • Health check definitions
  • Resource limits and requests

Orchestration (Kubernetes)

  • Deployment manifests with rolling updates
  • Service mesh for inter-service communication
  • Persistent volumes for database storage
  • Horizontal Pod Autoscaler (HPA)

CI/CD Pipeline

  • Automated testing (unit, integration, e2e)
  • Security scanning
  • Performance testing
  • Blue-green deployments
  • Automated rollbacks

Data Flow Examples

Emergency Alert Flow

  1. User creates emergency alert (Emergency Service)
  2. Location Service finds nearby users within radius
  3. Notification Service sends push notifications
  4. Alert stored with notified user count
  5. Real-time updates via WebSocket
  6. Analytics events published to Kafka

Location Update Flow

  1. Mobile app sends location update
  2. Location Service validates and stores location
  3. Cache updated with new location (Redis)
  4. Location history stored (partitioned table)
  5. Nearby user calculations triggered
  6. Privacy filters applied

Future Enhancements

Phase 2 Features

  • AI-powered risk assessment
  • Integration with wearable devices
  • Video/audio evidence recording
  • Community safety mapping
  • Integration with ride-sharing apps

Technical Improvements

  • GraphQL API for complex queries
  • Event sourcing for audit trails
  • Machine learning for pattern detection
  • Blockchain for data integrity
  • Multi-region active-active deployment

Performance Benchmarks

Target SLAs

  • API Response Time: < 200ms (95th percentile)
  • Alert Delivery Time: < 5 seconds
  • System Availability: 99.9%
  • Database Query Time: < 50ms
  • Cache Hit Ratio: > 90%

Load Testing Results

  • Concurrent Users: 100,000+
  • Requests per Second: 50,000+
  • Alert Processing: 1,000/second
  • Location Updates: 10,000/second

Cost Optimization

Resource Management

  • Auto-scaling policies
  • Spot instances for non-critical workloads
  • Reserved instances for predictable loads
  • Efficient container resource allocation

Database Optimization

  • Query optimization and indexing
  • Archive old data to cheaper storage
  • Read replicas for reporting
  • Connection pooling

This architecture provides a solid foundation for a scalable, secure, and maintainable women's safety application capable of serving millions of users worldwide.