Skalowalna aplikacja w php/symfony.

0

Cześć wszystkim!

Nurtujący mnie problem jest taki:

Poszukuję skalowalnego rozwiązania do postawienia aplikacji www, która w założeniu powinna bez problemu obsłużyć wielu użytkowników. Np. po roku > 50/100 tys, a później może i więcej [EDIT: chodzi o zarejestrowanych, aktywnych użytkowników, którzy regularnie odwiedzają serwis - dzieki @dzek69].

Powiązania między użytkownikami będą rozbudowane, do tego użytkownicy dodają obrazki (myślę nad połączeniem z jakimś systemem plików). Czy taki ORM jak Doctrine nadaje się do takich rozwiązań? Może lepiej darować sobie ORM'a? Choć nie powiem, jest to bardzo wygodne rozwiązanie.

Zastanawiam się w jaki sposób rozwiązać ten problem. Jakiego frameworka użyć, jakiej bazy danych? Może backend z api i Angular lub inny framework JS?

Czy php i symfony dadzą radę z obsłużeniem dużej aplikacji?

W późniejszym terminie chciałbym połączyć serwis z apką mobilną. Tu może pojawić się problem z bazą danych. Dane przechowywane przez apkę mobilną będą musiały trafiać do głównej bazy serwisu.

Już teraz wiem, że temat będzie bardzo rozbudowany i chciałbym zacząć go tworzyć w odpowiedni sposób, żeby po pół roku nie uznać, że jednak trzeba było to zrobić inaczej. ;)

Czy ktoś z Was pisał w php coś dużego? Jakiego frameworka użyliście, jaka baza i jak to się sprawuje?

0

Jeżeli planujesz apke mobilną to od razu lecisz na restapi, a we froncie angular/vue/itp Co do orm, nie wiem co tam w symfony jest ale w eloqent w laravelu jak ktoś umie go stosować to wygeneruje małą i odpowiednio zoptymalizowaną liczbę zapytań. Ważne jest cache np memcache i to w sumie tyle :)

0

50/100 tys. ale czego? odsłon dziennie? odsłon na godzinę? UU dziennie? UU na godzinę? a może odsłon na sekundę?

0

Ok. @mr_jaro - dzięki za odp.

Jaki framework JS, do serwisu restowego, na początek polecacie (nie pisałem w żadnym na razie)? Może czysty JS + jQuery?

0
ajgoron napisał(a):

Ok. @mr_jaro - dzięki za odp.

Jaki framework JS, do serwisu restowego, na początek polecacie (nie pisałem w żadnym na razie)? Może czysty JS + jQuery?

A chcesz to zrobić porządnie czy za jakiś czas przepisywać na nowo? Bo jeśli porządnie to nie myśl o jquery. Osobiście proponuje vue bo jest bardzo proste i do opanowania w 2 dni.

0

Przecież jQuery jest do DOM, a nie do komunikowania się z rest api.
@mr_jaro Co jest takiego złego w jQuery? Czy chodzi raczej o to, że jQuery nic poza uproszczonym AJAXem nie oferuje, a są frameworki właśnie do komunikacji z api.

0
Krwawy Lew napisał(a):

Przecież jQuery jest do DOM, a nie do komunikowania się z rest api.
@mr_jaro Co jest takiego złego w jQuery? Czy chodzi raczej o to, że jQuery nic poza uproszczonym AJAXem nie oferuje, a są frameworki właśnie do komunikacji z api.

Dokładnie. Nie mam nic do jquery, po prostu robiłem kiedyś komunikacje z rest api w jquery bo taki był wymóg a potem projekty we vue lub angularze i to jest niebo a ziemia jeśli chodzi komunikacje, przetwarzanie i wyświetlanie danych pobranych z api. Z jquery jak najbardziej korzystam i się sprawdza tam gdzie backend generuje front.

2

jquery to już przeszłość, kiedyś mega, dziś mało warte. Trochę lepsza składnia jak natywne metody to trochę mało dziś. Korzystając z małej libki jak Bliss.js ma się szybsza, natywne zbudowana appke. Do ajaxa jest fetch api, sa polyfille dla opornych przeglądarek.

0

Dzięki za odpowiedzi. W czytałem już dziś co nieco odnośnie vue. Wygląda ciekawie więc na pewno zainteresuję się bliżej.

Czyli duet rest symfony 2 plus vue.js powinno dać radę, żeby w przyszłości dało się bez problemu zrobić apkę mobilną?

A jak wygląda wydajność vue? Czytałem, że jest dużo lżejszy od angulara. Znajmy pisuje w angularze i mówił, że przy większych projektach jest wolny. Prawda to czy poznał go jeszcze niedostatecznie?

2

Angular jest dosyć powolny, ale posiada różne mechanizmy optymalizacji, z których mało kto rozsądnie korzysta.
Vue nie znam, angulara odradzam - bardzo łatwo pisać w nim kod bylejaki bądź tragiczny - często takie kawałki kodu znajdziesz w necie jako jedyne słuszne rozwiązanie [!], w dodatku bardziej skomplikowane problemy potrafią rodzić wiele rozwiązań, ale żadne z nich nie jest eleganckie. Nie mówię o Angular2, którego znam szczątkowo, ale też wygląda, że powymyślali trochę.

React jest szybki i masz dodatkową kontrolę nad wydajnością. Skoro chcesz pisać appkę mobilną - to możesz skorzystać z React Native i stworzyć aplikację, która potem pracuje jako natywna aplikacja (wydajność!) z natywnymi elementami OS kontrolowanymi z poziomu JS - sporo kodu będziesz mógł używać w obu projektach.

0

@dzek69 pytanie jest takie, co łatwiej opanować na początek: react czy np. vue, jeśli nie korzystałem dotąd z frameworka JS. Z drugiej strony zawsze jakoś trzeba zacząć. :)
Ciekawi mnie aspekt React Native, muszę się z tym zapoznać i zdecydować czego używać.

0

Na twoje pytanie nie ma odpowiedzi, napisz co ta aplikacja ma robic, ilosc uzytkownikow to kwestia drugorzedna. Najpierw problem, pozniej rozwiazanie, a nie na odwrot.

Panowie, co ma restapi i JS do skalowalnosci systemu?

1

https://laracasts.com/series/learning-vue-step-by-step tutoriale tworzone przez ludzi powiązanych z zespołem laravela który prężnie wspiera vue.

1

Musisz pisać z myślą że twój kod będzie wykonywany na wielu maszynach niż na jednej. Tzn glowny serwer - load balancer, ktory bedzie proxowal do np. 100 innych serwerow, ktore uruchamiaja twoj kod. Bo jesli spodziewasz sie duzego ruchu - to chmura pewnie sie tobie przyda w przyszlosci.

Druga sprawa to to, że symfonia jest bardzo dobrze skalowalna. Jej struktura i wzorce są do tego zaprojektowane. Wiec polecam ten framework. Do tego dodaj php-pm -> https://github.com/php-pm/php-pm <- ktory boostuje symfonie do skraju mozliwosci, zmieniajac logike requestow - zamiast wykonywania caly czas procedury ladujacej symfonie, to symfonia jest raz zaladowana, i tylko "wykonuje" dane requesty. Cos podobnego jak dziala NodeJS.

Naprawde - z symfonii mozna zrobic microframework, lub zostawic, gdzie mamy potezne narzędzie. Ale nie przejmowałbym się samą symfonią lecz bazą danych - bo ona najczęściej pada :)

0

Słuszna uwaga odnośnie bazy danych, @bordeux.

Dzięki wszystkim za sugestie. Mam co trawić przez najbliższe parę dni.

@mr_jaro - właśnie widziałem, że laravel bardzo wspiera vue. Jak kiedyś zgłębie symfony na zadowalającym poziomie to pewnie przysiądę i do laravela. Ale i tak jeśli wybiorę vue to na pewno laracasty się przydadzą nawet przy symfony (te o vue).

Na stonie vue.js jest fajne porównanie vs inne frameworki. Naprawdę vue wypada nieźle.

https://vuejs.org/guide/comparison.html

Ogólnie z tego co czytam na temat frameworków js to vue jest jednym z łatwiejszych jeśli chodzi o próg wejścia.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.