![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 29.04.2019 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Szukam odpowiedzi na to pytanie jednak nie mogę znaleźć nic, co by mnie oświeciło. Chciałbym skierować to pytanie do osób doświadczonych, którzy pracowali już nad aplikacjami komercyjnymi i mieli w nich taki problem.
Otóż zastanawiam się na jakiej zasadzie działają aplikacje, które mają kilku klientów. Przykładowo: napisałem jakiś prosty system, który chciałbym sprzedawać dla wielu firm (czysto teoretycznie). Każda firma wykupuje podstawową wersję + wybiera sobie moduły. Jak to jest z tymi modułami? Czy dla każdego klienta tworzy się oddzielny VPS, stawia się od nowa aplikacje i ją dostosowywuje, wgrywa jakiś folder z modułem? W takim przypadku przy aktualizacji i zmianach na każdym VPS musiałbym aktualizować kod. Czy jest na to jakieś rozwiązanie? Jakaś technika, wzorzec projektowy? Drugie pytanie to baza danych, choć z tym trochę znalazłem na forach, jednak zdania tam są podzielone. Jedna dla wielu czy kilka? Jeśli jedna - działa to na zasadzie : każda tabela ma kolumnę z np. "idFirmy" i potem po tej kolumnie wszystko filtrujemy? Tyle że w takim wypadku np.: jeden klient będzie miał w tabeli 100 tyś/ milion rekordów * kilka/kilkanaście firm, czy to jest dobre rozwiązanie? Z drugiej strony każdy klient z jedną bazą danych, ale tu dochodzi do problemu edycji - zmiany w każdej bazie przy aktualizacjach. Przepraszam jeśli powtórzyłem temat, niestety nic nie znalazłem. Nie jestem także bardzo doświadczony, trochę koduje, ale brak mi porady ekspertów (IMG:style_emoticons/default/wink.gif) Dziękuję z góry za każdą pomoc (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Co do modułów to możesz je wszystkie mieć na serwerze i włączać je w konfiguracji dla danego klienta. Jeśli są to jakieś zewnętrzne moduły, które klient może wgrać, to uploadujesz je do folderów per klient - każdy ma swój.
Co do bazy - to zależy :-) Jeśli aplikacja jest mała, danych nie ma za dużo to możesz spokojnie to trzymać w jednej dodając wszędzie identyfikator klienta. Jeśli jest większa, więcej danych to osobna baza będzie lepszym rozwiązaniem. Kwestia aktualizacji jest moim zdaniem pomijalna - bo to obojętne czy skrypt uruchomisz dla jednej wielkiej bazy czy dla wielu mniejszych. Mniejsze nawet możesz podzielić czasowo, uruchomić w kilku procesach i finalnie wyjdzie nawet szybciej (no i aktualizacja u jednego klienta nie spowalnia pracy pozostałych). Co do podziału klient - nowy VPS to też ma sens. Ale jak wyżej - wszystko zależy od przypadku. Jeśli np w aplikacji masz różne plany, z różnymi parametrami wydajnościowymi, albo klient płaci za faktyczne zużycie to może się bardziej opłacać (czy tez być sprawiedliwiej) rozdzielać klientów na osobne maszyny. Wtedy działania jednego klienta nie wpływają w ogóle na innych. Wszystkie działania administracyjne mogą być odseparowane, jeden klient nie nadużyje zasobów przydzielonych dla innego klienta. Jedynie tutaj proponowałbym pójść w stronę kontenerów niż osobnych VPSów - będzie wygodniej i raczej taniej. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 20:45 |