Architektura aplikace – menší weby vs. moduly

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jannek19
Člen | 47
+
0
-

Ahoj,

nastíním o co mi jde. Mám doménu na které chci provozovat jeden web, zároveň bych na subdoménách rád provozoval menší, k hlavnímu webu doplňkové, weby. Z počátku by doplňkové weby byly asi 2–3, ale je předpoklad, že směrem do budoucnosti, se počet doplňkových webů rozroste třeba i na několik desítek. Doplňkové weby by měly různé zaměření a složitost, jednalo by se např. o různé speciály, diskusní fórum, vědomostní testy, různé kalkulačky apod.

Původně jsem chtěl každý z těch webů řešit jako naprosto samostatnou webovou aplikaci, ale teď uvažuji nad jednou velkou aplikací, která by byla rozdělena pomocí modulů (co web, to modul).

Jak byste to řešili vy? Použili byste moduly v rámci jedné velké aplikace, nebo udělali spoustu malých samostatných aplikací?

Předem díky za odpovědi.

Editoval jannek19 (3. 6. 2013 8:45)

pawouk
Člen | 172
+
0
-

No tohle je dost složitá otázka a jednoznačná odpověd na ní asi není. Pojďme si shrnout výhody a nevýhody:
Jeden velký web:
Pozitiva:

  • jeden bootstrap, takže přepnutí například mezi debug modem, přidání služby je na jednom místě.

Negativa:

  • co když budeš třeba chtít upgradovat na nette 3? 100 webů najednou upgradovat by asi bylo dost problémové.

Více webů:
Pozitiva:

  • poměrně snadny upgrade
  • každů z webů může být závislí na různých dalších knihovnách, přitom nekyne zbytečně jedna aplikace.

Negativa:

  • určitě se nevyhneš kopírování (Ctrl + c → Ctrl + v) to vždy trochu zavání.

Nakonec si začneš říkat že by tedy asi bylo lepší aby to byli oddělené weby, ale protože nechceš kopírovat tak by to chtělo udělat některé soubory Sdílné, například ten bootstrap.

Můj názor je že pokud má být tech webů stovky, tak bych to oddělil (tedy co web to vlastní index.php) ale záleží taky na tom co vlastně budou mít ty weby společného? Nakolik si budou sahat pod ruce?

jannek19
Člen | 47
+
0
-

Weby budou sdílet (resp. mít stejné) @layout.latte, základní konfigurační soubory, budou stát na stejných výchozích třídách a knihovnách (např. stejné BasePresenter, BaseSecuredPresenter, BaseForm, WebLoader, Texy, etc.), dále např. některé modelové třídy, některé zdroje (fotografie, obrázky), vzhled (stejné základní CSS soubory, odvozené weby budou jen měnit barvy, příp. přidávat svoje vlastní styly podle individuálních potřeb), také budou sdílet některé zdroje v DB (uživatele, fotografie,…). Je toho celkem dost…

Pro mě osobně je největší nevýhodou při volbě jedné modulární aplikace představa, že budu chtít upgradovat nějakou knihovnu (třeba to Nette) a budu muset přepisovat třeba 100 aplikací. V tomto směru jsou jednotlivé malé aplikace pružnější, lze je upgradovat postupně, nebo taky vůbec.

Na více malých aplikacích mi zase vadí, že budu mít na webu nahránu jednu verzi Nette třeba 100×, což je hezkých pár tisíc souborů zbytečně navíc (pokud nepoužiji minifikovanou verzi, ale verzi staženou přes Composer z GitHubu). Ono by se to třeba, kdybych všechny knihovny stahoval ručně, dalo nějak zbastlit, jenže si už nedokážu dost dobře představit instalaci knihoven bez Composeru, a bohužel ve sdílení knihoven mezi weby mi asi Composer nepomůže.

Fakt na tohle asi neexistuje jednoznačná odpověď.