# FinTech GitOps CI/CD - Технические спецификации компонентов **Версия:** 1.0 **Дата:** Январь 2026 **Целевая аудитория:** Infrastructure Team, DevOps, System Administrators, Procurement --- ## Содержание 1. [Gitea - Git Repository](#1-gitea) 2. [Jenkins - CI Server](#2-jenkins) 3. [Harbor - Container Registry](#3-harbor) 4. [Docker Swarm Cluster](#4-docker-swarm-cluster) 5. [GitOps Operator](#5-gitops-operator) 6. [Portainer - Management UI](#6-portainer) 7. [Ollama - AI Server](#7-ollama) 8. [MCP Server](#8-mcp-server) 9. [Monitoring Stack](#9-monitoring-stack) 10. [Database Infrastructure](#10-database-infrastructure) 11. [Storage Infrastructure](#11-storage-infrastructure) 12. [Network Infrastructure](#12-network-infrastructure) 13. [Сводная таблица ресурсов](#13-сводная-таблица-ресурсов) --- ## 1. Gitea ### Назначение Централизованное хранилище кода, конфигураций и базы знаний компании. ### Production спецификация | Параметр | Значение | Обоснование | |----------|----------|-------------| | **CPU** | 8 vCPU | Git операции CPU-intensive при больших репозиториях | | **RAM** | 16 GB | 8 GB Gitea + 4 GB PostgreSQL + 4 GB OS/cache | | **Primary Disk** | 500 GB NVMe SSD RAID 1 | Быстрый доступ к Git objects, репликация для HA | | **Backup Disk** | 2 TB HDD RAID 10 | Долгосрочное хранение всей истории | | **Network** | 1-10 Gbps | 1 Gbps minimum, 10 Gbps preferred для больших pushes | | **IOPS** | 5000+ | Множество concurrent операций | | **IP Address** | 10.10.10.10 | Management VLAN | ### Development спецификация | Параметр | Значение | |----------|----------| | **CPU** | 4 vCPU | | **RAM** | 8 GB | | **Disk** | 200 GB SSD | | **Network** | 1 Gbps | | **IP Address** | 10.10.10.110 (Dev VLAN) | ### Программное обеспечение - **OS:** Ubuntu Server 22.04 LTS (hardened) - **Gitea:** Latest stable (1.21.x+) - **Database:** PostgreSQL 15.x - **Web Server:** Nginx (reverse proxy, TLS termination) - **Дополнительно:** Git LFS, Fail2ban ### Дисковое пространство - расчет ``` Базовая установка: - Gitea binary: 500 MB - PostgreSQL database: 2-5 GB (issues, PRs, metadata) Код и репозитории (пример для средней FinTech): - 50 активных репозиториев - Средний размер с историей: 1.5 GB - Итого: 75 GB База знаний и документация: - 1000+ документов Markdown - Диаграммы, изображения: 5 GB - Wiki pages: 1 GB - Итого: 6 GB Git LFS objects: 20 GB Backup snapshots: 100 GB Buffer для роста: 200 GB TOTAL: ~400 GB минимум Recommended: 500 GB с запасом ``` ### Backup стратегия - **Hourly:** Incremental Git repositories (только дельта) - **Daily:** Full PostgreSQL dump в 02:00 - **Weekly:** Full server snapshot - **Monthly:** Archive backup (7 years retention) ### High Availability - Master-slave PostgreSQL replication - Shared storage для Git repositories через NFS/GlusterFS - Automated failover через keepalived/Pacemaker - RTO: 15 minutes, RPO: 1 hour --- ## 2. Jenkins ### Назначение CI автоматизация - сборка, тестирование, security scanning, push образов. ### Production Master спецификация | Параметр | Значение | Обоснование | |----------|----------|-------------| | **CPU** | 16 vCPU | Координация множества параллельных builds | | **RAM** | 32 GB | JVM heap 24 GB + OS 8 GB | | **OS Disk** | 200 GB NVMe SSD RAID 1 | Jenkins home, plugins, configs | | **Workspace Disk** | 1 TB NVMe SSD | Temporary build artifacts | | **Archive Disk** | 2 TB HDD RAID 10 | Long-term artifact storage | | **Network** | 10 Gbps | Frequent Docker image push/pull | | **IOPS** | 10000+ | Parallel builds с интенсивным I/O | | **IP Address** | 10.10.10.20 | Management VLAN | ### JVM Configuration ``` Heap Size: -Xms16g -Xmx24g GC: -XX:+UseG1GC GC Pause: -XX:MaxGCPauseMillis=100 ``` ### Build Agents (динамические) | Тип | CPU | RAM | Disk | Назначение | |-----|-----|-----|------|-----------| | Light | 2 vCPU | 4 GB | 50 GB | Unit tests, linting | | Standard | 4 vCPU | 8 GB | 100 GB | Большинство builds | | Heavy | 8 vCPU | 16 GB | 200 GB | Integration tests, complex apps | | Docker | 8 vCPU | 16 GB | 200 GB SSD | Docker builds с layer caching | ### Development спецификация | Параметр | Значение | |----------|----------| | **CPU** | 8 vCPU | | **RAM** | 16 GB (JVM heap 12 GB) | | **Disk** | 500 GB SSD | | **Network** | 1 Gbps | ### Программное обеспечение - **OS:** Ubuntu Server 22.04 LTS - **Jenkins:** LTS версия (2.440.x+) - **Java:** OpenJDK 17 LTS - **Docker:** Docker CE latest (для builds) ### Критические plugins - Git, Gitea, Pipeline, Docker - Kubernetes (для dynamic agents) - Security: OWASP Dependency-Check, SonarQube, Trivy - Credentials Binding, RBAC - Slack, Email notifications - Prometheus Metrics --- ## 3. Harbor ### Назначение Enterprise container registry с security scanning и image signing. ### Production спецификация | Параметр | Значение | Обоснование | |----------|----------|-------------| | **CPU** | 8 vCPU | Image scanning и replication workload | | **RAM** | 16 GB | 8 GB Harbor + 4 GB PostgreSQL + 4 GB Redis/cache | | **Application Disk** | 200 GB SSD RAID 1 | Harbor application и database | | **Image Storage** | 10 TB HDD RAID 10 | Docker images (grows significantly) | | **Network** | 10 Gbps | High-frequency image push/pull | | **IOPS** | 5000+ для SSD | Metadata operations | | **IP Address** | 10.10.10.30 | Management VLAN | ### Storage расчет ``` Средний Docker image: 500 MB - 2 GB Количество приложений: 30-50 Версии на app: 10-20 (разные tags) Growth rate: 50% в год Пример: - 40 приложений - 15 версий каждого - Средний размер: 1 GB = 40 * 15 * 1 GB = 600 GB Плюс: - Base images (cached): 50 GB - Third-party images (proxy cache): 200 GB - Security scan data: 50 GB - Buffer: 100 GB TOTAL: ~1 TB минимум Recommended: 10 TB для long-term growth ``` ### Development спецификация | Параметр | Значение | |----------|----------| | **CPU** | 4 vCPU | | **RAM** | 8 GB | | **Disk** | 2 TB HDD | | **Network** | 1 Gbps | ### Программное обеспечение - **OS:** Ubuntu Server 22.04 LTS - **Harbor:** Latest stable (2.10.x+) - **Database:** PostgreSQL 15.x - **Cache:** Redis 7.x - **Scanner:** Trivy (встроенный) - **Storage Backend:** Local filesystem или S3-compatible ### Replication для DR - Geo-replication к secondary Harbor в DR site - Automated sync production images - Push-based replication policy --- ## 4. Docker Swarm Cluster ### Manager Nodes (3 ноды для HA) | Параметр | Значение | Обоснование | |----------|----------|-------------| | **Количество** | 3 | Quorum для Raft consensus (нечетное число) | | **CPU per node** | 4 vCPU | Orchestration, API, scheduling | | **RAM per node** | 8 GB | Raft data, cluster state | | **Disk per node** | 200 GB SSD | Raft log, etcd data | | **Network** | 10 Gbps | Raft consensus требует low latency | | **IP Range** | 10.20.1.1-3 | Swarm VLAN | **Important:** Manager nodes НЕ запускают application workloads (только infrastructure services). ### Worker Nodes (N нод для applications) | Параметр | Значение | Обоснование | |----------|----------|-------------| | **Минимум нод** | 3 | Для redundancy applications | | **Recommended** | 5-10+ | Зависит от workload | | **CPU per node** | 8-16 vCPU | Зависит от интенсивности приложений | | **RAM per node** | 32-64 GB | Зависит от memory footprint приложений | | **Disk per node** | 500 GB SSD | Local volumes, temporary data | | **Network** | 10 Gbps | Overlay network performance critical | | **IP Range** | 10.20.2.1-N | Swarm VLAN | ### Capacity Planning - Worker Nodes **Расчет на основе workload:** ``` Пример application requirements: - 30 microservices в production - Каждый microservice: 3 replicas (для HA) - Average CPU per replica: 0.5 CPU - Average RAM per replica: 1 GB Total requirements: - CPU: 30 * 3 * 0.5 = 45 CPUs - RAM: 30 * 3 * 1 GB = 90 GB С overhead (Swarm, monitoring agents, etc.) +20%: - CPU: 54 CPUs - RAM: 108 GB Распределение на 6 worker nodes: - CPU per node: 54 / 6 = 9 CPUs → 12 vCPU (с запасом) - RAM per node: 108 / 6 = 18 GB → 32 GB (с запасом) Результат: 6 nodes x 12 vCPU x 32 GB RAM ``` ### Программное обеспечение - **OS:** Ubuntu Server 22.04 LTS (kernel 5.15+) - **Docker:** Docker CE 24.x+ - **Overlay Network:** Encrypted (IPSec default) --- ## 5. GitOps Operator ### Назначение Автоматическая синхронизация между Git repository и Docker Swarm cluster. ### Спецификация | Параметр | Значение | |----------|----------| | **CPU** | 2 vCPU | | **RAM** | 4 GB | | **Disk** | 50 GB SSD | | **Network** | 1 Gbps | | **IP Address** | 10.10.10.40 | ### Программное обеспечение **Варианты реализации:** - Custom solution (Python/Go script) - Flux adapted для Swarm - ArgoCD adapted для Swarm **Функционал:** - Git polling каждые 30 секунд - Detect changes в compose files - Execute docker stack deploy - Health checking после deployment - Rollback при failures ### High Availability - Active-passive pair - Heartbeat monitoring - Automatic failover --- ## 6. Portainer ### Назначение Web UI для визуального управления и мониторинга Docker Swarm. ### Спецификация | Параметр | Значение | |----------|----------| | **CPU** | 2 vCPU | | **RAM** | 4 GB | | **Disk** | 50 GB SSD | | **Network** | 1 Gbps | | **IP Address** | 10.10.10.50 | ### Программное обеспечение - **Portainer:** Business Edition (для RBAC, audit) - **Database:** PostgreSQL или embedded (small dataset) - **OS:** Ubuntu Server 22.04 LTS ### Функционал - Swarm cluster visualization - Stack management - Service scaling - Log viewing - RBAC для team access - Templates для быстрого deploy --- ## 7. Ollama - AI Server ### Назначение Локальный AI model serving для company-wide AI assistant. ### Production спецификация | Параметр | Значение | Обоснование | |----------|----------|-------------| | **CPU** | 16 vCPU | Fallback если нет GPU | | **RAM** | 64 GB | Large models требуют ~40-60 GB | | **GPU** | NVIDIA A100 40GB или 2x RTX 4090 24GB | Значительно ускоряет inference | | **Disk** | 2 TB NVMe SSD | Models 10-100 GB каждая, multiple models | | **Network** | 10 Gbps | Fast response delivery | | **IP Address** | 10.30.10.10 | AI VLAN | ### GPU Рекомендации **Option 1: NVIDIA A100 40GB (Professional)** - Pros: Лучшая производительность, FP64 support, ECC memory - Cons: Дорого (~$10-15k) - Performance: ~10-15 tokens/sec для 70B model **Option 2: 2x NVIDIA RTX 4090 24GB (Enthusiast)** - Pros: Дешевле (~$3-4k), хорошая производительность - Cons: No ECC, gaming card (не для 24/7) - Performance: ~8-12 tokens/sec для 70B model (distributed) **Option 3: CPU only (Budget)** - Pros: No additional hardware - Cons: Очень медленно (1-2 tokens/sec для 70B) - Workable: Только для small models (7B-13B) ### Рекомендуемые модели | Model | Size | RAM Required | Use Case | |-------|------|--------------|----------| | **Llama 3.3 70B** | ~40 GB | 48 GB+ | General purpose, сложные задачи | | **Qwen 2.5 Coder 32B** | ~20 GB | 24 GB+ | Code generation, review | | **DeepSeek-R1 7B** | ~4 GB | 8 GB+ | Fast responses, simple queries | | **Mistral 7B** | ~4 GB | 8 GB+ | Легкие задачи, быстрый ответ | ### Development спецификация | Параметр | Значение | |----------|----------| | **CPU** | 8 vCPU | | **RAM** | 32 GB | | **GPU** | Optional | | **Disk** | 500 GB SSD | | **Network** | 1 Gbps | ### Программное обеспечение - **OS:** Ubuntu Server 22.04 LTS - **Ollama:** Latest version - **CUDA:** 12.x+ (если GPU) - **Models:** Llama 3, Qwen, DeepSeek, etc. --- ## 8. MCP Server ### Назначение Model Context Protocol server для интеграции AI с источниками данных. ### Спецификация | Параметр | Значение | |----------|----------| | **CPU** | 8 vCPU | | **RAM** | 16 GB | | **Disk** | 100 GB SSD | | **Network** | 1 Gbps | | **IP Address** | 10.30.10.20 | ### Connectors (модульные плагины) | Connector | Target | Access Type | |-----------|--------|-------------| | **Gitea MCP** | Gitea API | Read-only (code, docs) | | **Swarm MCP** | Docker API | Read-only (logs, metrics) | | **PostgreSQL MCP** | Databases | Read-only (metadata only) | | **Prometheus MCP** | Prometheus API | Read-only (metrics) | | **Loki MCP** | Loki API | Read-only (logs) | ### Security - Service accounts per connector - Rate limiting - All queries logged для audit - No write permissions to production data ### Программное обеспечение - **OS:** Ubuntu Server 22.04 LTS - **Runtime:** Node.js или Python - **MCP Implementation:** TypeScript/Python SDK --- ## 9. Monitoring Stack ### Prometheus | Параметр | Значение | |----------|----------| | **CPU** | 8 vCPU | | **RAM** | 32 GB | | **Disk** | 2 TB HDD RAID 10 | | **Network** | 1 Gbps | | **IP Address** | 10.40.10.10 | | **Retention** | 30 days local, long-term в Thanos | ### Grafana | Параметр | Значение | |----------|----------| | **CPU** | 4 vCPU | | **RAM** | 8 GB | | **Disk** | 100 GB SSD | | **Network** | 1 Gbps | | **IP Address** | 10.40.10.20 | ### Loki | Параметр | Значение | |----------|----------| | **CPU** | 8 vCPU | | **RAM** | 16 GB | | **Disk** | 5 TB HDD RAID 10 | | **Network** | 1 Gbps | | **IP Address** | 10.40.10.30 | | **Retention** | 90 days | ### AlertManager | Параметр | Значение | |----------|----------| | **CPU** | 2 vCPU | | **RAM** | 4 GB | | **Disk** | 50 GB SSD | | **Network** | 1 Gbps | | **IP Address** | 10.40.10.40 | --- ## 10. Database Infrastructure ### Infrastructure PostgreSQL (Gitea, Harbor, Portainer) **Primary:** | Параметр | Значение | |----------|----------| | **CPU** | 8 vCPU | | **RAM** | 16 GB | | **Disk** | 500 GB SSD RAID 10 | | **Network** | 10 Gbps | | **IP Address** | 10.50.10.10 | **Replica:** | Параметр | Значение | |----------|----------| | **CPU** | 8 vCPU | | **RAM** | 16 GB | | **Disk** | 500 GB SSD RAID 10 | | **Network** | 10 Gbps | | **IP Address** | 10.50.10.11 | **Configuration:** - Streaming replication (synchronous) - Automated failover (Patroni/repmgr) - Continuous WAL archiving - Daily full backup + point-in-time recovery ### Application Databases Varies per application - отдельная спецификация per app. --- ## 11. Storage Infrastructure ### Shared Storage для Swarm Persistent Volumes **Technology:** GlusterFS (replicated) или NFS с HA **Спецификация (3 storage nodes для 3-way replication):** | Параметр | Per Node | |----------|----------| | **CPU** | 4 vCPU | | **RAM** | 16 GB | | **Disk** | 5 TB HDD RAID 10 | | **Network** | 10 Gbps (критично для performance) | | **IP Range** | 10.50.30.1-3 | **Capacity Planning:** ``` Persistent data estimate: - Databases: 500 GB - Application data: 1 TB - Logs: 500 GB - Growth: 50% per year Total: 2 TB current + 1 TB growth + 1 TB buffer = 4 TB minimum With 3-way replication: 4 TB * 3 = 12 TB raw Recommended: 15 TB (5 TB per node) ``` --- ## 12. Network Infrastructure ### Core Network Requirements **Switches:** - **Core Switch:** 10 Gbps, Layer 3, VLAN capable - **Access Switches:** 1 Gbps per port, 10 Gbps uplink - **Redundancy:** Stacked или MLAG для HA **Bandwidth Allocations:** | Zone | Bandwidth | Justification | |------|-----------|---------------| | Management | 1-10 Gbps | Harbor push/pull traffic | | Swarm | 10 Gbps | Overlay network performance | | AI | 10 Gbps | Model loading, fast responses | | Monitoring | 1 Gbps | Metrics collection | | Data | 10 Gbps | Database replication | | Backup | 10 Gbps | Fast backup completion | **Firewall:** - Enterprise firewall appliance - Throughput: 10 Gbps+ - VLAN routing - IDS/IPS capabilities - VPN termination **VPN Gateway:** - 1 Gbps throughput minimum - 100+ concurrent users - Multi-factor authentication - Split-tunnel disabled --- ## 13. Сводная таблица ресурсов ### Production Environment - Total Resources | Component | Quantity | CPU (each) | RAM (each) | Storage (each) | Network | |-----------|----------|------------|------------|----------------|---------| | **Gitea** | 1 | 8 | 16 GB | 500 GB SSD + 2 TB HDD | 10G | | **Jenkins** | 1 | 16 | 32 GB | 200 GB SSD + 1 TB SSD + 2 TB HDD | 10G | | **Harbor** | 1 | 8 | 16 GB | 200 GB SSD + 10 TB HDD | 10G | | **Swarm Managers** | 3 | 4 | 8 GB | 200 GB SSD | 10G | | **Swarm Workers** | 6 | 12 | 32 GB | 500 GB SSD | 10G | | **GitOps Operator** | 1 | 2 | 4 GB | 50 GB SSD | 1G | | **Portainer** | 1 | 2 | 4 GB | 50 GB SSD | 1G | | **Ollama** | 1 | 16 | 64 GB | 2 TB SSD | 10G | | **MCP Server** | 1 | 8 | 16 GB | 100 GB SSD | 1G | | **Prometheus** | 1 | 8 | 32 GB | 2 TB HDD | 1G | | **Grafana** | 1 | 4 | 8 GB | 100 GB SSD | 1G | | **Loki** | 1 | 8 | 16 GB | 5 TB HDD | 1G | | **AlertManager** | 1 | 2 | 4 GB | 50 GB SSD | 1G | | **PostgreSQL Primary** | 1 | 8 | 16 GB | 500 GB SSD | 10G | | **PostgreSQL Replica** | 1 | 8 | 16 GB | 500 GB SSD | 10G | | **Storage Nodes** | 3 | 4 | 16 GB | 5 TB HDD | 10G | | **Backup Server** | 1 | 4 | 8 GB | 20 TB HDD | 10G | | **---** | **---** | **---** | **---** | **---** | **---** | | **TOTAL** | **27 servers** | **200 vCPU** | **464 GB RAM** | **~80 TB storage** | - | ### Development Environment - Total Resources **Масштаб:** Примерно 40% от production | Total | CPU | RAM | Storage | |-------|-----|-----|---------| | **Dev Environment** | 80 vCPU | 180 GB RAM | 25 TB | ### Budget Estimate (Hardware only, approximate) **Production:** - Compute servers: $80,000 - $120,000 - Storage: $30,000 - $50,000 - Network equipment: $40,000 - $60,000 - **Total Hardware: $150,000 - $230,000** **Software Licenses (annual):** - RHEL subscriptions (if used): $10,000 - Portainer Business: $5,000 - Monitoring tools: $5,000 - **Total Software: $20,000/year** **Note:** Использование Ubuntu Server (бесплатно) снижает software costs. --- **Утверждение:** - Infrastructure Lead: _______________ - Finance: _______________ - CTO: _______________ - Date: _______________