20 KiB
FinTech GitOps CI/CD - Технические спецификации компонентов
Версия: 1.0
Дата: Январь 2026
Целевая аудитория: Infrastructure Team, DevOps, System Administrators, Procurement
Содержание
- Gitea - Git Repository
- Jenkins - CI Server
- Harbor - Container Registry
- Docker Swarm Cluster
- GitOps Operator
- Portainer - Management UI
- Ollama - AI Server
- MCP Server
- Monitoring Stack
- Database Infrastructure
- Storage Infrastructure
- Network Infrastructure
- Сводная таблица ресурсов
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: _______________