Как я создал собственный SAAS-сервис и что из этого получилось. Profishop теперь Open Source
Внедрение КИС
Сегодня я хочу рассказать вам о моей собственной разработке – о сервисе Profishop. Это решение было для меня важным этапом в собственном развитии, принесло мне много новых знаний, позволило получить новых клиентов, но в результате я решил открыть его код и поделиться этими наработками со всеми желающими.
И, конечно, хочется подвести некий итог, поделиться плюсами и минусами проделанной работы, ошибками, на которых стоит научиться, и достижениями, которыми можем гордиться мы, создатели проекта http://profishop.us/
Я буду абсолютно честен в этом «разборе» плюсов и минусов, чтобы не упустить что-то важное для себя, и помочь избежать тех или иных ошибок в будущем тем, кто также планирует развивать и продвигать собственный продукт с нуля.
И еще хочу сразу отметить важный момент. Для меня этот продукт был «пробой пера» в разработке и продвижения подобного проекта. Конечно, хотелось получать от него прибыль, а кто не хочет?
Но основная моя цель была – научиться работать с SAAS-сервисами, изучить их особенности, получить практические навыки в разработке и продвижении программных продуктов и сервисов, а также собрать команду разработчиков для проектов моих клиентов. И это мне удалось. Что, несмотря на все ошибки, которые мы допустили при работе над Profishop, я считаю огромным плюсом.
Идея Profishop: с чего все начиналось?
Моя основная деятельность – это бизнес-консультирование малого и среднего бизнеса. Об этом я упоминал уже не единожды, но все же, повторюсь, так как именно моя работа и подсказала мне идею проекта Profishop.
Очень часто у моих клиентов возникали вопросы:
- Как организовать процесс продаж?
- Как автоматизировать продажи?
- Как вести учет заявок?
- Как избавиться от ошибок менеджеров и того самого, пресловутого вопроса «человеческого фактора».
А с развитием интернет-технологий к этим вопросам еще добавилась проблема автоматизации заявок от оптовых покупателей. Лично я пришел к тому, что такая проблема существует, и что для нее нет универсального удобного решения, примерно 5 лет назад.
Дело в том, что получившие распространение интернет-магазины уже на тот момент были очень удобным решением для повышения эффективности и объемов продаж, но – только для розницы.
Оптовому покупателю в большинстве случаев не требуется ни красочная картинка, ни подробное описание товара, ни отзывы покупателей, ни многие другие функции. Оптовый покупатель, скорей всего, уже покупал товары, которые он хотел бы заказать, он с ними прекрасно знаком и сам. И даже если он решил купить ту или иную позицию впервые, с особенностями товара этот покупатель также уже ознакомился заранее, как и любой человек, который совершает закупки для бизнеса.
А потому при формировании оптовой заявки клиенту важны две вещи:
- Наличие
- Цена
При этом цены для оптовых покупателей всегда отличаются от розницы. Более того, они могут отличаться даже для разных покупателей, т.к. некоторые клиенты компании имеют дополнительные скидки.
А потому вопрос удобного решения для работы с заявками покупателями в секторе B2B стоял достаточно остро. И тогда появилась идея сделать такой полезный инструмент своими силами.
Первые шаги – первые ошибки
Вначале я пытался каким-то образом реализовать обмен данными и форму заказа на базе 1С. Тогда это была еще версия 8.1. Оказалось, что идея не выдерживает никакой критики, очень сложна в реализации и требует исключительно индивидуального подхода к каждой компании и доработок при каждом обновлении 1С.
Тогда появилась мысль о создании некого web-сервиса, который соответствовал бы требованиям и пожеланиям моих клиентов. Хотелось создать универсальное решение. Но вкладывать свои средства в проект на тот момент я был не готов. А потому начал поиск заказчика под эту идею.
В то время я еще наивно полагал, что реализация, выполненная для одного конкретного заказчика, станет полноценным универсальным решением.
Первый релиз был очень простым. Он состоял из html-оболочки и базы данных. Никакого сервиса в нем не было предусмотрено. Люди просто подключались и выгружали свои заявки в базу данных через html-формы.
Но оказалось, что все не так просто, как хотелось бы. В результате, базу данных пришлось переделывать, т.е. практически писать заново платформу при каждом обновлении учетной системы. После чего синхронизацию также приходилось проводить с нуля. Были выявлены и другие недочеты.
Но к тому моменту первый заказчик уже оплатил работу и активно использовал нашу разработку. Для его целей ее было более чем достаточно. А потому новую версию я решил предложить другому заказчику.
Первые проблемы и первые затраты
Второй заказчик, который заинтересовался этим продуктом, выдвинул к нему целый перечень требований, которые пришлось внедрять уже за свой счет.
Дело в том, что если первая разработка проводилась под заказ, то второму клиенту я продавал, как я в то время полагал, уже готовое решение. Но оказалось, что все не так просто.
Во-первых, пришлось практически полностью изменить дизайн, так как первый вариант заказчик использовать не мог по объективным причинам. Что ж, собрались с силами и переделали, учли недочеты и создали более продуманное решение.
Далее, оказалось, что многие клиенты моего заказчика ходят в интернет с мобильных устройств и через Ipad. Изначально заказчик был уверен, что его клиенты точно не будут делать заказы с мобильных устройств, а потом к ним посыпались претензии от собственных покупателей, связанные как раз с отсутствием возможности делать заявку со смартфона или iPad. В итоге, пришлось исправлять этот недочет в сжатые сроки.
Обратите внимание! Очень часто сами представители бизнеса B2B недооценивают техническую грамотность и, скажем так, продвинутость своих клиентов. Особенно это заметно в регионах.
Пришлось делать мобильную версию и специальную отдельную версию для устройств Apple. Количество расходов росло, как снежный ком. Пришлось разрабатывать ПО, создавать дизайн, верстку, тестировать. Мы сделали и это.
Наша система стала приобретать довольно привлекательные черты. Но на этом проблемы не окончились. Следующей задачей стала автоматизация.
Дело в том, что производить каждое подключение нового пользователя при помощи электронного письма оказалось неудобно. Людям хотелось протестировать систему. Кроме того, количество заинтересованных заказчиков у нашей системы увеличивалось. И мы уже просто не успевали вовремя рассылать письма. А потому вопрос автоматизации встал очень остро. Эту проблему мы решили путем написания скрипта, который по данным, указанным пользователем, по шаблону создает сайт, домен, базу данных, и высылает доступ пользователю.
Далее мы пришли к тому, что нужно создавать полноценный вариант API для интеграции и обмена данными с 1С. После этого продукт стал рабочим, универсальным, хоть и потребовал значительных финансовых вложений.
Итак, теперь Profishop имел:
- Удобный универсальный дизайн;
- Мобильную версию под разные типы устройств;
- Автоматическое подключение новых пользователей;
- Интеграцию с учетными системами.
Презентация на Хабре и новые сложности
Итак, система работает, пришло время ее презентовать и рекламировать. Я купил аккаунт компании на Хабрхабр, создал и разместил рекламную статью. Результат рекламы оказался для нас несколько неожиданным.
Часть читателей, если они были владельцами бизнеса, подписывались на интеграцию. С ними было просто и удобно. А другие, люди, далекие от Хабра и IT-сообщества, не понимали, что делать с нашей разработкой и как к ней подключиться.
Оказалось, что люди не понимают, куда надо зайти и что сделать, чтобы система смогла работать с их клиентами. Оказалось, что пользователи уже давно привыкли, что любой продукт прост и понятен интуитивно, а любые вопросы интеграции максимально автоматизированы и решаются нажатием нескольких кнопок.
Вот такой печальный парадокс пользовательского восприятия мы выявили на этом этапе:
С одной стороны, пользователи стремятся получить наиболее точное решение, которое будет учитывать все нюансы работы их бизнеса, с другой – не готовы для достижения этой цели прилагать даже минимальные усилия.
В нашем случае некоторые вещи оказалось невозможным полностью автоматизировать. И это были как раз настройки работы системы с конкретной системой учета. Например, при интеграции с 1С, очень важно правильно указать, где хранятся цены, в каком виде и где находятся контрагенты, какие поля в их карточках используются, как они связаны с категориями цен и т.д. А потому для полноценной интеграции с разными версиями 1С или Мой Склад (под этот компонент адаптацию попросил один из наших клиентов, и оказалось, что такая интеграция также востребована) обязательно потребуется помощь программиста.
Какие я сделал выводы из первых этапов работы:
- Система должна быть универсальной. Нельзя делать продукт под одного клиента и надеяться, что он подойдет и другим. Это крайне маловероятно.
- Система должна быть максимально проста и максимально автоматизирована. Все, что возможно, продукт должен делать автоматически.
- Если продукт сложен в настройке и интеграции, очень важна максимальная информационная поддержка. Вот с этим этапом у меня возникли определенные сложности из-за недостаточного количества времени, которое я готов был уделять системе.
А потому при всех достоинствах нашего решения заметная часть пользователей отказывалась от покупки доступа к системе просто потому, что не понимали, каким образом провести интеграцию.
Развитие проекта. Что было дальше?
Несмотря на все сложности, проект начал развиваться, и, как это и бывает с любым программным продуктом, в процессе использования были выявлены новые недочеты и недоработки. В нашем случае остро встал вопрос масштабируемости.
Дело в том, что мы разрешили загрузку фото к товарам, но не продумали вероятность того, что число фотографий может быть большим, а сами фото – неоптимизированными. И, естественно, нашелся клиент, который загрузил к нам на сервер значительное количество фотографий большого размера.
Пришлось срочно вносить правки и дорабатывать сервис. Теперь загрузка фото стала частью платного аккаунта. Изменения в системе были бы не столь критичными, но пришлось вносить правки также во все ранее созданные аккаунты, что оказалось трудоемким процессом.
Вывод: заранее планируйте возможную нагрузку на ваш проект, даже в том случае, если вы планируете небольшое количество посетителей. Потому что это – «узкое место» любого проекта.
В нашем случае при относительно небольшом количестве пользователей один из них настолько загрузил сервер, что мы его стараниями рисковали превратиться в фотохостинг.
Сопровождение: важная работа и возможная проблема
По своему опыту я хотел бы сказать, что если проект, который вы развиваете, не является вашим основным делом, если вы не сможете заниматься им постоянно, будете уделять ему время от случая к случаю, то он попросту «не взлетит».
Для того, чтобы проект получил достойное развитие и начал приносить вам прибыль, ему требуется постоянное сопровождение и постоянная информационная поддержка. Вашим клиентам потребуются своевременные ответы на вопросы, решение возможных проблем и все новые и новые возможности.
Например, у меня одна из клиенток использует все, что может предложить наш продукт по максимуму, постоянно просит внедрить ту или иную возможность, а также регулярно задает те или иные вопросы. Все это требует значительных затрат времени.
А потому важно понимать:
Если у вас не будет хватать времени на работу с вашим проектом, он не принесет вам достаточно прибыли.
К сожалению, я проверил этот тезис на собственном опыте. Потратил личные средства на разработку, на оплату труда программистов, дизайнеров, на создание логотипа, сайта, на хостинг, на рекламу и т.д. После таких вложений первые клиенты становятся действительно «золотыми».
А дальше нужно постоянно заниматься проектом, чтобы клиенты были довольны, и чтобы их становилось все больше и больше. А я уделял своей системе внимание в свободное от основной работы время, и вкладывал в него только свободные средства по мере возможности. Оказалось, что этого недостаточно.
В принципе, если вы заинтересовались той или иной нишей, считаете ее интересной, востребованной и прибыльной, у вас могут быть только две причины, чтобы заняться работой в этой сфере:
- Получение прибыли
- Получение новых знаний и навыков
И если ваша основная цель – это прибыль, то уделяйте продукту достаточно времени: чем больше, тем лучше.
Опыт и знания: что мне дал этот продукт
В процессе работы над этим проектом я получил очень большой багаж знаний и опыта, который впоследствии мне очень пригодился при работе с проектами моих клиентов.
Лично я узнал:
- Как выбирать хостинг, чем разные виды хостинга отличаются друг от друга, что такое выделенные и невыделенные сервера, чем они отличаются друг от друга, какие параметры важны для тех или иных проектов.
- Я узнал, что такое ping и framework. Чем один фреймворк отличается от другого.
- Какие бывают API, чем они отличаются друг от друга, и почему тот или иной вариант лучше для определенных целей.
- Почему прямое подключение к базе данных намного хуже, чем использование API.
- Получил я и много других навыков, которые очень помогли мне в работе.
Мой уровень технических знаний вы можете оценить по моим публикациям. И значительную часть этих знаний я получил в процессе работы над этим проектом.
У меня не было ни технического директора, ни вообще каких-то консультантов или других помощников. Был лично я с моими идеями, были программисты, дизайнеры, верстальщики, а также мои клиенты. А потому вникать пришлось во все нюансы и лично изучать все вопросы.
Моя команда – вот одно из главных достижений!
Я уже упоминал в самом начале, что на этом проекте я постарался собрать команду разработчиков, которые смогли бы работать с различными проектами моих клиентов. В процессе работы мне регулярно требуются услуги самых разных технических специалистов. Это могут быть 1С-программисты, верстальщики, дизайнеры, web-разработчики, специалисты по работе с мобильными приложениями и т.д.
Работа над проектом Profishop позволила мне получить команду разработчиков, состоящую из высококлассных специалистов разного профиля. Они уже имеют значительный опыт совместной работы, знакомы с моими требованиями и с навыками друг друга. В общем, теперь это не просто специалисты, которых я могу привлекать к тому или иному проекту по мере необходимости, а настоящая сработавшаяся команда, что очень ценно и очень важно для успешной реализации проектов моих клиентов.
И еще один важный момент: к бесплатному привыкают быстро
В процессе работы над этим проектом у меня произошло недоразумение, о котором я хотел бы рассказать отдельно.
Клиенты, которые помогали мне в бета-тестировании, получили на время теста бесплатный доступ ко всем функциям.
Это было удобно и мне, и клиентам. Но любое тестирование оканчивается, и посте бета-версии вышла обновленная, с исправленными ошибками, как это обычно и происходит.
И тогда я предложил своим бывшим бесплатным тестировщикам на выбор либо пользоваться устаревшей версией бесплатно на собственном хостинге, либо оплатить доступ к доработанному варианту. И тут я натолкнулся на недоумение и даже обиду.
Как же так? Мы думали, что бесплатно будет всегда!
В принципе, я был бы и не против, если бы это была простенькая система на обычном копеечном хостинге. Но здесь были задействованы выделенные сервера, требовалось постоянное сопровождение продукта, техническая поддержка.
Но я сделал ошибку: не оговорил вопрос доступа после тестового периода заранее. Посчитал, что это и так очевидно.
Оказалось – нет. Люди быстро привыкают к бесплатному, они не хотят платить, если есть хотя бы малейший шанс получить что-то бесплатно. Конечно, далеко не все такие, но – нужно учитывать наш менталитет и обилие пользователей, которые ищут бесплатные варианты везде.
А потому, советую и вам: обязательно четко оговаривать все нюансы с клиентами-тестировщиками заранее, если вы не хотите потом потерять клиентов из-за таких вот недоразумений.
Стартапы и венчурные инвестиции: почему я их не применял?
Возможно, этот вопрос уже мысленно задает себе часть читателей. Задумывался об этих инструментах и я.
Когда я понял, что проект развивается очень слабо и не приносит достаточной прибыли, я пробовал интересоваться возможностями привлечь инвестиции в стартап, даже посетил некоторое количество семинаров, послушал, пообщался и пришел к не самым утешительным выводам.
Возможно, что мне просто не повезло. Я не исключаю и такого варианта. Но мой личный опыт показал, что бизнес-ангелы бывают двух типов:
Начинающие стартаперы из числа «золотой молодежи». Это обычно молодые ребята 24-25 лет, которые окончили университет, после чего решили создать какой-то стартап. Чаще всего, у них есть обеспеченные родственники и знакомые, которые готовы помочь им финансово в любой момент времени. И на семинарах они преимущественно пытаются рекламировать свои начинания.
Например, запомнился мне один молодой человек, который не создал еще ни одного успешного стартапа, но рассказывал о том, что у него появилась идея, под которую кто-то ему уже выделил крупную сумму. И чему он меня мог научить? Опыта успешной реализации проектов у него нет. Даже его первый проект и тот находится на начальной стадии. Его выступление, возможно, поможет в продвижении проекта, но ничему не научит меня и других людей.
- Спикеры, которые вообще не являются бизнес-ангелами и специалистами в бизнес-вопросах. Эти люди просто рассказывают, чем они были, чем являются сегодня, а также, откуда у них появились такие деньги.
Например, я посетил семинар, организованный Правительством Москвы под названием «Бизнес-инкубатор». Тема была – венчурные инвестиции. Одним из спикеров была женщина, которая рассказывала о том, какой у нее был (почему-то именно был, в прошедшем времени) хороший бизнес, как у них были миллионы долларов. А потом она сообщила, что считает своим главным достижением не успехи в сфере бизнеса, а то, что у нее прекрасная семья и двое детей. Какое это все имело отношение к венчурным инвестициям, я так и не понял.
Я также пробовал читать информацию в интернет об венчурных инвестициях, пробовал подавать заявку. Мой вывод – эта сфера в нашей стране практически не живая.
Почему так происходит? Я бы и сам с интересом почитал. Может, кто-то расскажет об этом в комментариях? Буду благодарен.
Мой вывод такой: если у вас есть собственные средства и время на развитие вашего проекта, рассчитывайте, прежде всего, на свои силы.
Направление бизнес-стартапов в нашей стране пока что не получило значительного развития, и в ближайшем будущем вряд ли получит. Потому что если раньше, когда рынок был насыщен деньгами, вкладывали не слишком охотно, то сейчас, когда на рынке явно наблюдается дефицит финансов, люди не захотят вкладывать деньги в стартапы.
Что получилось в итоге?
Сегодня мой проект имеет несколько сотен зарегистрированных в базе данных пользователей. Некоторое количество из них пользуется сервисом, по моим подсчетам, примерно 15%.
И сейчас я решил полностью открыть код, так как у меня просто не хватает времени на этот проект.
С одной стороны, заниматься им всерьез, так, как дело того требует, у меня нет возможности, я просто не могу позволить себе уделять проекту достаточно времени. С другой стороны, не хочется быть «собакой на сене», да и направление это, как мне кажется, очень перспективное. А потому я решил поделиться тем, что мы сумели сделать, с сообществом.
Что представляет собой Profishop?
На сегодняшний день сервис выглядит следующим образом:
- Продвинутая форма заказа для оптовых покупателей. Удобная, продуманная, гибкая.
- Возможность интеграции с 1С и Мой Склад. Правда, здесь потребуется небольшая работа со стороны собственного специалиста компании-клиента.
- Отправка заказа на электронную почту продавцу и покупателю (кроме передачи данных в систему учета данных).
- Возможность распечатать заказ сразу после его создания.
- Возможность создавать заказы от имени покупателей под аккаунтом менеджера.
А теперь обо всем немного подробнее.
Итак, дистрибьютор, который поставляет заказы в регион, становится клиентом SAAS-системы Profishop. После интеграции с 1С или Мой склад данные о перечне товаров, остатки, цены, список контрагентов (покупателей) и некоторые другие параметры переходят в Profishop.
Каждый покупатель, которому дистрибьютор готов дать доступ к системе, получает от него собственный пароль. И уже с логином и паролем входит в систему и делает заказ. При этом он видит актуальные остатки и цены, по которым дистрибьютор готов продать товар этому покупателю. Клиент также имеет личный кабинет, где видит свои данные, баланс (при необходимости), историю заказов.
Готовый заказ покупатель может при желании распечатать прямо из Profishop. Кроме того, он получит копию своего заказа на почту, как и дистрибьютор. Также все данные заказы будут переданы автоматически в систему учета, с которой интегрирован Profishop.
Также предусмотрена возможность создавать аккаунты менеджеров (продавцов) дистрибьютора, которые могут зайти в систему под своим логином и создать заказ от имени того или иного покупателя, закрепленного за этим менеджером. Так можно провести через Profishop заказ, который менеджер получает по телефону или при личной встрече.
Из чего состоит сервис?
Ядро системы написано на CodeIgniter. Почему я выбрал именно этот фреймворк? Он показался мне наиболее простым, понятным и самым технологичным. Мне очень понравилась его структура. В нем очень просто подключать разные элементы и надстройки. Это настолько понятно и удобно, что даже я, не имея соответствующего образования, очень быстро во всем разобрался.
Profishop имеет 3 версии:
- Обычная web-версия для настольных компьютеров и лэптопов.
- Мобильная версия (для смартфонов)
- Отдельная версия для Ipad.
Дополнительно реализована возможность создания пользовательского API, чтобы покупатель мог формировать заказ и передавать его, подключившись через собственный API. Это позволяет работать с интернет-магазинами, которые продают товар через оформление заказа поставщику и во многих других случаях.
Почему я открываю код? Что я хочу получить?
Я действительно не ставлю перед собой никаких маркетинговых целей. Если вас заинтересовал мой проект, вы можете скачать открытый код на GitHub, где я его разместил в свободном доступе. И вы можете самостоятельно доработать то, что вам необходимо.
Возможно, вы захотите присоединиться к команде разработки — пожалуйста! Я буду только рад, если вместе мы сможем сделать этот проект еще лучше. Он будет полностью открытый и полностью бесплатный.
А посмотреть, как работает система, и протестировать ее с точки зрения пользователя вы всегда можете на сайте http://profishop.us/.
Почему я не открыл код раньше?
Честно говоря, для меня это было непростое решение. Ведь в проект было вложено много сил и денег. По моим расчетам только разработка потребовала около 300 тыс. рублей. Да и оплата выделенных серверов обходится совсем недешево. Мне она стоила 2,5 тыс. руб. в месяц, в итоге, за время жизни проекта (менее 3 лет) только на хостинг потрачено почти 100 тыс. руб.
А количество времени, которое я вложил в эту систему, не измерить никакими деньгами. Только на разработку ушло около года, из которых 6 месяцев велась интенсивная работа. А в свободном плавании этот проект уже около 2 лет.
Окончательно принять решение мне помогли письма от пользователей, которые уже в N-ный раз задавали мне вопросы о доработках этой системы, которые я в силу нехватки времени, решить не смогу.
P.S. Благодарю всех тех, кто участвовал в создании Profishop. Мы прошли интересный и долгий путь!
Ссылка на Github репозитарий github.com/forramil/profishop
С уважением, Рамиль Кинзябулатов.