Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Платформа для поставки счастья в команду QA / Вячеслав Кузнецов (Ecwid)

463 views

Published on

В современной разработке git - это краеугольный камень. Разработчики получили возможность писать новые фичи в отдельных ветках кода, не мешая друг другу. Как следствие, у команды QA возникла необходимость тестировать эти новые фичи изолировано друг от друга до объединения кода в релиз-ветках.

Я расскажу про наш путь от dev-кластера со свалкой кода до платформы, предоставляющей изолированные окружения. Это хороший пример автоматизации деплоя сложной распределенной системы с помощью configuration management-инструментов.

Стек технологий:
- AWS;
- Chef;
- Packer;
- Python;
- Teamcity.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Платформа для поставки счастья в команду QA / Вячеслав Кузнецов (Ecwid)

  1. 1. Платформа для поставки счастья в команду QA Вячеслав Кузнецов @smith3v
  2. 2. Ecwid • SaaS-платформа для интернет- магазинов. • ~ 750 000 клиентов по всему миру. • ~ 100 000 000 посетителей в месяц. • 80 человек в команде. • Ульяновск, Самара, Казань, San Diego.
  3. 3. Operations • Доступность. • Надежность. • Безопасность. • Максимальная скорость от идеи до релиза.
  4. 4. QA • Подготовка и поддержка ботов. • Сопровождение релизов. • Проверка изменений на соответствие задаче.
  5. 5. На заре проекта • Десяток разработчиков. • SVN репозиторий. • All-in-one staging-сервер. • Обновление руками.
  6. 6. Команда растет • Больше изменений. • Тестирование до слияния с основным кодом. • Завели pre-staging сервер J
  7. 7. Переехали на Git • Изменение делается в отдельной ветке. • Тестовые серверы стали бутылочным горлышком.
  8. 8. Первый подход У нас уже есть configuration management, который готовит production-кластер! • Git • Chef • Bash • Jenkins
  9. 9. Запуск площадки • Передаем имя и версию; • Собираем все пакеты; • Создаем базы из шаблонов; • Регистрируем DNS; • Добавляем в Nginx; • Запускаем сервер EC2; • Дожидаемся результата.
  10. 10. Инфраструктура Package Storage Nginx EC2   instance Postgres Route53 Jenkins app.<name>.ecwid.com my.<name>.ecwid.com
  11. 11. Статистика • время запуска ~45 мин; • 15-30 сборок в день; • до 30 поломок в месяц.
  12. 12. Сложности • Поддержка bash-кода. • Хрупкая реализация.
  13. 13. Сложности • Общее пространство имен в *.ecwid.com. • Ручное бессмертие.
  14. 14. Сложности • История версий баз в файлах. • Сложное добавление сервисов.
  15. 15. Песочницы S3 Nginx EC2   instance RDS Teamcity *<name>.sandbox.ecwid.com
  16. 16. Песочницы
  17. 17. Песочницы
  18. 18. Песочницы • <Build tasks> (2m:10s) • <Upload static to S3> (2m:56s) • <Instance start> (10m:29s) • Chef Client finished, 652/1037 resources updated in 521.716752572 seconds
  19. 19. Статистика • ~15 мин время запуска; • ~50 сборок в день; • единичные поломки; • ~$1500 в месяц.
  20. 20. Песочницы. Плюшки • Бессмертные площадки и остановка ненужных. • Простое добавление новых сервисов.
  21. 21. Песочницы. Плюшки • Нормальное управление базами. • Нормальная работа с доменами.
  22. 22. Sandy
  23. 23. Sandy • Что запущено? • Есть бессмертные? • История.
  24. 24. Интеграция с чатом
  25. 25. Интеграция с чатом
  26. 26. Интеграция с чатом
  27. 27. Оптимизации • Базовый образ. • Ночное тестирование. • Предварительная сборка пакетов. • ssh-dev, psql-sand, ectail.
  28. 28. Платформа Дали возможность добавлять новые компоненты без участия Ops: • Шаблон конфига в пакете; • Добавление одной командой.
  29. 29. Итог • Системные решения эффективнее. • Больше свободы, меньше блокировок. • Тестовая среда ≈ реальной.
  30. 30. Спасибо
  31. 31. Get better • hangops.ru • devopsru.com

×