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

30
Как устроен Enter по версии 2013Q3

Upload: -

Post on 15-Jun-2015

7.545 views

Category:

Technology


0 download

TRANSCRIPT

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

Как устроен Enterпо версии 2013Q3

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

● Андрей Татаринов● Опыт

○ Enter: 2012~now○ Google: 2010-2012○ HH.ru: 2009-2010○ Yandex: 2005-2009

● Цель○ Уменьшение энтропии

Обо мне

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

● мультиканальный ритейл○ реальные магазины (терминалы и касса)○ сайт○ колл-центр○ мобильные приложения

● все сложно○ много регионов присутствия○ много складов○ много магазинов○ расчет доступности○ расчет сроков доставки

Что такое Enter?

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

Все сложно

● Общий сток○ нет классического деления на сток интернет-

магазина и реальных магазинов● Единая бизнес-логика

○ группировка товаров по моделям/линиям/наборам

○ расчет доступности○ расчет стоимостей и сроков○ etc

● 60+ типов конфигурационных мастер-данных

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

Все сложно: сток

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

● 2012Q1 Старт● 2012Q1~2013Q1

○ Стабилизация фронтов○ Переход на синхронный внутренний API○ Развитие бизнес-логики

● 2013Q1~now○ Развитие сервисной инфраструктуры

■ Новый поиск/листинги на sphinx■ Новая CMS

○ Внедрение ESB для интеграции stateful сервисов○ Рефакторинг обменов 1С, WEBCORE, etc.

Этапы развития информационной системы

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

Как это было на старте 2012Q1

● Результат трехмесячного спринта● Фронты - отдельные независимые

системы○ сайт, терминалы, мобильные, соц.приложения○ разрабатывались параллельно независимыми

командами○ stateful○ собственная база○ собственная реализация бизнес-логики○ независимое состояние синхронизации

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

Как это было на старте 2012Q1: Проблемы

● Нестабильный сайт● Рассинхронизация между фронтами и

учетной системой● Несоответствие бизнес-логики между

фронтами● Нестабильные протоколы обменов

○ потеря данных

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

Как это было на старте 2012Q1: Нестабильный сайт

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

2013Q3: Существенно лучше

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

2012Q1: Компоненты

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

2012Q1: Технологии

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

2012Q1: Проблемы

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

2012Q1: Первая итерация рефакторинга

● убить синхронизацию между WEBCORE и фронтами

● stateless-фронты● внутренний API

○ HTTP+JSON● роли фронта:

○ преобразование запроса клиента в несколько запросов API

○ агреггация данных○ визуализация данных

● новые вспомогательные сервисы

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

2012Q1: Рефакторинг

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

2013Q1: Компоненты

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

2013Q1: Технологии

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

Как строится страница

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

Как строится страница

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

RW/RO-API и терминалы

● RO○ RO/RW ≈ 100/1○ репликация○ горизонтальное масштабирование

● Магазины○ ~80 магазинов○ ~400 терминалов○ плохой канал○ большие запросы от терминалов○ локальные реплики RO-core○ mysql-репликация○ проксирование RW на площадку

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

RW/RO-API и терминалы

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

2013Q1: Проблемы

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

2013Q1: Проблемы

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

2013Q1: Вторая итерация рефакторинга

● Декомпозиция WEBCORE○ CORE - бизнес-логика, доступность, цены○ CMS - описания товаров, каталог○ Search - листинги и поиск

● Внедрение ESB Apache ServiceMix● Переработка интеграции сервисов

○ 1С○ WEBCORE○ Search○ OLAP○ etc

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

2013Q1: Вторая итерация рефакторинга

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

2013Q4: Компоненты

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

2013Q4: Технологии

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

ESB: Apache ServiceMix

● Альтернативы○ MuleESB○ WSO2 ESB○ JBoss ESB○ Apache ServiceMix

● Нагрузка○ Основная синхронизация CORE ↔ 1C: ~3000

пакетов, 2Gb данных○ CORE ↔ Sphinx: ~300000-500000 пакетов

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

Итого

● Не копировать информацию без необходимости○ stateless > stateful

● Не усложнять○ поддерживать компоненты простыми

● Использовать готовые инструменты

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

Спасибо

Андрей Татаринов@elephantum