Files
chat/README.md
Andrew K. Choi 003950dce6
Some checks reported errors
continuous-integration/drone Build encountered an error
CI/CD pipeline
2025-09-25 08:42:22 +09:00

288 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
## 🏗️ Архитектура
### 🎯 Ключевые возможности:
- **Мгновенные 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
[![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
```