Skalowalna aplikacja w php/symfony.

Skalowalna aplikacja w php/symfony.
ajgoron
  • Rejestracja:ponad 9 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Rzeszów
  • Postów:91
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?


"Jedna robótka - miesiąc wódka" - Ojciec Pijo
edytowany 1x, ostatnio: ajgoron
mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
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 :)


It's All About the Game.
edytowany 1x, ostatnio: mr_jaro
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
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ę?


ajgoron
@dzek69 - dodałem EDIT w moim poście, dzięki za uwagę.
ajgoron
  • Rejestracja:ponad 9 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Rzeszów
  • Postów:91
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?


"Jedna robótka - miesiąc wódka" - Ojciec Pijo
mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
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.


It's All About the Game.
edytowany 1x, ostatnio: mr_jaro
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.

mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
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.


It's All About the Game.
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.

ajgoron
  • Rejestracja:ponad 9 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Rzeszów
  • Postów:91
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?


"Jedna robótka - miesiąc wódka" - Ojciec Pijo
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
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.


DE
@dzek69 wiesz może to z pierwszej ręki? Bo ostatnio - chyba na quorze - przeczytałem, że ta reużywalnośc kodu to wcale nie jest taka kolorowa w praktyce (React -> React Native).
dzek69
Jako tako. Appkę w RN zacząłem i nie mam czasu skończyć. Pierwsze powstawała jako eksperyment webowy. Nie budowałem tego jednak mając na celu dzielenie kodu, choć przenosząc się na RN po prostu kopiowałem fragmenty z web, zamieniając div na View i robiąc style inline. W teorii im więcej kodu chcesz dzielić, tym na większe kompromisy (zazwyczaj na niekorzyść web) musisz pójść, niemniej niektórzy nawet w webie style robią inline na zasadzie obiektów udających stylesheety, to samo przenosząc na RN, a w webie zrobić sobie komponent View to też nie problem.
dzek69
Ale przy RN zawsze się powtarza - to nie jest "write once, use everywhere", to jest "learn once, write anywhere". Mi wystarcza. Lepiej mieć niektóre komponenty tylko "podobne" i "zduplikowane", niż męczyć javę, Swifta, JS osobno (a podobno w RN da się już robić appki pod UWP no i na desktopy z Ubuntu)
DE
Super sprawa, na pewno spróbuję, dzięki :)
ajgoron
  • Rejestracja:ponad 9 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Rzeszów
  • Postów:91
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ć.


"Jedna robótka - miesiąc wódka" - Ojciec Pijo
dzek69
React jest prosty, nawet bardzo - świadczy o tym chociażby długość dokumentacji :)
DE
@dzek69 niby tak, ale pamiętajmy o tym, że react to nie kompletny framework, a jedynie biblioteka. Jest react, react-router, redux, normalizr i cała masa innych bibliotek. Dodatkowo sporo rzeczy może wprawić w zadumę, jak np. code splitting połączony z routingiem. Osobiście uważam, że obecnie jest to najlepsze rozwiązanie, ale wymaga trochę czasu, zanim będziemy w stanie stworzyć szkielet do dużej aplikacji. W tym wypadku Vue.js chyba jest prostsze.
cepa
  • Rejestracja:ponad 22 lata
  • Ostatnio:4 dni
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?

mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
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.


It's All About the Game.
bordeux
  • Rejestracja:około 18 lat
  • Ostatnio:8 miesięcy
  • Lokalizacja:Chorzów
  • Postów:1130
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 :)


:)
ajgoron
  • Rejestracja:ponad 9 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Rzeszów
  • Postów:91
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.


"Jedna robótka - miesiąc wódka" - Ojciec Pijo

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.