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

«Какие технологии вы использовали на последнем проекте?» — вопрос из категории Архитектура и DevOps-практики, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

На последнем проекте я работал с микросервисной архитектурой, развернутой в облаке AWS. Основной стек технологий включал:

  • Оркестрация: Kubernetes (EKS) для управления контейнеризированными приложениями. Использовал Namespaces для изоляции сред, ResourceQuotas и Horizontal Pod Autoscaler для управления ресурсами.
  • Инфраструктура как код: Terraform для декларативного описания и provisioning всей облачной инфраструктуры (VPC, подгруппы безопасности, RDS, S3). Модульная структура позволяла переиспользовать код для staging и production.
  • Упаковка и деплой: Helm для управления релизами приложений в Kubernetes. Создавал кастомные чарты с шаблонами для конфигураций, зависящих от окружения.
  • CI/CD: GitLab CI/CD. Пайплайн был разделен на стадии: сборка (build) Docker-образов, сканирование уязвимостей (Trivy), деплой в staging с ручным подтверждением (manual approval) для продвижения в production.
  • Конфигурация: Ansible для базовой настройки и харденинга виртуальных машин (bastion hosts, мониторинговые ноды), которые не входили в K8s кластер.
  • Мониторинг и логи: Стек Prometheus (сбор метрик с приложений через exporters и kube-state-metrics), Grafana для дашбордов. Для логов использовали Fluent Bit в качестве агента в кластере, который отправлял логи в Elasticsearch, визуализация — в Kibana.

Пример этапа деплоя в GitLab CI/CD:

deploy_to_staging:
  stage: deploy
  environment: staging
  script:
    - kubectl config use-context aws-staging-cluster
    - helm upgrade --install my-app ./charts/my-app --namespace staging -f ./charts/my-app/values-staging.yaml

Видео-ответы