SRE-аудит сайта Flowwow
Flowwow — это онлайн-сервис для доставки цветов и подарков из локальных магазинов в более чем 950 городах мира.
В качестве решения мы предложили клиенту провести комплексный SRE-аудит проекта.
Информация, полученная в ходе аудита стала базой для формирования плана по решению задач:
Оптимизация работы под нагрузкой, особенно при резком росте числа заказов, что характерно для проекта
Уменьшение времени даунтайма при инцидентах
Унификация процессов и шаблонов для работы с инфраструктурой
Невозможно развернуть инфраструктуру с нуля
Сложный workflow, затрудняющий работу.
Код Terraform, который не дает понимания итоговой инфраструктуры.
В облаках присутствуют предустановленные ресурсы (default vpc), чего не должно быть при работе с Terraform, это вносит путаницу.
Наши рекомендации:
Разделить инфраструктуру и ПО – Terraform от Ansible.
Отказаться от packer.
Уход от избыточности: создать только необходимые модули Terraform, с полным описанием и примерами использования.
Отказаться от публичных модулей.
Ansible — переделать роли и плейбуки: отказаться от публичных ролей, добавить molecule, создать документацию и инструкции по работе с окружениями.
Добавить в репозиторий с helm чартами, чарты инфраструктурных сервисов, таких как Ingress, Nginx, Prometheus operator и т.п., удалить их из Terraform.
Jenkins Jobs представляют собой по большей части ручные джобы: миграции, бэкапы, автомержи, очистки кэшей/очередей, 1С-инвойсы, разного рода кроны и т.д.
Часть джоб – набор команд в конфигурации джобы, в том числе git pull. А часть джоб запускают bash-скрипты, которые уже есть на серверах.
В Jenkins нет четкого разделения джоб по контурам. При изменении или добавлении какого-то сервера в инфраструктуру, нужно будет вносить корректировки во все связанные джобы.
Список jobs в документации не полный.
Деплой песочниц организован неудобно и непрозрачно. Например, нет автоматического удаления.
Воркфлоу в репозитории кода выглядит не связным из-за отсутствия описания того, какие приложения есть в проекте и как они связаны между собой.
Есть разные пайплайны с закомментированным кодом и неясно, как это всё между собой связано.
Наши рекомендации:
Привести в задокументированный вид.
Провести рефакторинг: унифицировать деплои, сделать отдельно деплой песочниц.
Избавиться от лишних jobs в Jenkins:
часть вынести в код, использовать ансибл или пайплайны;
бэкапные унести в крон-задачи или использовать другие решения.
Вынести все из репозитория кода, описать весь общий флоу, отделив инфраструктуру от приложений.
Сделать автоматическое развертывание песочниц исходя из названия feature ветки.
Унифицировать workflow для всех приложений, разработать единый пайплайн.
Нет описания всей инфраструктуры и полного перечня контуров/серверов (инвентори).
Отсутствуют данные по всем приложениям и плохо видна связь между ними.
Не хватает четких инструкций в документации по laC.
Нет полной документации по CI/CD-процессам.
Наши рекомендации:
Использовать подход к документации как к коду. Например, есть репозитории с IaC и репозитории с описанными CI/CD-процессами. Документация по использованию этих инструментов должна быть прикреплена к самим инструментам при помощи readme.
Составить базу общих знаний по использованию разных технологий в отдельном разделе.
Вынести инфраструктурную документацию и типовые инструкции по эксплуатации в свой раздел документации. Он должен поддерживаться и актуализироваться в рамках технической поддержки.
Разделить документацию на категории и хранить в разных местах.
Упомянутые услуги
Ответим на заявку в ближайшие 24 часа. А еще мы можем проконсультировать вас по телефону +7 800 555-91-99, электронной почте info@itsumma.ru или в Telegram-чате.