2013-08-17 15 views
14

Ok, więc około rok temu napisałem aplikację internetową, która pomaga organizować spotkania dla mojej firmy tatusiów. Teraz "nie mógł bez niego robić interesów". Zdecydowałem, że chcę zbudować z niego model subskrypcji SAAS i udostępnić go publicznie.Właściwe podejście do budowy SAAS w Laravel 4

Obecnie jest zbudowany na codeigniter i php, który moim zdaniem nie pasuje do wersji SAAS. Mam zamiar przebudować go od zera w laravel 4 i używać paska jako bramy płatności.

Moją obawą jest to, jak najlepiej obsługiwać bazę danych/strukturę aplikacji dla więcej niż jednego klienta. Obecnie służy tylko jednej firmie i jest bardzo nie abstrakcyjna i jest specyficzna dla potrzeb moich ojców firm. Potrzebuję go, aby móc obsługiwać różne dane w zależności od tego, co robi firma, która go używa.

Szukałem wielu osób, ale nie jestem pewien, czy to jest właściwe. Myślę, że podejście typu "gmail" byłoby lepsze. Jedna aplikacja/domena, która po zalogowaniu użytkownik zobaczy spersonalizowany pulpit i tylko jego dane.

Zanim utknę w kodowaniu, muszę się dowiedzieć, jak najlepiej obsługiwać wiele kont w jednej bazie danych. Nie chcę tworzyć tabeli dla każdego użytkownika ani bazy danych dla każdego użytkownika.

Domyślam się, że moje pytanie brzmi: czy ktokolwiek może wskazać mi właściwy kierunek, w jaki sposób najlepiej radzić sobie z abonamentem miesięcznym w Laravel? To nie jest tak dużo, że kod mam stuggling z, a co dokładnie będę potrzebował zbudować do obsługi ładowania klientowi każdy miesiąc i odmawianie im dostępu czy billing powiodła itp

Dzięki

Odpowiedz

37

Jesteś za dużo czytania i mnóstwo pracy!

Po pierwsze, zignorujmy na razie aspekt fakturowania - pod koniec dnia ta część aplikacji jest naprawdę banalna. Zrób stronę z 37signals Rework (strona 93 i 94) i uruchom swój produkt z 30-dniowym bezpłatnym okresem próbnym, zanim zaczniesz go wdrażać (powinieneś wiedzieć, jak go wdrożyć).

Po drugie, dlaczego uważasz, że "gmail" nie używa multi-tenancy, struktura URI nie mówi nic o podstawowej strukturze bazy danych. Jestem przekonany, że nie klonują schematu bazy danych dla każdego z ich klientów. Dlatego prawdopodobnie odpowiedziałeś na własne pytanie - chcesz wdrożyć multi-najemcę.

Będziesz chcą streszczenie bazy danych (i architektury aplikacji) i szczerze nie ma lepszego zasobów, które pomogą Ci na drodze do robiącego że niż Taylor Otwell'S (twórca laravel) książki Laravel: From Apprentice To Artisan. Jego książka nie jest dla początkujących, a do czasu, gdy skończysz ją czytać, prawdopodobnie będziesz w stanie odpowiedzieć na to pytanie dla siebie.

Nie będziesz tworzyć tabeli ani bazy danych dla każdego użytkownika, nie będziesz nawet tworzyć dla każdej organizacji. Zamiast tego będziesz tworzyć abstrakcyjną strukturę bazy danych w kodzie, co spowoduje wyciągnięcie danych użytkowników z bazy danych.

Zastanów się, czy nie masz uprawnień dostępu do organizacji jako kolejnej warstwy uwierzytelniania użytkownika. Na każde żądanie będziesz sprawdzać, czy dany użytkownik może uzyskać dostęp do konkretnej organizacji. Najprawdopodobniej sprawdzisz także, czy organizacja jest nadal aktywna (czy wygasła, ponieważ nie zapłaciła?). To się powtórzy na każde żądanie i prawdopodobnie z numerem filter within laravel.

To naprawdę prowadzi do następnego bardzo ważnego czynnika rozwoju aplikacji SaaS.

Nie wiem jak wy, ale jestem paranoikiem i nie mogłem spać spokojnie w nocy, gdybym nie był pewien, czy numer użytkownika 4506 nie może zobaczyć danych organizacji, której nie robi. t należą do. Jedynym naprawdę dobrym sposobem, aby to zapewnić, jest testowanie jednostkowe, co bardzo bym zasugerował, jeśli jeszcze tego nie zrobiłeś.

Najlepszym sposobem na zrobienie tego w Laravel 4 jest przeczytanie książki Jeffrey Way'a Laravel Testing Decoded. Ta książka jest bardzo zaawansowana, ale wciąż łatwa do zrozumienia, jeśli dobrze zrozumiesz podstawy.

Wreszcie, najważniejszą rzeczą jest zaangażowanie się w życie społeczności - najprostszym sposobem, który bym zasugerował, aby to zrobić jest nieaktywne na #laravel IRC channel (freenode). Zadaj kilka pytań, może odpowiedz na kilka pytań, wszyscy na kanale są bardzo mili i reagujący.

Jesteś zdecydowanie na przygodę, nie bój się zadawać pytań i popełniać błędy. Powodzenia.

+2

Dzięki, jaka wspaniała odpowiedź. Dla mnie ten projekt to zarówno rozwijanie moich umiejętności jako programisty, jak i budowanie produktu. Widzę w tym pretekst do korzystania z wielu rzeczy, których wcześniej nie miałem i trochę zabaw. Twoje zdrowie! –

+0

Doskonała odpowiedź od evolve. Dodam, że najważniejszym elementem każdej SaaS jest struktura danych. To spowoduje lub złamie Saas, jeśli zaczniesz się bardzo intensywnie wykorzystywać i trzeba szybko się skalować. –

+1

@evolve czy masz jakieś aktualizacje na ten sam temat? Zajrzałem do tych książek, ale są one nieaktualne =/ – cbcaio

3

Jako ogólny przegląd , Miałbym tabelę klientów i tabelę subskrypcji. Wszelkie inne dane, które wymagają przechowywania, takie jak kontakty lub spotkania, można powiązać za pomocą kluczy obcych z tabelą klienta.

W laravel można użyć ORM, aby uzyskać aktualnie zalogowanego klienta, a następnie poprzez relację, pobrać spotkania i kontakty należące do nich.

Istnieje kilka przydatnych narzędzi do laravel w cartalyst.com, w tym posterunku i Sentry społecznej uwierzytelniania użytkownika oraz integrację kont użytkowników z facebook/Google/Twitter itp

Stripe umożliwi skonfigurowanie powracającym płatności i powiadomi Cię za pomocą haczyków internetowych za każdym razem, gdy nastąpi próba płatności. możesz je zalogować w tabeli płatności i powiązać je z użytkownikiem/klientem. możesz go użyć, aby śledzić, kto zapłacił i jak ostatnio.

Pamiętaj też, że możesz nie chcieć anulować konta natychmiast po nieudanej płatności.

Paski zostaną ponownie pobrane i być może Twoja najlepsza odpowiedź nastąpi po spóźnieniu dwóch lub trzech dni lub otrzymasz powiadomienie o nieważnej karcie, aby skontaktować się z klientem i poprosić o zaktualizowanie szczegółów płatności.

Może to być również okazja do sprawdzenia, kiedy ostatnio się logował. Jeśli minął ponad miesiąc, możesz przyznać im bezpłatny miesiąc i przypomnieć im, ile aplikacja może dla nich zrobić. W ten sposób możesz skłonić ludzi do dalszego używania (i płacenia) za coś, o czym zapomnieli, że zasubskrybowali.