Какая/какие базы данных были на прошлом проекте?

Ответ

На последнем проекте архитектура данных была гибридной, и с DevOps-стороны я обеспечивал работу следующих СУБД:

1. PostgreSQL (основная, реляционная):

  • Роль: Хранение всех критичных транзакционных данных пользователей и заказов.
  • Инфраструктура: Развернут в облаке AWS как управляемый сервис Amazon RDS. Использовалась конфигурация с Multi-AZ для автоматической отказоустойчивости.
  • DevOps-задачи:
    • Настройка автоматических снапшотов и Point-in-Time Recovery (PITR) через возможности RDS.
    • Управление доступом через Security Groups и IAM-роли.
    • Мониторинг метрик (CPU, Connections, Disk Queue Depth) через CloudWatch и кастомные дашборды в Grafana.
    • Организация миграций схемы БД через инструменты типа Flyway, интегрированные в пайплайн CI/CD.

2. Redis (кэширующая и для очередей):

  • Роль: Кэш сессий и результатов тяжелых запросов, бэкенд для Celery.
  • Инфраструктура: Развернут как ElastiCache Redis в кластерном режиме.
  • DevOps-задачи: Настройка автоматической замены нод, мониторинг попаданий в кэш (hit ratio) и использования памяти.

3. Amazon DynamoDB (NoSQL для высоконагруженных операций):

  • Роль: Хранение данных игровых сессий и событий телеметрии, где требовалась крайне низкая задержка и высокая пропускная способность.
  • DevOps-задачи: Настройка автоскейлинга пропускной способности (RCU/WCU), проектирование ключей партиционирования для равномерного распределения нагрузки, экспорт данных в S3 для аналитики.

Общая стратегия: Использование управляемых сервисов (RDS, ElastiCache, DynamoDB) позволило сосредоточиться на настройке, мониторинге и оптимизации, а не на администрировании ОС и установке СУБД.

Ответ 18+ 🔞

А, ну расскажу я тебе про одну архитектуру, которая у нас была на прошлом проекте. Ёперный театр, там столько всего намешано, что в голове не укладывается. Но в целом, если по полочкам, то работало это безобразие так.

1. PostgreSQL — наша рабочая лошадка, реляционная.

  • Зачем была: Там всё самое важное лежало — данные пользователей, заказы, вся эта транзакционная ерунда, без которой проект просто накрылся бы медным тазом.
  • Как крутили: Чтобы самим не ебаться с патчами и апдейтами, взяли Amazon RDS — управляемый сервис, ёпта. Подняли его с Multi-AZ, чтобы если одна зона грохнется, вторая тут же подхватила, и пользователи даже не заметили.
  • Что я с ней делал, как девопс:
    • Автоматические бэкапы и возможность отката на любую минуту (PITR) — настраивал прямо в RDS. Без этого спать спокойно невозможно, доверия ебать ноль к железу.
    • Крутил доступы через Security Groups и IAM-роли, чтобы левые хуи не пролезли.
    • Смотрел, чтобы она не захлебнулась: CPU, подключения, очередь диска — всё это в CloudWatch и на кастомных дашбордах в Grafana висело.
    • Миграции схемы гонял через Flyway, который был вшит в CI/CD пайплайн. Чтобы не было вот этого: "ой, а я на проде забыл колонку добавить".

2. Redis — наш быстрый пацан для кэша и очередей.

  • Зачем был: Чтобы сессии пользователей не гонять каждый раз из Постгреса, и чтобы результаты тяжёлых запросов кешировать. А ещё он у нас бэкендом для Celery работал — для фоновых задач.
  • Как крутили: Тоже на управляемом сервисе — ElastiCache Redis, да ещё и в кластерном режиме.
  • Что я делал: Следил, чтобы ноды сами менялись, если что, и чтобы кэш хоть работал, а не просто память жрал. Смотрел в основном на hit ratio и потребление памяти. Если hit ratio падал — всё, пиши пропало, Постгрес сейчас ляжет.

3. Amazon DynamoDB — NoSQL, который просто овердохуища запросов хавает.

  • Зачем был: Для хранения данных игровых сессий и всякой телеметрии. Там нужна была дикая скорость и пропускная способность, чтобы тысячи событий в секунду проглатывать без икоты.
  • Что я делал: Настраивал автоскейлинг этой пропускной способности (эти ваши RCU/WCU), чтобы не переплачивать, когда тихо, и чтобы не положить сервис, когда налетят гомосеки. Самое сложное — правильно ключи партиционирования спроектировать, чтобы нагрузка распределялась равномерно, а не била в одну точку. Ну и данные в S3 выгружал для аналитиков, пусть там свои графики строят.

А общая философия была какая? Да похуй на администрирование серверов, честно. Мы взяли кучу управляемых сервисов (RDS, ElastiCache, DynamoDB) и сосредоточились на том, чтобы это всё правильно настроить, мониторить и оптимизировать, а не тратить время на установку СУБД и борьбу с уязвимостями в ОС. В итоге — работало, как часы, и волнение ебать было минимальное. Почти.