Какой стек технологий использовался на твоем последнем проекте?

Ответ

На последнем проекте мы строили микросервисную платформу для финтех-стартапа. Мой фокус был на 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) для кеша.

Ответ 18+ 🔞

А, слушай, вот недавно на одном проекте такую микросервисную платформу для финтеха строили, ёперный театр! Я там за всю DevOps-движуху отвечал, так что расскажу, как оно было, без прикрас.

Инфраструктура и облако:

  • Провайдер: AWS, куда ж без него.
  • Infrastructure as Code: Всё, от стейджа до прода, крутили на Terraform. Модули, remote state в S3 — классика, но без этого нихуя не работает. Чтоб не было распиздяйства, когда каждый лепит что хочет.
  • Оркестрация: Kubernetes (EKS), само собой. Контейнеры, сервисы — всё там плавает.

CI/CD и GitOps:

  • CI/CD: GitLab CI. В пайплайнах — линтеры (Terraform, Hadolint), сканеры безопасности (Trivy, Checkov), сборка образов и деплой. Стандартный набор, но доверия ебать ноль, поэтому каждый этап проверяли.
  • GitOps: А вот тут интереснее. Для деплоя в кубер взяли ArgoCD. Манифесты приложений — в отдельном гите, и ArgoCD сам подтягивает всё в кластер. Красота, хитрая жопа, но когда работает — просто песня. Git — источник истины, и никаких ручных правок через kubectl edit, а то потом сам от себя охуеешь.

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

  • Метрики: Prometheus (собирает) + Grafana (рисует). Настроили ещё кастомные метрики под бизнес-логику, чтоб видеть не только, что сервер не упал, но и что он, собственно, делает.
  • Логи: Поставили Fluent Bit на ноды, он гонит логи в Loki, а смотрим всё опять же в Grafana. Loki взяли, потому что он овердохуища места не жрёт, в отличие от некоторых.
  • Трассировка: 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) для кеша. В общем, манда с ушами получилась, но рабочая. Главное — всё автоматизировано, чтоб в три часа ночи не пришлось взъёбываться с деплоем.