"Наша база данных не будет масштабироваться".
База данных:
- 40 ГБ общих данных
- 12 запросов в секунду
- 0 индексов по колонкам запросов
- N+1 запросов повсюду
- 200 мс среднее время запроса
Решение:
- Разделить на 12 баз данных
- Добавить реплики для чтения
- Реализовать уровень кэширования
- Перейти на "веб-масштабируемый" NoSQL
Фактическое решение:
- Добавить 3 индекса
- Исправить запросы N+1
- 5 мс время запроса
- $40/месяц Postgres
У вас нет проблемы масштабирования.
У вас проблема с компетенцией.
Объявление о вакансии: "Инженер DevOps"
Фактическая работа:
- Вручную развертывать WAR-файлы на Tomcat
- Подключаться к серверам по SSH для проверки логов
- Перезапускать службы, когда они падают
- Обновлять правила брандмауэра через тикеты
- Нет инфраструктуры как кода
- Нет CI/CD
- Нет облака
Вы не нанимаете инженера DevOps.
Вы нанимаете системного администратора, который знает, что существует Docker.
Просто будьте честны относительно роли.
Системные администраторы ценны. Перестаньте притворяться, что вы занимаетесь DevOps, когда это не так.
Ваш Dockerfile:
- ИЗ ubuntu:latest
- Устанавливает 47 пакетов
- Работает от имени root
- Размер образа 2.3 ГБ
- Пересборка занимает 15 минут
- Сканирование безопасности показывает 89 уязвимостей
Ваше приложение:
- Скрипт на Python
- 3 зависимости
- Может работать на Alpine в образе размером 50 МБ
Вы не используете контейнеры.
Вы создаете ВМ с помощью Dockerfile.
Вот что происходит, когда люди учат Docker из случайных статей на Medium.