Сегодня я постараюсь пройти по всем этапам проектирования и разработки нашей CRM.
Идея, функционал системы
Наша компания занимается продажами в сети интернет уже более 8-ми лет, все это время нам не хватало возможности видеть наш бизнес в целом, видеть всю картину целиком.
Поняв, что в бизнесе, как и в любой сфере деятельности, решающим критерием успеха является системный подход, мы задумались о поиске CRM-системы, позволяющей автоматизировать все и вся, дающей полную картину состояний и тенденций в развитии для нашего бизнеса, имеющей все самые передовые инструменты ведения продаж и проведения маркетинговых исследований, дающей инструменты по управлению сотрудниками и распределения между ними бизнес-задач, системы, позволяющей собирать максимум информации о наших клиентах, сегментировать клиентскую базу, составлять портрет идеального клиента, видеть всю историю действий клиента и многое-многое другое. И, естественно, данная система должна быть максимально простой и удобной в использовании.
После поиска панацеи, сравнения и взвешивания всех «за» и «против» в лидеры вышло всем известное западное решение salesforce.com, на российском рынке, к сожалению, найти проект, отвечающий поставленным требованиям не удалось…
Тогда мы решили направить все наши усилия на создание своей CRM, которая по функционалу не будет уступать западным решениям, при этом будет ориентирована на Российский рынок и будет работать со всеми платежными системами.
Архитектура
За основу была выбрана связка Apache + PHP + MySQL. Данная комбинация себя оправдала и судя по организации таких известных проектов, как Facebook и Вконтакте, вполне способна выдерживать огромные нагрузки.
В качестве среды разработки был выбран достаточно популярный Eclipse. Конечно выбор спорный, но нам он подошел. Из плюсов: совместная разработка, поддержка PHPUnit, phpDocumentor, а к тому же он бесплатный.
Далее встал вопрос о выборе фреймворка.
Просмотрев всевозможные тесты всех популярных фреймворков, мы сделали однозначный вывод – Yii. По скорости уступает лишь CodeIgniter, но сильно превосходит его по возможностям. К тому же в CodeIgniter нет ни нормальной ORM ни Unit тестов для фреймворка. Остальные варианты не рассматривались ввиду отсутствия большого русскоязычного сообщества, высокого порога вхождения и скорости работы других фреймфорков.
Естественно, т.к. мы взяли за основу Yii, мы заложили в систему мультиязычность и уже на данный момент все шаги оформления заказа на товары подключенных к нам интернет-магазинов можно выводить на русском, английском и украинском языках.
Структура
Витрину нашего продукта – сайт со всей информацией о нашей CRM, блог, контакты, справку и т.д., мы разместили на отдельном VPS со своей БД, а работает это все под управлением всем известной CMS Joomla. Тем самым мы отделили сам сервис от витрины, что очень важно в целях безопасности, никакой сбой в работе сайта с описанием не повлияет на работу сервиса.
К тому же такой подход позволил сэкономить много времени, а силы лучших программистов были брошены на написание ядра сервиса.
Из особенностей структуры сервиса можно назвать полную модульность системы. Это было очень важно, т.к. позволило нам независимо наращивать систему, не затрагивая при этом другие модули. Когда вы поэтапно подключаете десятки платежных систем, в API которых постоянно вносятся изменения, модульность действительно спасает.
Вот, как это выглядит:
есть ядро (фреймворк, база данных, модели, общие расширения, общие контроллеры компоненты) и есть масса почти не зависимых модулей использующих свои файлы переводов, свои контроллеры и представления (модули, если на то нет веской причины, для обращения к БД используют модели ядра).
А теперь о самой БД
Для начала работы с сервисом, владельцам интернет-магазинов нужно зарегистрировать свой магазин в системе, завести товары и подключить необходимые способы оплаты.
Следовательно, при продумывании структуры базы данных у нас встал выбор, сваливать все данные по всем магазинам в одну БД или под каждый магазин создавать отдельную базу данных и отдельного пользователя со своими правами.
В целях повышения безопасности и еще по ряду причин, было принято решение физически разделять данные двух различных магазинов, размещая их по разным БД.
Почему именно так:
- Данный подход позволяет в случае падения БД одного магазина беспрепятственно восстановить данные, не мешая работе других интернет-проектов.
- Мы практически полностью исключаем возможность появление чужой финансовой информации в аккаунтах других клиентов, из-за технической ошибки программиста.
- Не исключено, что по мере роста и развития сервиса ряду интернет-магазинов с большими оборотами понадобится решение вида «Stand-Alone».
Конечно, работа с тысячами БД несет в себе некое неудобство, сложность в написании программного кода и к сожалению Yii данную задачу не способен решить стандартными способами, поэтому пришлось немного подумать чтобы развернуть подобную систему, но все это мелочи по сравнению с выгодами которые дает данный подход.
Размещение
Где размещать наш CRM?! Имея достаточно большой опыт работы с отечественными хостинговыми компаниями, мы сразу начали искать на западе.
Попробовали много компаний, но постоянно из-за сложности системы и нежелания брать полноценный выделенный сервер на старте проекта со штатным сисадмином (решили вначале ограничиться VPS), постоянно натыкались на те, или иные ограничения или неудобства со стороны хостера.
Через несколько недель поиска, по рекомендации одного из коллег по цеху, мы добрались до FastVPS
Ребята перепродают хостинг одного из лидеров немецкого рынка Hetzner и, что самое приятное для меня, добавили к качеству Hetzner свою компетентную русскоговорящую службу технической поддержки.
Из приятных мелочей данной хостинговой компании, не самый плохой UpTime (по данным Яндекс.Метрики: 99,68%)
В общих чертах, я показал, как устроен наш сервис. На этом пока все.
Разумеется, если у вас появились вопросы или вы хотите более подробно узнать о реализации того или иного функционала, то пишите все в комментариях, постараюсь помочь и ответить.
А в будущем на Хабре мы планируем публиковать статьи о тех проблемах, с которыми столкнулись во время работы над проектом и о том, как мы организовали работу компании.
ссылка на оригинал статьи http://habrahabr.ru/company/arnion/blog/205540/
Добавить комментарий