46 KiB
Консолидированная стратегия миграции Sanic → FastAPI
MY Network v3.0 + web2-client совместимость
Дата создания: 2025-01-27
Версия: 1.0
Статус: ГОТОВ К ИСПОЛНЕНИЮ
🎯 Исполнительное резюме
Стратегический приоритет
Миграция с Sanic на FastAPI является КРИТИЧЕСКИ ВАЖНОЙ для:
- Стабильности MY Network v3.0 - предотвращение split сети
- Совместимости с web2-client - сохранение пользовательского опыта
- Производительности системы - улучшение на 30-40%
- Масштабируемости - подготовка к росту нагрузки
Текущее состояние
- ✅ Гибридная архитектура уже работает
- ✅ 85% готовности к полной миграции
- ⚠️ Критические риски для децентрализованной сети
- ✅ Отсутствие конфликтов зависимостей
Целевой результат
Полностью функциональная FastAPI система с:
- 🌐 Полной поддержкой MY Network v3.0 децентрализации
- 📱 100% совместимостью с web2-client
- 🔒 Сохранением всех security компонентов
- 📈 Улучшенной производительностью
📊 Синтез всех проведенных анализов
1. Критические зависимости между компонентами
graph TB
subgraph "LAYER 1: Криптографический фундамент"
ED25519[Ed25519 подписи]
HASH[Детерминированные хэши]
CRYPTO[CryptographicMiddleware]
end
subgraph "LAYER 2: Сетевые протоколы"
HANDSHAKE[Межузловой handshake]
SYNC[Content sync БЕЗ консенсуса]
DISCOVERY[Node discovery]
end
subgraph "LAYER 3: API endpoints"
AUTH[Аутентификация /auth.twa]
CONTENT[Контент /content.view]
BLOCKCHAIN[Блокчейн /blockchain.*]
UPLOAD[File upload chunked]
end
subgraph "LAYER 4: Client compatibility"
WEB2[web2-client React]
TON[TON Connect UI]
TWA[Telegram WebApp]
end
ED25519 --> HANDSHAKE
HASH --> SYNC
CRYPTO --> AUTH
HANDSHAKE --> CONTENT
SYNC --> BLOCKCHAIN
AUTH --> WEB2
CONTENT --> TON
BLOCKCHAIN --> TWA
2. Интеграция требований из всех анализов
| Компонент | SANIC Plan | Decentralization | web2-client | Приоритет |
|---|---|---|---|---|
| Ed25519 подписи | Адаптация middleware | КРИТИЧНО для сети | Не требуется | 🔥 TIER 1 |
| Auth система | 2 дня миграции | Средний приоритет | КРИТИЧНО | 🔥 TIER 1 |
| Content API | 3 дня миграции | Высокий приоритет | КРИТИЧНО | 🔥 TIER 1 |
| File uploads | Chunked uploads | Децентр. storage | КРИТИЧНО | 🔥 TIER 1 |
| Blockchain API | 2 дня миграции | Средний приоритет | КРИТИЧНО | 🔥 TIER 1 |
| MY Network API | 3 дня миграции | КРИТИЧНО для сети | Не используется | ⚠️ TIER 2 |
| Monitoring | HTML templates | Диагностика сети | Не используется | 📊 TIER 3 |
| Health checks | K8s ready/live | Мониторинг нод | Не используется | 📊 TIER 3 |
3. Выявленные критические точки отказа
🚨 RED ALERT зоны:
- Ed25519 middleware compatibility - может сломать всю сеть
- Детерминированные хэши - risk of network split
- TON proof validation - может сломать аутентификацию
- Chunked upload headers - может сломать загрузку файлов
⚠️ HIGH RISK зоны:
- Rate limiting конфигурация
- CORS headers для межузлового общения
- JWT token handling для web2-client
- WebSocket connections (если используются)
🎯 Приоритизация эндпоинтов по критичности
TIER 1: Критически важные для web2-client (Немедленная миграция)
Аутентификация и безопасность:
POST /auth.twa # TON Connect + Telegram auth
POST /auth.selectWallet # Выбор кошелька
GET /auth/me # Текущий пользователь
POST /auth/refresh # Обновление токенов
Контент и загрузка:
POST /content.view/{id} # Просмотр контента
POST /blockchain.sendNewContentMessage # Создание контента
POST /blockchain.sendPurchaseContentMessage # Покупка контента
POST {STORAGE_URL}/upload # Chunked file upload
Критерии успеха: 100% совместимость с существующим web2-client без изменений
TIER 2: Критически важные для MY Network v3.0 (Следующий приоритет)
Межузловое общение:
POST /api/node/handshake # Ed25519 подписи
POST /api/node/content/sync # Синхронизация БЕЗ консенсуса
POST /api/node/network/ping # Проверка доступности
POST /api/node/network/discover # Обнаружение нод
GET /api/node/network/status # Статус ноды
API v3.0 децентрализации:
POST /api/v3/sync/announce # Анонс контента в сеть
GET /api/v3/sync/pending # Ожидающие синхронизации
POST /api/v3/sync/accept/{hash} # Принять контент
GET /api/v3/node/status # Статус ноды v3.0
GET /api/v3/network/stats # Статистика сети
Критерии успеха: Отсутствие network split, корректная работа децентрализации
TIER 3: Важные системные функции (Последний этап)
Системные эндпоинты:
GET /health # Kubernetes health
GET /health/detailed # Детальная диагностика
GET /metrics # Prometheus метрики
GET /api/my/monitor # MY Network мониторинг
Блокчейн операции:
GET /api/v1/blockchain/wallet/balance # Баланс кошелька
GET /api/v1/blockchain/wallet/transactions # История транзакций
POST /api/v1/blockchain/transaction/send # Отправка транзакций
Критерии успеха: Полная функциональность мониторинга и диагностики
TIER 4: Вспомогательные функции (При наличии времени)
Дополнительная функциональность:
GET /api/v1/storage/quota # Квоты хранилища
GET /api/v1/storage/stats # Статистика хранилища
POST /api/v1/storage/cleanup # Очистка (админ)
GET /debug/info # Debug информация
📅 Детальный timeline миграции с контрольными точками
🚀 Фаза 0: Подготовка (1 день)
Ответственные: architect + debug modes
День 1: Валидация совместимости
- 09:00-12:00 Тестирование Ed25519 совместимости Sanic ↔ FastAPI
- 12:00-15:00 Проверка детерминированных хэшей
- 15:00-18:00 Валидация TON proof между системами
Checkpoint 0.1: ✅ Криптографическая совместимость подтверждена
Критерии перехода к Фазе 1:
- ✅ Ed25519 подписи идентичны в Sanic и FastAPI
- ✅ SHA-256 хэши контента одинаковые
- ✅ TON proof validation работает корректно
Rollback план: Остановка миграции, углубленный анализ несовместимости
🔥 Фаза 1: TIER 1 - Критически важные для web2-client (3 дня)
Ответственные: code + debug modes
День 2: Аутентификация
- 09:00-12:00 Миграция
/auth.twaс TON proof поддержкой - 12:00-15:00 Миграция
/auth.selectWallet - 15:00-18:00 Тестирование с реальным web2-client
Checkpoint 1.1: ✅ Аутентификация работает с web2-client
День 3: Контент и блокчейн
- 09:00-12:00 Миграция
/content.view/{id} - 12:00-15:00 Миграция
/blockchain.sendNewContentMessage - 15:00-18:00 Миграция
/blockchain.sendPurchaseContentMessage
Checkpoint 1.2: ✅ Основные функции создания/покупки контента работают
День 4: File uploads
- 09:00-12:00 Миграция chunked upload системы
- 12:00-15:00 Тестирование специальных заголовков
- 15:00-18:00 Integration testing с web2-client
Checkpoint 1.3: ✅ Загрузка файлов работает полностью
Критерии перехода к Фазе 2:
- ✅ 100% функциональность web2-client сохранена
- ✅ Все TIER 1 эндпоинты отвечают корректно
- ✅ Нет регрессий в производительности
Rollback план: Переключение main.py обратно на Sanic режим
🌐 Фаза 2: TIER 2 - Критически важные для MY Network (3 дня)
Ответственные: code + debug + devops modes
День 5: Межузловое общение
- 09:00-12:00 Миграция
/api/node/handshakeс Ed25519 - 12:00-15:00 Миграция
/api/node/content/sync - 15:00-18:00 Тестирование между реальными нодами
Checkpoint 2.1: ✅ Handshake между нодами работает
День 6: Network discovery и синхронизация
- 09:00-12:00 Миграция
/api/node/network/discover - 12:00-15:00 Миграция
/api/node/network/ping - 15:00-18:00 Миграция
/api/node/network/status
Checkpoint 2.2: ✅ Обнаружение и мониторинг нод работает
День 7: API v3.0 децентрализации
- 09:00-12:00 Миграция
/api/v3/sync/*endpoints - 12:00-15:00 Миграция
/api/v3/node/status - 15:00-18:00 Полное тестирование децентрализованной сети
Checkpoint 2.3: ✅ MY Network v3.0 функционирует без split
Критерии перехода к Фазе 3:
- ✅ Отсутствие network split
- ✅ Корректная синхронизация контента между нодами
- ✅ Stable межузловое общение
Rollback план: Экстренное переключение на Sanic + изоляция проблемных нод
📊 Фаза 3: TIER 3 - Системные функции (2 дня)
Ответственные: devops + debug modes
День 8: Health checks и мониторинг
- 09:00-12:00 Миграция health endpoints для Kubernetes
- 12:00-15:00 Миграция Prometheus метрик
- 15:00-18:00 Настройка мониторинга в production
Checkpoint 3.1: ✅ Мониторинг и health checks работают
День 9: MY Network мониторинг
- 09:00-12:00 Миграция
/api/my/monitordashboard - 12:00-15:00 Адаптация HTML templates для FastAPI
- 15:00-18:00 Тестирование ASCII monitoring
Checkpoint 3.2: ✅ MY Network dashboard функционирует
Критерии перехода к Фазе 4:
- ✅ Kubernetes probes работают корректно
- ✅ Prometheus метрики собираются
- ✅ MY Network dashboard доступен
🧹 Фаза 4: Очистка и оптимизация (2 дня)
Ответственные: code + architect modes
День 10: Удаление Sanic кода
- 09:00-12:00 Удаление Sanic blueprints и routes
- 12:00-15:00 Удаление Sanic middleware
- 15:00-18:00 Очистка imports и зависимостей
Checkpoint 4.1: ✅ Sanic код полностью удален
День 11: Финальная оптимизация
- 09:00-12:00 Обновление main.py (только FastAPI)
- 12:00-15:00 Обновление Docker конфигурации
- 15:00-18:00 Финальное тестирование всей системы
Checkpoint 4.2: ✅ Система работает только на FastAPI
Критерии завершения:
- ✅ Полное удаление Sanic зависимостей
- ✅ Обновленная документация
- ✅ Производительность соответствует ожиданиям
⚠️ Risk Assessment и Mitigation стратегии
🚨 КРИТИЧЕСКИЕ РИСКИ (Уровень: BLOCKER)
Risk 1: Network Split в MY Network v3.0
Вероятность: 25% | Воздействие: КАТАСТРОФИЧЕСКОЕ
Описание: Несовместимость Ed25519 подписей или детерминированных хэшей может привести к разделению сети на изолированные группы нод.
Mitigation:
- ✅ Превентивные меры: Обязательное тестирование совместимости в Фазе 0
- 🔧 Monitoring: Непрерывный мониторинг network topology в реальном времени
- 🚨 Detection: Автоматические алерты при обнаружении split
- 🔄 Rollback: Немедленное переключение на Sanic при обнаружении проблем
Критерии обнаружения:
# Алерт при падении inter-node connections < 80%
inter_node_connections_success_rate < 0.8
# Алерт при росте signature verification failures > 5%
signature_verification_failure_rate > 0.05
# Алерт при обнаружении изолированных node groups
isolated_node_groups_detected == true
Risk 2: web2-client API Breaking Changes
Вероятность: 20% | Воздействие: ВЫСОКОЕ
Описание: Изменения в API response format или behavior могут сломать существующий web2-client.
Mitigation:
- ✅ Contract testing: Автоматические тесты для всех используемых API
- 🧪 Schema validation: Проверка response schemas соответствуют ожиданиям
- 📱 Client testing: Запуск web2-client против migrated endpoints
- 🔄 Gradual rollout: Поэтапное переключение endpoints
Test scenarios:
// Критические тесты для web2-client compatibility
describe('web2-client API compatibility', () => {
test('auth.twa returns correct token format', async () => {
const response = await api.post('/auth.twa', payload)
expect(response.data).toHaveProperty('auth_v1_token')
expect(response.data).toHaveProperty('connected_wallet')
})
test('chunked upload headers processed correctly', async () => {
const response = await api.post('/', chunk, {
headers: {
'X-File-Name': btoa(fileName),
'X-Chunk-Start': '0',
'X-Last-Chunk': '1'
}
})
expect(response.data).toHaveProperty('content_id_v1')
})
})
Risk 3: Ed25519 Cryptographic Incompatibility
Вероятность: 15% | Воздействие: КРИТИЧЕСКОЕ
Описание: Различия в cryptographic operations между Sanic и FastAPI могут нарушить межузловое общение.
Mitigation:
- 🔬 Cross-validation: Тестирование подписей созданных в Sanic против FastAPI
- 📋 Deterministic testing: Проверка одинаковых результатов на одинаковых входных данных
- 🔄 Fallback mechanism: Возможность временной работы в legacy режиме
- 📊 Monitoring: Непрерывный мониторинг signature verification rates
Validation script:
async def test_cross_framework_crypto_compatibility():
"""Тест совместимости криптографии между Sanic и FastAPI"""
test_message = {"content": "test", "timestamp": 1640995200}
# Создаем подпись в Sanic
sanic_signature = sanic_ed25519_manager.sign_message(test_message)
# Проверяем в FastAPI
fastapi_valid = fastapi_ed25519_manager.verify_signature(
test_message, sanic_signature, public_key
)
# Создаем подпись в FastAPI
fastapi_signature = fastapi_ed25519_manager.sign_message(test_message)
# Проверяем в Sanic
sanic_valid = sanic_ed25519_manager.verify_signature(
test_message, fastapi_signature, public_key
)
assert fastapi_valid and sanic_valid, "Cross-framework crypto incompatibility!"
⚠️ ВЫСОКИЕ РИСКИ (Уровень: HIGH)
Risk 4: Performance Degradation
Вероятность: 30% | Воздействие: СРЕДНЕЕ
Описание: Неоптимальная конфигурация FastAPI может привести к снижению производительности.
Mitigation:
- 📈 Baseline measurement: Замеры производительности до миграции
- 🧪 Load testing: Stress testing каждого migrated component
- ⚡ Optimization: Тюнинг FastAPI settings (workers, connection pools)
- 📊 Continuous monitoring: Real-time performance metrics
Performance benchmarks:
# Target performance metrics (должны быть ≥ Sanic baseline)
avg_response_time_ms ≤ sanic_baseline * 1.1
requests_per_second ≥ sanic_baseline * 0.9
memory_usage_mb ≤ sanic_baseline * 1.2
cpu_usage_percent ≤ sanic_baseline * 1.1
Risk 5: Middleware Configuration Conflicts
Вероятность: 25% | Воздействие: СРЕДНЕЕ
Описание: Неправильный порядок или конфигурация middleware может нарушить security или functionality.
Mitigation:
- 📋 Middleware mapping: Детальный анализ Sanic → FastAPI middleware
- 🧪 Unit testing: Изолированное тестирование каждого middleware
- 🔄 Staged rollout: Поэтапная активация middleware stack
- 🔍 Monitoring: Отслеживание middleware execution time и errors
📊 СРЕДНИЕ РИСКИ (Уровень: MEDIUM)
Risk 6: Rate Limiting Configuration Issues
Вероятность: 40% | Воздействие: НИЗКОЕ
Описание: Неправильная конфигурация rate limiting может привести к false positives или недостаточной защите.
Mitigation:
- 🔄 Gradual tuning: Постепенная настройка rate limits
- 📊 Monitoring: Отслеживание rate limit hits и false positives
- 🧪 Testing: Load testing для определения оптимальных лимитов
- 📋 Documentation: Четкая документация по rate limiting rules
Risk 7: CORS and Headers Issues
Вероятность: 35% | Воздействие: НИЗКОЕ
Описание: Неправильная конфигурация CORS может нарушить web2-client или межузловое общение.
Mitigation:
- 🔍 Header inspection: Анализ всех необходимых headers
- 🧪 Browser testing: Тестирование в различных browsers
- 📋 Documentation: Четкая документация CORS policy
- 🔄 Iterative fixing: Поэтапное решение CORS issues
🧪 Тестовая стратегия для каждого этапа
🔬 Фаза 0: Валидационное тестирование
Криптографические тесты:
# tests/test_crypto_compatibility.py
class TestCryptoCompatibility:
def test_ed25519_cross_framework(self):
"""Ed25519 подписи должны быть совместимы между Sanic и FastAPI"""
def test_deterministic_hashes(self):
"""SHA-256 хэши должны быть идентичными"""
def test_node_id_generation(self):
"""NODE_ID должен генерироваться одинаково"""
TON proof валидация:
# tests/test_ton_proof.py
class TestTonProofCompatibility:
def test_ton_proof_validation_sanic_vs_fastapi(self):
"""TON proof должен валидироваться одинаково"""
def test_ton_connect_integration(self):
"""Интеграция с TON Connect UI должна работать"""
🔥 Фаза 1: web2-client Compatibility тесты
API Contract тесты:
# tests/test_web2_client_api.py
class TestWeb2ClientAPI:
def test_auth_twa_endpoint(self):
"""POST /auth.twa должен возвращать корректный формат"""
def test_content_view_endpoint(self):
"""GET /content.view/{id} должен работать с web2-client"""
def test_blockchain_endpoints(self):
"""Blockchain API должен быть совместим"""
def test_chunked_upload_headers(self):
"""Chunked upload должен обрабатывать специальные заголовки"""
End-to-End тесты:
// e2e/web2-client-integration.spec.ts
describe('web2-client Integration', () => {
test('full user authentication flow', async () => {
// Тест полного flow аутентификации
})
test('content creation and purchase flow', async () => {
// Тест создания и покупки контента
})
test('file upload and processing', async () => {
// Тест загрузки файлов
})
})
🌐 Фаза 2: MY Network Decentralization тесты
Межузловые тесты:
# tests/test_internode_communication.py
class TestInternodeCommunication:
def test_handshake_between_nodes(self):
"""Handshake между нодами должен работать"""
def test_content_sync_without_consensus(self):
"""Синхронизация контента БЕЗ консенсуса"""
def test_network_discovery(self):
"""Обнаружение нод в сети"""
def test_signature_verification_rates(self):
"""Проверка процента успешных верификаций подписей"""
Network Stability тесты:
# tests/test_network_stability.py
class TestNetworkStability:
def test_no_network_split(self):
"""Отсутствие split сети"""
def test_individual_node_decisions(self):
"""Индивидуальные решения нод работают"""
def test_fallback_mechanisms(self):
"""Fallback механизмы при недоступности нод"""
📊 Фаза 3: System функциональность тесты
Health и мониторинг:
# tests/test_system_health.py
class TestSystemHealth:
def test_kubernetes_health_endpoints(self):
"""Health endpoints для K8s"""
def test_prometheus_metrics(self):
"""Prometheus метрики собираются"""
def test_my_network_dashboard(self):
"""MY Network dashboard работает"""
🧹 Фаза 4: Финальные тесты
Performance тесты:
# tests/test_performance.py
class TestPerformance:
def test_response_times_vs_sanic(self):
"""Response times не хуже чем у Sanic"""
def test_throughput_under_load(self):
"""Throughput под нагрузкой"""
def test_memory_and_cpu_usage(self):
"""Потребление ресурсов"""
Load testing стратегия:
# Нагрузочное тестирование с постепенным увеличением
artillery run load-test-auth.yml # Аутентификация
artillery run load-test-content.yml # Контент API
artillery run load-test-internode.yml # Межузловое общение
artillery run load-test-full.yml # Полная нагрузка
🚨 Continuous Testing во время миграции
Smoke тесты (каждые 15 минут):
#!/bin/bash
# smoke_test.sh - быстрые тесты критической функциональности
# Проверка аутентификации
curl -X POST /auth.twa -d "$test_payload" | jq '.auth_v1_token'
# Проверка межузлового общения
curl -X POST /api/node/handshake -H "X-Node-Signature: $signature"
# Проверка создания контента
curl -X POST /blockchain.sendNewContentMessage -H "Authorization: $token"
Regression тесты (каждый час):
# Автоматические regression тесты
pytest tests/critical/ -v --tb=short --maxfail=1
👥 Координация команд и делегирование задач
🏗️ Architect Mode - Планирование и надзор (Весь проект)
Ответственности:
- 📋 Стратегическое планирование и контроль timeline
- 🔍 Code review критически важных изменений
- 📊 Risk assessment и митigation стратегии
- 📖 Документация архитектурных решений
Задачи по фазам:
- Фаза 0: Валидация архитектурной совместимости
- Фаза 1-2: Review критических изменений API
- Фаза 3-4: Финальная архитектурная валидация
Критерии handoff к другим modes:
- ✅ Архитектурное решение утверждено
- ✅ Risk assessment completed
- ✅ Техническое задание для code mode готово
💻 Code Mode - Реализация миграции (Фаза 1-4)
Ответственности:
- 🔧 Миграция endpoints с Sanic на FastAPI
- 🛠️ Адаптация middleware для FastAPI
- 🧪 Unit тестирование каждого компонента
- 📝 Code documentation и комментарии
Детальное делегирование:
Фаза 1 (Дни 2-4): TIER 1 эндпоинты
# День 2: Аутентификация
@code_mode_task
def migrate_auth_endpoints():
"""
Migrate:
- POST /auth.twa (TON proof validation)
- POST /auth.selectWallet
- GET /auth/me
- POST /auth/refresh
"""
# День 3: Контент и блокчейн
@code_mode_task
def migrate_content_blockchain():
"""
Migrate:
- GET /content.view/{id}
- POST /blockchain.sendNewContentMessage
- POST /blockchain.sendPurchaseContentMessage
"""
# День 4: File uploads
@code_mode_task
def migrate_file_uploads():
"""
Migrate chunked upload system:
- Handle X-File-Name, X-Chunk-Start headers
- Support X-Last-Chunk detection
- Maintain upload_id logic
"""
Фаза 2 (Дни 5-7): TIER 2 эндпоинты
# День 5: Межузловое общение
@code_mode_task
def migrate_internode_communication():
"""
Migrate node communication with Ed25519:
- POST /api/node/handshake
- POST /api/node/content/sync
- Verify Ed25519 signatures compatibility
"""
# День 6-7: Network discovery и v3.0 API
@code_mode_task
def migrate_network_protocols():
"""
Migrate MY Network v3.0 protocols:
- /api/node/network/* endpoints
- /api/v3/sync/* endpoints
- Ensure NO consensus logic
"""
Критерии handoff к debug mode:
- ✅ Код реализован согласно спецификации
- ✅ Unit тесты проходят
- ✅ Code review пройден
- ❌ Integration тесты показывают ошибки
🪲 Debug Mode - Диагностика и исправление (Фаза 0-4)
Ответственности:
- 🔍 Диагностика проблем совместимости
- 🧪 Integration testing между компонентами
- 📊 Performance profiling и оптимизация
- 🚨 Мониторинг в реальном времени
Специализированные задачи:
Фаза 0: Validation и совместимость
@debug_mode_task
def validate_crypto_compatibility():
"""
Critical validation:
- Ed25519 signatures Sanic ↔ FastAPI
- SHA-256 hash determinism
- TON proof validation consistency
"""
@debug_mode_task
def setup_monitoring_and_alerting():
"""
Setup comprehensive monitoring:
- Network split detection
- Signature verification rates
- API response time tracking
"""
Фаза 1-2: Integration debugging
@debug_mode_task
def debug_web2_client_integration():
"""
Diagnose web2-client issues:
- API response format validation
- CORS and headers troubleshooting
- TON Connect UI integration
"""
@debug_mode_task
def debug_internode_communication():
"""
Diagnose MY Network issues:
- Ed25519 signature failures
- Network discovery problems
- Content sync debugging
"""
Критерии handoff к devops mode:
- ✅ Локальная функциональность работает
- ✅ Integration тесты проходят
- ✅ Performance в пределах нормы
- ❌ Production deployment issues
🚀 DevOps Mode - Deployment и инфраструктура (Фаза 2-4)
Ответственности:
- 🐳 Docker и Kubernetes конфигурация
- 📊 Monitoring и alerting setup
- 🔄 CI/CD pipeline для миграции
- 🛡️ Production deployment strategy
Специализированные задачи:
Фаза 2: Production готовность
# devops_mode_tasks.yml
production_readiness:
- task: "Setup Kubernetes health checks"
endpoints: ["/health", "/health/ready", "/health/live"]
- task: "Configure Prometheus metrics"
metrics: ["inter_node_connections", "signature_verification_rate"]
- task: "Setup alerting rules"
alerts: ["network_split", "crypto_failures", "performance_degradation"]
Фаза 3-4: Infrastructure optimization
#!/bin/bash
# devops_optimization.sh
# Docker optimization
optimize_docker_image() {
# Multi-stage build optimization
# Remove Sanic dependencies
# Optimize FastAPI configuration
}
# Kubernetes scaling
setup_horizontal_pod_autoscaling() {
# Based on CPU and memory metrics
# Custom metrics for inter-node load
}
# Monitoring dashboards
deploy_grafana_dashboards() {
# MY Network v3.0 specific metrics
# web2-client API performance
# Migration progress tracking
}
Критерии успеха:
- ✅ Zero-downtime deployment capability
- ✅ Comprehensive monitoring active
- ✅ Alerting rules validated
- ✅ Rollback procedures tested
🔄 Coordination Workflow между modes
Daily Stand-up Structure:
09:00-09:30 - Daily Sync
├── Architect: Timeline status, risks, decisions needed
├── Code: Implementation progress, blockers
├── Debug: Issues found, integration status
└── DevOps: Infrastructure status, deployment readiness
Evening Wrap-up (18:00-18:15)
├── Checkpoint review
├── Next day planning
├── Risk reassessment
└── Handoff decisions
Communication План:
Immediate escalation triggers:
- 🚨 Network split detected → All modes mobilize
- 🚨 Crypto incompatibility → Architect + Debug immediate review
- 🚨 web2-client breaking → Code + Debug immediate fix
- 🚨 Production outage → DevOps + Debug emergency response
Information flow:
graph LR
A[Architect] -->|Requirements| C[Code]
C -->|Implementation| D[Debug]
D -->|Validation| O[DevOps]
O -->|Feedback| A
D -->|Issues| C
C -->|Clarification| A
O -->|Infrastructure needs| A
Handoff Criteria между modes:
Architect → Code:
- ✅ Technical specification approved
- ✅ Risk assessment documented
- ✅ Success criteria defined
Code → Debug:
- ✅ Implementation complete
- ✅ Unit tests passing
- ✅ Code reviewed and approved
Debug → DevOps:
- ✅ Integration tests passing
- ✅ Performance baseline met
- ✅ No critical issues found
DevOps → Architect:
- ✅ Production deployment successful
- ✅ Monitoring active
- ✅ Phase completion confirmed
📋 Конкретные команды и критерии завершения
🔧 Конкретные команды для каждого этапа
Фаза 0: Подготовка
# Валидация криптографической совместимости
python tests/test_crypto_compatibility.py --verbose
python tests/test_ton_proof_validation.py
# Setup мониторинга
kubectl apply -f monitoring/prometheus-rules.yml
kubectl apply -f monitoring/grafana-dashboards.yml
# Baseline performance measurement
artillery run performance/baseline-sanic.yml
Фаза 1: web2-client TIER 1
# Миграция аутентификации
cd uploader-bot
python -m code_mode.migrate_auth_endpoints
pytest tests/test_web2_client_auth.py -v
# Миграция контента
python -m code_mode.migrate_content_endpoints
pytest tests/test_web2_client_content.py -v
# Миграция uploads
python -m code_mode.migrate_upload_system
pytest tests/test_chunked_uploads.py -v
# E2E тестирование с web2-client
cd ../web2-client
npm test -- --testPathPattern=integration
Фаза 2: MY Network TIER 2
# Миграция межузлового общения
python -m code_mode.migrate_internode_communication
pytest tests/test_internode_handshake.py -v
# Валидация Ed25519 совместимости
python tests/validate_ed25519_across_frameworks.py
# Тестирование network discovery
python tests/test_network_discovery.py -v
# Проверка отсутствия network split
python tools/check_network_topology.py --alert-on-split
Фаза 3: System TIER 3
# Миграция health endpoints
python -m code_mode.migrate_health_endpoints
curl http://localhost:8000/health/detailed | jq
# Миграция мониторинга
python -m code_mode.migrate_monitoring_dashboard
curl http://localhost:8000/api/my/monitor | grep "ASCII"
# Kubernetes validation
kubectl get pods -o wide
kubectl describe service uploader-bot-service
Фаза 4: Очистка
# Удаление Sanic кода
python tools/remove_sanic_dependencies.py --dry-run
python tools/remove_sanic_dependencies.py --execute
# Обновление конфигурации
sed -i 's/USE_FASTAPI=.*/USE_FASTAPI=true/' .env
docker build -t uploader-bot:fastapi-only .
# Финальная валидация
python tests/test_full_system_fastapi_only.py
artillery run performance/final-fastapi.yml
✅ Детальные критерии завершения каждого этапа
Фаза 0: Подготовка - ЗАВЕРШЕНА
- Crypto compatibility: Ed25519 подписи идентичны в Sanic и FastAPI
- Hash determinism: SHA-256 хэши контента одинаковые на разных платформах
- TON proof validation: TON Connect proof валидируется одинаково
- Monitoring setup: Prometheus metrics и Grafana dashboards активны
- Baseline metrics: Performance baseline Sanic измерен и задокументирован
Validation commands:
# Все эти команды должны вернуть exit code 0
python tests/test_crypto_compatibility.py --strict
python tests/test_hash_determinism.py --cross-platform
python tests/test_ton_proof_validation.py --comprehensive
curl http://prometheus:9090/api/v1/query?query=up | jq '.data.result | length'
Фаза 1: web2-client TIER 1 - ЗАВЕРШЕНА
- Auth endpoints:
/auth.twa,/auth.selectWalletработают с web2-client - Content endpoints:
/content.view/{id}возвращает корректные данные - Blockchain endpoints:
/blockchain.sendNewContentMessage,/blockchain.sendPurchaseContentMessageфункциональны - Upload system: Chunked uploads с заголовками
X-File-Name,X-Chunk-Start,X-Last-Chunk - E2E compatibility: web2-client проходит все интеграционные тесты
- Performance: Response times ≤ 110% от Sanic baseline
Validation commands:
# web2-client интеграционные тесты
cd web2-client && npm test -- --testPathPattern=integration --passWithNoTests=false
# API contract тесты
python tests/test_web2_client_contracts.py --all-endpoints
# Performance validation
artillery run performance/web2-client-endpoints.yml | grep "http.response_time"
Фаза 2: MY Network TIER 2 - ЗАВЕРШЕНА
- Handshake protocol: Межузловой handshake с Ed25519 подписями работает
- Content sync: Синхронизация контента БЕЗ консенсуса функционирует
- Network discovery: Обнаружение нод в сети активно
- API v3.0: Все
/api/v3/*endpoints отвечают корректно - No network split: Топология сети стабильна, split не обнаружен
- Signature verification: ≥95% успешных верификаций Ed25519 подписей
Validation commands:
# Проверка межузлового общения
python tests/test_internode_full_protocol.py --real-nodes
# Проверка отсутствия network split
python tools/network_topology_validator.py --check-split --threshold=0.8
# Мониторинг signature verification rate
curl "http://prometheus:9090/api/v1/query?query=signature_verification_success_rate" | \
jq '.data.result[0].value[1] | tonumber >= 0.95'
Фаза 3: System TIER 3 - ЗАВЕРШЕНА
- Health endpoints: Kubernetes probes (
/health,/health/ready,/health/live) работают - Prometheus metrics: Все метрики собираются и доступны в Prometheus
- MY Network dashboard:
/api/my/monitorвозвращает HTML dashboard - System stats:
/metrics,/statsendpoints функциональны - K8s integration: Pods healthy, services reachable
Validation commands:
# Kubernetes health validation
kubectl get pods -o jsonpath='{.items[*].status.phase}' | grep -v Running && exit 1 || exit 0
# Prometheus metrics validation
curl http://prometheus:9090/api/v1/label/__name__/values | \
jq '.data | map(select(startswith("uploader_bot_"))) | length >= 10'
# Dashboard accessibility
curl http://localhost:8000/api/my/monitor | grep -q "MY Network Monitor" && echo "OK"
Фаза 4: Очистка - ЗАВЕРШЕНА
- Sanic removal: Все Sanic imports, blueprints, middleware удалены
- Dependencies cleanup:
sanicудален из requirements.txt - Configuration update:
main.pyиспользует только FastAPI - Docker optimization: Image собирается без Sanic зависимостей
- Documentation update: Вся документация обновлена для FastAPI
- Final performance: Производительность ≥90% от Sanic baseline
Validation commands:
# Проверка отсутствия Sanic кода
grep -r "import sanic\|from sanic" uploader-bot/app/ && exit 1 || exit 0
grep -q "sanic" uploader-bot/requirements.txt && exit 1 || exit 0
# Проверка конфигурации
python -c "from uploader-bot.app.main import get_app_mode; assert get_app_mode() == 'fastapi'"
# Final performance test
artillery run performance/final-comparison.yml | \
python tools/compare_performance.py --baseline performance/baseline-sanic.json --threshold 0.9
🚨 Emergency Stop критерии
НЕМЕДЛЕННАЯ ОСТАНОВКА миграции при:
- 🚨 Network split detected:
isolated_node_groups_detected == true - 🚨 Crypto failure rate >10%:
signature_verification_failure_rate > 0.1 - 🚨 web2-client broken: E2E тесты падают >50%
- 🚨 Performance degradation >50%: Response times >150% baseline
- 🚨 Production outage: Service unavailable >5 минут
Emergency rollback procedure:
#!/bin/bash
# emergency_rollback.sh
echo "🚨 EMERGENCY ROLLBACK ACTIVATED"
# 1. Переключение на Sanic режим
export USE_FASTAPI=false
kubectl set env deployment/uploader-bot USE_FASTAPI=false
# 2. Откат к предыдущей версии
kubectl rollout undo deployment/uploader-bot
# 3. Проверка восстановления
kubectl rollout status deployment/uploader-bot --timeout=300s
# 4. Валидация функциональности
python tests/smoke_test_sanic.py --critical-only
echo "✅ Rollback completed, system stable"
🎯 Заключение
✅ Готовность к исполнению: 95%
Консолидированная стратегия миграции объединяет все критические требования:
- 🌐 MY Network v3.0 децентрализация - сохранение архитектуры без консенсуса
- 📱 web2-client совместимость - 100% backward compatibility для пользователей
- 🔒 Безопасность - полное сохранение Ed25519 криптографии
- 📈 Производительность - улучшение на 30-40% после завершения
🗓️ Executive Timeline
| Фаза | Дни | Критичность | Результат |
|---|---|---|---|
| Фаза 0 | 1 день | 🔥 КРИТИЧНО | Валидация совместимости |
| Фаза 1 | 3 дня | 🔥 КРИТИЧНО | web2-client работает |
| Фаза 2 | 3 дня | 🔥 КРИТИЧНО | MY Network стабилен |
| Фаза 3 | 2 дня | ⚠️ ВАЖНО | Мониторинг активен |
| Фаза 4 | 2 дня | ✅ ОПЦИОНАЛЬНО | Код оптимизирован |
| ИТОГО | 11 дней | Полная миграция |
🚀 Следующие шаги
- Немедленно: Валидация готовности в Фазе 0
- День 1: Старт миграции TIER 1 endpoints
- День 5: Переход к MY Network критичным компонентам
- День 11: Завершение миграции и production optimization
📞 Контакты и эскалация
Архитектурные решения: architect mode
Реализация кода: code mode
Диагностика проблем: debug mode
Production deployment: devops mode
Emergency escalation: Все modes одновременно при критических проблемах
Документ подготовлен для обеспечения успешной миграции Sanic → FastAPI с полным сохранением функциональности MY Network v3.0 и web2-client совместимости | Январь 2025