SRE-аудит
CI/CD
Инфраструктура

SRE-аудит сайта Flowwow

Flowwow — это онлайн-сервис для доставки цветов и подарков из локальных магазинов в более чем 950 городах мира.

Какие были задачи?

  1. Основная задача, стоявшая перед Flowwow, сделать разросшуюся инфраструктуру сервисов более управляемой, стабильной, консистентной и унифицированной.
  2. Клиент сделал запрос на оценку состояния инфраструктуры и получение рекомендаций по ее улучшению.

Решения

В качестве решения мы предложили клиенту провести комплексный SRE-аудит проекта. Информация, полученная в ходе аудита стала базой для формирования плана по решению задач:

  • Оптимизация работы под нагрузкой, особенно при резком росте числа заказов, что характерно для проекта
  • Уменьшение времени даунтайма при инцидентах
  • Унификация процессов и шаблонов для работы с инфраструктурой

Выявленные проблемы по IaC

  1. Невозможно развернуть инфраструктуру с нуля
  2. Сложный workflow, затрудняющий работу
  3. Код Terraform, который не дает понимания итоговой инфраструктуры.
  4. В облаках присутствуют предустановленные ресурсы (default vpc), чего не должно быть при работе с Terraform, это вносит путаницу.
  1. Невозможно развернуть инфраструктуру с нуля
  2. Сложный workflow, затрудняющий работу.
  3. Код Terraform, который не дает понимания итоговой инфраструктуры.
  4. В облаках присутствуют предустановленные ресурсы (default vpc), чего не должно быть при работе с Terraform, это вносит путаницу.

Наши рекомендации

  • Разделить инфраструктуру и ПО – Terraform от Ansible.
  • Отказаться от packer.
  • Уход от избыточности: создать только необходимые модули Terraform, с полным описанием и примерами использования.
  • Отказаться от публичных модулей.
  • Ansible — переделать роли и плейбуки: отказаться от публичных ролей, добавить molecule, создать документацию и инструкции по работе с окружениями.
  • Добавить в репозиторий с helm чартами, чарты инфраструктурных сервисов, таких как Ingress, Nginx, Prometheus operator и т.п., удалить их из Terraform.
frame
frame

Выявленные проблемы по CI/CD

  1. Jenkins Jobs представляют собой по большей части ручные джобы: миграции, бэкапы, автомержи, очистки кэшей/очередей, 1С-инвойсы, разного рода кроны и т.д.
  2. Часть джоб – набор команд в конфигурации джобы, в том числе git pull. А часть джоб запускают bash-скрипты, которые уже есть на серверах.
  3. В Jenkins нет четкого разделения джоб по контурам. При изменении или добавлении какого-то сервера в инфраструктуру, нужно будет вносить корректировки во все связанные джобы.
  4. Список jobs в документации не полный.
  5. Деплой песочниц организован неудобно и непрозрачно. Например, нет автоматического удаления.
  6. Воркфлоу в репозитории кода выглядит не связным из-за отсутствия описания того, какие приложения есть в проекте и как они связаны между собой.
  7. Есть разные пайплайны с закомментированным кодом и неясно, как это всё между собой связано.

Наши рекомендации

  • Привести в задокументированный вид.
  • Провести рефакторинг: унифицировать деплои, сделать отдельно деплой песочниц.
  • Избавиться от лишних Jenkins jobs, вынеся часть в код с использованием Ansible или пайплайнов, а бэкапные задачи — в крон или альтернативные решения.
  • Вынести все из репозитория кода, описать весь общий флоу, отделив инфраструктуру от приложений.
  • Сделать автоматическое развертывание песочниц исходя из названия feature ветки.
  • Унифицировать workflow для всех приложений, разработать единый пайплайн.
frame
frame

Проблемы в документации

  1. Нет описания всей инфраструктуры и полного перечня контуров/серверов (инвентори).
  2. Отсутствуют данные по всем приложениям и плохо видна связь между ними.
  3. Не хватает четких инструкций в документации по laC.
  4. Нет полной документации по CI/CD-процессам.

Наши рекомендации

  • Использовать подход к документации как к коду. Например, есть репозитории с IaC и репозитории с описанными CI/CD-процессами. Документация по использованию этих инструментов должна быть прикреплена к самим инструментам при помощи readme.
  • Составить базу общих знаний по использованию разных технологий в отдельном разделе.
  • Вынести инфраструктурную документацию и типовые инструкции по эксплуатации в свой раздел документации. Он должен поддерживаться и актуализироваться в рамках технической поддержки.
  • Разделить документацию на категории и хранить в разных местах.
frame
frame

План устранения проблем

  1. Создание полноценной документации по проекту, выработка процесса по поддержанию ее в актуальном состоянии.
  2. Разработка плана реорганизации проекта с расстановкой приоритетов.
  3. Удаление лишних ресурсов в облаках.
  4. Рефакторинг IaC для проекта: Terraform, Ansible, Helm.
  5. Работы с CI/CD.
Готовы обсудить проект?

Ответим на заявку в ближайшие 24 часа. А еще мы можем проконсультировать вас по телефону +7 800 555-91-99, электронной почте info@itsumma.ru или в Telegram-чате.

Свяжитесь со мной здесь
Свяжитесь со мной здесь
❗️Имя не может быть пустым
❗️Телефон не может быть пустым
❗️Email не может быть пустым