Blog pre slovenských vývojárov

Zdroj čerstvých informácií pre vývojárov priamo z kuchyne

Ako jednoducho rozbehať MongoDB v Azure (krok za krokom)

Azure podporuje viacero noSQL databáz vhodných pre aplikácie požadujúce vysoký výkon práce s semištruktúrovanými a neštruktúrovanými dátami. Najjednoduchšou variantou je platformová Azure Table Storage vhodná pre veľké množstvo dát, ktoré sa dajú zoskupiť podľa partičného kľúča, aby sa pri vyhľadávaní v štýle OData limitovala skupina dát, v ktorej sa vyhľadávanie vykonáva. Pokročilou platformovou noSQL databázou je DocumentDB, ktorá podporuje jednoduché škálovanie, JSON aj natívne REST API, asynchrónne API a LINQ, integráciu s javascriptom, „query“ nad dátami pomocou SQL jazyka, komunikáciu s aplikáciami cez MongoDB protokol.

Svet Open Source má však už dlhšie svojho favorita v podobe MongoDB, ktorá používa ako dátový formát BSON, a tým môžete okrem jednoduchých dátových typov podporovaných JSON-om, držať v dokumentoch aj dátové typy ObjectID, datetime, polia bajtov a geospatial pre geografické dáta. MongoDB síce nie je v porovnaní s DocumentDB platformová služba (, čo znamená, že sa musíte postarať o inštaláciu operačného systému a nastavenie databázového „engine“), ale má širšiu podporu jazykov. Okrem C#, Java, Python, nodeJS, javascript-u (, ktoré podporuje DocumentDB), podporuje aj C, C++, PHP, Perl, Motor, Ruby, Scala a limituje veľkosť jedného dokumentu až na hranici 16 MB ( v porovnaní s 512 KB v DocumentDB).
Priaznivcov MongoDB isto poteší, že túto populárnu noSQL databázu môžete v Azure „rozbehať“ podľa vzorového „imidžu“, ktorý nájdete v Azure marketplace. Ušetríte si tým čas strávený  nastavením operačného systému a samotnej databázy. Azure marketplace je obchod a katalóg Azure riešení zároveň. Nájdete v ňom predpripravené aplikačné prostredia podporujúce aj Open Source.

Ako na to?

V Azure marketplace sa nachádza MongoDB „imidž“ od spoločnosti bitnami, ktorý neúčtuje platby za predinštalovaný MongoDB softvér ( nie je teda založený na službe MongoLab), ale iba za výpočtové hodiny bežiaceho „podkladového“ virtuálneho servera s Linuxom (Ubuntu 14.04).

1. Oživte si Azure subskripciu.
Poznámka: Ak ste členmi BizSpark programu pre začínajúce vývojárske “startupy” (firmy alebo živnostníkov) , alebo máte kúpené Visual Studio s MSDN, môžete si bezplatne aktivovať Azure benefit v týchto programoch (Microsoft Azure pre členov BizSpark , Microsoft Azure pre MSDN predplatiteľov). Ak nie ste členmi týchto programov, môžete si Microsoft Azure bezplatne vyskúšať na dobu 30 dní cez Microsoft Azure Trial.
2. Prejdite do verejného katalógu Azure marketplace, k MongoDB od bitnami.

obr1mongo
3. Kliknite na „Vytvoriť virtuálny počítač“ („Create Virtual Machine“) a prihláste sa do svojej Azure subskripcie. Po úspešnom prihlásení budete presmerovaný na Azure portále priamo na formulár vytvorenia a konfigurácie MongoDB. Potvrďte tlačidlo „Create“.

obr2mongo
4. V zobrazenom panele „Basics“ vyplňte konfiguračné parametre virtuálneho servera:
– do položky „name“ zadajte názov virtuálneho servera (napr. mongovm )
– do položky „user name“ napíšte prihlasovacie meno systémového administrátora pre server (napr. mojadmin)
– pre jednoduchosť môžete ponechať typ autentifikácie heslom („Password“) a do položky „Password“ zadajte heslo systémového administrátora
– pre lepšiu orientáciu v službách, ktoré bude MongoDB potrebovať, ponechajte „Resource group“ na hodnote „New“ a do položky „New Resource Group Name“ napíšte názov skupiny zdrojov (napr. rgmongodb)
– vyberte dátové centrum, v ktorom sa MongoDB oživí ( napr. North Europe)
Potvrďte tlačidlo “OK”.

obr3mongo
5. Zobrazí sa panel na výber výpočtovej sily pre MongoDB server. Pre prvé spustenie bude stačiť menší produkčný „jednocorový“ sizing A1 alebo D1 so silnejším procesorom (, ktorý sa zobrazí v ponuke „View all“). Vyberte výpočtovú silu servera a potvrďte tlačidlo „Select“.

obr4mongo
Poznámka: Sizing budete môcť neskôr zmeniť bez akejkoľvek nutnosti reinštalovať softvér servera.
6. Ďalší panel Settings vám umožni vybrať úložisko pre disky servera, virtuálnu sieť, pravidlá sieťového firewallu (Network Security Groups). Pre zviditeľnenie vášho servera na internete, a teda na vzdialenú správu cez MongoDB administrátorské nástroje z vášho PC je dôležité vytvorenie a nastavenie „Public IP Address“, čiže verejnej IP adresy.
Potvrďte tlačidlo „OK“.

obr5mongo
Poznámka: MongoDB v viacvrstvovej aplikačnej architektúre bude tvoriť databázovú vrstvu. Server sa po vytvorení umiestni do virtuálnej siete. Pre produkčnú prevádzku sa z hľadiska bezpečnosti nedoporučuje vystaviť na internet databázu, ale iba „front-endovú“ aplikačnú vrstvu, ktorou môže byť napr. webový server umiestnený v tej istej virtuálnej sieti ako MongoDB server, alebo aplikačný server volajúci databázovú vrstvu chráneným komunikačným kanálom (napr. cez VPN). V našom príklade vystavíme IP adresu MongoDB servera do internetu len pre možnosť priameho pripojenia cez SSH z internetu.
7. Okno „Summary“ vám ponúkne možnosť skontrolovať nastavenia. Ak nič nechcete zmeniť, potvrďte tlačidlo “OK”.
8. Zobrazí sa panel „Purchase“, ktorý vám podá dôležitú informáciu o cene vybraného vzoru z Azure Marketplace. Všimnite si, že za MongoDB softvér v virtuále od bitnami sa neplatí, čo vám umožní použiť tento virtuál aj v Azure subskripciach v BizSparku, MSDN, OPEN, Enterprise Agreement atď. Takto vytvorený server teda má rovnakú cenu ako vami vytvorený Linux server Ubuntu, ale nemusíte sa trápiť s konfiguráciou MongoDB. Všetko už máte predinštalované tak, ako treba.
Potvrďte tlačidlo “Purchase”.

obr6mongo

9. Za niekoľko minút budete mať v Azure vytvorený Linux server s MongoDB databázou. Cez Azure portál ho jednoducho dohľadáte cez zvolenú skupinu zdrojov („Resource Groups“), v našom príklade teda cez menu Resource Groups -> vybrať „rgmongodb“ –> kliknúť na riadok s serverom „mongovm“.

obr7mongo
10. Server beží, čo indikuje jeho status je „Running“, viete sa na neho cez SSH protokol prihlásiť zo svojho počítača, pretože má verejnú IP adresu, ktorá sa ale bez rezervovania pri reštartoch servera môže meniť, čo je trochu otravné. Kliknite preto na linku IP adresy v položke „Public IP address/DNS name label“, aby ste sa dostali k konfigurácii DNS mena verejnej IP adresy.

obr8mongo

 

11. Vyberte v nastaveniach verejnej IP adresy menu „Configuration“ a do položky „DNS label“ zadajte názov servera pre internet, ktorý musí byť jedinečný v doméne dátového centra ( v našom príklade v doméne “northeurope.cloudapp.azure.com“).

obr9mongo
12. Potvrďte tlačidlo „Save“. Za niekoľko sekúnd sa informácia o pridelení DNS mena uloží.
13. Hotovo, máte v Azure vlastný MongoDB server. Pre otestovanie funkčnosti zatiaľ bez aplikačnej vrtvy nadviažte SSH kanál (napr. z nástroja Putty) so serverom použitím jeho internetového DNS mena (úplného, vrátane domény).

obr10mongo

13. Na linuxovej konzole spustite mongo shell s prihlásením do databázy admin s prihlasovacími údajmi prednastavenými spoločnosťou bitnami na root : bitnami.

mongo admin -u root -p bitnami --host 127.0.0.1

Poznámka: MongoDB server je prednastavený tak, že odpovedá iba na „loopback“ adrese „127.0.0.1“. Ak ho chcete sprístupniť aplikačným vrstvám, ktoré nebežia priamo na MongoDB servri, musíte pridať do konfiguračného súboru sieťovú IP adresu MongoDB servera, ktorú bude používať aplikačný/webový server. Umiestnenie konfiguračného súboru „mongodb.conf“ zistíte v mongo shelle príkazom „db._adminCommand({getCmdLineOpts:1})“ . V konfiguračnom súbore treba hodnotu parametra „net.bindIp” rozšíriť o sieťovú IP adresu MongoDB servera (oddelenú čiarkou od loopback adresy), na ktorej má databázový server načúvať aplikačným volaniam. Po zmene konfiguračného súboru MongoDB server reštartujte.

14. Otestujte si v mongo shelle zobrazenie zoznamu predinštalovaných databáz, vytvorenie novej databázy „mojadb“, vloženie dokumentu do novej databázy so súčasným vytvorením kolekcie „knihy“ a nakoniec zobrazenie obsahu kolekcie „knihy“:

show dbs
use mojadb
db.knihy.insert({"nazov":"MongoDB v Azure marketplace"})
db.knihy.find()

obr11mongo
Poznámka: MongoDB je open source, ktorý ma podporu nielen v open source knižniciach, ale aj v .NETe. Ak chcete napríklad vytvoriť webovú aplikáciu postavenú na ASP.NET, ktorá potrebuje pracovať s MongoDB, stačí si v nuget balíčkoch vyhľadať mongocsharpdriver. Inšpiráciu a príklad nájdete napr. na https://github.com/Microsoft/azure-content/blob/master/articles/app-service-web/store-mongolab-web-sites-dotnet-store-data-mongodb.md .

 

Miro