Ответ
На последнем проекте я работал с распределенной системой, построенной на микросервисной архитектуре. С точки зрения DevOps масштаб был следующим:
- Инфраструктура: Около 50 микросервисов, развернутых в Kubernetes-кластере (EKS в AWS). В пике общее количество подов доходило до 300.
- Нагрузка: Система обрабатывала в среднем 8-10 тысяч запросов в секунду (RPS), с пиками до 15k во время промо-акций.
- Стек и данные: Основные языки — Go и Python. Использовалось несколько баз данных: 15 шардированных кластеров PostgreSQL для основного состояния и 5 инстансов Redis для кэша и сессий.
- DevOps-инструменты: Вся инфраструктура описывалась как код (IaC) с помощью Terraform. Управление релизами и конфигурацией сервисов велось через Helm и ArgoCD для GitOps. Мониторинг и алертинг были построены на стеке Prometheus, Grafana и Alertmanager.
Пример фрагмента Terraform для EKS, который я писал и поддерживал:
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "~> 19.0"
cluster_name = "prod-app-cluster"
cluster_version = "1.27"
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
eks_managed_node_groups = {
general = {
desired_size = 3
min_size = 1
max_size = 10
instance_types = ["t3.large"]
}
}
}
Моя роль заключалась в обеспечении надежности, масштабируемости и эффективности этой платформы.