Tvorba rozsiahlejšieho projektu - návrh architektúry rubrika: Návrh
Zdravím,
s malým týmom vývojárov pracujeme na jednom skvelom projekte stredne veľkého až veľkého rozsahu.
Pre zjednodušenie, jedná sa o aplikáciu skladajúcu sa z dvoch hlavných jednotiek. Tou prvou je desktopová aplikácia písaná v Jave pracujúca s dvoma HSQL databázami (okolo 40 tabuliek v obidvoch). Druhou jednotkou je centrálny server, ktorý bude spracovávať dáta odosielane desktopovou aplikáciou. Centrálny server bude obsahovať administračné rozhranie (poprípade len API k nemu), kde uvidíme všetky štatistiky používania, správu dát, blokovanie a množstvo iných potrebných funkcií.
Pri navrhovaní by som sa ale rád poradil s tunajšou komunitou, pretože mi v hlave skrzlo viacero otázok:
- Centrálny server bude spravovať dáta možno až miliónov užívateľov, zo začiatku ich ale bude určite oveľa menej. Prvou otázkou teda bolo, akú databázu na centrálnom servery použiť? Samozrejme sa ponúka MySQL, nebude to ale problém s veľkým množstvom dát? Aké sú použiteľné alternatívy a Vaše skúsenosti s nimi?
- Spojenie medzi desktopovou aplikáciou a CS ešte nemáme do detailu premyslené, preto by som sa rád dozvedel Váš názor aj tu. Akým spôsobom by bolo najlepšie ho realizovať vzhľadom k možnému obrovskému počtu requestov? Aký typ / protokol spojenia by bolo najlepšie použiť?
- Rovnako tak v otázke platformy pri CS sme si nie dokonale istý. Bude vhodné použiť Javu Enterprise? Alebo podľa Vás bude pre nás jednoduchšie použiť PHP?
- Systém je pomerne komplexný, preto udržujeme veľmi kvalitnú dokumentáciu. Čo by tá ale podľa Vášho názoru pri tak veľkom projekte mala obsahovať? (Poprosím konkrétnejšie).
Za odpovedanie mojích dotazov Vám veľmi pekne ďakujem. Aby sme sa pochopili správne, vo vyššie uvedených veciach máme jasno. Staviame ale veľký systém, a preto sa každý krok snažíme premyslieť, čo najlepšie ako sa dá. Preto sa radšej pýtame viacerých ľudí, aby sme si boli v týchto otázkach istí. Ďakujeme.
Prajem pekný deň :-)
1) zelezi na typu dat (staticke vs dynamicke), typy dotazu (chci znat okamzite realne data vs staci hodinu stary zaznam, apod). V zasade by se dala pouzit kombinace MySql (relacni data) plus nejaka cache (redis a pod) pro staticka data. Ale bez poctu (radove) dorazu a typu dat tezko rict
2) Rest (json), pripadne bych se podival na protocol buffers, otevre vam to moznost pro dalsi klienty (android, ios apod)
3) Spring (Boot) + Docker a poradne to navrhnout aby se to do budoucna dalo v pohode skalovat, pripadne deploynout do cloudu (amazon, app engine, openshift, atd)
4) Kdyz mate system takto striktne rozdeleny na dve relativne samostatne casti, jako nejdulezitejsi se mi zda popis api a procesu mezi komponentama.
Pro zobrazení všech 3 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře