# Women's Safety App - Backend Services 🚨 **Микросервисная архитектура для приложения безопасности женщин с поддержкой миллионов пользователей** 🚨 > Высокопроизводительная, масштабируемая система для экстренных уведомлений, геолокационных сервисов и управления женским здоровьем. [![Python](https://img.shields.io/badge/Python-3.11+-blue.svg)](https://python.org) [![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg)](https://fastapi.tiangolo.com) [![PostgreSQL](https://img.shields.io/badge/PostgreSQL-15+-blue.svg)](https://postgresql.org) [![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)](https://docker.com) [![Drone CI](https://img.shields.io/badge/Drone-CI%2FCD-orange.svg)](https://drone.io) [![Build Status](https://drone.smartsoltech.kr/api/badges/trevor/chat/status.svg)](https://[drone.smartsoltech.kr/trevor/chat](https://drone.smartsoltech.kr/trevor/chat)) ## 🏗️ Архитектура ### 🎯 Ключевые возможности: - **Мгновенные SOS-сигналы** с геолокационным таргетингом - **Умный поиск** пользователей в радиусе 1км - **Женский календарь** с ИИ-аналитикой - **Push-уведомления** в реальном времени - **JWT-аутентификация** и защита данных - **Горизонтальное масштабирование** для миллионов пользователей ### 🚀 Микросервисы: - **🔐 User Service** (8001): Профили, аутентификация, настройки - **🚨 Emergency Service** (8002): SOS-сигналы, экстренные уведомления - **📍 Location Service** (8003): Геолокация, поиск по радиусу - **📅 Calendar Service** (8004): Женское здоровье, цикл, аналитика - **🔔 Notification Service** (8005): Push-уведомления, FCM - **🌐 API Gateway** (8000): Маршрутизация, rate limiting, балансировка ### 🛠️ Технологический стек: - **Backend**: Python 3.11+ с FastAPI - **Database**: PostgreSQL 15+ с партиционированием - **Cache**: Redis 7+ для сессий и геоданных - **Messaging**: Kafka для event streaming - **Monitoring**: Prometheus + Grafana - **Deployment**: Docker + Docker Compose ## 🚀 Запуск ### Требования - Python 3.11+ - Docker & Docker Compose - PostgreSQL 14+ - Redis 7+ ### Установка ```bash # Клонирование и настройка git clone cd women-safety-backend # Создание виртуального окружения python -m venv venv source venv/bin/activate # Linux/Mac # venv\Scripts\activate # Windows # Установка зависимостей pip install -r requirements.txt # Запуск инфраструктуры docker-compose up -d postgres redis kafka # Миграции БД alembic upgrade head # Запуск сервисов python -m uvicorn user_service.main:app --port 8001 python -m uvicorn emergency_service.main:app --port 8002 python -m uvicorn location_service.main:app --port 8003 python -m uvicorn calendar_service.main:app --port 8004 python -m uvicorn notification_service.main:app --port 8005 python -m uvicorn api_gateway.main:app --port 8000 ``` ## 📱 Основной функционал ### SOS Alert System - Мгновенная отправка сигналов тревоги - Геолокационный поиск пользователей в радиусе 1км - Массовые push-уведомления - Интеграция с службами экстренного реагирования ### Профили пользователей - Регистрация и аутентификация - Личные данные и настройки - Контакты для экстренной связи ### Женский календарь - Отслеживание менструального цикла - Уведомления и напоминания - Аналитика здоровья ## 🔧 Разработка ### Структура проекта ``` ├── services/ │ ├── user-service/ │ ├── emergency-service/ │ ├── location-service/ │ ├── calendar-service/ │ ├── notification-service/ │ └── api-gateway/ ├── shared/ │ ├── database/ │ ├── messaging/ │ └── utils/ ├── docker-compose.yml ├── requirements.txt └── README.md ``` ### Команды разработки ```bash # Тесты python -m pytest # Линтеры black . flake8 . mypy . # Миграции alembic revision --autogenerate -m "description" alembic upgrade head ``` ## 🔒 Безопасность - JWT аутентификация - Rate limiting - HTTPS only - Шифрование персональных данных - Валидация входных данных - CORS настройки ## 📊 Масштабируемость - Горизонтальное масштабирование сервисов - Партиционирование БД по географическим регионам - Кэширование критических данных - Асинхронная обработка - Circuit breaker pattern - Health checks и service discovery ## 🚁 CI/CD - Drone Pipeline [![Drone Build Status](https://drone.example.com/api/badges/women-safety/backend/status.svg)](https://drone.example.com/women-safety/backend) Автоматизированный pipeline с полным циклом разработки, тестирования и развертывания: ### 🔄 Этапы Pipeline: #### 1. **Code Quality** 🧹 ```yaml steps: - name: lint commands: - black --check . - flake8 . - isort --check-only . - mypy services/ --ignore-missing-imports ``` #### 2. **Security Scanning** 🛡️ ```yaml steps: - name: security commands: - safety check --json - bandit -r services/ -f json - trivy image scan ``` #### 3. **Testing** 🧪 - **Unit Tests**: pytest с coverage отчетами - **Integration Tests**: Реальные сервисы в Docker - **Load Testing**: K6 performance тесты - **Security Tests**: OWASP ZAP сканирование #### 4. **Docker Build** 🐳 Параллельная сборка всех 6 микросервисов: - `women-safety/user-service` - `women-safety/emergency-service` - `women-safety/location-service` - `women-safety/calendar-service` - `women-safety/notification-service` - `women-safety/api-gateway` #### 5. **Deployment** 🚀 - **Staging**: Автоматическое развертывание из `develop` - **Production**: Развертывание из `main` с подтверждением - **Rollback**: Автоматический откат при ошибках ### 📋 Drone Configuration **Основной Pipeline** (`.drone.yml`): ```yaml kind: pipeline name: women-safety-backend steps: - name: setup image: python:3.11-slim commands: - pip install -r requirements.txt - name: test depends_on: [setup] commands: - pytest --cov=services --cov-report=xml - name: build-services depends_on: [test] image: plugins/docker settings: repo: women-safety/${SERVICE} tags: [latest, ${DRONE_COMMIT_SHA:0:7}] - name: deploy-production depends_on: [integration-test] when: branch: [main] event: [push] ``` **Vulnerability Scanning** (Nightly): ```yaml kind: pipeline name: vulnerability-scan trigger: cron: [nightly] steps: - name: trivy-scan image: aquasec/trivy:latest commands: - trivy image women-safety/user-service:latest ``` **Performance Testing** (Weekly): ```yaml kind: pipeline name: performance-test trigger: cron: [weekly] steps: - name: load-test image: loadimpact/k6:latest commands: - k6 run tests/performance/load-test.js ``` ### 🔧 Настройка Secrets ```bash # Docker Registry drone secret add --repository women-safety/backend --name docker_username --data username drone secret add --repository women-safety/backend --name docker_password --data password # Production SSH drone secret add --repository women-safety/backend --name production_host --data server.example.com drone secret add --repository women-safety/backend --name production_ssh_key --data @~/.ssh/id_rsa # Notifications drone secret add --repository women-safety/backend --name slack_webhook --data https://hooks.slack.com/... ``` ### 📊 Мониторинг Pipeline - **Build Status**: Real-time статус в Slack/Teams - **Performance Metrics**: Автоматические отчеты по производительности - **Security Reports**: Еженедельные отчеты по уязвимостям - **Deployment Logs**: Centralized логирование развертываний ### 🏃‍♂️ Быстрый старт с Drone ```bash # Установка Drone CLI curl -L https://github.com/drone/drone-cli/releases/latest/download/drone_linux_amd64.tar.gz | tar zx sudo install -t /usr/local/bin drone # Настройка export DRONE_SERVER=https://drone.example.com export DRONE_TOKEN=your-token # Запуск build drone build promote women-safety/backend 123 production ``` ### 📜 Дополнительные скрипты **Deployment Scripts:** - `deploy-production.sh` - Полное развертывание в продакшен с проверками - `test_auth_flow.sh` - Тестирование регистрации и авторизации - `start_services_no_docker.sh` - Запуск сервисов без Docker **Performance Testing:** - `tests/performance/load-test.js` - K6 нагрузочное тестирование - `tests/performance/stress-test.js` - K6 стресс-тестирование **Quick Commands:** ```bash # Полное развертывание ./deploy-production.sh v1.2.3 # Тестирование API ./test_auth_flow.sh # Проверка системы ./health-check.sh # Нагрузочное тестирование k6 run tests/performance/load-test.js ``` ## 📁 Структура проекта ``` women-safety-backend/ ├── .drone.yml # Drone CI/CD Pipeline ├── deploy-production.sh # Production deployment script ├── docker-compose.prod.yml # Production configuration ├── docker-compose.test.yml # Testing configuration ├── DRONE_SETUP.md # Drone setup instructions ├── services/ # Microservices │ ├── user_service/ # User management & auth │ ├── emergency_service/ # SOS alerts & emergencies │ ├── location_service/ # Geolocation & tracking │ ├── calendar_service/ # Women's health calendar │ ├── notification_service/ # Push notifications │ └── api_gateway/ # API Gateway & routing ├── shared/ # Shared utilities │ ├── config.py # Configuration management │ ├── database.py # Database connections │ └── auth.py # JWT authentication ├── tests/ # Test suites │ ├── performance/ # K6 load tests │ └── integration/ # Integration tests └── scripts/ # Utility scripts ├── start_services_no_docker.sh ├── test_auth_flow.sh └── health-check.sh # System health monitoring ``` ## 🔗 Quick Links - 📚 **[Drone Setup Guide](DRONE_SETUP.md)** - Complete CI/CD setup - 🚀 **[Production Deployment](deploy-production.sh)** - Zero-downtime deployment - 🧪 **[API Testing](test_auth_flow.sh)** - Authentication flow testing - 📊 **[Performance Tests](tests/performance/)** - Load & stress testing - 🐳 **[Docker Configs](docker-compose.prod.yml)** - Production containers