Rozwiązanie dla aplikacji saas

0

Dzień dobry,
Mam aplikację autorską systemy rezerwacji pisaną w czystym php bez frameworka.
Odsprzedaję ją klientom, którzy chcą jej użyć na swojej stronie internetowej .I jak mam klienta to za każdym razem tworzę nowe konto na moim VPS i kopiuję wszystkie pliki, tworzę bazę danych itp.Jest to dość męczące i problematyczne w aktualizacji tych aplikacji typu poprawki, nowe funkcje itp.
Więc wpadłem na pomysł, żeby to małym nakładem pracy przerobić i teraz widzę takie rozwiązania coś jak saas:

1.Rozwiązanie
Zrobić coś na zasadzie, że każde nowo stworzone konto od razu pobiera dane np z /home/systemrezerwacji/, potem robie w plikach config, że system rozpoznaję, z jakiej domeny pochodzi wejście i w pliku config przydziela mu dostęp do bazy oraz katalogu do dodawania swoich plików, zdjęć itp. I nawet wiem jak to zrobić ale administrator VPS mi tego odradził bo powiedział że np jak jeden system rezerwacji zostanie złośliwie zaatakowany to haker będzie miał dostęp do tych plików i jak namiesza to wszystkie systemy rezerwacji ucierpią bo korzystają z tych samych plików źródłowych.I chyba ma rację.

2.Rozwiązanie
Otwieram nowe konto na VPS automatycznie do nowego konta kopiują się pliki ze wskazanego katalogu np /home/systemrezerwacji/ itp i tworzy się baza danych.Z tym wyjątkiem że funkcje lub całe pliki pobiera przez api curl z głównego katalogu czyli np /home/systemrezerwacji/. Będzie łatwiej aktualizować błędy itp.I tu pytanie :

  • czy idzie poprzez curl zrobić tak żeby pobierał do używania cały plik php
  • czy ta metoda jest bezpieczna czy np w razie ataku haker będzie miał dostęp do pliku który się pobiera za pomocą curl z /home/systemrezerwacji/ i będzie mógł ingerować w ten plik? chodzi o to czy będzie miał dostęp do tego pliku w katalogu głównym /home/systemrezerwacji/

3.Rozwiązanie (rozważałem to rozwiązanie ze względu na bezpieczeństwo i niezależność systemów rezerwacji)
Otwieram nowe konto na VPS automatycznie do nowego konta kopiują się pliki ze wskazanego katalogu np /home/systemrezerwacji/ itp i tworzy się baza danych.Ale do aktualizacji plików np poprawki błedów oraz dodawania nowych funkcjonalności używam curlfile czyli wysyłam pliki z głównego serwera a na systemach rezerwacji jest odbiór uploadowanych plików w ten sposób systemy rezerwacji będą zawsze aktualne itp.

Proszę o sugestie jak to powinno wyglądać, które z tych rozwiązań ma najlepsze zastosowanie? Z góry napiszę że przerabianie tego lub pisanie od nowa np w laravel nie wchodzi w gre.

0

Nie możesz wykorzystać Dockera czy innych kontenerów?

0
Patryk27 napisał(a):

Nie możesz wykorzystać Dockera czy innych kontenerów?

Nie mam możliwości tylko jedno z tych 3 rozwiązań lub coś podobnego

0

No to powiem Ci, że każde z Twoich trzech zaproponowanych rozwiązań jest do bani, będzie tragicznie się skalowało i przypomina raczej amatorskie próby podejścia do multi-tenancy sprzed kilkunastu lat - ale jeśli chcesz w to brnąć, to trzecie podejście zdaje się najbezpieczniejsze, o ile tylko poustawiasz odpowiednie chmody itd.

Profesjonalniej można by podejść do tego z wykorzystaniem LXD, tworząc nowy kontener dla każdej aplikacji - wtedy mógłbyś zaoszczędzić zarówno miejsce na dysku (zakładając, że wykorzystałbyś ZFS), jak i miałbyś ogólnie znacznie bezpieczniejsze środowisko (ponieważ każdy kontener byłby odizolowany od pozostałych) - nie wspominając nawet o tym, że czas postawienia nowej aplikacji od zera wynosiłby dosłownie kilka sekund, no i mógłbyś dowolnie konfigurować sobie quota na wszystko (dysk, sieć, czas CPU etc.).

0

Muszę poczytać o tym Docker bo słabo temat znam :)

0

Dzięki za odpowiedź. Inne sugestie mile widziane

1 użytkowników online, w tym zalogowanych: 0, gości: 1