All checks were successful
continuous-integration/drone/push Build is passing
353 lines
12 KiB
Markdown
353 lines
12 KiB
Markdown
# Women's Safety App - Backend Services
|
||
|
||
🚨 **Микросервисная архитектура для приложения безопасности женщин с поддержкой миллионов пользователей** 🚨
|
||
|
||
> Высокопроизводительная, масштабируемая система для экстренных уведомлений, геолокационных сервисов и управления женским здоровьем.
|
||
|
||
[](https://python.org)
|
||
[](https://fastapi.tiangolo.com)
|
||
[](https://postgresql.org)
|
||
[](https://docker.com)
|
||
[](https://drone.io)
|
||
[](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 <repository>
|
||
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
|
||
|
||
[](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 |