2013-08-17 4 views
14

Хорошо, примерно год назад я написал веб-приложение, которое помогает организовать встречи для моей компании-папы. Теперь он «не мог заниматься бизнесом без него». Я решил, что хочу построить из него подписную модель SAAS и открыть ее для публики.Правильный подход к строительству SAAS в Laravel 4

В настоящее время он построен на codeigniter и php, который, как я считаю, не подходит для версии SAAS. Я планирую перестроить его с нуля в laravel 4 и использовать полосу в качестве платежного шлюза.

Моя забота о том, как лучше всего обращаться с базой данных/структурой приложения для более чем одного клиента. В настоящее время он просто служит одному бизнесу и очень не абстрактный и специфичен для потребностей компаний-папы. Мне нужно, чтобы он мог обрабатывать разные данные в зависимости от того, что делает бизнес, который его использует.

Я изучил многоквартирный дом, но я не уверен, что это правильно для этого. Я думаю, что подход стиля «gmail» будет лучше. Одно приложение/домен, который после входа в систему пользователь увидит свою настраиваемую панель мониторинга и только их данные.

Прежде чем я застрял в кодировании, мне нужно разобраться, как лучше всего обрабатывать несколько «учетных записей» в одной базе данных. Я не хочу создавать таблицу для каждого пользователя, а также базу данных для каждого пользователя.

Я думаю, мой вопрос в том, может ли кто-нибудь указать мне в правильном направлении, как лучше всего обрабатывать ежемесячную абонементную оплату в Laravel? Это не так много кода, что я stuggling с, а что именно мне нужно построить, чтобы справиться с зарядкой клиента каждый месяц, и лишая их доступа, если платежный не удалось и т.д.

Благодаря

ответ

37

У вас много чтения и тонны работы!

Прежде всего, давайте полностью проигнорируем биллинговый аспект этого на данный момент - в конце дня эта часть приложения действительно довольно тривиальна. Возьмите страницу из 37signals Rework (стр. 93 и 94) и запустите свой продукт с 30-дневной бесплатной пробной версией, прежде чем вы начнете ее реализовывать (вы должны знать, как ее реализовать к тому времени).

Во-вторых, почему вы считаете, что «gmail» не использует многопользовательскую лицензию, структура URI ничего не сообщает о базовой структуре базы данных. Я уверен, что они не клонируют схему базы данных для каждого из своих клиентов. Поэтому вы, вероятно, ответили на свой вопрос: вы хотите реализовать многоквартирный дом.

Вы захотите отвлечь свою базу данных (и архитектуру приложения), и, честно говоря, нет лучшего ресурса, который поможет вам на этом пути, чем книга Тейлора Отуэлла (создатель Ларавеля) Laravel: From Apprentice To Artisan. Его книга не для новичков, и к тому времени, когда вы закончите читать ее, вы, вероятно, сможете ответить на этот вопрос для себя.

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

Подумайте о проверке доступа к организации в качестве другого уровня аутентификации пользователей. По каждому запросу вы будете проверять, может ли этот пользователь получить доступ к определенной организации. Вероятно, вы также убедитесь, что организация все еще активна (срок ее действия истекал, потому что они не платили?), Это будет происходить по каждому запросу и, вероятно, с filter within laravel.

Это действительно приводит к следующему очень важному моменту разработки приложения SaaS.

Я не знаю о вас, но я параноик, и я не мог хорошо спать по ночам, если бы не был уверен, что номер пользователя 4506 не мог видеть данные организации, что он не знает, т принадлежат. Единственный действительно хороший способ убедиться в этом - это модульное тестирование, которое я бы очень хотел предложить, если вы еще этого не сделали.

Лучший способ сделать это в Laravel 4 - прочитать книгу Джеффри Пути Laravel Testing Decoded. Эта книга чрезвычайно продвинута, но все же легко понять, если у вас есть хорошее понимание основ.

Последнее, но не менее важное: первое, что связано с сообществом, - самый простой способ, который я предлагаю сделать на холостом ходу на #laravel IRC channel (freenode). Задайте несколько вопросов, возможно, ответьте на некоторые вопросы, все в канале очень приятные и отзывчивые.

Вы, безусловно, находитесь в приключении, не бойтесь задавать вопросы и делать ошибки. Удачи.

+2

Спасибо, какой блестящий ответ. Для меня этот проект так же касается разработки моих навыков разработчика, как и для создания продукта. Я рассматриваю это как повод использовать много вещей, которые у меня не было раньше, и немного игровой площадки. Ура! –

+0

Отличный отклик от развития. Я бы добавил, что наиболее важным элементом любого SaaS является структура данных. Это сделает или сломает Саас, если вы начнете интенсивно пользоваться и должны быстро масштабироваться. –

+1

@evolve У вас есть обновление по той же теме? Я просмотрел эти книги, но они устарели =/ – cbcaio

3

Как грубый обзор , У меня будет таблица клиентов и таблица подписчиков. Любые другие данные, которые требуют хранения, такие как контакты или встречи, могут быть связаны с использованием внешних ключей в таблице клиентов.

В laravel вы можете использовать ORM, чтобы получить в настоящее время зарегистрированного клиента, а затем через отношения, выбрать назначения и контакты, принадлежащие им.

Есть некоторые полезные инструменты для Laravel в cartalyst.com, в том числе и часового часового-социального для Идент.польза и интеграция учетных записей пользователей с facebook/Google/Twitter и т.д.

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

Также имейте в виду, что вы не можете немедленно отменить учетную запись при неудачной оплате.

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

Возможно, у вас также будет возможность проверить, когда они в последний раз вошли в систему. Если бы это было более месяца назад, вы можете кредитовать их бесплатным месяцем и напомнить им, сколько для них может сделать ваше приложение. Делая это, вы можете заставить людей продолжать использовать (и платить) за то, что они забыли, на которые они подписались.

 Смежные вопросы

  • Нет связанных вопросов^_^