# FinTech GitOps CI/CD - Архитектура решения **Версия:** 1.0 **Дата:** Январь 2026 **Целевая аудитория:** Архитекторы, DevOps, Инфраструктура, Безопасность --- ## Содержание 1. [Общая архитектура](#1-общая-архитектура) 2. [Сетевая архитектура](#2-сетевая-архитектура) 3. [Зоны и их назначение](#3-зоны-и-их-назначение) 4. [Потоки данных](#4-потоки-данных) 5. [High Availability и масштабирование](#5-high-availability-и-масштабирование) 6. [Disaster Recovery](#6-disaster-recovery) --- ## 1. Общая архитектура ### 1.1 Принципы проектирования **Defense in Depth:** Многоуровневая защита с изоляцией на каждом уровне: - Сетевая сегментация через VLAN - Firewall между всеми зонами - Application-level authentication и authorization - Encryption at rest и in transit - Audit logging на всех уровнях **Least Privilege:** Минимальные необходимые права для каждого компонента: - Service accounts с ограниченными permissions - Network access только к необходимым endpoints - Time-bound credentials где возможно - Регулярная ротация secrets **Immutable Infrastructure:** Инфраструктура как код, изменения только через Git: - Нет ручных изменений на серверах - Все изменения version controlled - Reproducible deployments - Easy rollback через Git history **Observability:** Полная видимость всех процессов: - Централизованное логирование - Метрики со всех компонентов - Distributed tracing для запросов - Audit trail для compliance ### 1.2 Логические слои **Presentation Layer (User Interface):** - Portainer UI для визуального управления Swarm - Grafana для дашбордов и метрик - Jenkins Blue Ocean для CI/CD визуализации - Ollama web interface для AI взаимодействия - Gitea web UI для repository management **API Layer:** - Docker Swarm API для управления кластером - Harbor API для registry операций - Gitea API для Git operations - Jenkins API для trigger builds - Prometheus API для метрик - MCP Server API для AI интеграции **Service Layer (Business Logic):** - GitOps Operator - автоматическая синхронизация - Jenkins pipelines - CI/CD логика - Harbor webhooks - уведомления о новых образах - AlertManager - правила для алертов - AI models - обработка запросов **Data Layer:** - PostgreSQL - реляционные данные - Git repositories - код и конфигурации - Harbor storage - Docker образы - Prometheus TSDB - временные ряды метрик - Loki - логи - Vector DB - embeddings для AI **Infrastructure Layer:** - Docker Swarm - orchestration platform - Overlay networks - service communication - Shared storage - persistent data - Backup systems - disaster recovery --- ## 2. Сетевая архитектура ### 2.1 VLAN сегментация **VLAN 10 - Management & CI/CD Zone:** - Subnet: 10.10.10.0/24 - Gateway: 10.10.10.1 - Компоненты: Gitea, Jenkins, Harbor, GitOps Operator, Portainer - Доступ: Только через VPN с MFA - Изоляция: Строгий firewall на границе **VLAN 20 - Docker Swarm Cluster Zone:** - Subnet: 10.20.0.0/16 (для большого количества containers) - Manager subnet: 10.20.1.0/24 - Worker subnet: 10.20.2.0/23 - Gateway: 10.20.0.1 - Компоненты: Swarm managers, workers, overlay networks - Доступ: Только из Management zone и Monitoring zone - Изоляция: Encrypted overlay network внутри **VLAN 30 - AI & Analytics Zone:** - Subnet: 10.30.10.0/24 - Gateway: 10.30.10.1 - Компоненты: Ollama, MCP Server, Vector Database - Доступ: Read-only к источникам данных - Изоляция: Не может инициировать изменения в других зонах **VLAN 40 - Monitoring & Logging Zone:** - Subnet: 10.40.10.0/24 - Gateway: 10.40.10.1 - Компоненты: Prometheus, Grafana, Loki, AlertManager - Доступ: Read-only metrics collection - Изоляция: Не может управлять компонентами **VLAN 50 - Data & Database Zone:** - Subnet: 10.50.0.0/16 - Infrastructure DB subnet: 10.50.10.0/24 - Application DB subnet: 10.50.20.0/23 - Storage subnet: 10.50.30.0/24 - Gateway: 10.50.0.1 - Компоненты: PostgreSQL, Application databases, Shared storage - Доступ: Строго контролируемый, encrypted connections - Изоляция: Самая строгая, audit всех подключений **VLAN 60 - Backup & DR Zone:** - Subnet: 10.60.10.0/24 - Gateway: 10.60.10.1 - Компоненты: Backup server, long-term storage - Доступ: Write-only для backup agents, read для recovery - Изоляция: Offline storage, air-gapped где возможно ### 2.2 Firewall правила **Принцип:** Deny all, allow explicitly needed **Management VLAN → Swarm VLAN:** ``` Source: 10.10.10.40 (GitOps Operator) Destination: 10.20.1.0/24 (Swarm Managers) Ports: 2377/tcp (cluster management) Action: ALLOW Logging: YES Source: 10.10.10.50 (Portainer) Destination: 10.20.1.0/24 (Swarm Managers) Ports: 2375/tcp (Docker API over TLS) Action: ALLOW Logging: YES All other traffic: DENY ``` **Swarm VLAN → Harbor (Management VLAN):** ``` Source: 10.20.0.0/16 (All Swarm nodes) Destination: 10.10.10.30 (Harbor) Ports: 443/tcp, 5000/tcp (HTTPS, Docker registry) Protocol: TLS 1.3 with mutual authentication Action: ALLOW Logging: YES All other traffic: DENY ``` **AI VLAN → Data Sources:** ``` Source: 10.30.10.20 (MCP Server) Destination: Multiple (через MCP connectors) Ports: Varies (SSH 22, HTTPS 443, PostgreSQL 5432, etc.) Access: READ-ONLY Authentication: Service account per destination Logging: ALL QUERIES LOGGED Action: ALLOW with rate limiting Write operations: DENY ``` **Monitoring VLAN → All Zones:** ``` Source: 10.40.10.10 (Prometheus) Destination: ALL VLANs Ports: Metrics endpoints (обычно 9090-9999) Access: READ-ONLY metrics scraping Action: ALLOW Logging: NO (too verbose, metrics only) Any non-metrics ports: DENY ``` **Data VLAN → Backup VLAN:** ``` Source: 10.50.0.0/16 (All databases) Destination: 10.60.10.10 (Backup server) Ports: Backup protocol specific Direction: ONE-WAY (source → backup only) Action: ALLOW Logging: YES Encryption: MANDATORY Reverse direction: DENY (except for restore procedures) ``` ### 2.3 Внешнее подключение **VPN Gateway:** - Публичный IP для VPN подключений - Multi-factor authentication обязательна - Certificate-based authentication + one-time password - Split-tunnel запрещен (все через VPN) - Session timeout: 8 часов - Idle timeout: 30 минут - Disconnect после 3 неудачных MFA попыток **Jump Host/Bastion:** - Единая точка входа после VPN - Session recording для аудита - No direct access to production systems, только через jump host - Authorized keys management централизованно - Automatic logout после 15 минут idle - Audit log всех команд **Разрешенные пользователи:** - Developers: Доступ к Gitea, Jenkins, Portainer (read-only для production) - DevOps: Полный доступ ко всем системам управления - Security team: Read-only audit доступ ко всему - Managers: Grafana и reporting dashboards только --- ## 3. Зоны и их назначение ### 3.1 Management & CI/CD Zone **Назначение:** Централизованное управление кодом, CI/CD процессами и container registry. **Критичность:** HIGH - простой влияет на возможность деплоя новых версий **Компоненты:** **Gitea (10.10.10.10):** - Роль: Single source of truth для всего кода и конфигураций - Взаимодействие: Принимает push от developers, отправляет webhooks в Jenkins - Зависимости: PostgreSQL (VLAN 50), Shared storage для Git LFS - SLA: 99.9% uptime **Jenkins (10.10.10.20):** - Роль: CI automation, build и test applications - Взаимодействие: Получает webhooks от Gitea, push образов в Harbor, update Git - Зависимости: Gitea, Harbor, Docker build agents - SLA: 99.5% uptime (может работать в degraded mode) **Harbor (10.10.10.30):** - Роль: Enterprise container registry с security scanning - Взаимодействие: Принимает push от Jenkins, pull от Swarm nodes - Зависимости: PostgreSQL, Object storage для images - SLA: 99.9% uptime (критичен для pull образов) **GitOps Operator (10.10.10.40):** - Роль: Автоматическая синхронизация Git → Swarm - Взаимодействие: Мониторит Gitea, применяет изменения в Swarm через API - Зависимости: Gitea, Docker Swarm API - SLA: 99.9% uptime **Portainer (10.10.10.50):** - Роль: Web UI для управления и мониторинга Swarm - Взаимодействие: Подключается к Swarm managers через Docker API - Зависимости: Docker Swarm API, PostgreSQL для своей базы - SLA: 99% uptime (не критичен, есть CLI альтернатива) **Резервирование:** - Gitea: Master-slave replication, automated failover - Jenkins: Standby instance в warm mode - Harbor: Geo-replication на secondary site - GitOps Operator: Active-passive pair - Portainer: Standby instance ### 3.2 Docker Swarm Cluster Zone **Назначение:** Выполнение production workloads с high availability и load balancing. **Критичность:** CRITICAL - прямое влияние на бизнес сервисы **Swarm Manager Nodes (10.20.1.1-3):** - Количество: 3 для кворума (рекомендуется нечетное число) - Роль: Cluster orchestration, scheduling, API endpoint - Raft consensus: Нужно минимум 2 alive из 3 для работы кластера - Workload: НЕ запускают application containers (только infrastructure) - CPU: 4 vCPU каждый - RAM: 8 GB каждый - Disk: 200 GB SSD каждый - Network: 10 Gbps для Raft communication **Swarm Worker Nodes (10.20.2.1-N):** - Количество: Зависит от workload, минимум 3 для redundancy - Роль: Выполнение application containers - Constraints: Можно маркировать ноды для specific workloads - CPU: 8-16 vCPU каждый - RAM: 32-64 GB каждый - Disk: 500 GB SSD каждый - Network: 10 Gbps для overlay network performance **Overlay Networks:** - Automatic encryption (IPSec) - Service discovery через DNS - Load balancing через routing mesh - Изоляция между разными стеками **Secrets Management:** - Docker Swarm secrets encrypted at rest - Rotation через stack update - Mount как files в containers - Audit log доступа к secrets **Резервирование:** - Manager nodes: N-1 failure tolerance (3 ноды = 1 failure ok) - Worker nodes: Application replicas распределены по разным нодам - Persistent data: Replicated storage (GlusterFS или NFS с HA) - Network: Bonded interfaces для redundancy ### 3.3 AI & Analytics Zone **Назначение:** Предоставление AI-powered помощи через анализ internal data sources. **Критичность:** MEDIUM - удобство, но не критично для операций **Ollama Server (10.30.10.10):** - Роль: Запуск AI моделей локально на собственном железе - Модели: Llama 3.3 70B, Qwen 2.5 Coder, DeepSeek, и другие - Взаимодействие: Получает запросы от пользователей, context от MCP Server - Требования: GPU highly recommended для производительности - CPU: 16 vCPU (или меньше если есть GPU) - RAM: 64 GB (модели требуют много памяти) - GPU: NVIDIA A100 40GB или 2x RTX 4090 24GB (опционально но рекомендуется) - Disk: 2 TB NVMe SSD (модели весят 10-100 GB каждая) - Network: 10 Gbps для быстрого ответа **MCP Server (10.30.10.20):** - Роль: Интеграция AI с источниками данных (Gitea, Swarm, DBs, logs) - Connectors: Модульные плагины для каждого источника - Взаимодействие: Read-only запросы к data sources, передача context в Ollama - Security: Service accounts для каждого connector, audit всех запросов - CPU: 8 vCPU - RAM: 16 GB - Disk: 100 GB SSD - Network: 1 Gbps **Vector Database (10.30.10.30):** - Роль: Хранение embeddings документации для semantic search - Технология: Qdrant или Milvus - Размер: Зависит от количества документации - CPU: 4 vCPU - RAM: 16 GB (зависит от размера index) - Disk: 500 GB SSD - Network: 1 Gbps **Data Flow:** Пользователь → Ollama → MCP Server → (параллельно): - Gitea MCP Connector → Gitea (документация, код) - Swarm MCP Connector → Docker API (статус, логи) - Database MCP Connector → PostgreSQL (метаданные) - Prometheus MCP Connector → Metrics - Loki MCP Connector → Logs → Агрегированный context → Ollama → Ответ пользователю **Резервирование:** - Ollama: Standby instance (warm standby) - MCP Server: Active-passive pair - Vector DB: Replicated для HA ### 3.4 Monitoring & Logging Zone **Назначение:** Observability инфраструктуры для проактивного мониторинга и troubleshooting. **Критичность:** HIGH - необходим для detection проблем **Prometheus (10.40.10.10):** - Роль: Сбор и хранение метрик временных рядов - Scrape targets: Все компоненты инфраструктуры - Retention: 30 дней в Prometheus, long-term в Thanos/VictoriaMetrics - CPU: 8 vCPU - RAM: 32 GB - Disk: 2 TB HDD (time-series data) - Network: 1 Gbps **Grafana (10.40.10.20):** - Роль: Визуализация метрик и логов - Dashboards: Преднастроенные для каждого компонента - Alerting: Визуальный редактор алертов - CPU: 4 vCPU - RAM: 8 GB - Disk: 100 GB SSD - Network: 1 Gbps **Loki (10.40.10.30):** - Роль: Централизованное хранение логов - Agents: Promtail на каждой ноде - Retention: 90 дней - CPU: 8 vCPU - RAM: 16 GB - Disk: 5 TB HDD (logs) - Network: 1 Gbps **AlertManager (10.40.10.40):** - Роль: Обработка и роутинг алертов - Интеграции: Slack, Email, PagerDuty, Telegram - Deduplication: Группировка похожих алертов - CPU: 2 vCPU - RAM: 4 GB - Disk: 50 GB SSD - Network: 1 Gbps **Резервирование:** - Prometheus: Federated setup, multiple instances - Grafana: Load balanced instances - Loki: Distributed deployment - AlertManager: Clustered для HA ### 3.5 Data & Database Zone **Назначение:** Хранение persistent data для инфраструктуры и приложений. **Критичность:** CRITICAL - потеря данных недопустима **Infrastructure PostgreSQL Cluster (10.50.10.10-11):** - Роль: Базы данных для Gitea, Harbor, Portainer - Топология: Master-slave с automatic failover - Backup: Continuous WAL archiving + daily full backup - Encryption: At rest (LUKS) и in transit (TLS) - CPU: 8 vCPU per instance - RAM: 16 GB per instance - Disk: 500 GB SSD per instance - Network: 10 Gbps **Application Databases (10.50.20.x):** - Роль: Базы данных бизнес-приложений - Технологии: Зависит от приложений (PostgreSQL, MySQL, MongoDB) - Isolation: Каждое приложение в своей database/schema - Backup: Application-specific strategy - Resources: Зависит от workload **Shared Storage (10.50.30.1-3):** - Роль: Persistent volumes для Swarm services - Технология: GlusterFS (replicated) или NFS с HA - Replication: 3x для fault tolerance - Snapshots: Каждый час, retention 7 дней - Capacity: 10 TB (grows as needed) - Network: 10 Gbps для I/O performance **Резервирование:** - PostgreSQL: Synchronous replication, automatic failover - Shared Storage: Distributed replication (GlusterFS 3-way) - Backups: Multiple copies в разных locations ### 3.6 Backup & DR Zone **Назначение:** Защита от data loss и быстрое восстановление при катастрофах. **Критичность:** CRITICAL для долгосрочной устойчивости бизнеса **Backup Server (10.60.10.10):** - Роль: Прием и хранение backups - Technology: Bacula или Bareos (enterprise backup solution) - Scheduling: Automated по расписанию + on-demand - Encryption: All backups encrypted at rest - CPU: 4 vCPU - RAM: 8 GB - Disk: 20 TB HDD (RAID 10) - Network: 10 Gbps для fast backups **Backup Strategy:** **Hourly Incremental:** - Git repositories (только изменения) - Retention: 48 hours **Daily Full:** - Databases (full dump) - Docker Swarm configs - Важные логи - Retention: 30 days **Weekly Full:** - Полный snapshot всей инфраструктуры - VM images, configs, data - Retention: 12 weeks **Monthly Archives:** - Long-term compliance storage - Retention: 7 years (regulatory requirement) **DR Site (опционально, в другом ЦОД):** - Роль: Geographic redundancy - Replication: Asynchronous из primary site - RTO (Recovery Time Objective): 4 hours - RPO (Recovery Point Objective): 15 minutes - Testing: Quarterly DR drills --- ## 4. Потоки данных ### 4.1 Development Workflow **Developer commits code:** ``` Developer Workstation ↓ (SSH через VPN) Gitea (VLAN 10) ↓ (Webhook HTTPS + signature verification) Jenkins (VLAN 10) ↓ (git clone through SSH) Gitea ``` **CI Pipeline execution:** ``` Jenkins ↓ (build application) Build Agent (ephemeral container/VM) ↓ (run tests) Test results → Archived in Jenkins ↓ (build Docker image) Docker build agent ↓ (security scan with Trivy) Vulnerability report ↓ (docker push через TLS + creds) Harbor (VLAN 10) ``` **Update GitOps repo:** ``` Jenkins ↓ (update image tag в compose file) Gitea GitOps repository ↓ (commit + push) Gitea ``` ### 4.2 CD Workflow **GitOps sync:** ``` GitOps Operator (VLAN 10) ↓ (poll Git repository каждые 30 sec) Gitea ↓ (detect changes) GitOps Operator ↓ (docker stack deploy через Swarm API) Swarm Managers (VLAN 20) ``` **Swarm orchestration:** ``` Swarm Manager ↓ (schedule tasks на workers) Swarm Scheduler ↓ (pull image from Harbor) Worker Nodes ↔ Harbor (VLAN 10) ↓ (start containers) Application Running ``` **Service update (rolling):** ``` Swarm Manager ↓ (stop 1 task из N) Worker Node A ↓ (start new task с новым image) Worker Node B ↓ (verify health check) Health Check (5 consecutive passes required) ↓ (proceed to next task) Repeat until all tasks updated ``` ### 4.3 AI Interaction Flow **User query:** ``` User (через Web UI или API) ↓ (HTTPS request) Ollama Server (VLAN 30) ↓ (request context через MCP protocol) MCP Server (VLAN 30) ``` **MCP gathers context (parallel):** ``` MCP Server ├→ Gitea MCP Connector → Gitea API (docs, code) ├→ Swarm MCP Connector → Docker API (logs, metrics) ├→ Database MCP Connector → PostgreSQL (metadata) ├→ Prometheus MCP Connector → Prometheus API (metrics) └→ Loki MCP Connector → Loki API (logs) ↓ (all responses aggregated) MCP Server ↓ (full context sent to AI) Ollama Server ↓ (generate response) User ``` **AI response with action:** ``` AI determines action needed ↓ (if requires change) AI suggests change to user ↓ (user approves) Change committed to Git ↓ (normal GitOps flow) Applied to infrastructure ``` ### 4.4 Monitoring Data Flow **Metrics collection:** ``` All Infrastructure Components ↓ (expose metrics endpoints) Prometheus Exporters ↓ (scrape every 15 seconds) Prometheus (VLAN 40) ↓ (evaluate alert rules) AlertManager (VLAN 40) ↓ (route notifications) Slack/Email/PagerDuty ``` **Logs collection:** ``` All Containers ↓ (stdout/stderr) Docker logging driver ↓ (forward) Promtail Agent (на каждой ноде) ↓ (push) Loki (VLAN 40) ↓ (index и store) Loki Storage ↓ (query) Grafana или CLI ``` **Audit logs:** ``` All Infrastructure Actions ├→ Gitea (Git operations) ├→ Docker Swarm (API calls) ├→ Harbor (image push/pull) ├→ Jenkins (builds) └→ SSH sessions (bastion) ↓ (forward) Centralized Syslog ↓ (store) Long-term Audit Storage (7 years) ``` --- ## 5. High Availability и масштабирование ### 5.1 HA Strategy **Tier 1 - Critical (99.99% uptime):** - Docker Swarm (application platform) - Harbor (cannot deploy without it) - Shared Storage (persistent data) - Strategy: Active-Active где возможно, N+1 redundancy **Tier 2 - Important (99.9% uptime):** - Gitea (code access) - GitOps Operator (CD automation) - Databases (infrastructure metadata) - Strategy: Active-Passive с automatic failover **Tier 3 - Nice to have (99% uptime):** - Jenkins (can wait for restore) - Portainer (CLI alternative exists) - Monitoring (short downtime acceptable) - Strategy: Warm standby, manual failover ### 5.2 Scaling Points **Vertical Scaling (увеличение ресурсов):** - Databases: Больше RAM для cache - Ollama: Добавление GPU для speed - Harbor storage: Больше disk для images - Limit: Hardware limitations **Horizontal Scaling (добавление instances):** - Swarm Workers: Добавить ноды для capacity - Jenkins Agents: Dynamic scaling по demand - Prometheus: Federation для distributed scraping - MCP Connectors: Независимые instances per source **Data Scaling:** - PostgreSQL: Read replicas для read-heavy workloads - Harbor: Geo-replication для distributed teams - Loki: Sharding по времени - Git: Repository sharding (не часто нужно) ### 5.3 Capacity Planning **Metrics для отслеживания:** - CPU utilization (target <70% average) - Memory utilization (target <80%) - Disk usage (alert при 80%, critical при 90%) - Network bandwidth (baseline + trend analysis) - IOPS (SSD wear, performance degradation) **Growth projections:** - Applications: 20% growth в год - Code repositories: 30% growth в год (accumulative) - Logs: 50% growth в год (more verbose logging) - Metrics retention: Linear с количеством services **Scaling triggers:** - Add Swarm worker когда CPU >80% sustained - Upgrade database когда query latency >100ms p95 - Expand storage когда >75% used - Add Jenkins agents когда queue >5 builds --- ## 6. Disaster Recovery ### 6.1 RTO и RPO Targets **Recovery Time Objective (RTO):** - Tier 1 services: 1 hour - Tier 2 services: 4 hours - Tier 3 services: 24 hours - Full infrastructure: 8 hours **Recovery Point Objective (RPO):** - Databases: 15 minutes (via WAL shipping) - Git repositories: 1 hour (hourly backup) - Docker images: 0 (replicated to DR) - Configs: 0 (in Git) - Logs: 1 hour (buffered before ingestion) ### 6.2 DR Scenarios **Scenario 1: Single server failure** - Detection: Automated monitoring - Response: Automatic failover to redundant instance - Recovery time: <5 minutes - Data loss: None (active-active or sync replication) **Scenario 2: Network partition** - Detection: Raft consensus loss, monitoring alerts - Response: Manual investigation, possible split-brain resolution - Recovery time: 30 minutes - Data loss: Possible if write to minority partition **Scenario 3: Data center failure** - Detection: Total loss of connectivity - Response: Failover to DR site - Recovery time: 4 hours (RTO) - Data loss: Up to 15 minutes (RPO) **Scenario 4: Ransomware/Corruption** - Detection: File integrity monitoring, unusual encryption activity - Response: Isolate affected systems, restore from clean backup - Recovery time: 8 hours (full rebuild) - Data loss: Up to last clean backup (potentially hours) **Scenario 5: Human error (accidental delete)** - Detection: Git history, audit logs - Response: Restore from backup or Git revert - Recovery time: 1-2 hours - Data loss: None (everything in version control) ### 6.3 Recovery Procedures **Database Recovery:** - Stop application access - Restore base backup - Apply WAL logs до point-in-time - Verify data integrity - Resume application access **Git Repository Recovery:** - Clone from DR site или restore backup - Verify commit history integrity - Restore hooks и configurations - Test push/pull operations - Notify team of recovery **Docker Swarm Recovery:** - Deploy manager nodes from backup configs - Join worker nodes - Restore network и volume configs - Deploy stacks from Git - Verify service health **Full Site Recovery:** - Deploy infrastructure от Terraform/IaC - Restore databases from backup - Clone Git repositories - Deploy Docker Swarm - Apply all stacks from GitOps - Verify end-to-end functionality - Switch DNS to DR site - Notify stakeholders ### 6.4 Testing DR **Monthly:** - Restore тест на отдельной инфраструктуре - Verify backup integrity - Test recovery procedures **Quarterly:** - Full DR drill с failover на DR site - Measure actual RTO/RPO - Update procedures based на findings **Annually:** - Tabletop exercise с всеми stakeholders - Test business continuity plans - Update и train на changes --- **Следующие документы:** - **03-security-compliance.md** - Детальные требования безопасности - **04-component-specifications.md** - Технические спецификации компонентов - **05-development-environment.md** - Dev окружение для тестирования --- **Утверждение:** - Enterprise Architect: _______________ - Security Architect: _______________ - Infrastructure Lead: _______________ - Date: _______________