40
Управление долгосрочными проектами на примере интернет-магазина МТС Денис Митрофанов Генеральный директор QSOFT +7 (495) 771-73-63

Денис Митрофанов

Embed Size (px)

DESCRIPTION

Управление долгосрочными проектами на примере интерент-магазина МТС

Citation preview

Page 1: Денис Митрофанов

Управление долгосрочными проектами на примере интернет-магазина МТС

Денис Митрофанов

Генеральный директор QSOFT+7 (495) 771-73-63

Page 2: Денис Митрофанов

Зачем все это и о чем я буду рассказывать

Для создания большого и успешного интернет-проекта нужно много составляющих: правильное позиционирование, ассортимент, цены, работа доставки, реклама и так далее

Создание, и главное, развитие самого продукта (Сайта, сервиса, приложения) – одно из ключевых условий успеха (а в некоторых случаях – единственное)

Page 3: Денис Митрофанов

Отличия долгосрочного проекта

Несколько лет интенсивной разработки (не поддержка!)

Регулярный выпуск версий (каждые 3-4 месяца)

Причем: 2-я версия больше, чем 1-я, и так далее

Мы знаем точно только состав одной версии

Требования изменяются в результате опыта эксплуатации и изменений на рынке

Нужно поддерживать совместимость с боевой версией

Page 4: Денис Митрофанов

Почему нельзя все сделать сразу

1-й результат нужен быстро

Нельзя спланировать и спроектировать на 5 лет вперед (3 года назад не было iPad)

Изменения требований ко 2-й версии после запуска 1-й

«Парадокс проектирования» (цена растет нелинейно от объема + точность)

Page 5: Денис Митрофанов

Если не управлять версионностью…

По мере развития проект превращается в «ласкутного монстра»

Никто не знает как он работает и почему

Доработка нового функционала требует нечеловеческих усилий

Проект «ложиться» под нагрузками

Page 6: Денис Митрофанов

Перезапуск при неправильном управлении развитием проекта

Требуется практически полная остановка развития проекта

Требуется время на создание новой версии

Новая версия не содержит того же количества функций, что старая (зато новая версия содержит много багов)

Требуется много сил и времени на развитие новой версии

Сбои в работе при переходе на новую версию, потери данных

Page 7: Денис Митрофанов

Вывод:

Версионный подход – единственный способ создания больших и успешных проектов,

Но версионностью нужно уметь управлять.

Page 8: Денис Митрофанов
Page 9: Денис Митрофанов

Первый этап развития ИМ МТС

Релиз 1 (октябрь-декабрь 2009)

Создание в сжатые сроки первой версии интернет-магазина с минимальной функциональностью и с высокой перспективой дальнейшего развития.

Функционал:

• Разработка дизайна;

• Каталог телефонов и тарифов;

• Организация процесса оформления и обработки заказов;

• Базовое наполнение контентом;

• Реализация механизмов экспорта и импорта данных;

• Доработка каталога (отзывы, модерация отзывов);

• Система подбора тарифного плана.

Page 10: Денис Митрофанов

Релиз 2 (январь-апрель 2010).

Запуск региональных версий интернет-магазина.

Функционал:

• Запуск 9 региональных версий ИМ;

• Реализация мультивендорности;

• Обеспечение интеграций с региональными партнерами.

Первый этап развития ИМ МТС

Page 11: Денис Митрофанов

Второй этап развития ИМ МТС

Цели второго этапа заключалась в расширении регионального представления и функциональности интернет-магазина МТС, интеграциях с внешними системами и создание бэк-офиса.

Релиз 1 (июль-август 2010).

Реализация, настройка и запуск 70 регионов ИМ.

Page 12: Денис Митрофанов

Релиз 2 (август-сентябрь 2010)

Запуск нового функционала с целью увеличения продаж, открытие раздела для юридических лиц.

Функционал:

Второй этап развития ИМ МТС

• Реализация механизма аукциона телефонных номеров, отчетность по лотам;

• Запуск раздела для корпоративных клиентов;

• Сбор статистики по региональным версиям ИМ;

• Доработка тарифного каталога.

Page 13: Денис Митрофанов

Релиз 3 (октябрь-декабрь 2010)

Разработка бэк-офиса интернет-магазина, разработка логики резервирования остатков, внедрение акционной механики.

Функционал:

Второй этап развития ИМ МТС

• Синхронное открытие самовывоза в 76 регионах;

• Разработка интерфейса розничных магазинов, включая логику резервирования, интеграция с 1С;

• Импорт номеров тарифов;

• Разработка внутреннего web-интерфейса ИМ для КЦ РТК;

• Разработка акционной механики интернет-магазина;

• Разработка предзаказа;

• Переработка каталога аксессуаров.

Page 14: Денис Митрофанов

Второй этап развития ИМ МТС

Аукцион номеров:

Page 15: Денис Митрофанов

Второй этап развития ИМ МТС

Внутренний web-интерфейс ИМ для КоллЦентра:

Page 16: Денис Митрофанов

Релиз 1 (май-июнь 2011)

Создание веб-приложения продажи телефонных номеров через интернет-магазин МТС для социальных сетей Facebook, Одноклассники и ВКонтакте.

Функционал:

Третий этап развития ИМ МТС

• Версия ИМ для приложений в социальных сетях (Вконтакте, Одноклассники и Facebook);

• Разработка механизма сравнения товаров;

• Доработка интерфейса офиса продаж.

Page 17: Денис Митрофанов

Релиз 2 (июнь-август 2011)

Доработка каталога и фильтра товаров.

Функционал:

Третий этап развития ИМ МТС

• Переработка принципа хранения характеристик товаров;

• Разработка фильтра по товарам;

• Синхронизация статусов резерва с системой РТК.

Page 18: Денис Митрофанов

Релиз 3 (сентябрь-ноябрь 2011)

Обновление интерфейса операторов, переработка оформления и региональности.

Функционал:

Третий этап развития ИМ МТС

• Новая версия интерфейса для операторов ИМ;

• Разработка страниц под мобильные устройства;

• Переработка корпоративного раздела;

• Переработка механизма оформления заказа;

• Разработка новой региональной механики;

• Интеграция с сервисами mts.ru;

• Оптимизация сайта.

Page 19: Денис Митрофанов

Третий этап развития ИМ МТС

Операторский интерфейс:

Page 20: Денис Митрофанов

Третий этап развития ИМ МТС

Новая региональная механика:

Page 21: Денис Митрофанов

Четвертый этап развития ИМ МТС

Релиз 1 (январь-апрель 2012)

Первая версия предполагала совмещение работы со сторонними складами, а также внедрение memcached.

Функционал:

• Учет остатков со склада партнеров ИМ;

• Внедрение адаптивного кеширования сайта;

• Доработка корпоративного раздела;

• Конвертация характеристик товаров.

Page 22: Денис Митрофанов

Релиз 2 (сентябрь-декабрь 2012)

Главной целью релиза являлось обновление и расширение основной функциональности интернет-магазина, интеграция с основным сайтом

Функционал:

Четвертый этап развития ИМ МТС

• Переработка логики учета остатков;

• Переработка логики резервов;

• Разработка новой версии корзины;

• Переработка логики акционной механики;

• Доработки каталога и поиска;

• Реализация виджета ИМ на сайте mts.ru;

• Разработка функционала рекомендации аксессуаров для mts.ru;

• Оплата со счета мобильного телефона.

Page 23: Денис Митрофанов

Четвертый этап развития ИМ МТС

Корзина интернет-магазина:

Page 24: Денис Митрофанов

Интеграции с системами РТК

• Синхронизация создания заказа через систему 1С;

• Синхронизация событий РТК и ИМ;

• Экспорт отмененного заказа;

Получение актуальной информации по каталогу:

• Импорт остатков товарной базы, добавление и учет остатков на точке;

• Импорт цен товаров;

• Импорт точек доставки;

• Импорт статуса резерва заказа;

• Импорт номенклатуры;

• Импорт остатков внешних поставщиков;

Взаимодействие по заказам:

• Экспорт данных о клиенте корпоративного раздела;

• Экспорт заявки на резерв;

• Экспорт заказов с тарифами.

Page 25: Денис Митрофанов

Интеграции с системами МТС

• Передача данных о корзине покупателя;

• Вывод рекомендуемых аксессуаров для клиентов mts.ru (личный кабинет).

Получение актуальной информации по каталогу:

• Импорт данных о тарифах;

• Импорт данных модельного ряда телефонов БД МТС;

• Получение каталога приложений для мобильных телефонов.

Реализация виджетов для сайта mts.ru:

Page 26: Денис Митрофанов

Интеграции с внешними системами

Интеграции с партнерскими сетями:

• Экспорт каталога товаров для Яндекс.Маркет, Admitad, Criteo, Soloway, Wikimart, GoogleShop и других систем;

• Интеграция с Яндекс.Быстрый заказ и Яндекс.Карты.

Интеграции с социальными сетями:

• Покупка номеров через приложение Red Gadget под социальные сети (ВКонтакте, Facebook, Одноклассники);

• Виджеты социальных сетей.

Интеграции с платежными системами:

• Интеграция с кредитной системой CreditLine;

• Интеграция с платежной системой PayOnline (оплата банковской картой);

• Интеграция с системой CyberPlat (оплата заказа со счета мобильного телефона);

• Интеграция с системой QIWI.

Page 27: Денис Митрофанов

Еще немного теории, как сделать всем красиво

Page 28: Денис Митрофанов

Мажорные итерации (3-6 мес.)

Рефакторинг

Нагрузочное тестирование

Доработка архитектуры, документирование

Проблема «продажи» рефакторинга: нет видимого результата (важно чтобы у заказчика был технический специалист) + видимые метрики

Page 29: Денис Митрофанов

Разделение производства и Поддержки. Культура отгрузок

Разделение Производства и поддержки. Минорных и мажорных итераций

Разные цели (KPI) и психология Производства и Поддержки

Отгрузки через отдел Поддержки

Обеспечение высокого uptime

Page 30: Денис Митрофанов

Стабилизация команды. Сохранение культуры

Люди устают, один проект надоедает, деньги не мотивируют

Своевременная передача знаний и культуры, а не удержание любой ценой 5-ти человек 5 лет

Команда 5-10 человек, 2 архитектора

Стабильный поток объемов

Page 31: Денис Митрофанов

Основные причины падений в порядке возрастания (по экспоненте)

Сбой на уровне «железа»

Сбой на уровне ПО (ОС, БД, web-сервер)

Сбой на уровне канала (хостинга)

Сбой на уровне Продукта

Сбой от высокой неплановой нагрузки

Сбой в результате обновления Продукта

Page 32: Денис Митрофанов

Стабильность проекта 24х7

Независимый аудит кода перед отгрузкой

Сфокусированная ответственность за отгрузку

Регулярный выборочный контроль кода со стороны эксперта (тех директора)

Автотесты

План-тесты и таблицы связанного функционала (работа отдела качества)

Page 33: Денис Митрофанов
Page 34: Денис Митрофанов

Тренируйтесь на кошках

Частичная отгрузка на боевой – в идеале если пользуетесь сами или часть лояльных пользователей

Отгрузка для части боевых пользователей (на выделенный сервер)

Полная идентичность финального тестового стенда и боевого (включая окружение)

Тестирование на реальных данных

Отгрузка одной кнопкой

Page 35: Денис Митрофанов

DNS

Балансировщик

Node 1

Node 2

Node N

Типовая схема

Page 36: Денис Митрофанов

DNS

Балансировщик

Node 1

Node 2

Node NStageStage

Отключаем одну ноду и обновляем со Stage

Page 37: Денис Митрофанов

DNS

Балансировщик

Node 1

Node 2

Node N

Тестовый трафик

Включаем ноду в тестовом режиме

Page 38: Денис Митрофанов

DNS

Балансировщик

Node 1

Node 2

Node N

Раздаем изменения с обновленной ноды

Page 39: Денис Митрофанов

Проблемы и риски

Нормирование нагрузки на команду – не равномерный объем работы

Вялотекущие периоды сильно демотивируют команду

Большие обновления перед Новым годом – в пик продаж

Остатки – обновление кэша по факту изменения

Синхронизация кэша на резервном сервере

Page 40: Денис Митрофанов

Вопросы?

Митрофанов Денис

Спасибо за внимание!