Используемые технологии: 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 и кода приложения
Задача:
- Предложить возможные варианты бекапирования данных. Должна быть обеспечена надежность, сохранность данных, недоступность их для сторонних лиц.
- Варианты бекапирования должны быть экономными с точки зрения денежных затрат
- Бекапирование должно быть автоматическим, также должно быть максимально легким восстановление данных из бекапа.