Alovendo

17 месяцев назад в самый разгар кризиса ко мне обратился оставшийся без работы друг c просьбой помочь создать интернет-магазин. Я конечно-же сказал, что это все очень просто и посоветовал ему самый дешевый хостинг + osCommerce. Но оказалось, что человеку далекому от IT все вовсе не так просто и самые элементарные настройки интернет-магазина порой требуют погружения в код как минимум шаблонов.


Посмотрев имеющиеся альтернативы как со стороны open source проектов, так и со стороны онлайн сервисов я пришел к выводу, что смогу сделать свой собственный сервис по созданию интернет-магазинов, который будет лучше как минимум потому что он будет прост в использовании и позволит всем, кто хочет попробовать себя в интернет-торговле, получить собственный полнофункциональный магазин без лишних затрат.

Честно говоря я не предполагал тогда, что самая первая версия займет столько времени. Где-то через полгода после начала, я уже засомневался в том, что идея такая уж хорошая, однако было поздно. Было потрачено достаточно сил и времени, чтобы бросить проект на полпути.

Честно говоря я не предполагал тогда, что создать свой проект подобный тому что я задумал настолько сложно. Во-первых помимо непосредственно программирования необходимо было заниматься посторонними, но не менее важными делами: написанием текстов, дизайном, версткой, настройкой серверов и системным администрированием.

Зато я получил очень хороший опыт из которого помимо новых знаний вынес две общеизвестные, но интересные вещи:
1) Стартап нужно делать очень быстро, пока идея не приелась
2) Дьявол в деталях

О них о каждой можно отдельно написать, и, пожалуй, я напишу как-нибудь.

Забавно, но потратив примерно год на разработку, я все выкинул и переписал проект практически с нуля. Это был идейный кризис, я сделал слишком много никому не нужных функций, да и вся архитектура получилась достаточно корявой. Зато переписанный код теперь мне очень нравится - его легко поддерживать и расширять. Стоит еще сказать, что я начал разработку на языке, который на тот момент я не знал - на Haskell. Это было рискованно, но возможно именно благодаря этому я довел его до логического конца. Дело в том, что на хаскеле еще никто не разрабатывал таких онлайн сервисов и я чувствовал себя первопроходцем - действительно круто делать что-то, что никто до тебя не делал. Вообще - разработка на хаскеле - это сплошное удовольствие. Я напрочь утратил способность писать на чем-то вроде PHP. Попробовал тут недавно и ... не могу, потому что вместо того, чтобы творить, приходиться клепать циклы.

Вообще, если меня спросят, хорош ли хаскель для веб-разработки, я никому его не посоветую. Краткий ответ - он слишком хорош. Но это опять же отдельная большая тема.

Возвращаясь к сервису, я думаю, что эти полтора с небольшим года - это только начало и я буду писать и развивать его дальше. Получилось ли у меня сделать то, что я задумывал - думаю да, и я надеюсь, что он принесет пользу многим людям.

Ну и собственно вот он, герой дня - http://www.alovendo.com/ - велкам.

6 Комментарии:

  1. Так что ж, это значит новый Viaweb?! :-) Только на Хаскеле?

    Поздравляю с выпуском проекта.

    ОтветитьУдалить
  2. Спасибо :) Хорошо бы мне хоть часть успеха Viaweb получить, я вдохновлялся их историей :)

    ОтветитьУдалить
  3. Мне кажется, было бы очень многим интересно почитать серию хотя бы кратких постов о том, как и почему делал, что использовал.

    Мне, например, любопытно, использовал ли ты какой-нибудь Yesod/snap/happstack, или же писал сам с использованием более низкоуровневых библиотек. И как организовал persistence.

    Если пометишь какой-нибудь метокй, можно будет добавить тебя с ней в fprog.ru/planet (там отзывчивые люди) или в haskell planet (если по-английски, там, правда, до добавляющих e-mail-ы хуже доходят).

    P.S. Да, http://www.alovendo.com/about/how-to-create-online-store.html не переведена на английский.

    ОтветитьУдалить
  4. Не уверен, что меня хватит даже на одну полноценную статью ;) Писал все с нуля. В свое время посмотрел на разные фреймворки, что есть на хаскеле и ни один мне не понравился по разным причинам, сейчас уже даже не помню по каким конкретно. По-моему основная проблема была в том, что я хотел полного разделения HTML шаблонов и кода, а этого не было. Почему-то программисты на хаскеле хотят писать веб-страницы тоже на хаскеле, а это не удобно. Перекомпилировать программу, чтобы поменять какой-то текст на сайте согласись не очень продуктивно.

    В итоге, используя библиотеки, которые есть на hackage я написал свое подобие фреймворка и на нем уже fastcgi-приложения, обеспечивающие работу магазина. В этом фреймворке есть буфер соединений с БД, маршрутизация запросов по URL, контроль уровней доступа, библиотечка для обработки форм и БД маппер. В качестве шаблонизатора использую HStringTemplate. База данных - MongoDB. Серверных сессий не делал специально, чтобы в случае больших нагрузок можно было распараллеливать процессы и сервера.

    Вообще я понял, что лучше простые веб-приложения писать на чем-то другом. Хаскель слишком мощный раз, в нем приходится заново изобретать велосипед два. Где-то в сложных проектах - может быть. У меня есть идея написать поисковую машину на хаскеле. Вот там он реально пригодиться, чтобы извлекать данные из HTML например.

    Да, знаю, что страница не переведена, там несколько таких - просто нет пока сил на это :) Слишком много всего делать надо.

    ОтветитьУдалить
  5. Спасибо. Примерно это я и хотел узнать.

    ОтветитьУдалить
  6. "У меня есть идея написать поисковую машину на хаскеле."

    Имхо основа поисковика - БД/ФС в которую распихиваются все данные, но с наворотами: кешированием, востановлением, распределением нагрузки и тп. Можно ли это сделать на Хаскеле. И чтоб работало как часы.

    ОтветитьУдалить