Krzysztof Biernacki

Krzysztof Biernacki programista PHP

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Witam.
Mam takie pytanie związane z projektowaniem "sporych" aplikacji internetowych.
Leży przede mną projekt portalu informacyjnego. Szkopuł w tym, że jest on podzielony na kilka mniejszych portali. Przykładowo dla 'gościa' jest dostępny portal nr 1. Po zalogowaniu (jeśli ma odpowiednie uprawnienia) 'gość' przechodzi do kolejnego - portalu nr 2 - różniącego się m.in. layoutem, gdzie znajdzie spersonalizowane dane, inny rodzaj informacji, modułów, ponadto będzie mógł skorzystać z kolejnego formularza logowania/rejestracji i dostać się do portalu nr 3, różniącego się diametralnie od pozostałych.
Czy ktoś z Was realizował tego typu projekt? W tym przypadku postawić na modułową budowę i zaprząc do pracy tylko jedną bazę danych, zamknąć wszystko w jedną aplikację (frontend/backend), czy utworzyć odrębne 3 bazy danych i podzielić projekt na 3 różne aplikacje? Jak będzie wydajniej, sprawniej, łatwiej? Dodam, że w bazie danych będą przechowywane informacje dla 70 tys. użytkowników, ponadto struktura bazy dla każdego portalu będzie bardzo podobna. Dziękuję z góry za wszelkie sugestie.
Łukasz Fiłyk

Łukasz Fiłyk Programista PHP

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Myślę że nikt Ci nie udzieli jednoznacznej odpowiedzi jeśli nie będzie znał sporej ilości szczegółów. Musisz sam przemyśleć co będzie Ci łatwiej zrobić i co będzie miała większe możliwości rozwoju. Trzeba sobie zadać kilkanaście pytań, rozpisać "za" i "przeciw" i wtedy można przesądzić.

Kilka wątków do przemyślenia:
1. Dlaczego chcę zrobić to na 3 bazach? Jakie da mi to możliwości (separacja danych) a jakie problemy (dostęp do wspólnych zasobów) Cza każda baza danych będzie mogła samodzielnie istnieć? Jeśli nie to ja bym to wrzucił do jednej bazy bo w przyszłości jeśli ktoś będzie przeglądał jedną baza może nie zauważyć, że coś jest w innej.
2. Czy planujesz CMS do portalu, jeden wspólny lub kilka?
3. Jaki procent funkcjonalności jest taki sam lub różny, może tylko wygląd? Jeśli funkcjonalności są różne to bym oprogramował kilka "app" - ów, jeśli wygląd to operowałbym na różnych templatach do akcji i layout - cie.
4. W jaki sposób będzie przebiegało przenoszeni "zalogowanych" pomiędzy portalami oraz rozróżnianie jaki to portal.

Robiłem podobną rzecz, moje techniczne główne węzły to były:

1. W plikach konfiguracyjnych (ewentualnie baza) trzymałem nazwę portalu, nazwę domeny oraz nazwę "template"
2. Dodałem własny filtr który rozpoznawał domene, wyciągał nazwę templaty i ustawiał jeśli znalazł taki właśnie layout. Dodawał plik CSS i JS o nazwie template.css/js Następnie przeszukiwał odpowiedni katalog 'template" w katalogach CSS i JS i dołączał pliki.
3. Filtr zmieniał dla danej akcji (jeśli znalazł) renderowany plik actionSuccess.php z przedrostkiem o nazwie "templaty"
4. Dodałem własną obsługę partialu aby móc używać lekko zmodyfikowanych partiali
5. Cache na domenie włączone

To jest opcja na jednej "app" do frontendu.

Powodzenia.
Paweł Kubasiak

Paweł Kubasiak Artysta Programista

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

a ja bym stworzył 3 aplikacje i jedną aplikację dla backendu. Dzięki temu będzie porzadek w kodzie i logiczne odseparowanie poszczególnych stron.

3 bazy to nie jest dobry pomysł lepiej zrobić to na jednej bazie danych ale tabele nazywać wg jakiegoś schematu np. app1_blog app2_cos_tam. Możesz dawać podwójne __ dzieki temu bedziesz mógł sobie ładnie zwijać podobne bazy w phpmyadminie.

70 tysiecy to nie jest duża baza pracowałem na bazie liczącej koło miliona rekordów. Przy większych bazach musisz uważać na wszystkiego rodzaju symfonowe filtry i formularze mające pole select. One potrafia do selecta zaciągnąć te 70 tysiecy userów by móc wybrac jednego, powoduje to przepełnienie pamięci i crush.

Warto tez odświeżyć też propela i zainstalować nowy plugin do niego i przejść na propela 1.6.3

powodzenia
Krzysztof Biernacki

Krzysztof Biernacki programista PHP

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Dziekuje za zainteresowanie tematem, waham sie jeszcze nad implementacja pewnych rozwiazan w swoim projekcie, ale na dniach podejme ostateczna decyzje. Co do ORM - uzywam Doctrine 1.2. Pozdrawiam.
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Krzysztof Biernacki:
Mam takie pytanie związane z projektowaniem "sporych" aplikacji internetowych.
Leży przede mną projekt portalu informacyjnego. Szkopuł w tym, że jest on podzielony na kilka mniejszych portali. Przykładowo dla 'gościa' jest dostępny portal nr 1. Po zalogowaniu (jeśli ma odpowiednie uprawnienia) 'gość' przechodzi do kolejnego - portalu nr 2 - różniącego się m.in. layoutem, gdzie znajdzie spersonalizowane dane, inny rodzaj informacji, modułów, ponadto będzie mógł skorzystać z kolejnego formularza logowania/rejestracji i dostać się do portalu nr 3, różniącego się diametralnie od pozostałych.
Czy ktoś z Was realizował tego typu projekt? W tym przypadku postawić na modułową budowę i zaprząc do pracy tylko jedną bazę danych, zamknąć wszystko w jedną aplikację (frontend/backend), czy utworzyć odrębne 3 bazy danych i podzielić projekt na 3 różne aplikacje? Jak będzie wydajniej, sprawniej, łatwiej? Dodam, że w bazie danych będą przechowywane informacje dla 70 tys. użytkowników, ponadto struktura bazy dla każdego portalu będzie bardzo podobna.
A może Symfony 2.0? Przy okazji zapraszam do grupy poświęconej tejże wersji frameworka: Symfony 2.0 :)
Krzysztof Biernacki

Krzysztof Biernacki programista PHP

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Mam jeszcze takie pytanie - czy to dobry pomysł, aby odseparować profile użytkowników i ich uprawnienia, grupy do których należą (osobna baza danych) od pozostałej struktury bazy danych (informacje o artykułach, modułach etc.)? Pytam, gdyż jest odgórny nacisk, aby wszelkie informacje związane z użytkownikami były przechowywane w bazie danych znajdującej się na zewnętrznym serwerze i nie za bardzo wiem w jaki sposób to zrealizować (dotychczas korzystałem z pluginu sfDoctrineGuard w obrębie jednej bazy danych). Liczę po cichu na jakieś sugestie i porady.
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Krzysztof Biernacki:
jest odgórny nacisk, aby wszelkie informacje związane z użytkownikami były przechowywane w bazie danych znajdującej się na zewnętrznym serwerze
Skąd taki "wspaniały" pomysł?
Krzysztof Biernacki

Krzysztof Biernacki programista PHP

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

"Wspaniały" pomysł powstał przy przypływie weny twórczej szefostwa. Jest kładziony nacisk na integrację portali informacyjnych z innymi aplikacjami internetowymi, które będą wykorzystywały tą samą bazę danych użytkowników. Jeśli chodzi o mnie, czarno to widzę. Ktoś z Was wykonywał tego typu zabiegi? Czy mechanizmy frameworka (Symfony 1.4) pozwolą na "umiarkowaną gimnastykę" w postaci zarządzania kontami użytkowników, ich uprawnieniami w zewnętrznej bazie danych?
Grzegorz Śliwiński

Grzegorz Śliwiński Programista python

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Hmmm... jest to jakaś forma rozpraszania bazy danych, co by nie było... natomiast jeśli już taka integracja miała by mieć miejsce, powinno się zrobić jakieś api i przez to api komunikować. Wtedy trzymasz szkielet, podstawowe informacje, nawet jeśli same id u siebie w aplikacji i odwołujesz się po informacje usera do api. A te mechanizmy będziesz musiał modyfikować jakoś, chyba, że rozproszenie nie będzie widoczne z poziomu aplikacji (np. może sama baza załatwi odpytanie drugiej o użytkownika?).

Następna dyskusja:

Od czego zacząć projekt?




Wyślij zaproszenie do