Začínáme s Node.js na Windows Azure

Jak používat Node.js na Windows Azure. Projdeme si instalaci, konfiguraci, vytvoření NoSQL databáze. Nevyhneme se ani použití Gitu.
Co je Node.js
Jsem si jistý, že většina z vás o Node.js již dávno slyšela, pojďme se tedy kromě krátkého představení zaměřit také na to, proč bychom měli Node.js používat, resp. jaké nám přináší výhody.
Ve zkratce, Node.js je platforma pro tvorbu rychlých a škálovatelných webových aplikací. Programovacím jazykem, hlavní devizou a zároveň největším trnem v patě všech odpůrců, je JavaScript (resp. ECMAScript), jehož interpreterem je engine V8 od Google (použitý mj. v prohlížeči Chrome). Node.js používá systém událostí a neblokujících I/O operací, který zajišťuje dobrý výkon nikoliv však na úkor udržovatelnosti kódu.
Hlavní výhodou Node.js je tedy unifikovaná user-experience, která osloví hlavně webové vývojáře na JavaScript již navyklé. Ale i nativní podpora JSON formátu pro výměnu dat a další vlastnosti činí Node.js vhodným kandidátem pro vývoj real-time distribuovaných aplikací.
Neposlední výhodou je též aktivní komunita. Ta rok od roku roste a jenom za poslední rok vzrostl počet modulů („knihoven“) z cca 2000 na 18000.
Podpora Node.js je dle mého názoru v Microsoft světě velmi dobrá. Jednak je nastavení vývojového prostředí na Windows pro vývojáře bezproblémové a rychlé, ale i hostování Node.js aplikací je díky nové podpoře ve Windows Azure nadprůměrné oproti konkurenci.
Dnes si ukážeme jak nastavit Windows Azure pro použití Node.js, jakým způsobem aplikaci nasadit a nakonec i jak v prostředí Node.js pracovat s NoSQL úložištěm Azure Table Storage. Vytvoříme jednoduchou aplikaci, která bude do úložiště zaznamenávat každé spuštění Node.js serveru.
Jak tedy s Node.js na Windows Azure začít?
Instalace Node.js a Gitu
První krok obnáší stáhnout a nainstalovat Node.js z oficiálního webu www.nodejs.org a nástroje na správu verzí Git z webu git-scm.com. Blíže je postup popsán v seriálu o Node.js.
Git budeme využívat k publikování našeho kódu do Azure cloudu. Pokud byste chtěli Azure využít i jako repositář svého kódu s velmi zajímavými možnostmi (o něco vyšší cena než základní plán na GitHub, avšak neomezený počet repositářů a navíc možnost hostovat další nástroje…), doporučil bych sérii článků Hosting Git on the Cloud with Windows Azure Virtual Machines.
Založení stránky na Windows Azure
Abyste si Node.js na Azure mohli vyzkoušet, musíte si zřídit 90denní testovací účet na Windows Azure, což je popsáno zde, a poté povolit nové funkce v preview režimu, což je popsáno zde.
S vytvořeným účtem se přihlaste na http://manage.windowsazure.com.
Klikněte na tlačítko New v levé dolní části Management portálu.
Zvolte Web Site a Quick Create. Poté vyplňte unikátní URL pro vaší Node.js aplikaci a zvolte geografický region, ve kterém bude server umístěn (v našem případě pouze West Europe). Poté zvolte Create web site.
Poté co se stav vytvářeného webu změní na Running, klikněte na název webu pro přechod na detail webu.
Jako první krok na nově založeném webu musíme nastavit Git. Zvolte tedy Set up Git publishing v nabídce v pravé části webu.
Při prvním nastavení Git publishingu (pouze pro první web) je potřeba nastavit jméno a heslo, které budou použity při posílání kódu do Azure úložiště.
Poté nás již přivítá informační stránka s informacemi o vytvořeném Git úložišti, s jednoduchými instrukcemi pro používání Git nástroje.
Hello World v Node.js
Nejdříve vytvoříme a otestujeme aplikaci lokálně.
Do nové složky na disku uložte zdrojový kód jako server.js. Jiný název vstupního souboru nebude Azure akceptovat.

Pro nasazení na Azure je také podstatné použít přidělený port z běhového prostředí systému pomocí proměnné proces.env.port, jinak nebude aplikace fungovat.
Otevřete příkazovou řádku, přejděte do adresáře s vytvořeným server.js souborem, a zadejte
node server.js
Otevřete webový prohlížeč a přejděte na adresu http://localhost:1337/. Pokud se vše podařilo, v prohlížeči se zobrazí klasický text „Hello World“.

Pokud vás Node.js zajímá, sledujte náš seriál Node.js – s JavaScriptem na serveru, ve kterém krok za krokem vytváříme e-shop v Node.js.
Publikování aplikace do cloudu
Ukončete běh Node.js aplikace v příkazové řádce (Ctrl+C), ale příkazovou řádku nezavírejte.
Abychom mohli aplikaci publikovat, je potřeba inicializovat Git repositář pomocí příkazu
git init
Poté přidáme všechny soubory pod správu Gitu a změny “uložíme”.
git add .
git commit -m "initial
commit"
Nyní musíme Gitu říct, kde se nachází vzdálené úložiště v cloudu, do kterého budeme naši aplikaci publikovat. Cestu nastavíme pomocí příkazu:
git remote add azure [vaše cesta]
Kde [vaše cesta] je URL v Azure Management portálu.
Nakonec již stačí provést samotný „upload“ dat do Azure. Git se vás dotáže na heslo a publikuje soubory do cloudu.
git push azure master
Pokud se nyní vrátíte na Azure Management portál, záložka Deployments bude obsahovat záznam o vámi provedené operaci, spolu s komentářem k danému commitu a informacemi o uživateli, který commit provedl.
Teď už je aplikace nasazená, je tedy možné v prohlížeči zadat veřejnou adresu vaší Azure web site a získat stejný výsledek jako v případě lokálního spuštění naší testovací Hello World aplikace.
Vytvoření databáze
Dalším krokem v našem úvodu do Node.js na Microsoft platformě bude vytvoření Table Storage účtu pro uložení nerelačních dat – svezeme se tedy na vlně NoSQL.
V tomto kroku je též možné zrušit volbu Enable Geo Replication, neboť v tomto článku nebudeme redundanci dat nijak řešit. Geo Replikaci by nám v opačném případě umožnila rozprostřít data napříč více geografickými regiony a předejít tak ztrátě dat při fyzickém poškození dat např. při přírodní katastrofě v dané lokalitě.
Poté co je účet vytvořen, klikněte v dolní části obrazovky na volbu Manage Keys a poznamenejte si primární klíč pro přístup k datům Primary Access Key.
Nyní vytvoříme průvodní soubor naší aplikace, který obsahuje metadata a pořebné závislosti („knihovny“). Tento soubor v JSON formátu používá NPM k automatickému dotažení chybějících závislosti a to jak lokálně, tak – hlavně – v Azure. Soubor uložíme jako package.json.

Jak je vidět, v našem projektu využíváme závislost na balíčku azure pro komunikaci s Azure, node-uuid generování unikátních klíčů a mustache jako šablonovací engine pro převod dat do výstupního formátu (HTML).
Zpět v příkazové řádce v adresáři s naším projektem spusťte následující příkaz pro zpracování package.json a stažení veškerých závislostí.
npm install
Do zdrojového kódu přidáme výše zmíněné balíčky:

Vytvoříme objekt pro komunikaci s Table Storage.
Účet a přístupový klíč nemusíme specifikovat v našem kódu, můžeme místo toho nastavit proměnné AZURE_STORAGE_ACCOUNT a AZURE_STORAGE_ACCESS_KEY ve web.configu naší aplikace, který je automaticky vytvořený pro náš projekt v cloudu, a který je možné získat pomocí FTP přístupu nebo PowerShell skriptu.
Následující kód vytvoří tabulku startlog a vloží nový záznam.

Každý záznam v Azure Table Storage obsahuje 3 „sloupce“:
- PartitionKey, který je první částí primárního klíče a umožňuje rozdělovat velká množství dat mezi jednotlivá úložiště infrastruktury.
- RowKey, který je druhou polovinou primárního klíče a představuje identifikátor položky
- Timestamp, neboli časové razítko poslední modifikace položky
A toho využijeme k dotvoření naší aplikace, neboť nové položky v tuto chvíli obsahují vše, co potřebujeme.
Posledním dílkem puzzle je pak přetvoření funkce která odpovídá na http požadavky do následující podoby:
Při každém http požadavku se z Table Storage přečtou všechny záznamy a pomocí Mustache se převedou do následujícího výstupu:

Pro pořádek, zde je zdrojový kód uveden ještě jednou jako celek.
Pojďme tedy na závěr nasadit naši upravenou aplikaci na Azure.
echo node_modules > .gitignore
git add .
git commit –m „Table
Storage demo“
git push azure master
Závěr
Doufám, že z tohoto článku je patrné, jak jednoduché je začít s Node.js na platformě Windows Azure. Ukázali jsme si, jak nastavit Windows Azure pro použití Node.js, jakým způsobem nasadit aplikaci a nakonec i jak v prostředí Node.js pracovat s NoSQL úložištěm Azure Table Storage.
Pokud bude o toto téma mezi českými vývojáři zájem, rád využiji svých a připravím články na téma jako nasazení Node.js na Azure jako web role, popřípadě jako stand alone virtuální stroj, load balancing, či nějaká další pokročilejší témata.
Proč je zdrojový kód v obrázcích?
Protože „The Microsoft way“ – jako text by to bylo příliš „open source“.
a příště bude jen nadpis a článek bude v přiloženým .docx
asi preto ze tu chyba syntax highlighter. ja tie obrazky naopak chvalim.
Chybí??? V jiných článcích je normálně zvýrazněná syntaxe a zároveň to jde zkopírovat jako text.
Pro snazší použití, zdrojový kód ke stažení zde: http://sdrv.ms/TvM2Bc
Místo odstavce „Co je Node.js?“ mi v článku dost citelně chybí titulek „Co je sakra Windows Azure?“
Máte pravdu, o Windows Azure se můžete více dozvědět třeba zde: http://blogs.msdn.com/b/vyvojari/p/windows-azure.aspx
Ve clanku postradam srovnani s deploy na Heroku, AppFog, Linode a EC2. (v prvnich dvou uvedenych mohu aplikacku rozjet i zdarma).
Osobne nevidim zadnou vyhodu vybrat si zrovna Win Azure, proto bych o tom rad odstavecek rad uvital – ale klidne uznam i argument „fanda do M$“ – kazdy sveho stesti strujcem:)
Node.js na Heroku se zabývá celý Node.js seriál 8-)