Holla! je webová aplikace. Jako taková běží z části ve webovém prohlížeči návštěvníka webu a z části na serveru.

Serverová část: backend

Fedora

Fedora-Core
Všechny servery běží na OS Linux, distribuci Fedora. Jedná se o kumunitní projekt, který zašťiťuje RedHat, co by největší komerční firma na poli linuxových distribucí. Fedora je inovativní, rychle se vyvíjejíci operační systém. Je distribuován pod vlastní licení, která vychází z MIT licence. Fedora vychází v několika spinech, ze kterých si můžete vybrat dle způsobu nasazení: server, stanice, cloud.

MongoDB

mongodb-logo
Všechny data jsou ukládána v MongoDB databázích. V tento moment jsou data rozprostřena na 3 fyzcikých serverech, které se starají o load balancig a redudantnost.
Jak to funguje? Data jsou rozdělována na 3 různé servery. To znamená, že zátěž je rozdělená a tak jakýkoliv dotaz je obsloužen teoreticky za 1/3 času. Vedle toho veškerý zápis probíhá současně do 3 nezávislých serverů, což znamená, že v dokud nespadnou všechny 3 servery, jsou data dostupná.

NodeJS

node
Backend celé aplikace je napsaný v NodeJS. Jedná se o JavaScriptový serverový framework. Ano, backend je napsaný z naprosté většiny v JavaScriptu. Několik zásadních důvodů hovořících pro NodeJS:

  1. Díky V8 od Googlu je JavaScript neskutečně rychlý.
  2. V8 je jednovláknový a díky tomu se velice dobře škáluje. Když s tímto ve vývoji počítáte od začátku, můžete své aplikace škálovat donekonečna…
  3. Balíčkovací systém npm. Jedná se o největší a nejrychleji rostoucí platformu, knihovnu balíčků s různými funkcemi. Věřte, že detaily, které řešíte, už někdo řešil před vámí a vytvořil balíček, který si můžete jednoduše nainstalovat a používat.
  4. JavaScript samotný. Frontend aplikace silně používá AngularJS, což je JavaScriptový framework od Googlu. Při vývoji tak nemusím přepínat z PHP či Pythonu do JavaScriptu a zpět. Prostě se píše v jednom C-like jazyce.

Git

git
Git je nástroj pro správu verzí. Primárně jej používám právě za tímto účelem. Vedle toho jej používám pro deploy aplikací na serveru. Aplikací je několik a běží na několika serverech a ještě k tomu v několika jednotlivých kopií na každém z nich. Nasazování nových verzí pak probíha přes ansible a git.

PM2

PKpktytKH9
PM2 je NodeJS process manager. Jedná se o utilitu, která spravuje spuštěné procesy, aplikace NodeJS na serveru. Umí je startovat, ale i restartovat v případě, že se některý ze souborů aplikace změní. V případě pádu aplikace ji opět automaticky nastartuje.

Internetový prohlížeč: frontend

Ve výsledku vše, co a jak jde vidět v samotném prohlížeči. Krom samotného HTML v.5 a CSS 3 jsou použity následující technologie.

AngularJS

angularjs
AngularJS je webový JavaScriptový framework od Googlu, který dává stránkám dynamičnost a umožňuje přímo na straně klienta reagovat na jeho požadavky a chování v prohlížeči. Je to doslova lepidlo mezi statickými stránkami vykreslovanými prohlížečem a daty na serveru. Aktivně spojuje tyto dva světy a umožňuje tak aby webová stránka byla aktivní a dynamická.

Bootsrap

bootstrap
Bootstrap je CSS knihovna, která dává aplikaci pěkný a uniformní vzhled bez nutnosti vyvíjet tuny vlastních CSS definic. Vedle toho druhým a možná ještě významějším aspektem tohoto frameworku je jeho responsivita. Webové stránky Holla! vypadají pěkně jak na počítači s jakýmkoliv prohlížečem, tak na chytrém telefonu s Androidem i iPhonu a jakémkoliv tabletu. Bez nutnosti vyvíjet zvláštní verze aplikace pro jednotlivé platformy.

A další…

Je jasné, že tak složitý ekosystém, jako Holla! je, nestojí jen na výše popsaných technologiích. Nicméně tyto technologie tvoří aplikační kostru. Vedle toho běží na serverech spousty dalších scriptů v Pythonu či BASHi, které zajišťují dílčí pomocné úkoly, jako je monitoring, zálohování a podobně.

Technologické zázemí