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

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

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

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

В качестве решения мы предложили клиенту провести комплексный SRE-аудит проекта.

Информация, полученная в ходе аудита стала базой для формирования плана по решению задач:

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

  • Уменьшение времени даунтайма при инцидентах

  • Унификация процессов и шаблонов для работы с инфраструктурой

Баннер Flowwow
Выявленные проблемы по IaC
  1. Невозможно развернуть инфраструктуру с нуля

  2. Сложный workflow, затрудняющий работу.

  3. Код Terraform, который не дает понимания итоговой инфраструктуры. 

  4. В облаках присутствуют предустановленные ресурсы (default vpc), чего не должно быть при работе с Terraform, это вносит путаницу.

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

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

  • Разделить инфраструктуру и ПО – Terraform от Ansible.

  • Отказаться от packer.

  • Уход от избыточности: создать только необходимые модули Terraform, с полным описанием и примерами использования. 

  • Отказаться от публичных модулей.

  • Ansible — переделать роли и плейбуки: отказаться от публичных ролей, добавить molecule, создать документацию и инструкции по работе с окружениями.

  • Добавить в репозиторий с helm чартами, чарты инфраструктурных сервисов, таких как Ingress, Nginx, Prometheus operator и т.п., удалить их из Terraform.

Выявленные проблемы по CI/CD
  1. Jenkins Jobs представляют собой по большей части ручные джобы: миграции, бэкапы, автомержи, очистки кэшей/очередей, 1С-инвойсы, разного рода кроны и т.д.

  2. Часть джоб – набор команд в конфигурации джобы, в том числе git pull. А часть джоб запускают bash-скрипты, которые уже есть на серверах. 

  3. В Jenkins нет четкого разделения джоб по контурам. При изменении или добавлении какого-то сервера в инфраструктуру, нужно будет вносить корректировки во все связанные джобы.

  4. Список jobs в документации не полный. 

  5. Деплой песочниц организован неудобно и непрозрачно. Например, нет автоматического удаления.

  6. Воркфлоу в репозитории кода выглядит не связным из-за отсутствия описания того, какие приложения есть в проекте и как они связаны между собой.

  7. Есть разные пайплайны с закомментированным кодом и неясно, как это всё между собой связано.

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

  • Привести в задокументированный вид.

  • Провести рефакторинг: унифицировать деплои, сделать отдельно деплой песочниц.

  • Избавиться от лишних jobs в Jenkins:

  1. часть вынести в код, использовать ансибл или пайплайны;

  2. бэкапные унести в крон-задачи или использовать другие решения.

  • Вынести все из репозитория кода, описать весь общий флоу, отделив инфраструктуру от приложений.

  • Сделать автоматическое развертывание песочниц исходя из названия feature ветки.

  • Унифицировать workflow для всех приложений, разработать единый пайплайн.

наши рекомендации
Проблемы в документации
  1. Нет описания всей инфраструктуры и полного перечня контуров/серверов (инвентори).

  2. Отсутствуют данные по всем приложениям и плохо видна связь между ними.

  3. Не хватает четких инструкций в документации по laC.

  4. Нет полной документации по CI/CD-процессам.

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

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

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

  • Составить базу общих знаний по использованию разных технологий в отдельном разделе. 

  • Вынести инфраструктурную документацию и типовые инструкции по эксплуатации в свой раздел документации. Он должен поддерживаться и актуализироваться в рамках технической поддержки.

  • Разделить документацию на категории и хранить в разных местах.

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

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

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