Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Oddzielenie backendu od frontendu

Czy zdazylo Wam sie kiedys obierac rozwiazanie,
polegajace na przygotowaniu duzego projektu w ten sposob
ze backend to osobna aplikacja (komunikacja z baza danych, warstwa
abstrakcji), a sama strona/portal to skrypt pobierajacy
dane np przez json, co o tym sadzicie?
Tomasz Wolfram

Tomasz Wolfram Project Manager,
programista,
zamiłowany żeglarz

Temat: Oddzielenie backendu od frontendu

Oddzielenie backendu i frontendu nie jest niczym niespotykanym, ponieważ takie rozwiązanie ma wiele zalet.
Zwykle jest tak, że strona frontendowa musi wykazywać się duży wydajność przy dostarczeniu wymaganych danych, w końcu Użytkownicy nie lubią czekać zbyt długo na wyświetlenie strony www.

W panelu jednak, większe znaczenie niż wydajność ma bezpieczeństwo i elastyczność rozwiązania.

Dlatego rozdzielenie tych aplikacji pozwala na uzyskanie często lepszych rezultatów i do pasowania do potrzeb. Przy czym mam na myśli rozdzielenie już na poziomie kodu PHP, a nie tworzenie API przez JSON/XML itp.
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: Oddzielenie backendu od frontendu

Używa się też fizycznego rozdzielenia. Trzeba tylko zadbać, by jak najmniej komunikacji odbywało się na linii front -> backend (zwykle sieć ma duże opóźnienie). Najlepiej w tym przypadku sprawdza się jakiś wydajny mechanizm cache'ujący w postaci reverse proxy przed serwerem www. Kwestia jest jeszcze taka, jakiego typu aplikację chcesz stworzyć ?

konto usunięte

Temat: Oddzielenie backendu od frontendu

Dodatkową zaletą rozwiązania jest możliwość zainstalowania frontendu i backendu na oddzielnych maszynach (albo np. wielu instancji frontendu + jedna backendu, itp).
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Oddzielenie backendu od frontendu

Wlasciwie ja juz decyzje o uzyciu takiego rozwiazania podjalem.

Dodatkowa zaleta jest to ze na podstawie backendu moge stworzyc open API.

Wlasnie tylko ta kwestia komunikacji mnie nurtuje. Jesli uzyje JSON, bedzie
to kilogram requestow.
Z drugiej strony takiego rozwiazania uzyl facebook...

konto usunięte

Temat: Oddzielenie backendu od frontendu

Aaa, nie zrozumiałem na początku ;) (i chyba niektórzy wyżej też).
Przyjąłem, że masz na myśli backend = panel administracyjny i tego dotyczyła moja wypowiedź.
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: Oddzielenie backendu od frontendu

Filip Górny:
Wlasciwie ja juz decyzje o uzyciu takiego rozwiazania podjalem.

Dodatkowa zaleta jest to ze na podstawie backendu moge stworzyc open API.

Wlasnie tylko ta kwestia komunikacji mnie nurtuje. Jesli uzyje JSON, bedzie
to kilogram requestow.
Z drugiej strony takiego rozwiazania uzyl facebook...
JSON jest w tej chwili najbardziej minimalistycznym rozwiązaniem, dużo lepszym w kwestii ciężaru od XML. Jeżeli chcesz zrobić API, ja bym się zainteresował protokołem JSON-RPC. Zend ma go zaimplementowanego, wystarczy w backendzie stworzyć instancje Zend_Json_Server i tam podpiąć klasy modelu. Po stronie frontendu też jest chyba odpowiednia klasa Zendowa. Jest to ustandartyzowany protokół, dlatego też twoi przyszli klienci raczej nie będą mieli problemu, żeby się podpiąć do API.
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Oddzielenie backendu od frontendu

Wojciech Soczyński:
Filip Górny:
Wlasciwie ja juz decyzje o uzyciu takiego rozwiazania podjalem.

Dodatkowa zaleta jest to ze na podstawie backendu moge stworzyc open API.

Wlasnie tylko ta kwestia komunikacji mnie nurtuje. Jesli uzyje JSON, bedzie
to kilogram requestow.
Z drugiej strony takiego rozwiazania uzyl facebook...
JSON jest w tej chwili najbardziej minimalistycznym rozwiązaniem, dużo lepszym w kwestii ciężaru od XML. Jeżeli chcesz zrobić API, ja bym się zainteresował protokołem JSON-RPC. Zend ma go zaimplementowanego, wystarczy w backendzie stworzyć instancje Zend_Json_Server i tam podpiąć klasy modelu. Po stronie frontendu też jest chyba odpowiednia klasa Zendowa. Jest to ustandartyzowany protokół, dlatego też twoi przyszli klienci raczej nie będą mieli problemu, żeby się podpiąć do API.

Dzięx :-)

Czyli z tego co ruzmiem to nie bedzie uruchamiac w nieskonczonosc nastepnych pidow apache'a?
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: Oddzielenie backendu od frontendu

Filip Górny:
Wojciech Soczyński:
Filip Górny:
Wlasciwie ja juz decyzje o uzyciu takiego rozwiazania podjalem.

Dodatkowa zaleta jest to ze na podstawie backendu moge stworzyc open API.

Wlasnie tylko ta kwestia komunikacji mnie nurtuje. Jesli uzyje JSON, bedzie
to kilogram requestow.
Z drugiej strony takiego rozwiazania uzyl facebook...
JSON jest w tej chwili najbardziej minimalistycznym rozwiązaniem, dużo lepszym w kwestii ciężaru od XML. Jeżeli chcesz zrobić API, ja bym się zainteresował protokołem JSON-RPC. Zend ma go zaimplementowanego, wystarczy w backendzie stworzyć instancje Zend_Json_Server i tam podpiąć klasy modelu. Po stronie frontendu też jest chyba odpowiednia klasa Zendowa. Jest to ustandartyzowany protokół, dlatego też twoi przyszli klienci raczej nie będą mieli problemu, żeby się podpiąć do API.

Dzięx :-)

Czyli z tego co ruzmiem to nie bedzie uruchamiac w nieskonczonosc nastepnych pidow apache'a?

Co rozumiesz przez "nie będzie uruchamiać w nieskończoność następnych pidów apache'a" :> (wiem co to jest proces apache)?Wojciech Soczyński edytował(a) ten post dnia 18.01.11 o godzinie 15:04
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Oddzielenie backendu od frontendu

Nie wiem jak to dokladnie dziala bo skupiam sie na programowaniu bardziej niz administracji *nixem. Ogolnie chodzi mi o ilosc requestow do apache. Po to sie np stosuje css sprites zeby to zredukowac.
Bartłomiej Ogryczak

Bartłomiej Ogryczak Backend Developer @
Layar

Temat: Oddzielenie backendu od frontendu

Filip Górny:
Czy zdazylo Wam sie kiedys obierac rozwiazanie,
polegajace na przygotowaniu duzego projektu w ten sposob
ze backend to osobna aplikacja (komunikacja z baza danych, warstwa
abstrakcji), a sama strona/portal to skrypt pobierajacy
dane np przez json, co o tym sadzicie?

Dosyć standardowe podejście.

A swoją drogą, to frontend może być 100% JS + client-side templates.
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: Oddzielenie backendu od frontendu

Filip Górny:
Nie wiem jak to dokladnie dziala bo skupiam sie na programowaniu bardziej niz administracji *nixem. Ogolnie chodzi mi o ilosc requestow do apache. Po to sie np stosuje css sprites zeby to zredukowac.
Jeżeli chodzi o reverse proxy to zredukuje znacznie ilość req do apache natomiast. Natomiast podział na front/back czy JSON-RPC nie mają z tym nic wspólnego.
Bartłomiej Ogryczak

Bartłomiej Ogryczak Backend Developer @
Layar

Temat: Oddzielenie backendu od frontendu

Filip Górny:
Czyli z tego co ruzmiem to nie bedzie uruchamiac w nieskonczonosc nastepnych pidow apache'a?

A kto jeszcze anno domini 2011 używa Apache? ;-)
ngnix + php_fpm.
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Oddzielenie backendu od frontendu

dazynt mater jaki serwer, moze byc ngnix - ja tu tylko programuje :-)

A co do frontendu js zgadzam sie - tak to pewnie bedzie zrobione
Tomasz Zadora

Tomasz Zadora programuję

Temat: Oddzielenie backendu od frontendu

Bartłomiej Ogryczak:
[...]
A kto jeszcze anno domini 2011 używa Apache? ;-)
ngnix + php_fpm.

Popieram :) Użyłeś ;-), więc zdajesz sobie sprawę, że Apache raczej długi czas jeszcze będzie miał dominującą pozycję, a dlaczego to temat na osobną dyskusję.

Co do tematu tego wątku: rozumiem, że jego autor chce komunikację po JSONie także kierować "w drugą stronę", czyli mamy dwie operacje / strumienie:

* z backendu do frontendu: np. jeżeli to sklep to np. dane produktów z bazy do frontendu w formacie JSON przez osobny request / AJAX
* z frontendu do backedu: np. rejestracja użytkownika, wysłanie danych z formularza i znowu osobny request w formacie JSON do backendu

Dobrze to rozumiem ?

Jeżeli tak, to jak zwykle są pewne zalety i wady... ja jednak nie zdecydowałbym się na takie rozwiązanie, chyba, że byłyby naprawdę ważne powody ku temu.Tomasz Zadora edytował(a) ten post dnia 18.01.11 o godzinie 17:07
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Oddzielenie backendu od frontendu

Powód jest taki że cały projekt to właśnie backend a frontend będzie tylko jedną z aplikacyjek do niego, podobnie jak appsy na androida. Dlatego json - android to ladnie obsluguje, gorzej z soap.
Bartłomiej Ogryczak

Bartłomiej Ogryczak Backend Developer @
Layar

Temat: Oddzielenie backendu od frontendu

Tomasz Zadora:
Bartłomiej Ogryczak:
[...]
A kto jeszcze anno domini 2011 używa Apache? ;-)
ngnix + php_fpm.

Popieram :) Użyłeś ;-), więc zdajesz sobie sprawę, że Apache raczej długi czas jeszcze będzie miał dominującą pozycję, a dlaczego to temat na osobną dyskusję.

Zależy jak zdefiniujesz "dominującą pozycję". Duzi gracze używający PHP na ogół jednak Apache + mod_php nie używają. Mod_php jest popularne w małych site'ach o małym ruchu, bo... zawsze było popularne ;-)

Największe PHPowe rozwiązania jakie znam, to Facebook (używa ngnix) oraz Wikipedia (używa LigHTTPd).

Co do FPM, to jest aktualnie na tyle istotne, że trafiło do głównego wydania PHP (http://php.net/manual/en/install.fpm.php).

A dlaczego warto?
http://highscalability.com/blog/2010/8/23/6-ways-to-ki...Bartłomiej Ogryczak edytował(a) ten post dnia 18.01.11 o godzinie 17:59
Dariusz Siedlecki

Dariusz Siedlecki Rockstar Frontend
Developer

Temat: Oddzielenie backendu od frontendu

Filip Górny:
Czy zdazylo Wam sie kiedys obierac rozwiazanie,
polegajace na przygotowaniu duzego projektu w ten sposob
ze backend to osobna aplikacja (komunikacja z baza danych, warstwa
abstrakcji), a sama strona/portal to skrypt pobierajacy
dane np przez json, co o tym sadzicie?

Twitter jest w całości tak zbudowany i z tego co wiem bardzo sobie chwalą to rozwiązanie.
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: Oddzielenie backendu od frontendu

Ok czyli wszystko wskazuje na to ze podjalem sluszna decyzje
dzielac w ten sposob projekt :-)

Tylko nadal nie wiem jak to bedzie, przy duzej ilosci zapytan.

Przykladowo jest profil uzytkownika, i tak:
- czy bez obaw o wydajnosc itp moge robic osobne zapytania
o avatar, o nowe wiadomosci, o dane profilowe
- czy dac to wszystko w jednym bo mnozenie zapytan to zly pomysl

Pierwsze rozwiazanie jest latwiejsze. Juz sprawdzalem plugin
jquery json-rpc

Wiem ze moznaby postawic backend na czyms silniejszym, oczywiscie
najlepiej calosc byloby napisac w c++.
Jakub L.

Jakub L. Programista

Temat: Oddzielenie backendu od frontendu

Filip Górny:
Ok czyli wszystko wskazuje na to ze podjalem sluszna decyzje
dzielac w ten sposob projekt :-)

Tylko nadal nie wiem jak to bedzie, przy duzej ilosci zapytan.

Przykladowo jest profil uzytkownika, i tak:
- czy bez obaw o wydajnosc itp moge robic osobne zapytania
o avatar, o nowe wiadomosci, o dane profilowe
- czy dac to wszystko w jednym bo mnozenie zapytan to zly pomysl

A nie możesz skomponować dużego parsera do profilu z kilku mniejszych, i jak jest okazja to zaciągać cały profil i parsować po kolei, a jak potrzeba, to po kawałku?

Następna dyskusja:

Adres do backendu




Wyślij zaproszenie do