Tvorba rozsiahlejšieho projektu - návrh architektúry rubrika: Návrh

2 Juraj Mlich
položil/-a 21.7.2015

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:

  1. 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?
  2. 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ť?
  3. 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?
  4. 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ň :-)

odkaz
3 briza.tomas
odpověděl/-a 21.7.2015

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.

Komentáře

  • Anonym : add 1) PostgreSQL 22.7.2015
  • kohven : Za to PostgreSQL místo MySQL bych se taky přimlouval. Většinou doporučuji použít to, co zná tým, ale ne v tomto případě. Nevím jak teď, ale pamatuji, že MySQL vyhrávalo nad postgre výkonem jen v případě neindexovaných malých dat s ultrajednoduchými dotazy. Ale ve chvíli kdy je potřeba optimalizovat nějakou složitější logiku nad více daty, bych radši pracoval s postgre. Tím nechci říct, že by MySql bylo nepoužitelné. Vždycky záleží na typu projektu a mělo by se vycházet z nějaké prvotní analýzy. Ale u většího projektu bych to tipnul spíše na to postgre, i kdyby se ho měli všichni učit od nuly. 22.7.2015
  • dzejkob : Mysql je nutné zlo - když začnete chtít víc než select, join a jednoduché indexy, tak si budete trhat vlasy. Nový projekt rozhodně na mysql nezačínat a už vůbec ne takový, ke kterému někdo dává přívlastky "skvělý" a "velký". Velké projekty na mysql jedou jedině ze setrvačnosti. 22.7.2015
  • Kit : Také bych se přimluvil za PosgreSQL. Pokud však převládají primitivní SQL dotazy, tak MySQL může být i o něco výkonnější. Na druhou stranu není mnoho důvodů pro vytváření primitivních SQL dotazů. PosgreSQL má také určité unikátní vlastnosti, např. hstore, které se v eShopech pod MySQL dělají jen velmi obtížně. 22.7.2015
  • briza.tomas : Mysql jsem tam napsal jenom proto ze byla zminena v otazce. Jinak samozrejme prostgres je jasna volba, kdyz nechces/nemuzes platit licence za oracle 22.7.2015

Pro zobrazení všech 3 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.