Как устроен Enter
по версии 2013Q3
● Андрей Татаринов
● Опыт
○ Enter: 2012~now
○ Google: 2010-2012
○ HH.ru: 2009-2010
○ Yandex: 2005-2009
● Цель
○ Уменьшение...
● мультиканальный ритейл
○ реальные магазины (терминалы и касса)
○ сайт
○ колл-центр
○ мобильные приложения
● все сложно
○...
Все сложно
● Общий сток
○ нет классического деления на сток интернет-
магазина и реальных магазинов
● Единая бизнес-логика...
Все сложно: сток
● 2012Q1 Старт
● 2012Q1~2013Q1
○ Стабилизация фронтов
○ Переход на синхронный внутренний API
○ Развитие бизнес-логики
● 20...
Как это было на старте 2012Q1
● Результат трехмесячного спринта
● Фронты - отдельные независимые
системы
○ сайт, терминалы...
Как это было на старте 2012Q1:
Проблемы
● Нестабильный сайт
● Рассинхронизация между фронтами и
учетной системой
● Несоотв...
Как это было на старте 2012Q1:
Нестабильный сайт
2013Q3: Существенно лучше
2012Q1: Компоненты
2012Q1: Технологии
2012Q1: Проблемы
2012Q1: Первая итерация
рефакторинга
● убить синхронизацию между WEBCORE и
фронтами
● stateless-фронты
● внутренний API
○ ...
2012Q1: Рефакторинг
2013Q1: Компоненты
2013Q1: Технологии
Как строится страница
Как строится страница
RW/RO-API и терминалы
● RO
○ RO/RW ≈ 100/1
○ репликация
○ горизонтальное масштабирование
● Магазины
○ ~80 магазинов
○ ~400...
RW/RO-API и терминалы
2013Q1: Проблемы
2013Q1: Проблемы
2013Q1: Вторая итерация
рефакторинга
● Декомпозиция WEBCORE
○ CORE - бизнес-логика, доступность, цены
○ CMS - описания тов...
2013Q1: Вторая итерация
рефакторинга
2013Q4: Компоненты
2013Q4: Технологии
ESB: Apache ServiceMix
● Альтернативы
○ MuleESB
○ WSO2 ESB
○ JBoss ESB
○ Apache ServiceMix
● Нагрузка
○ Основная синхрониз...
Итого
● Не копировать информацию без
необходимости
○ stateless > stateful
● Не усложнять
○ поддерживать компоненты простым...
Спасибо
Андрей Татаринов
@elephantum
Upcoming SlideShare
Loading in …5
×

CMS magazine 2013: как устроен enter

9,423 views

Published on

Published in: Technology
6 Comments
28 Likes
Statistics
Notes
No Downloads
Views
Total views
9,423
On SlideShare
0
From Embeds
0
Number of Embeds
4,708
Actions
Shares
0
Downloads
67
Comments
6
Likes
28
Embeds 0
No embeds

No notes for slide

CMS magazine 2013: как устроен enter

  1. 1. Как устроен Enter по версии 2013Q3
  2. 2. ● Андрей Татаринов ● Опыт ○ Enter: 2012~now ○ Google: 2010-2012 ○ HH.ru: 2009-2010 ○ Yandex: 2005-2009 ● Цель ○ Уменьшение энтропии Обо мне
  3. 3. ● мультиканальный ритейл ○ реальные магазины (терминалы и касса) ○ сайт ○ колл-центр ○ мобильные приложения ● все сложно ○ много регионов присутствия ○ много складов ○ много магазинов ○ расчет доступности ○ расчет сроков доставки Что такое Enter?
  4. 4. Все сложно ● Общий сток ○ нет классического деления на сток интернет- магазина и реальных магазинов ● Единая бизнес-логика ○ группировка товаров по моделям/линиям/наборам ○ расчет доступности ○ расчет стоимостей и сроков ○ etc ● 60+ типов конфигурационных мастер- данных
  5. 5. Все сложно: сток
  6. 6. ● 2012Q1 Старт ● 2012Q1~2013Q1 ○ Стабилизация фронтов ○ Переход на синхронный внутренний API ○ Развитие бизнес-логики ● 2013Q1~now ○ Развитие сервисной инфраструктуры ■ Новый поиск/листинги на sphinx ■ Новая CMS ○ Внедрение ESB для интеграции stateful сервисов ○ Рефакторинг обменов 1С, WEBCORE, etc. Этапы развития информационной системы
  7. 7. Как это было на старте 2012Q1 ● Результат трехмесячного спринта ● Фронты - отдельные независимые системы ○ сайт, терминалы, мобильные, соц.приложения ○ разрабатывались параллельно независимыми командами ○ stateful ○ собственная база ○ собственная реализация бизнес-логики ○ независимое состояние синхронизации
  8. 8. Как это было на старте 2012Q1: Проблемы ● Нестабильный сайт ● Рассинхронизация между фронтами и учетной системой ● Несоответствие бизнес-логики между фронтами ● Нестабильные протоколы обменов ○ потеря данных
  9. 9. Как это было на старте 2012Q1: Нестабильный сайт
  10. 10. 2013Q3: Существенно лучше
  11. 11. 2012Q1: Компоненты
  12. 12. 2012Q1: Технологии
  13. 13. 2012Q1: Проблемы
  14. 14. 2012Q1: Первая итерация рефакторинга ● убить синхронизацию между WEBCORE и фронтами ● stateless-фронты ● внутренний API ○ HTTP+JSON ● роли фронта: ○ преобразование запроса клиента в несколько запросов API ○ агреггация данных ○ визуализация данных ● новые вспомогательные сервисы
  15. 15. 2012Q1: Рефакторинг
  16. 16. 2013Q1: Компоненты
  17. 17. 2013Q1: Технологии
  18. 18. Как строится страница
  19. 19. Как строится страница
  20. 20. RW/RO-API и терминалы ● RO ○ RO/RW ≈ 100/1 ○ репликация ○ горизонтальное масштабирование ● Магазины ○ ~80 магазинов ○ ~400 терминалов ○ плохой канал ○ большие запросы от терминалов ○ локальные реплики RO-core ○ mysql-репликация ○ проксирование RW на площадку
  21. 21. RW/RO-API и терминалы
  22. 22. 2013Q1: Проблемы
  23. 23. 2013Q1: Проблемы
  24. 24. 2013Q1: Вторая итерация рефакторинга ● Декомпозиция WEBCORE ○ CORE - бизнес-логика, доступность, цены ○ CMS - описания товаров, каталог ○ Search - листинги и поиск ● Внедрение ESB Apache ServiceMix ● Переработка интеграции сервисов ○ 1С ○ WEBCORE ○ Search ○ OLAP ○ etc
  25. 25. 2013Q1: Вторая итерация рефакторинга
  26. 26. 2013Q4: Компоненты
  27. 27. 2013Q4: Технологии
  28. 28. ESB: Apache ServiceMix ● Альтернативы ○ MuleESB ○ WSO2 ESB ○ JBoss ESB ○ Apache ServiceMix ● Нагрузка ○ Основная синхронизация CORE ↔ 1C: ~3000 пакетов, 2Gb данных ○ CORE ↔ Sphinx: ~300000-500000 пакетов
  29. 29. Итого ● Не копировать информацию без необходимости ○ stateless > stateful ● Не усложнять ○ поддерживать компоненты простыми ● Использовать готовые инструменты
  30. 30. Спасибо Андрей Татаринов @elephantum

×