Провести ряд DevOps работ по стабилизации сайта (Docker + Laravel)

Используемые технологии: PHP8 + Laravel + Mysql + Docker Compose + Amazon S3 + Amazon Workmail

Необходимо провести ряд работ по DevOps части в плане стабилизации серверов и сборки бекенда:

1. Мониторинг

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

Задачи:

  • Установить систему мониторинга на сервера (например Zabbix или аналог). Система должна быть бесплатной или иметь free-версию, покрывающую все нужды
  • Нужна возможность следить за кол-вом запросов к бекенду
  • Нужна возможность следить за серверами в реальном времени, кол-вом ресурсов, памяти, места, загруженность и т.д. Нужно предложить варианты решения этой задачи.
  • Нужна возможность отслеживать ошибки на сервере, логи docker-контейнеров, логи php и mysql.
  • Если есть возможность, добавить в систему мониторинга отслеживание отправляемых с сайта email’ов, чтобы можно было оценивать кол-во писем и статусы (дошло, не дошло, ошибки)

2. Привести в порядок docker-сборку

Проблема: сейчас сборка разбита на множество разных docker-compose файлов и конфигураций, все перемешано, не понятно, как вносить правки.

Задачи:

  • Нужно привести сборку в порядок, сборка должна поддерживать три окружения: локальное dev, тестовое test и продуктовое prod.
  • Сборка должна работать корректно и на linux, и на windows docker desktop
  • Неизвестно почему, но при поднятии сборки через docker-compose up на Windows локально, база данных удаляется. Нужно решить эту проблему, чтобы разработчику при каждом локальном поднятии, не приходилось восстанавливать базу из бекапа.
  • Обеспечить сохранность данных и CI/CD процессов. Все кроны, фоновые задачи должны выполняться корректно и работать даже после деплоя без ручного перезапуска.

3. Безопасность

Проблема: необходимо проверить, насколько сборка надежна и безопасна. В данный момент участились падения сервера при запросах к нему, причина этого не ясна. Задачи:

  • Проверить и рассчитать максимальную нагрузку на сервера.
  • Совместо с dev-командой попробовать найти причину падения сервера по таймауту и решить эту проблему.
  • Проверить доступность ресурсов извне (БД) и надежность указанных паролей.
  • Провести аудит системы и конфигураций на предмет безопасности и обновлений.
  • Должна быть обеспечена надежность бекенд API и отказоустойчивость. а также защита от DDOS-атак. Нужно предложить варианты решения задачи. Также возможно подключение CDN - надо также предложить варианты (например Cloudflare)

4. Подбор серверов

Проблема: сейчас используются AWS-сервера с очень маленьким кол-вом ресурсов. Нужно оценить, какую нагрузку способны выдержать эти сервера, а также предложить аналоги по более доступным ценам.

Задачи:

  • Оценить текущие сервера для test и prod окружений и приблизительно рассчитать нагрузку, которую они способны выдержать
  • Предложить более дешевые по цене, но доступные по характеристикам аналоги, если будет выяснено, что мощности надо увеличивать. Критерии к серверам: расположение в Европе, юр.лицо хостера за пределами СНГ, желательно - глобальная и известная компания.
  • В случае нахождения таких вариантов, обеспечить безшовный переезд на новый сервер (или новые сервера) с сохранением данных и работоспособности приложения.

5. Бекапирование данных

Проблема: сейчас нет автоматического бекапирования баз данных, дисков S3 и кода приложения

Задача:

  • Предложить возможные варианты бекапирования данных. Должна быть обеспечена надежность, сохранность данных, недоступность их для сторонних лиц.
  • Варианты бекапирования должны быть экономными с точки зрения денежных затрат
  • Бекапирование должно быть автоматическим, также должно быть максимально легким восстановление данных из бекапа.

Читайте на 123ru.net