Настоящий цикл статей преследует две цели. Первая — рассказать (не без гордости) о том, как создавался и развивался такой масштабный и во многом уникальный проект, как «Домости». Вторая — предоставить все заинтересованным читателям сборник материалов по практическому решению вопросов, которые возникают в процессе разработки и внедрения всех систем, обеспечивающих работу современного интернет-магазина.
Это ни в коем случае не «курс молодого бойца», не набор советов и рекомендаций! Наш опыт, безусловно, уникален, однако это вовсе не означает, что мы обнаружили некий путь, по которому обязательно должны пройти все. Тем не менее, нам хотелось, чтобы эти статьи натолкнули читателей на мысли о стратегическом, тактическом и техническом развитии российского сегмента e-commerce и, возможно, на конструктивную критику в наш адрес.
Несмотря на общий технический характер настоящих заметок, единственным углом, под которым следует изучать электронную коммерцию, является её пригодность к торговле, то есть, процессу закупки, продажи и последующей поставки товара потребителю.
Для повышения прибыли можно сделать многое: оптимизировать работу кладовщиков, снизить себестоимость call-центра, улучшить работу сайта и вложиться в контекстную рекламу, а можно ограничиться лишь импортом определенных товаров, при условии, конечно, что вы сможете его безошибочно выбрать и оперативно продать. И в случае небольшого магазина, наверное, гораздо проще заниматься только товаром, не вкладывая средства в дорогое, инертное с точки зрения ROI и даже в чем-то рисковое IT. Такой подход обеспечивает небольшой постоянный доход и избавляет от необходимости ломать голову над развитием бизнеса.
Но если ваши амбиции выходят за рамки «шо-попало-shop» для друзей, знакомых и друзей знакомых, если вы готовы построить нечто большее, например, Магазин-лидер с широким ассортиментом, большим количеством продаж и огромной клиентской базой, то деваться некуда — вложения в IT потребуются очень и очень серьезные!
В проекте «Домости» мы с самого начала создавали магазин именно под большой оборот, поэтому те технические дебри, в которые нам пришлось залезть — это, с одной стороны, плата за амбиции, а с другой – наши инвестиции в будущее как самого магазина и рынка товаров для дома, так и российской электронной коммерции.
При разработке проекта «Домости» мы с самого начала поставили себе же следующие условия (а как выяснилось позже, и достаточно жесткие ограничения!):
продаем товары для дома и мебель
магазин рассчитан на большое количество ежедневных транзакций. «Большое» – это значит, что при переходе от 50 к 5 000 заказов в день — нам нужно будет поменять не саму платформу, а только её настройки
магазин представляется собой активную платформу, поведение пользователей на которой, влияет на в том числе на выбор и выкладку товара
Из вышеперечисленных условий следовало:
специфика товаров такова, что в большинстве своем они не имеют четких атрибутов и универсальных характеристик, либо эти данные не предоставляются поставщиками
товары для дома и мебель придется частично доставлять напрямую от поставщиков (товары на заказ), а частично хранить у себя на складе
поскольку развитие торговли предполагает экспансию на федеральный уровень, все бизнес-процессы должны быть масштабируемы с учетом транспортных и рыночных особенностей регионов и связей между ними
Первым вопросом, который нам предстояло решить еще до начала всех работ, это определить платформу, на базе которой будет разработан проект. Поначалу наиболее разумным казался вариант связки Bitrix (или подобной CMS) для витрины сайта и 1C для внутренних бизнес-процессов. Но первые же встречи с 1С-разработчиками показали, что никто из них не может не то что гарантировать, но даже рассказать о предположительном времени ответа сервера при больших нагрузках.*
*Конечно, это не означает, что 1С принципиально не поддерживает большие нагрузки, просто во время обсуждения платформы будущего проекта, мы не получили достоверной информации, попутно выяснив, что сформировать команду из 1С-разработчиков высокого уровня будет либо проблематично, либо неоправданно дорого.
К тому же, обнаружилась и организационная проблема: для связки групп разработчиков CMS и 1С требовалась дополнительная команда программистов. Наконец, оставались сомнения насчет масштабируемости такого проекта и реализации всех условий, перечисленных выше.**
**Да, на Bitrix работает сеть Эльдорадо, но при этом она использует свою внутреннюю уже отлаженную ERP. Кроме того, никто не гарантирует что Bitrix будет оказывать новосозданному, пусть и большому магазину, такое же внимание, как Эльдорадо.
При рассмотрении прочих CMS выяснилось, что они как правило предлагаются веб-студиями «в пакете» с полной поддержкой силами разработчиков. Это, на первый взгляд, было приятным дополнением, поскольку сайт создавался не просто «под ключ», но и обеспечивался постоянной поддержкой группы разработчиков. С другой стороны, возник вопрос, как быть с нашими находками и отличительными особенностями проекта, которые по мере появления и внедрения на сайт могли бы стать не нашей собственностью, а частью покупной CMS? Юридическое решение этого вопроса, даже на уровне защиты авторских прав на надстройки системы, требовало времени на согласование и дополнительных средств.
Также в качестве альтернативы обсуждалась возможность внедрения open-source CMS. Однако после рассмотрения множества известных и малоизвестных открытых систем, выяснилось, что при условиях, приведенных выше, мы неизбежно должны были добираться до самой глубины CMS и, перекроив её практически полностью, в конечном счете настроить под свои нужды.
Неудивительно, что у нас появилась идея вообще отказаться от интеграции чужих систем и сосредоточиться на разработке собственной платформы. «Домости» – это не самый простой для реализации проект, и дополнительно усложнять его за счет доработки чужих систем нам представлялось нецелесообразным.
Поэтому вопрос о платформе проекта был поднят снова, но уже с понимаем того, что работать придется «с нуля». Только в этом случае мы могли гарантировать работу бизнеса, согласованного с инвесторами, а именно: автоматизацию, онлайн отображение всех внутренних бизнес-процессов — от заказа товара и его оплаты до доставки покупателю, включая все возможные перемещения, адаптивность и масштабируемость. Условно наши возможности для реализации проекта выглядели следующим образом:
Витрина сайта |
Внутренние бизнес-процессы |
|
Front end |
Java, .NET, PHP |
Java, .NET, PHP |
Back end |
Java, .NET, PHP |
Java, .NET |
Что касается PHP, то наше техническое задание предполагало размещение значительной части информации, необходимой для работы модуля бизнес-логики, на стороне сайта, а значит, использовать PHP только для части проекта было нежелательно. Кроме того, неизбежно возникала проблема синхронизации систем, которую могло разрешить только наличие единой платформы у front-end и back end.
Далее нам предстояло определить, с помощью какого инструмента разрабатывать программное обеспечение корпоративного класса. По сути эта проблема выбора сразу же свелась к вопросу: JAVA или .NET? Мы остановили свой выбор на JAVA в силу бесплатности, открытости и кроссплатформенности (Табл.1). Бесплатность и открытость JAVA дают существенную экономию средств на начальной стадии проекта, когда большая часть финансирования уходит именно на разработку. А кроссплатформенность позволяет не привязываться к серверному программному обеспечению, что в конечном счете дает еще больше свободы.
GlobalNet |
|
Site |
Technology |
http://www.overstock.com/ |
|
http://store.apple.com/us |
|
http://www.apple.com/itunes/ |
|
http://www.ebay.com/ |
a lot of tech |
http://www.amazon.com/ |
a lot of tech |
http://www.googlestore.com/ |
asp.net, php |
http://www.oo.com.au/# |
asp.net |
http://store.diesel.com/ |
asp.net |
http://shop.thehundreds.com/ |
asp.net |
http://www.musicroom.com/ |
asp.net |
http://www.coach.com/ |
asp.net |
http://store.dolcegabbana.com/ |
asp.net |
http://www.topbuy.com.au/ |
asp.net |
http://www.microsoftstore.com |
asp.net |
http://www.buy.com/ |
asp.net |
http://www.bedbathandbeyond.com/ |
asp.net |
http://www.furniture.com/ |
asp.net |
http://www.homegoods.com/ |
asp.net |
http://www.dealextreme.com/ |
asp.net |
http://www.walmart.com/ |
asp.net, J2EE |
http://us.blizzard.com/store/ |
J2EE |
http://www.momastore.org/ |
J2EE |
http://www.homeshop18.com/ |
J2EE |
http://www.ae.com/ |
J2EE, ATG |
http://www.futurebazaar.com/ |
J2EE |
http://www.homebase.co.uk/ |
J2EE |
http://www.target.com/ |
J2EE |
http://shop.lego.com/ |
J2EE |
http://www.zappos.com/ |
J2EE |
http://www.officedepot.com/ |
J2EE |
http://www.6pm.com/ |
J2EE |
http://www.letsbuy.com/ |
php |
https://play.google.com/store |
python |
http://www.kitchen-gadgets.com/ |
yahoo store, yahoo small business |
RuNet |
|
Site |
Technology |
http://www.boutique.ru |
|
http://www.club-sale.ru |
|
http://www.laredoute.ru |
asp.net |
http://www.technopark.ru |
asp.net |
http://www.zakazi24.ru |
asp.net |
http://www.sapato.ru |
Bitrix |
http://www.svyaznoy.ru/ |
Bitrix |
http://www.eldorado.ru |
Bitrix |
http://www.euroset.ru |
Bitrix |
http://www.http://www.kupivip.ru/ |
J2EE |
http://www.http://www.otto.ru |
J2EE |
http://www.ikea.ru |
J2EE |
http://www.quelle.ru |
Perl |
http://www.digital.ru |
php |
http://www.utkonos.ru/ |
php |
http://www.komus.ru |
php |
http://www.biglion.ru |
php |
http://www.mvideo.ru |
php |
http://www.holodilnik.ru |
php |
http://www.pleer.ru |
php |
http://www.notik.ru |
php |
http://www.citilink.ru |
php |
http://www.uti-note.ru |
php |
http://www.tanuki.ru |
php |
http://www.lamoda.ru |
php |
http://www.ulmart.ru |
php |
http://www.dostavka.ru |
php |
http://www.groupon.ru |
Ruby |
http://habrahabr.ru/post/139752/ |
|
Таблица 1. Платформы магазинов
При этом заметим, что в функциональном плане возможности, предоставляемые платформой .NET, не уступают J2EE. Тем не менее, рассчитать стоимость лицензий серверов Microsoft оказалось не менее затруднительно, чем спрогнозировать бюджет проекта с разработкой всех внутренних бизнес-процессов на 1С.
По итогам обсуждения и после согласования с представителями инвесторов решено было приступить к разработке проекта на JAVA!
Но даже определившись с платформой, нам оставалось решить еще множество вопросов по выбору конкретных технологий внутри Java: Spring Framework или Enterprise JavaBeans? Для работы с базами данных выбрать jdbc или ORM? Если ORM, то: Hibernate, Jboss SEAM, Apache OpenJPA или еще какой-то из множества других?
Для front end выбор тоже был немаленький: JSF, JSP c JSTL, GWT, Vaadin, Apache Wicket и множество других... Как быть?
Решение этих сугубо технических вопросов заняло не меньше времени, чем стратегическое планирование. Но полностью приводить логику наших рассуждений в рамках этой статьи не имеет смысла, поэтому мы не будем вдаваться в подробности, а укажем лишь наш окончательный выбор.
Итак. Базовые технологии: Apache Tomcat, MySQL, Hibernate, Spring, JSF, RichFaces на проекте www.domosti.ru, модуле e-mail рассылки и на админке сайта. JBoss, PostgreSQL, Hibernate, EJB, JSF, RichFaces на проектах автоматизации внутренних бизнес-процессов, логистики и модуле статистики. Также используются Java RMI и Java Message Service для эффективного взаимодействия различных модулей системы.
Тут будет про рынок труда, про программеров, удаленный офис и негатив на фриланс
Здесь будет про логистику, бухгалтерию, атрибуты и прочее...
Отделы контента, колл-центр, служба доставки и пр.
Проведите конкурс среди участников CMS Magazine
Узнайте цены и сроки уже завтра. Это бесплатно и займет ≈5 минут.