Přejít k navigační liště

Zdroják » JavaScript » Začínáme s Node.js na Windows Azure

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“:

  1. 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.
  2. RowKey, který je druhou polovinou primárního klíče a představuje identifikátor položky
  3. 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.

Komentáře

Subscribe
Upozornit na
guest
10 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Radek Miček

Proč je zdrojový kód v obrázcích?

Kokeš

Protože „The Microsoft way“ – jako text by to bylo příliš „open source“.

jos

a příště bude jen nadpis a článek bude v přiloženým .docx

blizz

asi preto ze tu chyba syntax highlighter. ja tie obrazky naopak chvalim.

Flašinet

Chybí??? V jiných článcích je normálně zvýrazněná syntaxe a zároveň to jde zkopírovat jako text.

Ondřej Šťastný

Pro snazší použití, zdrojový kód ke stažení zde: http://sdrv.ms/TvM2Bc

Ondřej Štoček

Místo odstavce „Co je Node.js?“ mi v článku dost citelně chybí titulek „Co je sakra Windows Azure?“

Ondřej Šťastný

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

lksv

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:)

Martin Hassman

Node.js na Heroku se zabývá celý Node.js seriál 8-)

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.

Pocta C64

Za prvopočátek své programátorské kariéry vděčím počítači Commodore 64. Tehdy jsem genialitu návrhu nemohl docenit. Dnes dokážu lehce nahlédnout pod pokličku. Chtěl bych se o to s vámi podělit a vzdát mu hold.