Ответ
На последнем проекте мы строили микросервисную платформу для финтех-стартапа. Мой фокус был на DevOps-составляющей:
Инфраструктура и облако:
- Провайдер: AWS.
- Infrastructure as Code: Весь стейдж и продакшен разворачивались через Terraform (модульная структура, remote state в S3).
- Оркестрация: Kubernetes (EKS) для управления контейнеризированными сервисами.
CI/CD и GitOps:
- CI/CD: GitLab CI. В пайплайнах были стадии lint (Terraform, Hadolint), security scan (Trivy, Checkov), сборка образов и деплой.
- GitOps: Для деплоя в Kubernetes использовали ArgoCD. Манифесты приложений хранились в отдельном Git-репозитории, и ArgoCD автоматически синхронизировал состояние кластера с желаемым, описанным в Git.
Мониторинг и логирование:
- Метрики: Prometheus (сбор) + Grafana (визуализация и дашборды). Настроили кастомные метрики для бизнес-логики.
- Логи: Fluent Bit (агент на нодах) -> Loki (хранение) -> Grafana (запросы и визуализация). Выбрали Loki из-за эффективности хранения и тесной интеграции с Grafana.
- Трассировка: Jaeger для распределенной трассировки запросов между микросервисами.
Пример фрагмента Terraform для создания EKS:
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "~> 19.0"
cluster_name = "prod-fintech-cluster"
cluster_version = "1.27"
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
eks_managed_node_groups = {
main = {
desired_size = 3
instance_types = ["t3.large"]
}
}
}
Стек приложения: Бэкенд-сервисы на Go и Python (FastAPI), фронтенд на React, базы данных — PostgreSQL (через RDS) и Redis (ElastiCache) для кеша.