С какими нереляционными базами данных вы работали в контексте DevOps?

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

Ответ

В DevOps я интегрировал и поддерживал различные NoSQL БД, в основном для обеспечения работы распределенных приложений.

Основной опыт:

  1. Redis: Использовал как кэш сессий и данных для ускорения веб-приложений, а также как брокер сообщений для фоновых задач (через pub/sub). Разворачивал в виде StatefulSet в Kubernetes с настройкой persistence.
  2. MongoDB: Работал с ней как с основным хранилищем для микросервисов, генерирующих документо-ориентированные данные (логи, события). Настраивал репликасеты для отказоустойчивости и бэкапы с помощью mongodump.
  3. Elasticsearch: Развертывал в составе стека ELK (Elasticsearch, Logstash, Kibana) для централизованного сбора, анализа и визуализации логов и метрик приложений и инфраструктуры.

Пример конфигурации Redis в Docker Compose для dev-среды:

version: '3.8'
services:
  redis:
    image: redis:7-alpine
    container_name: app-cache
    command: redis-server --appendonly yes  # Включаем persistence
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
volumes:
  redis_data:

Пример команды для проверки состояния Elasticsearch кластера:

curl -X GET "localhost:9200/_cluster/health?pretty"