🏗️ Архитектура системы

🏗️ Архитектура системы Wiki Iridium

📖 Обзор архитектуры

Wiki Iridium построена по принципу разделения фронтенда и бэкенда, что обеспечивает масштабируемость, безопасность и простоту обслуживания.

Общая схема архитектуры

$$┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ Пользователи │ │ Nginx │ │ Hugo Frontend │ │ │◄──►│ (Reverse Proxy) │◄──►│ (Port 1313) │ │ Веб-браузеры │ │ (Port 80/443) │ │ │ └─────────────────┘ └──────────────────┘ └─────────────────┘ │ │ │ │ ▼ ▼ ┌──────────────────┐ ┌─────────────────┐ │ Go API Backend │ │ Static Content │ │ (Port 8000) │ │ Generated by │ │ (Gin Framework)│ │ Hugo │ └──────────────────┘ └─────────────────┘ │ │ ▼ ┌──────────────────┐ │ PostgreSQL │ │ Database │ │ (Port 5432) │ └──────────────────┘$$

🧩 Компоненты системы

1. Frontend Layer (Hugo)

  • Назначение: Генерация статического контента
  • Технологии: Hugo, HTML5, CSS3, JavaScript
  • Порт: 1313
  • Особенности:
    • Live reload в режиме разработки
    • Автоматическая генерация навигации
    • Поддержка Markdown
    • Темизация и кастомизация

2. Backend API (Go)

  • Назначение: Бизнес-логика и управление данными
  • Технологии: Go, Gin Framework
  • Порт: 8000
  • Функциональность:
    • Аутентификация пользователей
    • Управление ролями
    • API для мобильных приложений
    • Административные функции

3. Database Layer (PostgreSQL)

  • Назначение: Хранение пользовательских данных
  • Технологии: PostgreSQL 13+
  • Порт: 5432
  • Структура:
    • Таблицы пользователей
    • Сессии и токены
    • Логи активности
    • Метаданные системы

4. Proxy Layer (Nginx)

  • Назначение: Маршрутизация и SSL терминация
  • Технологии: Nginx
  • Порты: 80 (HTTP), 443 (HTTPS)
  • Функции:
    • SSL/TLS шифрование
    • Сжатие контента
    • Кэширование статики
    • Балансировка нагрузки

Безопасность архитектуры

Уровни защиты

$$┌─────────────────────────────────────────────────────────────┐ │ Уровень сети │ │ • Firewall правила │ │ • DDoS защита │ │ • IP фильтрация │ └─────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ Уровень приложения │ │ • JWT токены │ │ • Ролевая авторизация │ │ • Валидация входных данных │ └─────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ Уровень данных │ │ • Шифрование паролей │ │ • Подготовленные запросы │ │ • Аудит операций │ └─────────────────────────────────────────────────────────────┘$$

Аутентификация и авторизация

  1. Аутентификация:

    • Логин/пароль пользователя
    • Генерация JWT токена
    • Сохранение в localStorage
  2. Авторизация:

    • Проверка токена на каждый запрос
    • Валидация роли пользователя
    • Контроль доступа к ресурсам

Потоки данных

Аутентификация пользователя

$$Пользователь → Nginx → Hugo → JavaScript → Go API → PostgreSQL ↓ ↑ ↑ ↑ ↑ Логин Страница Токен Проверка Данные логина пользователя$$

Просмотр контента

$$Пользователь → Nginx → Hugo → Статический контент ↓ ↑ ↑ Запрос Страница Markdown файлы$$

API запросы

$$JavaScript → Nginx → Go API → PostgreSQL ↓ ↑ ↑ ↑ AJAX запрос Проксирование Бизнес-логика Данные$$

Масштабирование

Горизонтальное масштабирование

$$ ┌─────────────────┐ │ Load Balancer │ └─────────────────┘ │ ┌──────────────┼──────────────┐ │ │ │ ┌───────▼────┐ ┌───────▼────┐ ┌───────▼────┐ │ Hugo #1 │ │ Hugo #2 │ │ Hugo #3 │ │ Go API #1 │ │ Go API #2 │ │ Go API #3 │ └────────────┘ └────────────┘ └────────────┘ │ │ │ └──────────────┼──────────────┘ │ ┌──────▼──────┐ │ PostgreSQL │ │ Cluster │ └─────────────┘$$

Вертикальное масштабирование

  • CPU: Увеличение количества ядер
  • RAM: Добавление оперативной памяти
  • Storage: Переход на SSD, увеличение объема
  • Network: Увеличение пропускной способности

Мониторинг и логирование

Метрики системы

$$┌──────────────────────────────────────────────────────────────┐ │ Monitoring Stack │ ├──────────────────────────────────────────────────────────────┤ │ Application Logs │ System Metrics │ User Analytics │ │ • Go API logs │ • CPU/Memory │ • Page views │ │ • Hugo build logs │ • Disk I/O │ • User sessions │ │ • Nginx logs │ • Network │ • Error rates │ ├──────────────────────────────────────────────────────────────┤ │ Alert Manager │ │ • Email notifications │ │ • Slack integration │ │ • SMS alerts (critical) │ └──────────────────────────────────────────────────────────────┘$$

Логирование

  1. Application Level:

    // Go API
    log.Printf("User %s authenticated successfully", userID)
    log.Printf("Database connection failed: %v", err)
    
  2. System Level:

    # Systemd журналы
    journalctl -u iridium-hugo.service
    journalctl -u iridium-api.service
    
  3. Web Server Level:

    # Nginx логи
    access_log /var/log/nginx/wiki_access.log;
    error_log /var/log/nginx/wiki_error.log;
    

Конфигурация окружений

Development

Environment: development
Debug: true
Database: local PostgreSQL
SSL: self-signed
Monitoring: basic logging

Staging

Environment: staging
Debug: false
Database: staging PostgreSQL
SSL: Let's Encrypt
Monitoring: full stack

Production

Environment: production
Debug: false
Database: production cluster
SSL: commercial certificate
Monitoring: full + alerting

Системные требования

Минимальные требования

  • CPU: 2 cores, 2.0 GHz
  • RAM: 4 GB
  • Storage: 20 GB SSD
  • Network: 100 Mbps

Рекомендуемые требования

  • CPU: 4 cores, 3.0 GHz
  • RAM: 8 GB
  • Storage: 50 GB NVMe SSD
  • Network: 1 Gbps

Продакшн требования

  • CPU: 8+ cores, 3.5+ GHz
  • RAM: 16+ GB
  • Storage: 100+ GB NVMe SSD
  • Network: 10+ Gbps

CI/CD Pipeline

Процесс развертывания

$$┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Git Push │──▶│ Build │──▶│ Tests │──▶│ Deploy │ │ │ │ • Hugo │ │ • Unit │ │ • Staging │ │ │ │ • Go API │ │ • E2E │ │ • Prod │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘$$

Автоматизация

  1. Build Stage:

    • Сборка Hugo сайта
    • Компиляция Go API
    • Создание Docker образов
  2. Test Stage:

    • Unit тесты API
    • Integration тесты
    • Security сканирование
  3. Deploy Stage:

    • Развертывание на staging
    • Smoke тесты
    • Развертывание на production

Инструменты разработки

Backend

  • IDE: GoLand, VSCode
  • Testing: Go testing, testify
  • Documentation: Swagger/OpenAPI
  • Profiling: pprof, go-torch

Frontend

  • Editor: VSCode, Sublime Text
  • Testing: Selenium, Playwright
  • Build: Hugo, webpack
  • Optimization: Lighthouse, PageSpeed

Дополнительные ресурсы