Где находилось хранилище сервисов на последнем проекте?

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

Ответ

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

1. State-файлы инфраструктуры (Terraform): Хранились в AWS S3 с включённым versioning и шифрованием SSE-KMS. Для предотвращения конфликтов использовалась блокировка через DynamoDB.

# backend.tf
terraform {
  backend "s3" {
    bucket         = "company-infra-state-prod"
    key            = "network/terraform.tfstate"
    region         = "eu-central-1"
    dynamodb_table = "terraform-state-locks"
    encrypt        = true
    kms_key_id     = "alias/terraform-state-key"
  }
}

2. Артефакты приложений:

  • Docker образы: AWS ECR (частные репозитории) с lifecycle-правилами для удаления старых тегов.
  • Бинарные сборки (Java .jar, Go binaries): Artifactory (self-hosted) с retention policy в 30 дней для snapshot-версий.

3. Конфигурация и секреты:

  • Динамическая конфигурация: HashiCorp Consul для service discovery и конфигов, обновляемых без перезапуска.
  • Секреты (пароли, токены): HashiCorp Vault с динамическим получением creds для БД через lease mechanism.
  • Параметры окружения: AWS Systems Manager Parameter Store для строк конфигурации, доступных через IAM-роли EC2.

4. Логи и метрики:

  • Centralized Logging: Amazon OpenSearch (ранее Elasticsearch) с ingestion через Fluent Bit.
  • Метрики: Prometheus (self-hosted на k8s) с долгосрочным хранением в Thanos на S3.

Такое разделение позволило нам соблюдать принцип Immutable Infrastructure и обеспечило надёжный rollback через версионирование state-файлов и артефактов.