Vous êtes sur la page 1sur 341

Farkas Blint, Kovcs Gbor, Kirly Istvn, Turczy Attila, Knig Tibor, rsek Attila, Safranka Mtys, Flp

Dvid, Pellek Krisztin, Kiss Balzs

Windows Azure lpsrl lpsre

Kszlt a Microsoft Magyarorszg megbzsbl

Farkas Blint, Kovcs Gbor, Kirly Istvn, Turczy Attila, Knig Tibor, rsek Attila, Safranka Mtys, Flp Dvid, Pellek Krisztin, Kiss Balzs

Windows Azure
lpsrl lpsre

JEDLIK OKTATSI STDI Budapest, 2013

Minden jog fenntartva. A szerzk s a kiad a knyv rsa sorn trekedtek arra, hogy a lert tartalom a lehet legpontosabb s napraksz legyen. Ennek ellenre elfordulhatnak hibk, vagy bizonyos informcik elavultt vlhattak. A pldkat s a mdszereket mindenki csak sajt felelssgre alkalmazhatja. Javasoljuk, hogy felhasznls eltt prblja ki s dntse el sajt maga, hogy megfelel-e a cljainak. A knyvben foglalt informcik felhasznlsbl fakad esetleges krokrt sem a szerzk, sem a kiad nem vonhat felelssgre. Az oldalakon elfordul mrka- valamint kereskedelmi vdjegyek bejegyzjk tulajdonban llnak. A knyv a devportal.hu webhelyrl ingyenesen letlthet.

Szerkesztette: Novk Istvn s Farkas Blint Szakmailag lektorlta: Novk Istvn

Anyanyelvi lektor: Dr. Bonhardtn Hoffmann Ildik Bort: Varga Tams

Kiad: Jedlik Oktatsi Stdi Kft. 1215 Budapest, v u. 8-12. Internet: http://www.jos.hu E-mail: jos@jos.hu Felels kiad: a Jedlik Oktatsi Stdi Kft. gyvezetje

Nyomta: LAGrade Kft. Felels vezet: Szutter Lnrd

ISBN: 978-615-5012-21-1 Raktri szm: JO-0344

Tartalomjegyzk

Tartalomjegyzk
Tartalomjegyzk ........................................................................................................................ 5 Elsz ..........................................................................................................................................13 1. Mi a felh? .............................................................................................................................15
Az IT mint kzm ........................................................................................................................................... 15
Mretgazdasgossg ................................................................................................................................................. 16 Energiakltsgek .......................................................................................................................................................... 17 zemeltetsi kltsgek .............................................................................................................................................. 18 Biztonsg s megbzhatsg................................................................................................................................... 18 Vsrler ....................................................................................................................................................................... 18 Hasznlati mintk ......................................................................................................................................................... 18 Tbb-brls rendszerek ............................................................................................................................................ 20

Mitl klnleges a felh? ............................................................................................................................ 22


Igny szerinti, nkiszolgl hasznlat.................................................................................................................. 22 Online elrhetsg ...................................................................................................................................................... 22 Nagy mennyisg felhalmozott erforrs ......................................................................................................... 22 Gyors s rugalmas sklzhatsg .......................................................................................................................... 22 Tervezhet s kvethet kltsgek ...................................................................................................................... 23

Ki a felh? ....................................................................................................................................................... 23
Privt felh ...................................................................................................................................................................... 23 Nyilvnos felh ............................................................................................................................................................. 23 Hibrid felh..................................................................................................................................................................... 23

Mit nyjt a felh? ........................................................................................................................................... 23


Infrastruktra-szolgltats (IaaS) ........................................................................................................................... 24 Platformszolgltats (PaaS) ...................................................................................................................................... 25 Szoftverszolgltats (SaaS) ....................................................................................................................................... 25 Egyb szolgltatsmodellek .................................................................................................................................... 26

sszegzs.......................................................................................................................................................... 26

2. Mikor jn jl az Azure? ..................................................................................................... 27


Mi a Windows Azure? ................................................................................................................................... 27
Egy kis visszatekints .................................................................................................................................................. 28 Platformszolgltats ................................................................................................................................................... 28 Infrastruktra-szolgltats ....................................................................................................................................... 29

A Windows Azure szolgltatsai............................................................................................................... 30


Webhelyek ...................................................................................................................................................................... 30 Felhszolgltatsok ..................................................................................................................................................... 31 Virtulis gpek .............................................................................................................................................................. 32 Mobilszolgltatsok .................................................................................................................................................... 32

Tartalomjegyzk Big Data ............................................................................................................................................................................33 Mdiaszolgltatsok ....................................................................................................................................................33 Adattrols ......................................................................................................................................................................34 Egyb szolgltatsok ...................................................................................................................................................35

Tipikus Windows Azure-alkalmazsok ................................................................................................... 35


zleti cl felhalkalmazs .......................................................................................................................................35 Mobilalkalmazs httrszolgltatsa ....................................................................................................................36 Felhbe kihelyezett vllalati rendszer ...................................................................................................................36 Tesztkrnyezet ...............................................................................................................................................................36 Archvum ..........................................................................................................................................................................36

sszegzs.......................................................................................................................................................... 37

3. Az Azure mkdse........................................................................................................... 39
Adatkzpontok................................................................................................................................................ 39
Az adatkzpontok evolcija ..................................................................................................................................39 Microsoft-adatkzpontok .........................................................................................................................................42

A felh opercis rendszere ...................................................................................................................... 45


Fabric Controller............................................................................................................................................................46 Hardverprovizionls ..................................................................................................................................................47 Szolgltatsok felgyelete ........................................................................................................................................48 Szolgltatsok provizionlsa ..................................................................................................................................48

Katasztrfk nyomban: A 2012-es szknap .................................................................................... 52


Redmondi id: 2012. februr 28. 16:00 ................................................................................................................53 Redmondi id: 2012. februr 28. 17:15 ................................................................................................................53 Redmondi id: 2012. februr 28. 18:38 ................................................................................................................53 Redmondi id: 2012. februr 28. 18:55 ................................................................................................................53 Redmondi id: 2012. februr 29. 5:23 ..................................................................................................................53 A msodlagos szolgltatskiess ...........................................................................................................................54 A tanulsgok ...................................................................................................................................................................55

sszegzs.......................................................................................................................................................... 55

4. Els lpsek ..........................................................................................................................57


Az Azure.com portl ...................................................................................................................................... 57 Hogyan szerezhetsz Azure elfizetst?.................................................................................................. 59
Az Azure-elfizets jelentse ...................................................................................................................................59 Konstrukcik ...................................................................................................................................................................59 A regisztrci folyamata ............................................................................................................................................60 Elzetes szolgltatsok s a ktfle menedzsment portl ...........................................................................61 Tbb felhasznl elfizetsenknt, tbb elfizets felhasznlnknt ....................................................63

Fejlesztkrnyezetek, zemelteti eszkzk ....................................................................................... 64


Azure-eszkzk fejlesztknek .................................................................................................................................64 Azure eszkzk zemeltetknek ............................................................................................................................65

sszegzs.......................................................................................................................................................... 66

5. IaaS Virtulis gpek ........................................................................................................ 67


A virtulis gpek lehetsges felhasznlsi terletei .......................................................................... 67 Az Azure szerepkrk s virtulis gpek sszehasonltsa ............................................................ 67
6

Tartalomjegyzk

A virtulis gpek tpusai............................................................................................................................... 68


Tmogatott opercis rendszerek s kpessgek .......................................................................................... 69

A virtulis gpek kezelse ........................................................................................................................... 69


Windows Azure parancssori eszkzk teleptse Mac s Linux rendszereken .................................... 70 A virtulis gpek lehetsges mretei ................................................................................................................... 70 A virtulis gpek tulajdonsgai .............................................................................................................................. 71 Virtulis gpek ksztse ........................................................................................................................................... 73 A virtulis gpek ksztsnek tervezsi folyamata ....................................................................................... 77

Lemezek kezelse a Windows Azure IaaS szolgltatsban .......................................................... 87


A lemezek tpusai ......................................................................................................................................................... 87 Cache funkcik .............................................................................................................................................................. 87 Adatlemezek kezelse ................................................................................................................................................ 88

A Cloud Service-ek s a virtulis gpek kapcsolata .......................................................................... 89


Gpek kzs Cloud Service-be rendezse ......................................................................................................... 89

Magas rendelkezsre lls biztostsa ................................................................................................... 90 Az Active Directory s a Windows Azure .............................................................................................. 90
Virtualizlt DC ................................................................................................................................................................ 91 Adatbzis elhelyezse ................................................................................................................................................ 91 Replikci, svszlessg, forgalom ....................................................................................................................... 91 Trust vagy replica? ....................................................................................................................................................... 91 IP cmek s nvfelolds .............................................................................................................................................. 91

Fldrajzilag elosztott szolgltats ksztse ........................................................................................ 91


A Traffic Manager hasznlata .................................................................................................................................. 92

sszegzs.......................................................................................................................................................... 94

6. IaaS Virtulis hlzatok ................................................................................................. 95


Kls elrs ...................................................................................................................................................... 95 lland IP cmek ............................................................................................................................................. 97 VPN a felh s a vllalati hlzat kztt ............................................................................................... 99 sszegzs........................................................................................................................................................100

7. IaaS Storage ..................................................................................................................... 101


Az Azure Storage szolgltatsai s felptse ...................................................................................101
A hromfle Storage szolgltats ....................................................................................................................... 101 Az Azure Storage architektrja .......................................................................................................................... 102 Az Azure Storage felhasznlsa ........................................................................................................................... 105

A Blob Storage kpessgei .......................................................................................................................107


Felpts ......................................................................................................................................................................... 107 Jogosultsgkezels .................................................................................................................................................... 108 Block s Page Blobok ............................................................................................................................................... 108 Tovbbi szolgltatsok ............................................................................................................................................ 109

A Blob Storage felhasznlsi mdjai.....................................................................................................110


Clszoftverek................................................................................................................................................................ 110 Azure virtulis gpek ................................................................................................................................................ 111 Httrtr ........................................................................................................................................................................ 111 StorSimple..................................................................................................................................................................... 111

Tartalomjegyzk Fejleszteszkzk ...................................................................................................................................................... 111

sszegzs........................................................................................................................................................112

8. IaaS zemeltets ........................................................................................................... 113


Windows Azure virtulis gpek kezelse PowerShell segtsgvel ...........................................113
Elnyk .......................................................................................................................................................................... 113 Elkszletek ............................................................................................................................................................... 113 Feliratkozs .................................................................................................................................................................. 114 Virtulis gpek ltrehozsa PowerShell segtsgvel .................................................................................. 115

Windows Azure virtulis gpek kezelse System Center App Controller segtsgvel .....120 Windows Azure Online Backup: ments a felhbe .........................................................................122
A System Center Data Protection Manager 2012 SP1 s az Online Backup kapcsolata ............... 123

sszegzs........................................................................................................................................................125

9. PaaS Felhszolgltatsok ............................................................................................ 127


Az Almabka Kft. nyelvfggetlen kzssgi oldala ........................................................................127
Helyi infrastruktra.................................................................................................................................................... 128 Infrastructure-as-a-Service, IaaS .......................................................................................................................... 128 Platform-as-a-Service, PaaS .................................................................................................................................. 128

Hello World, PaaS mdra ......................................................................................................................130 Munkavgz szerepkrk .........................................................................................................................136 A szerepkrk tulajdonsgai ...................................................................................................................138
A szerepkrk llapotmentesek, a terhelseloszt nem sticky ........................................................... 139 A tzfal belltsa: Endpointok ............................................................................................................................. 140 Ideiglenes fjlok trolsa: Local Storage .......................................................................................................... 142 Inicializl szkriptek: Startup Tasks .................................................................................................................... 143 Belltsok ..................................................................................................................................................................... 145 Opercis rendszer verzijnak megadsa ..................................................................................................... 145

Cloud Service-ek a felhben ....................................................................................................................146


A telepts menete .................................................................................................................................................... 146 Cloud Service-ek az Azure menedzsment portlon ..................................................................................... 155 A verzifrissts lehetsgei .................................................................................................................................. 158

A hibakeress eszkzei ..............................................................................................................................160


Hogy vigyz alkalmazsainkra az Azure? ......................................................................................................... 160 Az Azure Service Dashboard ................................................................................................................................. 161 Naplzs: Azure Diagnostics ................................................................................................................................. 162 Tvoli asztali kapcsolat: Remote Desktop ........................................................................................................ 165 IntelliTrace .................................................................................................................................................................... 166

Sklzs ............................................................................................................................................................167 sszegzs........................................................................................................................................................168

10. PaaS Storage ................................................................................................................. 169


A Table Storage ............................................................................................................................................169
Mire j a Table Storage? ......................................................................................................................................... 169 Hogyan mkdik a Table Storage? .................................................................................................................... 170

A Queue Service ...........................................................................................................................................171

Tartalomjegyzk Mire j a Queue Service? ........................................................................................................................................ 171 Hogyan mkdik a Queue Service?.................................................................................................................... 173

Az Azure Storage hasznlata ...................................................................................................................174


Felkszls az Azure Storage hasznlatra...................................................................................................... 174 A Table Storage elrse ........................................................................................................................................... 178 A Queue Service elrse .......................................................................................................................................... 183

A Storage Analytics bemutatsa.............................................................................................................187


A Storage Analytics szolgltats aktivlsa ..................................................................................................... 188 A Storage Analytics adatok elrse .................................................................................................................... 188

sszegzs........................................................................................................................................................191

11. PaaS SQL szolgltatsok............................................................................................. 193


Az SQL adatbzis a felhben ...................................................................................................................193 SQL Database szerver ltrehozsa .........................................................................................................195
Tzfalszablyok ........................................................................................................................................................... 197 Az adatbzis sklzsa ............................................................................................................................................. 199

Az adatbzis elrse s kezelse ............................................................................................................200


Egy adatbzis ltrehozsa s menedzselse ................................................................................................... 201 A hozzfrsek kezelse.......................................................................................................................................... 202 Tblk ltrehozsa s lekrdezse ...................................................................................................................... 203 Az SQL Database Management Portl .............................................................................................................. 204

SQL adatbzisok exportlsa s importlsa ....................................................................................207 BAK formtum biztonsgi ments ksztse ...................................................................................211 Az SQL Database adatbzisok elrse kliens alkalmazsokbl ..................................................214 SQL Database Data Sync ...........................................................................................................................215 sszegzs........................................................................................................................................................222

12. PaaS ptkocka-szolgltatsok ..............................................................................223


A federlt hitelests modellje .................................................................................................................223
Az autentikci feladatnak kiszervezse ........................................................................................................ 224 Szereplk az autentikcis folyamat forgatknyvben ........................................................................... 225 Nvekv komplexits, redundancia, fggsgek ......................................................................................... 225 Federation Provider ................................................................................................................................................... 226 Az Access Control Service, mint Federation Provider .................................................................................. 227 A federlt autentikci folyamatnak lpsei ................................................................................................ 228

Az ACS konfigurlsa Relying Party alkalmazsokhoz ...................................................................228


ASP.NET MVC 3 webalkalmazs integrlsa az ACS-sel............................................................................. 229

Azure Caching ...............................................................................................................................................243


Shared Caching ........................................................................................................................................................... 244 (Role-Based) Caching ............................................................................................................................................... 246

Azure Connect ...............................................................................................................................................252


Virtulis hlzat ltrehozsa Azure Connect hasznlatval ...................................................................... 253 Loklis SQL Server elrse a felhbl ................................................................................................................ 255

sszegzs........................................................................................................................................................256

13. PaaS Szolgltatsbusz ................................................................................................ 257

Tartalomjegyzk

ttekints ........................................................................................................................................................257 A Service Bus koncepcionlis modellje ................................................................................................258 Szolgltats nvterek s cmzs .............................................................................................................258 Szolgltats nvtr ltrehozsa ..............................................................................................................259 A Service Bus programozsi modellje ..................................................................................................260 Service Registry .............................................................................................................................................261 Service Bus Relay ..........................................................................................................................................263
Relay ktsek .............................................................................................................................................................. 264 Hibrid kapcsolat ......................................................................................................................................................... 268 Egyirny zenetklds s esemnyek ............................................................................................................. 269 Rendszerkapcsoldsi md ................................................................................................................................... 270

Service Bus Messaging ...............................................................................................................................270


Az zenetek felptse ............................................................................................................................................. 271 zenetsorok hasznlata .......................................................................................................................................... 274 Tmk s feliratkozsok .......................................................................................................................................... 277 zenetek korrelcija .............................................................................................................................................. 280

ACS integrci s zenetbiztonsg .......................................................................................................281 sszegzs........................................................................................................................................................282

14. PaaS Mobile Services ................................................................................................. 283


Szerveroldal egyszeren ............................................................................................................................283
Mikor vlaszd a Mobile Services komponenst? ............................................................................................. 284 A Mobile Services felptse, sajtossgai ...................................................................................................... 284

A Mobile Services szolgltatsai ............................................................................................................286


Hasznlatbavtel ........................................................................................................................................................ 287 Adminisztrci, belltsok, monitorozs ........................................................................................................ 288 A kliensalkalmazs ltrehozsa ............................................................................................................................ 289 Strukturlt adattrols a Mobile Services-ben............................................................................................... 289 Felhasznlk autentikcija ................................................................................................................................... 295 Push Notification rtestsek kldse ............................................................................................................... 299 E-mail klds a Mobile Services-bl .................................................................................................................. 302

A pldaalkalmazs mkdse .................................................................................................................303 sszegzs........................................................................................................................................................304

15. PaaS/SaaS Web Sites.................................................................................................. 305


Az Azure Web Sites szolgltats ttekintse .....................................................................................305 Fejleszteszkzk hasznlata ..................................................................................................................307
Microsoft WebMatrix ............................................................................................................................................... 307

Azure Web Sites hasznlata Mac OS X opercis rendszeren ....................................................311 Monitorozs s sklzs ............................................................................................................................315
Monitorozs ................................................................................................................................................................. 315 Sklzs ......................................................................................................................................................................... 316

sszegzs........................................................................................................................................................318

16. razs ................................................................................................................................. 319


Az Azure ltalnos razsi elvei ..............................................................................................................319

10

Tartalomjegyzk

Fontosabb Azure szolgltatsok razsa ............................................................................................320


A mindentt jelenlv adatforgalmi dj ............................................................................................................ 320 IaaS virtulis gpek (Virtual Machines) razsa ............................................................................................. 321 Licencek ......................................................................................................................................................................... 322 PaaS virtulis gpek (szerepkr-pldnyok) razsa ................................................................................... 322 Azure Storage (Blob, Table, Queue) razsa ................................................................................................... 323 SQL Database (a korbbi SQL Azure) razsa ................................................................................................ 325 Web Sites razsa ...................................................................................................................................................... 325

Elfizetsi konstrukcik .............................................................................................................................326


90 napos prbavltozat (Free Trial) .................................................................................................................... 326 Pay-As-You-Go ........................................................................................................................................................... 327 Commitment ................................................................................................................................................................ 327 Member Offers ............................................................................................................................................................ 327 Enterprise Agreement .............................................................................................................................................. 327

Termktmogatsi konstrukcik ............................................................................................................327 A szmlzsi portl ......................................................................................................................................328


Elfizetsek regisztrcija....................................................................................................................................... 328 Kltsi limit (Spending Cap) eltvoltsa .......................................................................................................... 328 Elfizets lemondsa ................................................................................................................................................ 329 Hasznlati adatok megtekintse, letltse ...................................................................................................... 330 Szmlzs s fizetsi lehetsgek ....................................................................................................................... 330

sszegzs........................................................................................................................................................331

17. rtkests .........................................................................................................................333


Ki s mirt vesz felht? ..............................................................................................................................333
Sajt adatkzpontot, informatikai rendszert hasznl vllalatok ........................................................... 333 Szoftverfejleszt cgek ............................................................................................................................................ 334 Informatikai szolgltatsokat nyjt cgek ..................................................................................................... 334

A Windows Azure rtkestse................................................................................................................335 A Windows Azure-ra pl szoftverszolgltatsok rtkestse ...............................................335


zleti modellek ........................................................................................................................................................... 336 Partnerprogramok ..................................................................................................................................................... 337 Piacterek ........................................................................................................................................................................ 338

A Windows Azure-hoz kapcsold informatikai szolgltatsok rtkestse .......................339


zleti modellek ........................................................................................................................................................... 339 Partnerprogramok ..................................................................................................................................................... 339

sszegzs........................................................................................................................................................339

Utsz ...................................................................................................................................... 341

11

Elsz

Elsz
Up in the Sky... A felh mra az informatika egyik leginkbb hype-olt kifejezsv vlt. Ennek megfelelen jogos a krds, hogy mirt olyan fontos, s hogyan vltoztatja meg az ipargunkat, ha egyltaln trtnik brmi ilyesmi. Gyantom, azrt kaptam felkrst az elsz megrsra, hogy az zleti s tartalmi szempontokat kpviseljem, hiszen szakmai plym elssorban az zleti terlethez kt. Az elmlt 12 vet a telekommunikciban tltttem, ahol azt lttam, hogy hogy a high-tech, high-end megoldsok demokratizldnak, mindenki szmra elrhetv vlnak. Szinte biztosra veszem, hogy az informatika is hasonl ton jr, ugyanilyen jelensg figyelhet meg az IT vilgban is. Vegynk egy pldt, az online tartalmat. Mindannyian tani voltunk annak, ahogy az elmlt kt vtizedben a szmtstechnika fejldsvel egyre nagyobb s nagyobb szerepet kapott az interneten megosztott mdiatartalom. Termszetesen ez nem lehetsges komoly informatikai httrkapacits nlkl, amit sokig csak nagy cgek engedhettek meg maguknak. A felh a fejlds kvetkez lpcsfoka, hiszen ezt a kapacitst brki szmra hozzfrhetv teszi. Az online mdia pldjnl maradva: a felh megknnyti a fogyasztk s az zleti felhasznlk szmra a tartalom (fjlok, videk, adatok) ellltst, kzzttelt, szinkronizlst mobil s nem mobil eszkzkre. Ugyanakkor stratgijuk tgondolsra knyszerti a mdia ksztsre s rtkestsre szakosodott vllalatokat s szervezeteket, hiszen megvltoztatja az idig mkd zleti modelleket. Gondoljunk pldul arra, hogy mg a hagyomnyos TV-msorokat stdikban gyrtjk s kzpontilag sugrozzk, addig a a felhben fut videmegoszt oldalakon mindenki magnak vlaszthatja ki a nznivalt, a tartalmat a felhasznlk tltik fel, a nzettsgszmok pedig gyakran mr vetekszenek a kereskedelmi TV -msorokval. Hogy egy msik pldt emltsek: idig egy munkavllal felvtelnl biztostani kellett egy fizikai helyet, egy desktopot, az ezeket kiszolgl infrastruktrt s szemlyzetet. Ennek nagyrszre ma mr nincs szksg. Irodnk httrkiszolglit nhny kattintssal brelhetjk a felhbl is, az asztali gpek helyett pedig hordozhat eszkzket hasznlhatunk gy, hogy mindenkzben a felhasznli lmny nem romlik, s mg kltsget is sprolhatunk. Itt is ltszik egybknt, hogy a felh informatikra gyakorolt hatst tovbb ersti a mobileszkzk ltvnyos fejldse s terjedse. Nagyon egyetrtek Glenn ODonnell-lel, a Forrester elemzjvel, aki azt mondta: cloud plus mobile is a classic more than the sum of its parts combination, vagyis a felh s a mobil egytt nyer kombincit kpez. Br a kltsgcskkents s hatkonysgnvekeds grete nagy vonzer a vllalatok szmra, hossz az t a felhbe. Sok a krds pldul az adatvdelemmel s a biztonsggal kapcsolatban. Ezek rthet agglyok s fontos trgyalni ket. Egyrszt a felhszolgltatk szmra kulcsfontossg a bizalom, gy mindent megtesznek az ellen, hogy az adatok srljenek, megsemmisljenek, vagy illetktelenek kezbe kerljenek. Msrszt az is j hr, hogy egy professzionlisan felptett, nagymret adatkzpontban knnyebb s egy felhasznlra nzve jval olcsbb is nagy megbzhatsg s biztonsgos krnyezetet kialaktani, mint egy helyi szerverteremben. Vgezetl mg egy pr sz arrl, hogy mit jelent a felh a Microsoft szmra. A Microsoft trtnete els szakaszban alapvet fontossg termkeket gyrtott a professzionlis szoftverfejlesztk s zemeltetk szmra. Nem tlzs azt lltani, hogy a Windows opercis rendszerek, a Word szvegszerkeszt vagy a Visual Studio fejlesztkrnyezet olyan nlklzhetetlen kellkei lettek a modern letnek, mint a villany vagy a vezetkes vz. Az informatika azonban egy korszakhatrhoz rt. Lezrult a rgi, s elkezddtt valami j. A korszakvlts hatssal van a Microsoft mrkra, s a Microsoft is hatssal volt arra, hogy a korszakvlts bekvetkezz en. A cg talakult az utbbi vtizedben: az informatika szrke eminencisbl folyamatosan vltozott t tartalmak, szolgltatsok s kpessgek mrkjv. 13

Elsz A Microsoft ma mr devices and services company-knt hatrozza meg nmagt, azaz nem a hagyomnyos szoftverlicenc-rtkests irnyba megy, hanem felhben nyjtott szolgltatsokat s az azokat fogyaszt kszlkeket knl. Gondoljunk csak az Xbox-ra, a jtkkonzolra s szrakoztatkzpontra. Vagy a Windows Phone-ra s Windows 8-ra, a Skype-ra vagy az Office 365-re. Az informatika vltozsa nem csak a Microsoftra, de az iparg minden tovbbi szerepljre is kihat. Neked is fel kell kszlnd a felh vilgra. Ebbl a knyvbl megtanulhatod, hogyan kszthetsz sajt felhszolgltatsokat, illetve hogyan kltztetheted fel vllalatod infrastruktrjnak megfelel elemeit a Windows Azure-ba! Grsz Judit a Microsoft Magyarorszg fejlesztsi s platform-evangelizcis zletgnak vezetje Budapest, 2013. februr

14

1. Mi a felh?

1. Mi a felh?
Ebben a fejezetben az albbi tmkat ismerheted meg: Az informatika fl vszzados fejlds eredmnyekppen eljutott odig, hogy kzmknt is ignybe lehessen venni ezt hvjk szmtsi felhnek. Megtudhatod, mit jelent a felh a gyakorlatban, mitl lesz mretgazdasgos, milyen hasznlati mintknl jr a legtbb elnnyel az alkalmazsa, s hogyan kpzeld el az letet egy tbb-brls informatikai krnyezetben. Nem minden informatikai szolgltatsra mondhatjuk r, hogy felh, ezt a minstst ki kell rdemelni! Az Egyeslt llamok szabvnygyi hivatala pldul t pontban foglalja ssze a felh ismrveit itt elolvashatod ket. A felht tbbflekppen be lehet vezetni, a f szempont, hogy ki a konkrt informatika i krnyezet, ami a szolgltatst nyjtja. Megismerheted a hrom leggyakoribb bevezetsi modellt: a privt, a nyilvnos s a hibrid felht. A felh szolgltatsai tbb szinten is ignybe vehetk, a klnbsg elssorban abban jelentkezik, hogy mekkora felelssget vesz t a felhszolgltat az gyfltl. ttekintheted a fbb szolgltatsmodelleket: az infrastruktra-, a platform- s a szoftverszolgltatst.

Az IT mint kzm1
Aki falun ntt fel, emlkezhet r, hogy a legtbb portn ktbl hztk a vizet a fzshez, mosshoz, mosakodshoz, ntzshez. A vzvezetk kiptse drga lett volna, mint ahogy az ezen keresztl rkez vz is. Fval s sznnel ftttnk, a kzponti s fknt a tvftsnek hrt sem hallottuk. De vlaszthatunk urbnusabb tmkat is. Kis noteszba rtuk bartaink, ismerseink telefonszmt, ezt lapoztuk fel, ha valakit fel akartunk hvni s persze j nhny szmot betve tudtunk. Autnkban trkpeket tartottunk, az t szlre hzdva, az utcatblkat s az atlaszt bngszve prbltunk elig azodni, ha ismeretlen helyre vezetett az utunk. Ez a vilg nagyrszt mr a mlt. A legtbb helyen van vezetkes vz s csatorna, nem szorulunk sajt ktra s emsztgdrre. Gzzal vagy rammal ftnk, a fatzelses konyhai tzhelyek s cserpklyhk legfeljebb a laks dszei. Mobiltelefonunkban tbb szz telefonszmot (s mellette e -mailcmet s ms adatot) trolunk, gyakran kzeli hozztartozinkat sem tudjuk fejbl felhvni, mert elfelejtettk vagy eleve meg sem jegyeztk a szmukat. Az ton a GPS vezet bennnket, s abban is segt, ha benzinkutat vagy kerl tvonalat szeretnnk tallni. Mi hozta ezt a vltozst? Nos, elssorban a kzmvek fejldse. A szolgltatsok mindig s szinte mindenhol rendelkezsre llnak, s megbzhatan mkdnek. Folyamatosan van ram, vz, gz, trer, soha nem kell hossz kimaradsokkal szmolnunk, gy szksgtelen alternatv infrastruktrt (sajt genertor, kt, klyha) fenntartanunk. A szolgltatsok knyelmes fizetsi konstrukciban s megfizethet ron rhetk el. Havon ta fizetnk rtk, egyszerre mindig csak egy relatve alacsony sszeget, amely arnyos a fogyasztsunkkal. Ezzel elkerljk a nagy sszeg beruhzsokat, amiket anyagilag nem is felttlenl engedhetnnk meg magunknak, egyben kpesek vagyunk szablyozni kltsgeinket (pldul azzal, hogy kevesebbet fogyasztunk).

Az alfejezet szvegnek mdostott vltozata megjelent az rgus Magazin 2012/3. szmban. 15

1. Mi a felh? A fejlds az infokommunikcis szektorban is megfigyelhet. Az internet megvltoztatta azt, ahogy az informcikat elrhetv tesszk msok szmra: a vllalatok rgen nyomtatott anyagokra s a hagyomnyos postra, ksbb a telefaxra tmaszkodtak, ma viszont elektronikus dokumentumokat kldenek e-mailben. Mg jellemzbb, ha a kommunikci formit vizsgljuk: a sajt telefonkzpont s a vllalati levelezrendszer mellett (s sokszor mr helyett) ott a Skype s a Gmail vagy a Hotmail. Az ok ugyanaz, mint a vezetkes vz s a telefonnotesz esetben: a szolgltatsok rendelkezsre llnak, s kltsghatkonyan ignybe vehetk, clszer teht azokat hasznlni ahelyett, hogy felesleges beruhzsba kezdennk. Az informatikban kln nevet is kapott a szp j vilg: cloud computing, azaz szmtsi felh vagy egyszeren csak felh a neve annak a megkzeltsnek, amikor a szmtstechnikai erforrsokat (pl. szmtgpeket, trterletet) az interneten keresztl, IT-kzmcgektl vesszk ignybe. Ezt a fejldsi irnyt azonban nem mindenki fogadja felhtlen rmmel (annak idejn bizonyra a ktfrk s a noteszgyrtk sem lelkesedtek). Az iparg egyes szerepli, elssorban a vllalatok informatikai rendszereit zemeltet szakemberek attl tartanak, hogy cskken az ltaluk vgzett munka rtke, s akr el is veszthetik az llsukat. Szgezzk le: jl kpzett informatikusokra mindig szksg lesz, a szmtsi felh egyszeren csak egy jabb megkzelts s eszkzkszlet az IT-feladatok elvgzsre! rdemes teht alaposan megismernnk!

Mretgazdasgossg2
A kzm ltalban olcsbb, mint az egyedileg kiptett szolgltats, ennek elsdleges oka a mretgazdasgossg (angol nevn economies of scale). A mretgazdasgossg azt jelenti, hogy nagyobb mennyisgben szinte brmit kedvezbben szerezhetsz be, pthetsz ki, s tarthatsz fenn, mint ha minden egyes gyfl szmra sajt krnyezetet hozol ltre. A mretgazdasgossg az informatikban sokflekppen jelentkezhet, a legegyszerbb plda a szmtsi kapacits nvelse ezt lthatod az 1-1 brn.

Az alfejezet szvegnek s illusztrciinak egy rsze a Microsoft The Economics of the Cloud (http://www.microsoft.com/en-us/news/presskits/cloud/docs/The-Economics-of-the-Cloud.pdf) cm tanulmnyra pt. 16

1. Mi a felh?

1-1 bra: A szmtsi kapacits kltsge nagygpes, gyfl/kiszolgl s felh alap rendszerekben

A szmtsi kapacits (milli mvelet msodpercenknt, MIPS) nvelsvel cskken az egy mveletre vettett kltsg, de ez a nagygpes (mainframe) s az gyfl/kiszolgl (client-server) modell esetn csak egy adott szintig igaz, utna a cskkens lelassul, majd megll. A felh ( cloud) azonban mskpp viselkedik mindjrt megltod, mirt.

Energiakltsgek
Egy vllalati adatkzpont rengeteg villamos energit hasznl, az energiakltsg egyes felmrsek szerint akr a teljes birtoklsi sszkltsg (Total Cost of Ownership, TCO) 15-20%-a is lehet. Az energiakltsgek cskkentsnek szmos mdja van, az els a hatkonysg nvelse. Az ipargban gyakran hasznlt mrszm a PUE (Power Usage Effectiveness, azaz az elektromos energia hasznlatnak hatkonysga), illetve ennek szzalkban megadott reciprok rtke, a DCiE (Data Center Infrastructure Efficiency, azaz az adatkzpont infrastruktrjnak hatkonysga). A PUE kiszmtsi mdja a kvetkez: =

A Total Facility Power az adatkzpont teljes elektromos fogyasztsa ezt a szmot mutatja az pletben felszerelt fogyasztsmr, s erre alapozva szmlz a helyi elektromos mvek. Tartalmazza az IT -eszkzk fogyasztsn tl az plet htst-ftst, vilgtst, a biztonsgi berendezsek ramfelvtelt s minden ms elektromosenergia-felhasznlst. Az IT Equipment Power kizrlag az informatikai eszkzk (kiszolglk, adattrols, telekommunikcis berendezsek) fogyasztst sszegzi. A PUE idelis esetben 1, a valsgban ennl csak nagyobb lehet. Egy hagyomnyos vllalati adatkzpont vagy szerverterem PUE-rtke 2 s 3 kz esik ez bizony komoly extra kltsgeket jelent! A nagy felhszolgltatk adatkzpontjai ennl jval hatkonyabbak, nluk ez az rtk ltalban 1,2 -tl 1,5-ig terjed. Az energiakltsgek cskkentsnek msodik mdja a villamos energia beszerzsi rnak cskkentse. Egy tipikus vllalati adatkzpont az elektromos mvek szemszgbl nzve csak egy kzepes mret fogyaszt, az adatkzpontot zemeltet vllalat a szoksos piaci rat fizeti. A felhszolgltatk azonban szzezres szerverparkot zemeltetnek, nagybani ramvsrlnak szmtanak, gy jobb az alkupozcijuk, s kedvezbb rat kaphatnak.

17

1. Mi a felh? jabb fontos szempont az adatkzpont fldrajzi elhelyezkedse. A legtbb vllalat a sajt telephelyn alaktja ki szervertermt, a felhszolgltatk viszont olyan orszgot (s azon bell rgit) vlasztanak, amelyben a kltsgek kztk az elektromos energia ra a legalacsonyabbak.

zemeltetsi kltsgek
A felh jelentsen cskkenti az zemeltetsi kltsgeket azzal, hogy szmos ismtld feladatot automatizl. Egy hagyomnyos vllalati adatkzpont rendszergazdja kb. szz kiszolglt kpes menedzselni, egy felhszolgltat adatkzpontjban ez a szm tbb tzezerre rg. Az i nformatikai munkatrsak gy a szerverek napi szint karbantartsa helyett magasabb szint tevkenysgekre (j IT szolgltatsok ltrehozsra, felhasznli ignyek gyorsabb s eredmnyesebb kiszolglsra) sszpontosthatnak.

Biztonsg s megbzhatsg
A nyilvnos felhvel szemben megfogalmazott ellenrvek legtbbszr a biztonsgi kvetelmnyekre hivatkoznak. Pedig a mretgazdasgossg rvn knnyebb biztonsgos s magas rendelkezsre lls rendszert kialaktani a felhben, mint egy hagyomnyos adatkzpontban. A megfelel biztonsg s megbzhatsg megteremtse ugyanis magas, de fix kltsggel (clszoftverek vsrlsa, biztonsgi szakrtk alkalmazsa) jr. Ezt a kltsget egy sajt adatkzpontot mkdtet vllalat egyedl knytelen vllalni, a felhszolgltat viszont elosztja sok ezer elfizetje kztt.

Vsrler
A nagy adatkzpontok tzezrvel vsrolnak kiszolglkat s ms informatikai eszkzket, radsul mindssze nhny konfigurcit hasznlnak. gy akr 30%-kal is kevesebbet fizetnek a szerverekrt, mint egy tipikus vllalat.

Hasznlati mintk
Az elzekben lttuk, hogy a felh gazdasgosabban zemeltethet, mint a hagyomnyos adatkzpont. De van ennl komolyabb rv is az IT kzmknt trtn felhasznlsa mellett: bizonyos hasznlati s terhelsi mintk csak jelents (s felesleges) kltsgek rn vagy pedig egyltaln nem szolglhatk ki vllalati krnyezetben. Az 1-2 brn ngy elterjedt hasznlati minta lthat, amelyekre a felh a j (st, bizonyos esetekben az egyetlen rtelmes) megolds.

18

1. Mi a felh?

1-2 bra: A felh ltal tmogatott terhelsi mintk

Kiszmthat cscsterhels
Szmos vllalat zletmenete szezonlis. A turizmus nyron virgzik, kivve az alpesi orszgokat, ahol tlen. A kiskereskedelemben a karcsonyt megelz idszak hozza az ves forgalom (s terhels) tlnyom rszt. A magnszemlyek mjusban valljk be a szemlyi jvedelemadt. Az egyetemistk sszel kezdik meg tanulmnyaikat. Az ezeket a terleteket kiszolgl informatikai rendszerek teht egyenltlen terhelsnek vannak kitve. A hasznlati mintt felismer, felelsen gondolkod informatikai vezet kt lehetsg kzl vlaszthat: Informatikai rendszert a vrhat legmagasabb terhels kiszolglsra mretezi. A rendszer a cscsterhels idszakban biztostja a szksges kapacitst, a fennmarad idben (lehet, hogy 12 hnapbl 11-ben) viszont szinte kihasznlatlanul ll. A rendszert a cscsterhelsen kvli idszak kiszolglsra tervezi, a cscsterhels idejn pedig tovbbi informatikai kapacitst von be. Az els opci pazarl, a msodik pedig igazbl csak a felh megjelensvel vlt elrhetv.

Nem kiszmthat cscsterhels


A kiszmthat zletmenet vllalatok letben is bekvetkezhetnek vratlan cscsok. Vals letbl vett plda: egy repltr folyamatosan kzzteszi honlapjn az indul s rkez replgpek listjt s az esetleges ksseket a webkiszolgl terhelse teljes mrtkben kiszmthat. Egyszer csak kitr egy vulkn a vilg msik feln, s a lgkrbe kerl hamu miatt a lgi forgalom lelassul, nhol teljesen lell. Az tlagos clkznsg tbbszrse ltogat el jra s jra a repltr weblapjra, a kiszolgl egy ideig brja az egy nagysgrenddel megntt terhelst, majd lell. Az informatikai vezetnek mg nehezebb a dolga, mint a kiszmthat cscsterhelsnl: nem tud a legmagasabb terhels kiszolglsra mretezni, mert fogalma sincs rla, hogy az mekkora. Marad az informatikai kapacits bevonsa igny szerint, azaz a felh.

Idszakos terhels
Kszen vannak a szerverek, amiket krtem?

19

1. Mi a felh? Mg nem is mondtad, hny gpre lesz szksgetek! Legalbb kettre, de az is lehet, hogy ngyre majd a szolgltats indtsakor pontostjuk. rtem. Mikor szeretntek indulni? Nemsokra, majd szlunk. s meddig kellenek a gpek? Mg nem tudjuk, jelezzk, ha vgeztnk. Sok informatikus rmlma egy ilyen beszlgets. A vllalat elindt egy szolgltatst, ami meghatrozatlan ideig fut majd. Hidegtartalkknt rendelkezsre ll szerverek nlkl csak egyflekppen menedzselhet a helyzet: ha a cg a felhbl veszi a szksges extra kapacitst.

Gyors nvekeds s cskkens


Ha egy szolgltats vratlanul beindul, s mleni kezdenek a megrendelsek, az a legkellemesebb gondok egyike a vilgon. Ha azonban a szolgltats mgtt egy informatikai ren dszer dolgozik, nagyon gyorsan a kapacitsa vgre rhet. Ez klnsen nagy gond a kezd vllalkozsoknl, ms szval startupoknl: a tkjk korltozott, a rendszerket nem tudjk bvteni, a vevket azonban nem akarjk elveszteni. Ilyenkor jl jn a felh. A kapacitsa az egyes felhasznlk szempontjbl vgtelen, a vllalkozs teht szabadon bvtheti rendszert. Az erforrsokat nem vsrolja meg, csak egy hasznlattal arnyos dj fejben ignybe veszi addig, amg szksg van rjuk. A gyors felfutst gyakran kveti egy hasonlan meredek visszaess is: a trsasgi hlzatok ltal felkapott online jtk kimegy a divatbl, tadja a helyt az jabb alkalmazsnak. Ha a vllalkozs a felfut kereslet kielgtse rdekben IT-eszkzket vsrolt, azok most a nyakn maradnak. Ha csak brelte ket a felhbl, akkor viszont nem veszt semmit.

Tbb-brls rendszerek3
A mretgazdasgossg s a csak a felh ltal kiszolglhat hasznlati mintk mellett ltezik egy harmadik tnyez is, ami a felh gazdasgossgt altmasztja: az n. tbb-brls (multi-tenant) mkds. A tbb-brls rendszerek lnyege az, hogy egy adatkzpont egyszerre tbb brlt (gyfelet, vllalatot) szolgl ki. A brlk rendszerei, virtulis gpei, adatai, alkalmazsai egymstl elvlasztva , de ugyanabban a virtualizlt krnyezetben tallhatk, ugyanazokat az alapszint informatikai erforrsokat veszik ignybe, gy azok kihasznltsgnak szintje sokkal magasabb, mint egy hagyomnyos adatkzpontban.

Szolgltats idben eltolt hasznlata


Egy globlis gyflkrrel rendelkez szolgltats felhasznli klnbz napszakokban terhelik a rendszert: amikor az eurpaiak lefekdtek, megjelennek az amerikaiak, ket pedig a tvol -keletiek kvetik. Ez lthat az 1-3 brn.

Az alfejezet szvegnek s illusztrciinak egy rsze a Microsoft korbban mr hivatkozott The Economics of the Cloud (http://www.microsoft.com/en-us/news/presskits/cloud/docs/The-Economics-of-the-Cloud.pdf) cm tanulmnyra pt. 20

1. Mi a felh?

1-3 bra: A Bing idben eltolt hasznlata

Iparganknt eltr cscsterhels


A klnbz ipargak az vnek nem ugyanabban az idszakban aktvak: a nyr az idegenforgalom legfontosabb vadja, ugyanakkor uborkaszezon a kiskereskedelemben, ami inkbb karcsony eltt fut fel. Ha a klnbz ipargak rendszerei egy adatkzpontban futnak, terhelsi mintik kiegsztik egymst, egyttes kiszolglsukra pedig kevesebb erforrs is elg ez lthat az 1-4 brn.

1-4 bra: Kiskereskedelmi s adzsi rendszerek idben eltolt terhelse

Erforrsok eltr intenzits hasznlata


A klnbz szolgltatsok eltr mrtkben veszik ignybe az informatikai erforrsokat. Az e -mail sok lemezmvelettel jr, mg a keress inkbb CPU -intenzv. Ha a klnbz szolgltatsok egy gpen futnak, erforrs-hasznlatuk kiegyenltdik ez lthat az 1-5 brn. (Termszetesen a felhben is kialakthatsz olyan krnyezetet, ami csak a Te vllalatodat szolglja ki. Ez kltsgesebb, de nem kell msokkal osztoznod az erforrsokon.)

21

1. Mi a felh?

1-5 bra: A klnbz erforrsokat eltr mdon hasznl szolgltatsok kiegsztik egymst

Mitl klnleges a felh?


Most, hogy idig eljutottl, taln mr felmerlt benned a krds: a felh egyszeren csak egy virtualizlt, automatikusan menedzselt adatkzpont, vagy vannak olyan tulajdonsgai, amelyek egy msik szintre emelik? A vlaszhoz olvasd el, hogyan hatrozza meg a felht az Egyeslt llamok szabvnygyi hivatala, a National Institute of Standards and Technology4!

Igny szerinti, nkiszolgl hasznlat


A fogyaszt egyoldalan ignybe vehet szmtsi kapacitst, pldul gpidt s hlzati trterletet. Ez a folyamat a szolgltat munkatrsainak beavatkozsa nlkl, automatikusan vgrehajthat.

Online elrhetsg
A szmtsi kapacits hlzaton keresztl rhet el, szabvnyos hozzfrsi mechanizmusok hasznlatval, tetszleges vkony s vastag kliensrl (pl. mobiltelefon, tblagp, notebook, munkalloms).

Nagy mennyisg felhalmozott erforrs


A szolgltat felhalmozott erforrsai tbb gyfelet szolglnak ki tbb -brls modellben, a fizikai s virtulis erforrsok igny szerinti, dinamikus hozzrendelsvel. A szolgltats helyfggetlen abban az rtelemben, hogy az gyfl nem hatrozhatja meg, esetleg nem is ismeri a hasznlt erforrsok pontos helyt, megszabhatja ugyanakkor magasabb szint elhelyezkedsket (pldul az orszgot, llamot vagy adatkzpontot). Pldk a felhalmozott erforrsokra: trterlet, feldolgozsi kpessg, memria, hlzati svszlessg.

Gyors s rugalmas sklzhatsg


A szmtsi kapacits rugalmasan lefoglalhat s felszabadthat, esetenknt automatikusan is, hogy az ignyeknek megfelelen gyorsan sklzdjon kifel s befel. Az gyfelek szmra az elrhet kapacits gyakran vgtelennek tnik, s brmikor, brmekkora mennyisgben ignybe vehet.

The NIST Definition of Cloud Computing (http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf). 22

1. Mi a felh?

Tervezhet s kvethet kltsgek


A felh automatikusan ellenrzi s optimalizlja az erforrsok felhasznlst. Az egyes szolgltatsoknak megfelel jellemzk (pl. trterlet mrete, feldolgozsi kpessg, svszlessg, aktv felhasznlk szma) segtsgvel mri azok ignybevtelt. Az erforrsok felhasznlsa kvethet, vezrelhet s kimutathat mind a szolgltat, mind pedig a szolgltats fogyasztja szmra.

Ki a felh?
Az elz alfejezetbl lthatod, hogy egy vllalati adatkzpont nmagban mg nem felel meg teljes mrtkben a felh defincijnak. Biztosthatja az igny szerinti, nkiszolgl hasznlatot, az online elrhetsget, valamint a kltsgek tervezst s kvetst. A felhalmozott erforrsok szma azonban a vllalat anyagi lehetsgeitl fgg, a szinte vgtelen sklzs kpessge pedig nyilvnvalan nem teljesl. Ettl persze egy vllalatnak mg lehet sajt felhje, hasznlhat nyilvnos felht, st a kett kombincijt is ezek az n. bevezetsi modellek.

Privt felh
A privt felh egyetlen vllalat kizrlagos hasznlatra ltrehozott, felh alapon mkd informatikai krnyezet, amelyet tbb fogyaszt (tipikusan a vllalat szervezeti egysgei, zletgai) hasznl. A hangsly a kizrlagos hasznlatra kifejezsen van, a privt felh tulajdonosa s kezelje lehet a vllalat, egy partner vagy ezek kombincija. A privt felh adatkzpontja llhat a vllalat telephelyn, de brhol mshol is. A vllalati adatkzpontok a virtualizci, a megfelel mdszertanra pl, automatizlt szolgltatsfelgyelet, egy nkiszolgl portl, valamint az erforrs-hasznlat mrse rvn privt felhv vlhatnak.

Nyilvnos felh
A nyilvnos felh a nyilvnossg (zleti s magnfelhasznlk) kzs hasznlatra ltrehozott, felh alapon mkd informatikai krnyezet. Tulajdonosa s zemeltetje (a felhszolgltat) lehet gazdasgi vllalkozs, egyetem, kormnyzati szerv vagy ezek kombincija. A nyilvnos felh adatkzpontjai a felhszolgltat telephelyein llnak.

Hibrid felh
A hibrid felh a privt s nyilvnos felh egyttes hasznlatnak eredmnye. A kt sszetev egymstl fggetlen marad, de a kztk lv kapcsolat rvn kpesek az adatok s alkalmazsok mozgatsra, kiterjesztsre. A hibrid felht leggyakrabban az albbi kt clra hasznljk: Adatok szegmentlsa. Az adott orszgban rvnyes adatvdelmi s ipargi elrsok korltozhatjk a nyilvnos felhben trolt adatok krt. Ilyenkor rdemes a megvalstani kvnt alkalmazst s az ltala kezelt adatokat szegmentlni, a korltozstl mentes adatok mehetnek a nyilvnos felhbe, az rzkeny adatok pedig maradnak a privt felhben vagy a vllalati adatkzpontban. Extra kapacits a felhbl. Egy meghatrozott szintig a privt felh vagy a vllalati adatkzpont erforrsai (pldul virtulis gpek) ltjk el a berkez krseket. Amikor a terhels meghaladja ezt a szintet, j erforrsok jnnek ltre a nyilvnos felhben, s a privt felh erforrsaihoz csatlakozva megkezdik a krsek kiszolglst.

Mit nyjt a felh?


A felht teht tbbflekppen bevezetheted de hogyan tudod ignybe venni a kpessgeit? A lehetsges szolgltatsmodellek elssorban abban klnbznek, hogy a felht alkot informatikai rendszer

23

1. Mi a felh? sszetevinek mekkora rszt veszi t a szolgltat az gyfltl. A leggyakoribb vltozatokat az 1 -6 brn lthatod.

1-6 bra: A felh szolgltatsmodelljei

Infrastruktra-szolgltats (IaaS)
A felh legals szintje az n. infrastruktra-szolgltats (Infrastructure-as-a-Service, IaaS). Amikor infrastruktra-szolgltatst brelsz, a felhszolgltat rendelkezsedre bocstja informatikai infrastruktrjnak (hlzat, adattrolsi lehetsg, virtulis gpek) egy rszt, amin sajt rendszere ket, alkalmazsokat pthetsz ki s hosztolhatsz. Az infrastruktra-szolgltats elssorban a kvetkez feladatok megoldst segti: Adatkzpont kapacitsnak bvtse. Ha akr ideiglenes, akr tarts jelleggel nagyobb informatikai kapacitsra van szksged, mint amekkort sajt adatkzpontod biztostani tud, eszkzbeszerzs helyett brelhetsz virtulis gpeket, trterletet s ms szolgltatsokat a felhbl, gy kisebb s olcsbb helyi krnyezetre lesz szksged. zleti alkalmazsok kihelyezse. Ha egy zleti alkalmazs esetben nem jelent stratgiai elnyt, hogy sajt adatkzpontodban futtatod, tviheted az alkalmazst s a hozz szksges egyb szoftvereket futtat virtulis gpeket a felhbe, gy megtakarthatod a helyi krnyezet kltsgeit. Adattrols. Ha trterletre van szksged archivls, biztonsgi mentsek vagy ms, akr ideiglenes adattrolsi feladatok megoldshoz, feltltheted az adatokat a felhbe, ezzel magasabb rendelkezsre llst rsz el, s cskkentheted a helyi krnyezet kltsgeit. Az infrastruktra-szolgltats jelents zemeltetsi terhet vesz le a vlladrl, s komoly megtakartst tesz lehetv. A felhszolgltat a megfelel (ltalban hasznlat alap) djazs fejben tvllalja a hlzat kiptst, a magas rendelkezsre lls adattrol krnyezet kialaktst, a szerverek megvsrlst, karbantartst, az alapszoftverek (opercis rendszerek), esetenknt egyb szoftverek licenceinek megvsrlst, kvetst, a virtualizlt szerverkrnyezet kialaktst s zemeltetst, valamint a redundns, ramkimarads ellen is vdett energiaelltst. Azzal, hogy tengeded a fentiekrl val gondoskodst, egyben lemondasz arrl, hogy meghatrozd az infrastruktra sszetevit. A felhszolgltat dnt pldul a kvetkezkrl: a fizikai gpek tpusa, konfigurcija, a vlaszthat virtulisgp-konfigurcik (processzormagok szma, memria mrete), a virtulis gpekre vlaszthat opercis rendszerek gyrtja, verzija.

24

1. Mi a felh? Fontos, hogy az IaaS csak az informatikai rendszer alapvet sszetevit biztostja! Tovbbra is neked kell gondoskodnod pldul a kvetkezkrl: az opercis rendszer, alkalmazsfuttat krnyezetek s egyb kztes szoftverek karbantartsa, javtcsomagok teleptse, az adatok biztonsgi mentse s visszalltsa, a sajt alkalmazsok kezelse.

Platformszolgltats (PaaS)
A felh kvetkez szintje az n. platformszolgltats (Platform-as-a-Service, PaaS). Amikor platformszolgltatst brelsz, a felhszolgltat rendelkezsedre bocst egy, a sajt infrastruktrja fltt mkd platformot, amin alkalmazsokat telepthetsz s zemeltethetsz, illetve adatokat trolhatsz s kezelhetsz. A platformszolgltats elssorban a kvetkez feladatok megoldst segti: j felhszolgltatsok kifejlesztse. A felhplatform az online alkalmazsok felhasznlkhoz trtn eljuttatsnak j mdja. Ha zleti, trsasgi vagy egyb, akr magncl alkalmazst fejlesztesz, aminek hosztolshoz nem akarsz sajt hardvert s szoftvert vsrolni, ugyanakkor biztostani szeretnd a szles kr elrhetsget s a rugalmas sklzhatsgt, alkalmazsodat kzzteheted a felhben. Meglv alkalmazsok kiegsztse felhben fut sszetevvel. Ha egy, a vllalati adatkzpontban fut alkalmazst egy front-end sszetevvel, pldul webhellyel vagy webszolgltatssal szeretnl kiegszteni, kzzteheted a front-endet a felhben, s sszekapcsolhatod a vllalati adatkzponttal egy biztonsgos szolgltatsbusz vagy virtulis magnhlzat segtsgvel. Adatbzisok a felhben. Ha relcis adatbzisokat szeretnl online trolni s elrhetv tenni, hasznld a felhplatform adatbzis-kezel szolgltatst! A felhben kzztett adatbzis tartalmt szinkronizlhatod ms felh-adatbzisokkal, a vllalati kiszolglkon lv adatbzisokkal, s elrheted klnbz mobileszkzkrl s szemlyi szmtgpekrl. A platformszolgltats az infrastruktra-szolgltatsnl bemutatotthoz kpest tovbbi knnyebbsget s komoly megtakartsokat jelent az zemeltetsben. A felhszolgltat tvllalja az opercis rendszer karbantartst, a szksges javtcsomagok automatikus teleptst, valamint a kztes szoftverek s futtatkrnyezetek felgyelett. Azzal, hogy a fentieket a felhszolgltatra hagyod, korltozsokat is vllalsz. A legfontosabb, hogy csak olyan szoftvereket telepthetsz a platformszolgltatsban fut virtulis gpekre, amelyek a sajt alkalmazsod rszt kpezik, s/vagy felgyelet nlkl telepthetek. Tovbbra is neked kell gondoskodnod ugyanakkor a kvetkezkrl: az adatok biztonsgi mentse s visszalltsa, a sajt alkalmazsok kezelse.

Szoftverszolgltats (SaaS)
A felh legfels szintje az n. szoftverszolgltats ( Software-as-a-Service, SaaS). Ilyen a legtbb fogyaszti online szolgltats: internetes keresk (Bing, Google Search, Yahoo), levelez s kommunikcis alkalmazsok (Gmail, Outlook.com, Skype), mdiamegoszt alkalmazsok (Vimeo, YouTube) s trsasgi hlzatok (Facebook, Twitter), illetve sok vllalati online szolgltats (Office 365, SalesForce.com). Sajt, a platformszolgltats fltt ltrehozott alkalmazsaidat ltalban szoftverszolgltatsknt teszed elrhetv gyfeleid, partnereid szmra. A szoftverszolgltats esetben semmilyen zemeltetsi felelssged nincs, az alkalmazsokat igny szerint belltod, majd hasznlod.

25

1. Mi a felh?

Egyb szolgltatsmodellek
Az interneten szmos egyb szolgltatsmodellt tallhatsz, me nhny zeltl: Storage as a Service (STaaS), Security as a Service (SECaaS), Data as a Service (DaaS), Database as a Service (DBaaS), Test Environment as a Service (TEaaS), API as a Service (APIaaS), Back-end as a Service (BaaS). Ezek azonban vagy a hrom nagy modell varinsai, vagy annyira szk rteget cloznak meg, hogy a knyv keretei kz nem fr be az ismertetsk.

sszegzs
A felh nem ms, mint kzmknt szolgltatott informatika. Mretgazdasgossgi elnyei, rugalmassga s tbb-brls jellege miatt olyan feladatok megoldsra is alkalmas, amelyek kifognak a hagyomnyos vllalati adatkzpontokon. Nem minden felh, ami elsre annak ltszik, de a korszer zemeltetsi mdszertanok s eszkzk segtsgvel Te is ltrehozhatsz privt felht valsznleg kombinlod majd a nyilvnossal, gy hibrid krnyezetet alaktasz ki. Vlaszthatsz az infrastruktra -, a platform- s a szoftverszolgltats kzl, az eredmny minden esetben egy olcsbb s agilisabb vllalati informatikai krnyezet lesz.

26

2. Mikor jn jl az Azure?

2. Mikor jn jl az Azure?
Ebben a fejezetben az albbi tmkat ismerh eted meg: Az elz fejezetben megbeszltk a szmtsi felh megklnbztet jegyeit, kpessgeit, a lehetsges bevezetsi s szolgltatsmodelleket itt az ideje, hogy tallkozz a felh egy tnyleges megvalstsval, a Windows Azure-ral. A Windows Azure szmos kpessggel br, ezek szma folyamatosan n, nagyjbl flvente j s j szolgltatsok jelennek meg a platformban most megismerheted a jelenleg elrheteket. Egy sokoldal s rugalmas felhplatform segtsgvel sokfle alkalmazs kialakthat, itt tallkozhatsz a Windows Azure nhny tipikus felhasznlsi terletvel.

Mi a Windows Azure?
A Windows Azure a Microsoft felhplatformja. Olyan nyilvnos felhmegolds, amely infrastruktra - s platformszolgltatst nyjt, illetve lehetv teszi szoftverszolgltatsok hosztolst (teht lefedi mindhrom f szolgltatsmodellt). Hasznlatval felhalkalmazsokat hozhatsz ltre, telepthetsz s menedzselhetsz a Microsoft-adatkzpontok egsz vilgra kiterjed hlzatban. Az alkalmazsokat brmely elterjedt programozsi nyelven, fejleszteszkzzel s keretrendszerrel elksztheted, a felhben kialaktott rendszereket pedig sszekapcsolhatod a vllalati krnyezeteddel. A platform fbb jellemzi: Mindig mkdik. A Windows Azure segtsgvel magas rendelkezsre lls, akr 99,95%-os szolgltatsi szintet biztost alkalmazsokat alakthatsz ki anlkl, hogy foglalkoznod kellene az ehhez szksges infrastruktrval. Az Azure automatikusan frissti az opercis rendszert, hlzati terhelselosztst nyjt, s kezeli a hardverhibkat. Alkalmazsaid j verzijnak bevezetse tovbbra is a Te dolgod, de az Azure segt, hogy szolgltats-kimarads nlkl tudd vgrehajtani a frisstst. Nyitott. A Windows Azure-ban fut alkalmazsok elksztshez sokfle programozsi nyelvet, fejleszteszkzt s keretrendszert hasznlhatsz. A platform kpessgeit s szolgltatsait elrheted a REST protokoll hasznlatval, a Windows Azure kdknyvtrakat szmos programozsi nyelvbl ignybe veheted, forrskdjuk nylt, megtallhatod a GitHubon. Kinhetetlen. A Windows Azure-on fut alkalmazsaidat szabadon sklzhatod felfel s lefel (azaz nagyobb s kisebb mret virtulis gpek hasznlatval), illetve kifel s befel (a virtulis gpek szmnak nvelsvel s cskkentsvel). A platform teljesen automatizlt s nkiszolgl, percek alatt hasznlatba veheted a krt j erforrsokat. Csak azokrt az erforrsokrt fizetsz, amiket az alkalmazsod tnylegesen hasznl. A Windows Azure-adatkzpontok minden fontosabb rgiban (Eurpai Uni, szak-Amerika, Tvol-Kelet) megtallhatk, gy oda teleptheted alkalmazsaidat, ahol az gyfeleid vannak. Sokoldal. A Windows Azure egy rugalmas felhplatform, amivel sokfle ignyt kielgthetsz. Magas rendelkezsre lls s knnyen sklzhat alkalmazsokat hozhatsz ltre. Relcis s NoSQL-adatbzisokban trolhatod adataidat, de hasznlhatsz BLOB -okat is a strukturlatlan, fjl jelleg adatokhoz. Hadoop- s zletiintelligencia-megoldsokat pthetsz az adatok elemzshez. A robusztus zenettovbbt s szolgltatsbusz-kpessgek segtsgvel elosztott, hibrid alkalmazsokat hozhatsz ltre. A gyorsttr s a tartalomterjeszt hlzat rvn cskkentheted a hlzati ksleltetst, jobb vlaszidt biztosthatsz gyfeleidnek, legyenek brhol a vilgon. Tetszs szerinti alkalmazst hosztolhatsz a felhben, s szabadon mozgathatod virtulis gpeidet a fldi adatkzpont s a felh kztt.

27

2. Mikor jn jl az Azure?

Egy kis visszatekints


Bill Gates mr a kilencvenes vek kzepn, a Windows 95 megjelensekor megsejtette az internet s azon bell az online szolgltatsok jelentsgt. A nagy siker opercis rendszerhez utlag hozzadott Internet Explorer mellett a Microsoft egy msik jdonsggal is elrukkolt abban az vben: ez volt az MSN (Microsoft Network), egy fogyasztkat (teht nem zleti felhasznlkat) clz informcis, kzssgi s ekereskedelmi szolgltats. Az MSN idvel keres, levelez, vals idej kommunikcis kpessgekkel bvlt, s ezek esetenknt ms nven ma is megtallhatk a vllalat online portflijban. Ami az zleti felhasznlkat illeti, a szolgltatsknt (kzmknt) nyjtott informatika koncepcija is vtizedes mltra tekinthet vissza a Microsoftnl. Igaz, a cg eredetileg n. alkalmazsszolgltat partnereken (Application Service Provider, ASP) keresztl tette online is elrhetv s hasznlhatv termkeit, s ehhez egy kln licenckonstrukcit 5 (Services Provider License Agreement, SPLA) is kidolgozott. A kzvetlen szerepvllalshoz azonban egy j, kvlrl rkez szemly rhatsa kellett. Ezt a szemlyt Ray Ozzie-nak hvtk. A Lotus Notes atyja, majd a Groove nev csoportmunka -szolgltats ltrehozja akkor csatlakozott a Microsofthoz, amikor az 2005 -ben megvsrolta a Groove-ot. Ozzie kirlelt koncepcival rendelkezett arrl, hogyan fogjk az online szolgltatsok felbortani az IT vtizedek ta fennll rendjt. Vlemnyt egy bels tanulmnyban 6 tette kzz, amit maga Gates is egyetrten fogadott7. Ozzie lett a Microsoft egyik fmrnke (Chief Technology Officer, CTO), s hozzkezdhetett a Microsoft zleti cl online szolgltatsainak kialaktshoz. A Windows Azure ennek a portflinak az egyik eleme. Az eredetileg Red Dog s Strata kdneveken emlegetett, igazi sztrok, pl. a Windows NT kernel atyja, Dave Cutler ltal fejlesztett szolgltatst elszr a Microsoft 2008-as fejleszti konferencijn (Professional Developer Conference, PDC) mutattk be a nyilvnossgnak, s ekkor vlt elrhetv n. CTP ( Community Technical Preview, azaz nylt bta) formban. Msfl v mlva, 2010 februrjban (Magyarorszgon ugyanazon v prilisban) jelentette be a Microsoft az les, tmogatott verzit.

Platformszolgltats
A Windows Azure eredetileg platformszolgltatsknt indult. A felh idelis hely az j alkalmazsok, illetve a meglv alkalmazsokat kiterjeszt j sszetevk hosztolshoz: a fejlesztshez nem szksges elzetes hardver- s szoftverberuhzs, az elkszlt rendszer igny szerint mretezhet, s az adatkzpontok globlis hlzatnak ksznheten az gyfl kzelbe telepthet. A Windows Azure kifejezetten tmogatja a korszer, lazn csatolt sszetevkbl ll, oldalra sklzhat (n. scale -out) alkalmazsok kialaktst, de a hagyomnyos tervezsi mintkkal is elboldogul. Nhny fontosabb eleme: Szerepkrk. A Windows Azure-ban a szerepkrk olyan sablonok, amelyek alapjn az egyes alkalmazs-sszetevk ltrejnnek. A szerepkrk konkrt kpessgeket klcsnznek az sszetevknek, a webes szerepkrkben (web role) pldul tallhat egy, a klvilg fel nyitott webkiszolgl, a munkavgz szerepkrk (worker role) pedig egy vgtelen ciklusban vrjk a vgrehajtand httrfeladatokat. A sklzs egysge a szerepkr-pldny (role instance), ha pldul megn a webhely ltogatinak szma, akkor a webhelyet megvalst webes szerepkrt futtathatod tbb pldnyban, mg a httrfeldolgozsrt felels munkavgz szerepkr pldnyainak szmt vltozatlanul hagyod. Minden szerepkr-pldny egy-egy nll, Windows Server-alap virtulis gp. Relcis adatbzisok. Az zleti alkalmazsok tlnyom rsze adatokkal dolgozik, s ezek gyakran relcis adatbzisokban tallhatk. A Windows Azure SQL Database szolgltatsval relcis

Az SPLA licenckonstrukci lersa a http://www.microsoft.com/licensing/licensing-options/spla-program.aspx cmen tallhat. 6 A The Internet Services Disruption cm tanulmny ma mr nyilvnos, s megtallhat a http://ozzie.net/docs/the-internet-services-disruption/ cmen. 7 Bill Gates Internet Software Services cm levelnek szvege elrhet a http://scripting.com/disruption/mail.html cmen. 28

2. Mikor jn jl az Azure? adatbzisok hozhatk ltre, s hasznlhatk a felhalkalmazsokbl, de akr tetszleges fldi alkalmazsbl is. Az SQL Database szolgltatst a httrben fut SQL Serverek biztostjk, ezekhez azonban nem frhetsz hozz, csak magt az adatbzist veheted ignybe. Adattrols. Nemcsak relcis adatbzisokra lehet szksged a Windows Azure biztostja szmodra a BLOB (azaz fjl vagy adatfolyam) jelleg s a tblzatos (azaz NoSQL) tpus adatok, valamint az alkalmazsok kzti kommunikcit biztost zenetek trolst. Portl. A Windows Azure portlja a platformszolgltats ignybevtelnek egyik alapvet mdja, segtsgvel menedzselheted alkalmazsaidat s adataidat. A portl interaktv funkcii mgtt PowerShell-szkriptek dolgoznak, amelyek nyilvnosak, teht az zemeltetsi feladatokat automatizlhatod is. Fejleszteszkz-tmogats. Akr Visual Studit, akr Eclipse-t hasznlsz felhalkalmazsod fejlesztshez, az eszkz elhagysa nlkl kzzteheted az aktulis verzit a Windows Azure -ban. Vlaszthatsz az les (Production) s tesztkrnyezet (Staging) kzl, gy alkalmazsod les s tesztverzija egyszerre futhat a felhben, s amikor befejezted a tesztelst, egyszeren felcserlheted a kettt. Emultorok. Nem muszj rgtn a felhbe teleptened fejleszts alatt ll alkalmazsodat: a Windows Azure egy futtatkrnyezet- (Compute Emulator) s egy adattrols-emultort (Storage Emulator) biztost, amelyek a sajt gpeden futnak, s alkalmazsod szmra kicsiben modellezik a felht. A platformszolgltats tovbbi n. ptkocka-szolgltatsokat is hasznlhat, ilyenek pldul: a gyorsttr (Caching), a tartalomterjeszt hlzat (CDN), a felhasznl-azonosts (Identity), valamint a szolgltatsbusz (Service Bus). A knyv tovbbi fejezetei rszletesen bemutatjk ezeket.

Infrastruktra-szolgltats
A Microsoft eredetileg azzal a stratgiai cllal hozta ltre a Windows Azure -t, hogy az a hagyomnyos vllalati adatkzpontok teljes rtk alternatvja legyen, s a vllalati gyfelek brmilyen alkalmazst futtathassanak benne. Ezt azonban a platformszolgltats nmagban nem kpes teljesteni. A rgi, akr tbb vtizede hasznlatban lv zleti alkalmazsok szmos olyan bnt elkvetnek, amelyeket a PaaS tilt: kzi teleptst ignyelnek, memriban troljk, esetleg a helyi merevlemezre rjk a munkamenet -informcikat, vagy meghatrozott merevlemez -kiosztst feltteleznek maguk alatt. Ez a viselkeds elfogadhat egy helyben menedzselt fizikai vagy ppen virtulis gp esetn, de megtorpedzza a platformszolgltats mkdst, ami gy nem kpes j szerepkrpldnyokat ltrehozni, az alkalmazst karbantartani s sklzni. Lehetsges megolds az alkalmazsok ttervezse s jrarsa gy, hogy kihasznlhassk a platformszolgltats elnyeit. Egy folyamatos hasznlatban lv rendszer nullrl val felptse azonban komoly befektetst ignyel, s jelents kockzattal jr mg akkor is, ha az eredeti fejleszti tuds s a forrskd egyltaln hozzfrhet. Ms megolds kell, egyfajta villstargoncs migrci ( forklift migration), ami a rgi alkalmazsokat eredeti krnyezetkkel egytt ttelepti a felhbe. Szerencsre a Windows Azure platformszolgltatsa eleve a virtualizlt vllalati adatkzpontokban mr megismert s szles krben hasznlt elemekre pl. A webes s munkavgz szerepkrk valjban Windows Server opercis rendszert futtat virtulis gpek, alattuk a Hyper -V egy vltozata mkdik, az automatikus szolgltatsfelgyelet PowerShell szkriptekkel trtnik. Mivel a platformszolgltats a felhalkalmazsokra s adatokra sszpontost, az egyszerbb kezelhetsg rdekben elrejti az infrastruktrt a felhasznl ell de az attl mg ott van, akr elrhetv is lehet tenni. Pontosan ezt tette a Microsoft 2012 jniusban: beindtotta Windows Azure-alap infrastruktra-szolgltatst. Az infrastruktra-szolgltats fontosabb elemei: Virtulis gpek. A Windows Azure lehetv teszi, hogy j virtulis gpeket hozz ltre, illetve menedzseld a meglvket. A folyamatosan bvl lemezkp -katalgusban Windows Server 2008 R2, Windows Server 2012, illetve klnbz Linux -disztribcik is szerepelnek, st, SQL Serverrel s

29

2. Mikor jn jl az Azure? BizTalk Serverrel elteleptett sablonokbl is vlogathatsz. A VM Depot szolgltats segtsgvel a felhasznlk ltal egyedileg sszelltott s az Azure-ba feltlttt lemezkpeket is hasznlhatsz. Ahogy a felhszolgltatsoknl a szerepkrk, gy a VM-ek is meghatrozott konfigurcikban rhetk el. A virtulis gpek menedzselhetk a portlon keresztl, PowerShell szkriptekkel, illetve tvoli asztali kapcsolattal. Virtulis merevlemezek. A Windows Azure lehetv teszi, hogy sajt opercisrendszer- s adatlemezeket hozz ltre, illetve tlts fel az adatkzpontodbl a felhbe (s szksg esetn vissza). Ez azt jelenti, hogy a katalgusban szerepl lemezkpek mell egynileg bekonfigurlt sajt lemezkpeket tehetsz, amelyek kzzel teleptett egyedi alkalmazsokat is tartalmazhatna k. Ezeket sablonknt hasznlva j pldnyokat hozhatsz ltre akr manulisan, akr automatikusan. Az adatlemezek is fontosak olyan lemezkiosztst llthatsz ssze velk, amilyent alkalmazsod elvr. Ezzel megoldottad a platformszolgltatsnl emltett f gondot, tnyleg szinte brmit kpes vagy futtatni a felhben. Virtulis hlzat. Mindig lesz adat vagy szerverfeladat, amit mindenkppen a sajt adatkzpontodban kell tartanod szerencsre a helyzet kezelhet, mghozz a Windows Azure virtulis hlzata segtsgvel. A felhben fut virtulis gpeket tetszs szerint kialaktott alhlzatokba fogod ssze, majd egy virtulis magnhlzati (VPN) kapcsolatot hozol ltre g s fld kztt a vllalati adatkzpontban ehhez egy tvlaszt kell (jelenleg tbb Cisco s Juniper tpusbl vlogathatsz). Az eredmny egy hibrid adatkzpont, amelynek egyes elemei a cg szervertermben, msok a nyilvnos felhben tallhatk, a kett kztt pedig egy transzparens, de biztonsgos kapcsolat mkdik. A Windows Azure platform- s infrastruktra-szolgltatsa egyttmkdik egymssal, s az IaaS is hasznlhatja a platform ptkocka-szolgltatsait, teht sszetett megoldsokat is kialakthatsz.
A Windows Azure infrastruktra-szolgltatsa a knyv rsakor (2013 februrjban) egyelre bevezet (preview) fzisban van. Ez azt jelenti, hogy a szolgltats elrhet, de a Microsoft csak online frumokon keresztl tmogatja, s nem vllal r szolgltatsiszint-szerzdst (SLA-t). Cserbe a virtulis gpek a bevezet idszak alatt jelents, legalbb 33%-os kedvezmnnyel vehetk ignybe, a virtulis hlzat hasznlata pedig ingyenes.

A Windows Azure szolgltatsai


A platform- s infrastruktra-szolgltats tbbflekppen ignybe vehet. Az albbiakban megismerheted a Windows Azure legfontosabb kulcsraksz kpessgeit.

Webhelyek
A Windows Azure-ban gyorsan s egyszeren kszthetsz olyan webhelyeket, amelyek kicsiben indulnak, s a forgalommal arnyosan nvelhet a teljestmnyk. A webhelyekhez brmilyen programozsi nyelvet s webes keretrendszert hasznlhatsz, a tartalmat automatikusan frisstheted. A webhelyek ignybe vehetik a Windows Azure ms szolgltatsait (adatbzisok, gyorsttr, tartalomterjeszt hlzat, adattrols) is. A Windows Azure Web Sites a vgletekig leegyszersti a webhelyek publiklst s zemeltetst. Amikor j webhelyet szeretnl ltrehozni, akkor kt lehetsged van: Egy galribl kivlasztod a clnak megfelel tartalomkezel rendszer, blogmotor, e -kereskedelmi csomag, pl. a Drupal, Joomla, WordPress kzl a legszimpatikusabbat, az automatikusan telepl, s hasznlni kezded. Ekkor gyakorlatilag szoftverszolgltatsknt tekintesz az Azure -ra, hiszen csak konfigurlod a webhelyet, s mris a tied. Ltrehozol, majd feltltesz egy sajt fejleszts webalkalmazst. Mind Visual Studibl s WebMatrixbl, mind a npszer Git s TFS verzikezel rendszerekbl egy kattintssal teleptheted s frisstheted weboldalaidat, de akr FTP-n keresztl is hozzfrhetsz a forrsfjlokhoz. Ekkor platformszolgltatsknt veszed ignybe az Azure-t. Felhasznlnknt tz webhely ingyenes. Ezekre bizonyos erforrsbeli megktsek vonatkoznak, amiktl alacsony sszegrt megszabadulhatsz, de nhny kattintssal akr dediklt szervert is tehetsz

30

2. Mikor jn jl az Azure? webalkalmazsaid al. Lehetsged van sajt tartomnynv (domain name) hasznlatra, s bevethetsz SQL Server-alap vagy akr MySQL adatbzist is. Az zemeltetsi feladatokkal pedig termszetesen nem kell bajldnod, azokat a felh elltja. A webhelyeket rszletesen a 15. fejezet trgyalja.

Felhszolgltatsok
A felhszolgltatsokat mr megismerted a Windows Azure mint platformszolgltats lersban. Rviden sszefoglalva: j zleti s fogyaszti felhalkalmazsok, meglv alkalmazsokat kiegszt sszetevk hosztolsra valk. A Windows Azure segtsgvel magas rendelkezsre lls, sklzhat alkalmazsok s szolgltatsok hozhatk ltre, amelyek egy gazdag felhplatformra tmaszkodnak. Az alkalmazsok tbbszintek, automatikusan bevezethetk, rugalmasan tmretezhetk, s a vilg brmely pontjn lv gyfelek szmra elrhetk. A 2-1 bra segt a felhszolgltatsok fbb komponenseinek megrtsben. A felhszolgltatsokat ltalban az interneten keresztl rik el a felhasznlk. A berkez krseket egy terhelseloszt (load balancer) kldi felvltva a webes szerepkr egyes pldnyainak (web role instances). Ezek kzvetlenl, vagy egy vrakozsi soron (queue) keresztl utastsokat adnak a httrfeldolgozsrt felels munkavgz szerepkrknek (worker role). A munkavgz szerepkrk (s termszetesen a webes szerepkrk, br ez az brn nem ltszik) hozzfrnek az adattrol szolgltatsokhoz: a relcis ( SQL Database) s nem relcis (Table Storage) adatbzisokhoz, valamint a fjlokhoz s adatfolyamokhoz (Blob Storage).

2-1 bra: Felhszolgltatsok

31

2. Mikor jn jl az Azure? A felhszolgltatsokat rszletesen a 9. fejezet trgyalja.

Virtulis gpek
A virtulis gpeket mr megismerted a Windows Azure mint infrastruktra -szolgltats lersban. sszefoglalva: a Windows Azure-ban egyszeren, percek alatt ltrehozhatk s futtathatk Windows Server- s Linux-alap virtulis gpek. A vllalat adatkzpontjban fut rendszerek a kd megvltoztatsa nlkl tvihetk a felhbe. A vllalati hlzat s a felh kztt biztonsgos hlzati kapcsolat pthet ki. A 2-2 bra segt a virtulis gpek fbb sszetevinek megrtsben.

2-2 bra: Virtulis gpek

A virtulis gpeket vagy az interneten s egy terhelselosztn, vagy egy virtulis magnhlzaton keresztl rik el a felhasznlk. A virtulis gpek rendszerlemeze egy, a galriban tallhat lemezkp alapjn jn ltre, s blobok formjban kerl trolsra. A virtulis gpeket rszletesen az 5. fejezet, a virtulis hlzatot a 6. fejezet, az zemeltetst a 8. fejezet trgyalja.

Mobilszolgltatsok
A Windows Azure segtsgvel felgyorsthat a mobilalkalmazsok fejlesztse. Adattrols, felhasznl azonosts, rtestsek percek alatt ksz megoldsok, amiket csak be kell illeszteni a kszl Windows 8-, Windows Phone 8- s iOS-alkalmazsba (s hamarosan az Android-alkalmazsba), gy a fejlesztk a felhasznli felletre s kpessgekre koncentrlhatnak. A 2-3 bra segt a mobilszolgltatsok fbb sszetevinek megrtsben.

32

2. Mikor jn jl az Azure?

2-3 bra: Mobilszolgltatsok

A mobilszolgltatsok olyan, a Windows Azure-ban (s ms felhszolgltatsokban) fut httralkalmazsok, amelyek kibvtik az okostelefonon, tblagpen vagy PC -n fut mobilalkalmazs kpessgeit: troljk adatait, szkriptekkel kezelik az esemnyeket, azonostjk a felhasznlt, s rtestseket kldenek a kszlkre. A mobilszolgltatsokat rszletesen a 14. fejezet trgyalja.

Big Data
A Windows Azure segt megtallni a tt a sznakazalban. Nagyvllalati felhasznlsra ksz, meglv adatforrsokkal kompatibilis Hadoop8 szolgltatst biztost, SQL adatbzisok, flig s egyltaln nem strukturlt adatok lekrdezst teszi lehetv. Kifejezetten nagyvllalati alkalmazs, ezrt fontos, hogy egyszeren integrlhat az Active Directoryval s a System Centerrel. A Windows Azure HDinsight nev Big Data-megoldsnak bemutatsa tlmutat a knyv keretein.

Mdiaszolgltatsok
Feltlts, kdols, vdelem, kzvetts mdia (vide s audi) ltrehozsa, menedzselse s elrhetv ttele a felhben. A Windows Azure mdiaszolgltatsa biztostja a teljes feldolgozsi folyamatot a kdolstl a tartalomvdelmen s kzvettsen t a mdiafelhasznls elemzsig. A ksz tartalom fogyaszthat Windowsban s Windows Phone-ban, Xboxon, iOS- s Android-eszkzkn, HTML5-ben, Flashben s Silverlightban egyarnt. A 2-4 bra segt a mdiaszolgltats sszetevinek megrtsben.

A Hadoop lersa a http://hadoop.apache.org/ cmen tallhat. 33

2. Mikor jn jl az Azure?

2-4 bra: Mdiaszolgltatsok

A tartalomgazdktl szrmaz mdiafjlok blobknt bekerlnek a Windows Azure adattrol szolgltatsba. A mdiaszolgltats fogadja ( ingest) a tartalmat, kdolja, s megfelel formtumra alaktja (encoding & format conversion), tartalomvdelemmel ltja el (content protection), elrhetv teszi igny szerinti (on-demand streaming) valamint l (live streaming) fogyasztsra, s mri a felhasznlst (analytics). A mdiaszolgltatsok bemutatsa tlmutat a knyv keretein egy ksbbi kiadsban azonban sorra kerlhet.

Adattrols
A Windows Azure Storage egy kinhetetlen adattrolsi megolds, amelynek segtsgvel biztonsgosan trolhatod fjljaidat s virtulis lemezeidet. A trolt adatok magas rendelkezsre llst helyi redundancia biztostja. Minden fjl hrom, fizikailag s logikailag egymstl tvol elhelyezked pldnyban troldik egy adatkzponton bell, brmelyik pldny meghibsodsa esetn a Windows Azure automatikusan egy msikat kezd hasznlni, a kt mkd pldny alapjn pedig ltrehoz egy jat. A 2-5 bra segt a Windows Azure adattrolsi megoldsnak megrtsben. A trolsi fik tartalmt a Windows Azure nemcsak helyben, de fldrajzilag is biztostja. Az egy fldrajzi rgiba tartoz adatkzpontok (pldul a kt eurpai) kztt automatikus geo -replikci mkdik, gy akr egy teljes adatkzpont lellsa esetn is elrhetek maradnak az adatok. (A geo -redundancia az alaprtelmezett bellts, de igny szerint kikapcsolhat.) A relcis adatbzisok kezelsre az SQL Database szolgl. Helyben zemeltetett SQL Serveredet knnyedn kiegsztheted, esetleg ki is vlthatod egy felhbl szolgltatott SQL adatbzissal. Az Azure SQL adatbzisai sok tekintetben ugyanolyan adatbzisok, mint amiket helyben hasznlsz, csak a kapcsolatlerban (connection string) ms a szerver neve. Ennek ksznheten a megszokott eszkzpark tlnyom tbbsgvel gond nlkl egyttmkdnek (legyen sz az SQL Ser ver Management Studirl vagy a klnbz programozsi nyelvekhez kszlt adathozzfrsi technolgikrl s meghajtkrl).

34

2. Mikor jn jl az Azure?

2-5 bra: Adattrols

Az adattrolst zemelteti szemszgbl a 7., fejleszti szemszgbl a 10. fejezet trgyalja rszletesen, az SQL adatbzist pedig a 11. fejezetben ismerheted meg.

Egyb szolgltatsok
A Windows Azure n. ptkocka-szolgltatsai tovbbi hasznos kpessgeket biztostanak alkalmazsodhoz. Ezek kzl is kiemelkedik a felhasznlk azonostsra szolgl, kls hitelestsszolgltatkat (Microsoft Account, Facebook, Gmail, Yahoo) is integrl hozzfrs-vezrls (Access Control Service), az alkalmazsok vlaszidejnek javtsra s a munkamenet-informcik trolsra szolgl elosztott gyorsttr (Caching), a fld s a felh kztti pont-pont sszekttetst biztost kapcsolat (Connect), valamint az alkalmazsok belpsi pontjnak biztonsgos publiklsra s az alkalmazsok kztti zenetkldsre megoldst knl szolgltatsbusz (Service Bus). Az Access Control Service, a Caching s a Connect mkdst a 12. fejezet, a Service Bus hasznlatt a 13. fejezet trgyalja.

Tipikus Windows Azure-alkalmazsok


A Windows Azure segtsgvel sokfle alkalmazs kialakthat me nhny plda, valamint a bennk felhasznlhat Windows Azure-szolgltatsok.

zleti cl felhalkalmazs
A felh idelis krnyezet egy zleti alkalmazs szmra: gyorsan bevezetheted, nem tudod kinni, s csak a tnyleges hasznlatrt fizetsz. Az albbi Windows Azure-kpessgek klnsen jl jnnek: Felhszolgltatsok. Ha j alkalmazsrl vagy egy meglv alkalmazs j sszetevvel trtn kiegsztsrl van sz, nincs jobb vlaszts a felhszolgltatsnl. Gyorsan bevezetheted, knnyedn sklzhatod, egyszerre futtathatod az aktulis s a tesztels alatt ll kvetkez verzijt, s brmilyen ms szolgltatssal integrlhatod. Virtulis gpek. Ha alkalmazsod olyan sszetevt is tartalmaz, amelynek teleptse s/vagy mkdtetse csak nll virtulis gpen lehetsges, helyezd t a VM -et a felhbe. SQL adatbzis. Relcis adatbzis a relcis adatbzis-kezel karbantartsnak nygje nlkl radsul egyszeren szinkronizlhatod ms fldi s felh-adatbzisokkal. Jelentsek is kellenek? Ott az SQL Reporting, egy jabb knyelmes felhszolgltats. Active Directory. Ha felhasznlidat a vllalati cmtrban kell azonostanod, j hr, hogy ezt a Windows Azure-ban is megteheted.

35

2. Mikor jn jl az Azure? Szolgltatsbusz. Segt, ha egyes adatokrt s szolgltatsokrt vissza kell nylnod a vllalati adatkzpontba.

Mobilalkalmazs httrszolgltatsa
Mobilalkalmazsodat knnyedn kiegsztheted olyan felhszolgltatsokkal, amelyek megnvelik rtkt s hasznlhatsgt. Ebben az albbi Windows Azure -kpessgek segtenek: Mobilszolgltatsok. Adatbzisban trolja alkalmazsod adatait, kls hitelestsszolgltatk (Microsoft Account, Facebook, Gmail, Yahoo) segtsgvel azonostja az alkalmazs felhasznljt, esemnyek hatsra vagy idztve kiszolgl oldali szkripteket futtat, s zeneteket kld a mobileszkzre. SQL adatbzis. A mobilszolgltatsok ltal kezelt adatok egy SQL adatbzisban tallhatk. Ezt az adatbzist ms alkalmazsokbl s felletekrl is elrheted, gy kzpontilag mdosthatod a mobileszkzzel lekrdezett adatokat. Webhelyek. Mobilalkalmazsodat kiegsztheted egy webes portllal, ami adminisztratv szolgltatsokat nyjt, s a mobilfelletnl gazdagabb informcikat jelent meg. Adattrols. Mobilalkalmazsod mdiafjlokat s ms llomnyokat trolhat a felhben.

Felhbe kihelyezett vllalati rendszer


Ha virtualizlt adatkzpontot hasznlsz (esetleg akkor is, ha nem), a Windows Azure biztostja vllalati alkalmazsaid, teljes rendszereid kihelyezst a felhbe. Amire szksged lesz: Virtulis gpek. Hasznld a Microsoft ltal szlltott lemezkpeket, vagy gyrts sajtokat, s tltsd fel ket a felhbe mris nhny kattintsnyi kzelsgbe kerltl rendszereid felhben trtn futtatshoz! Gyakorlatilag brmit futtathatsz a felhben, ami a fldi virtulis gpeiden mkdik (termszetesen oda kell figyelned a licencek felhasznlhatsgra s a tmogats rvnyessgre). Ha szeretnd felmrni, meglv rendszereid mely VM -jeit tudod migrlni, hasznld a MAP Toolkit9 alkalmazst! Virtulis hlzat. Segtsgvel vdett vonalat alakthatsz ki, amely sszekti a felhben s a fldi adatkzpontodban lv hlzatokat s a hozzjuk kapcsold eszkzket. Hibrid felhmegoldst alakthatsz ki, hozzadhatod a felhben fut gpeket a helyi rendszerfelgyeleti krnyezethez, szinkronizlhatod az adataidat, biztonsgi mentst kszthetsz a fldrl a felhbe s viszont.

Tesztkrnyezet
Fejlesztskor gyakran szksg van egy tbb szmtgpbl ll tesztkrnyezetre, ahol szimullhat az alkalmazs majdani les krnyezete, elvgezhet a terhelsi teszt s gy tovbb. Az Azure idelis tesztkrnyezetknt tud mkdni az albbi szolgltatsoknak ksznheten: Virtulis gpek. Hozz ltre tetszleges szm virtulis gpet, vgezd el a teszteket, majd szabadulj meg a gpektl, s fizess mindezrt sszesen nhny dollrt! Virtulis hlzat. Szimulld az alkalmazs vals krnyezett a virtulis gpek kztt ltrehozott tetszlegesen bonyolult hlzati viszonyokkal, belertve akr a helyi erforrsokhoz val VPN -es csatlakozst is!

Archvum
Ha nagy mennyisg adatot szeretnl magas rendelkezsre lls krnyezetben, olcsn trolni, s viszonylag ritkn hasznlod, ismt csak a Windows Azure lehet a j vlaszts, mghozz a kvetkez szolgltats miatt:

A MAP Toolkit legjabb, 8.0-s verzija elrhet a http://technet.microsoft.com/enus/solutionaccelerators/dd537566.aspx cmen. 36

2. Mikor jn jl az Azure? Adattrols. Mentsd adataidat kzvetlenl a felhbe a Windows Server vagy a System Center Data Protection Manager legjabb verzija segtsgvel. A feltlts ingyenes, a trols rendkvl olcs, az Azure adattrol kapacitsa pedig gyakorlatilag kinhetetlen.

sszegzs
A Windows Azure a Microsoft infrastruktra- s platformszolgltatsa. Szmos kulcsraksz szolgltatst nyjt a webhelyektl a felh- s mobilszolgltatsokon s a virtulis gpeken t az adattrolsig. Kpessgei kombinlhatk egymssal, s sokfle alkalmazs ltrehozsra, kiegsztsre hasznlhatk.

37

3. Az Azure mkdse

3. Az Azure mkdse
Ebben a fejezetben az albbi tmkat ismerheted meg: Adatkzpontok kialaktsa s szervezse. Hatkonysg nvelse a szmossg nvelse rvn. A felh opercis rendszere, a Fabric Controller. Hosztok s szolgltatsok provizionlsa. Katasztrfk nyomban: a szknapi lells esemnyei. Az Azure mkdsnek bemutatst az adatkzpontok kialaktsnak, szervezsnek ismertetsvel kezdjk. Megismerheted, hogyan pl fel az adatkzpont, milyen biztostkok vannak a rendelkezsrells s adatbiztonsg garantlsra. Arrl is olvashatsz, hogy a nagy mennyisgben zemeltetett s professzionlisan kialaktott adatkzpontoknak milyen kltsghatkonysgi megoldsai, elnyei vannak, s mirt tud ez olcsbb lenni, mint a sajt megvalsts infrastruktra. Betekintst nyerhetsz az Azure adatkzpontok szervezsbe (cluster, fabric controller stb.) s zemeltetsbe is, belertve a hosztok s virtulis szolgltatsok provizionlst (PaaS s IaaS esetben). A fejezet vgn az egyik kedvenc msorom, a Katasztrfk nyomban megkzeltsi mdjt hasznlva ttekintjk, hogy mi is trtnt a 2012. februr 29-ei szknapon, mi volt azoknak az egymstl fggetlen esemnyeknek a lncolata, amely vgl az Azure szolgltatsainak eddigi legnagyobb kiesshez vezetett.

Adatkzpontok
A kvetkez fejezetrszben megvizsgljuk az adatkzpontok trtnelmt s fejldst s a Microsoft adatkzpontjainak fbb jellemzit. Ennek a fejezetrsznek a clja, hogy megismertesse az olvasval, ho gy milyen elemekbl ll egy adatkzpont, milyen zemeltetsi kihvsok vannak, s a Microsoft a sajt maga ltal zemeltetett tbb szzezer kiszolgls adatkzpontjaiban hogyan oldja meg ezeket.

Az adatkzpontok evolcija
Ebben a fejezetrszben az adatkzpontok evolcijt tekintjk t az Intel szerverek megjelenstl a modern, dinamikus adatkzpontok kialaktsig.

Kiszolglk
Az Intel alap kiszolglk megjelensekor mr j ideje lteztek a nagygpes ( mainframe) krnyezeteket kiszolgl adatkzpontok, s ez az jonnan feltrekv kiszolgl kategria ezek mell kltztt be. Ez a folyamat az 1990-es vektl kezddtt, ekkor adatkzpont alatt a polcokra pakolt, kinzetkben a munkallomsokra nagyon hasonlt kiszolglkat rtettk. Biztosan mindenki jrt mr ilyen helyen, vagy legalbb fnykpen ltott mr ilyesmit: SALG polcokra pakolva a kiszolglk vagy esetleg kiszolglknt hasznlt munkallomsok , amelyek egy hardveren, egy opercis rendszeren futtattak egy vagy tbb szolgltatst. Ezeket ma mr csak megmosolyogjuk, s az informatika hskornak tekintjk, azonban mr ezeknek az adatkzpontoknak a kialaktsa s zemeltetse sorn is szembeslhettnk az adatkzpontok alapvet jellemzivel: Megfelel mennyisg energit (ramot) kell biztostanunk, hogy a teljes kapacitson zemel sszes kiszolglt el tudjuk ltni energival. Az IT eszkzk a teljestmny nvekedsvel egytt a hdisszipci nvekedst is magukkal hoztk. Ez az ersen koncentrlt adatkzpontok esetn azt jelentette, hogy gon doskodni kellett a helyisg megfelel htsrl. A lgkondicionls azonban tovbb nveli az energiafelhasznlst.

39

3. Az Azure mkdse Gondoskodni kellett arrl, hogy az adatkzpontba bemen s az onnan kimen hlzati svszlessg elegend legyen. Gondoskodni kellett az plet statikai megfelelsgrl s biztonsgrl, hogy az elbrja a kiszolglk s az egyb szerelvnyek slyt. gyelni kellett arra, hogy a meghibsodsokbl ered problmk ne okozzk az egsz adatkzpont kiesst, vagyis hogy az adatkzpont kiszolglk fel nyjtott szolgltatsai redundnsak legyenek (pldul ramsznet, az elsdleges kls vonal meghibsodsa, a htsi rendszer meghibsodsa esetn stb.). Ezekbl is jl lthat, hogy egy komoly, zembiztos sajt adatkzpont megvalstsa mr a kezdetekbe n sem csak annyibl llt, hogy megvsroltuk a szksges kiszolglkat, s utna bedugtuk ket a 230V -ba pontosabban akkor mg 220V-ba meg az Ethernet vagy akkor mg esetleg BNC vagy token ring hlzatba. Nem vletlen, hogy az adatkzpont tervezse s kivitelezse mr a kezdetek kezdete ta nll szakma. A nagy beruhzsigny miatt adatkzpontot pteni s fenntartani mr a rgmltban is csak nagyszm kiszolgl esetn rte meg, s erre fknt nagyvllalatok, illetve kifejezetten erre szakosodott szerverhotelek voltak kpesek.

Tradicionlis adatkzpont
Az adatkzpontok fejldsben a kvetkez nagy lps miutn az Intel szerverek mr bizonytottk elnyeiket, s kezdtk elhdtani az adatkzpontokat a korbbi nagygpes krnyezetektl az volt, amikor a polcokra szerelt kiszolglkat elkezdtk felvltani a rack kiszerels kiszolglk. Ezek azok a kiszolglk s eszkzk, amelyek egy szabvny kialakts polcsorba, gynevezett rack szekrnyekbe kerlnek beszerelsre. A rack szekrny s gy az abba szerelend eszkzk s kiszolglk szlessge (19 inch, ~48 cm) s mlysge szabvnyos, az eszkzk magassgnak mrtkegysge pedig a rack unit vagy U. Az 1U magassg 44,45mm (1,75 inch)-nek felel meg, egy teljes mret rack szekrnyben 42U hely va n, vagyis nagyjbl 2 mter (77 inch) magas. A rack szekrnyekbe szerelt kiszolglk ltalban 1U (ez az n. pizzs doboz), 2U vagy 4U magasak. A kiszolglk rack szekrnyekbe szervezsvel a cl a helykihasznls hatkonysgnak nvelse, a standardizls s az egyszerbb kbelezs (energia, hlzat) megvalsthatsga volt.
A rack szekrnyek mretezsrl, az egysgek hasznlatrl itt tallsz tovbbi informcit: http://en.wikipedia.org/wiki/Rack_unit.

Ennek a hatkonysgnvelsnek a kvetkez lpse a penge ( blade) kiszolglk megjelense volt. Mg a rack szekrnybe szerelhet kiszolglk esetben mindegyik rendelkezett sajt tp, hlzat s I/O video, billentyzet, egr stb. kbelezssel, a pengk esetben ezek mr a kiszolgln kvl s tbb kiszolgl szmra kzsen biztostva kerltek kialaktsra. Divatos szhasznlattal mondhatnm, hogy a pengk esetben a tpellts, a hlzat, az I/O-elrs s a menedzsment funkcikat a pengket trol keretbe (blade enclosure) szerveztk ki (outsourcing). Ezzel mg nagyobb szmtsi kapacitst sikerlt egysgnyi fizikai helyre srteni. Egyszer matematikval kiszmolhat, hogy egy szabvnyos rack szekrnybe a hagyomnyos rack kialakts kiszolglkbl elrhet elmleti maximum 42 kiszolgl. A gyakorlatban ez azrt ennl jval kevesebb, mg egy ugyanekkora blade keretben a 128 darabnl tbb kiszolgl sem elkpzelhetetlen. Lthat, hogy az adott trfogatra es szmtsi kapacitst (CPU szmot) a sokszorosra sikerlt nvelni a kiszolglk kialaktsnak tszervezsvel. Azonban ennek termszetesen ra is van! A szmtsi kapacits srsgnek s a kiszolglkban zemel processzorok teljestmnynek fokozatos nvekedse ugrsszeren megnvelte a szksges hts ignyt. A hardvergyrtk jabb s jabb az aerodinamikai s ramlstani kutatsokat felhasznl htsi rendszereket terveztek a blade rendszerek htsre, ez lett az egyik jelents megklnbztet faktor a hardvergyrtk megoldsai kztt. A felhasznlk rszrl az elrhet szmtsi kapacits s szolgltatsok nvekedsnek termszetesen velejrja volt a szksges hlzati kapacits, illetve a rendelkezsre llsi ignyek nvekedse. Ez tovbb nvelte az adatkzpontok kialaktsnak kltsgeit, az zemeltets s a fejleszts szemszgbl egyarnt. Egyes sajt adatkzpontot zemeltet vllalatok valamilyen fizikai korltba tkztek bele, pldul az

40

3. Az Azure mkdse elektromos hlzat szolgltatja nem tudta tovbb nvelni egy adott fizikai telephely elektromos betpll csatlakozst a redundns elektromos betpllsrl nem is beszlve , vagy pldul az adatkzpontnak hasznlt plet fdmszerkezete nem brta el az adatkzpont bvtst, s a statikusok parancsoltak meglljt. gy a kvetkez lpst az iparban a nagy adatkzpont-szolgltatk jelentettk, akik az adatkzponti infrastruktrt biztostottk akr kis-, akr nagyvllalatok vagy kormnyzati szervezetek szmra is. Ezen szolgltatk elnye, hogy a mai napig nagy megbzhatsggal nyjtanak adatkzpont-infrastruktrt, amibe belertjk az albbiakat is: a nagy svszlessg, vdett hlzati kapcsolat, hely a kiszolglk szmra, hts, energia, fizikai vdelem, tzvdelem. Ezek egy-egy vllalat vagy szervezet szmra egyedileg kiptve s zemeltetve sokkal kltsgesebb s kevsb hatkony megoldst jelentenek, mint az adatkzpontot szolgltatsknt megvenni egy erre specializldott cgtl. Hiszen egy adatkzpontot nemcsak felpteni kell, hanem zemeltetni, fejleszteni s bvteni is! Visszatekintve a felh bemutatsra, gyakorlatilag ekkor jelent meg az adatkzpont infrastruktra mint kzm, amelyben mg tovbbra is sajt zemeltets fizikai kiszolglk biztostjk az IT krnyezetet.

Virtualizlt adatkzpont
Az adatkzponti infrastruktrk megjelense s a sajt adatkzpontokbl egy szolgltatsknt megvsrolt infrastruktrba kltzs nagyjbl a 2000-es vek kzepn indult el a magyarorszgi nagyvllalati krnyezetben. Ezzel megkzeltleg egy idben jelent meg egy hasonlan meghatroz jdonsg: a kiszolglk virtualizcija. A korbbi adatkzpontok esetn az volt a gyakorlat, hogy egy fizikai kiszolgln egy opercis rendszer futtat egy vagy tbb szolgltatst (1:1:n kapcsolat). Ez az zembiztonsgi szempontok miatt ltalban 1:1:1 kapcsolat lett, ugyanis a szolgltatsokat zemeltet rendszergazdk nem akartk megosztani a felelssget ms szolgltatsok zemeltetivel, vagy nem akartk, hogy az egyes szolgltatsok karbantartsai vagy fejlesztsei kihatssal legyenek egy msik szolgltatsra (pldul az intranet verzifrisstse ne zavarja a levelez rendszer elrhetsgt). A teljestmnyproblmk a hardver kpessgeinek dinamikus fejldsvel egyre cskkentek, a legtbb szolgltats szmra az elrhet tlagos kiszolgl teljestmnye bven tbb mint elegend lett. Csak az sszehasonlts miatt: ma a mobiltelefonom nagyobb teljestmny hardverrel rendelkezik, mint amivel egy, a 90 -es vek vgn, a 2000-es vek elejn elrhet infrastruktra- vagy akr alkalmazskiszolgl brt. gy a korbbi 1:1:1-es arny az adatkzpont hatkonysgnvekedsnek gtja lett, hiszen a kiszolglk tmnytelen szmtsi kapacitsa s memrija gyakran kihasznlatlanul llt.
Ha valaki szeretn megtudni, hogy a mostani infrastruktrja hogy is ll ezzel a kihasznltsggal, s nem rendelkezik olyan felgyeleti rendszerrel, amely kpes a kiszolgl teljestmnynek mrsre mint a System Center 2012 Operations Manager , annak javaslom az ingyenes Microsoft Assessment Toolkit hasznlatt: http://technet.microsoft.com/en-us/library/bb977556.aspx.

Mivel a korbban emltett okok miatt egy opercis rendszerre tbb szolgltatst zemeltetsi okbl nem szoks tenni, ezrt a hardver kihasznlsi hatkonysgnak nvelse akkor lehetsges, ha a hardver:opercis rendszer:szolgltats arnyt 1:n:m kplet szerint prbljuk nvelni (ami gyakorlatban legtbbszr 1:n:n szokott lenni). Ezt valstja meg a kiszolgl virtualizcija, amely segtsgvel egy fizikai kiszolgln egyms mellett tbb, akr eltr verzij opercis rendszert futtatunk. A gondolat nem jkelet mint azt esetleg sokan gondolnk , az IBM 370 hozta be a hardver particionlhatsgt. Lnyegben ezt valstja meg a modern virtualizci is: egy sok processzorral, memrival, kapacitssal rendelkez hardveren tbb kisebb egysget alaktunk ki, amelyeket virtulis gpeknek neveznk. Az ezeken

41

3. Az Azure mkdse a virtulis gpeken fut opercis rendszerek mindegyike abban a tudatban l, hogy csak fut a hardveren, teht nem ltja a tbbi virtulis gpet, azoktl teljesen fggetlenl fut, nem tudja ellk (f)elhasznlni az erforrsokat, nem tud semmilyen mdon hatst gyakorolni a tbbi virtulis gp mkdsre, s gy veszlyeztetni sem tudja azokat. Ezzel teht megvalsul az a cl, hogy egy fizikai vason tbb szolgltatst tudjunk futtatni anlkl, hogy azok egymsra hatssal lennnek igaz, ezt tbb dediklt opercis rendszerrel rjk el. A virtualizcis technolgia jelents elnye mg a rugalmassg s a hordozhatsg. Aki mr prblt egy fizikai gpen kapacitst bvteni, esetleg hardverhiba vagy regeds miatt fizikai komponenst cserlni egy l szolgltats alatt, az pontosan tudja, mire is gondolok. Noha a Windows Server 2003 ta tm ogatott a hot-plug memria, vagy akr a CPU-bvts, a fizikai vilgban erre vajmi kevs alkalommal lttam l pldt. Az opercis rendszer tbb ponton ktdik a hardverhez (eszkzmeghajtk, CPU -architektra, utastskszlet stb.), amelyek a hardvercsert meglehetsen nehzkess teszik. Ezrt ha a kiszolgl hardver cserjt vagy kltztetst kell elvgezni, ezt a legtbb esetben egy teljes opercisrendszer- s szolgltats-jrateleptssel szoks megoldani. Ez legalbb j alkalom a katasztrfaterv vgrehajtsnak gyakorlsra is. Ez a feladat rendkvl id- s erforrsignyes, nem teszi lehetv a dinamikus mkdst, vagyis hogy tmeneti idre, amg szksg van r, nagyobb kiszolglra tegyem az adott szolgltatst, azutn, ha mr nem kell, visszavegyem egy kisebbre. A fizikai kiszolglk vilgban teht mindig a cscskapacitsra kell tervezni a hardvert, vagy elfogadni azt a kompromisszumot, hogy a cscsterhelst nem tudjuk az elvrt teljestmnnyel kiszolglni. A virtualizci teht segt nvelni a hardvereszkzk kihasznltsgt, s egyben rugalmass teszi a virtulis opercis rendszereken futtatott szolgltatsok mozgathatsgt (fizikai kiszolglk vagy akr ppen adatkzpontok kztt) s bvthetsgt. Viszonylag j szolgltats a live migration, amely azt jelenti, hogy egy virtulis gpet a benne fut opercis rendszerrel s szolgltatsokkal egytt lells nlkl tudok tervezetten mozgatni kt fizikai kiszolgl kztt.

Microsoft-adatkzpontok
A korbbiakban sz esett arrl, hogy az adatkzpont nemcsak annyit jelent, hogy veszek pr szervert, bedugom ket a konnektorba, s kszen vagyok! Az adatkzpontok egyb jrulkos ignyei igen jelents kltsgekkel jrhatnak. Az 1. fejezetben megismerted a PUE (Power Usage Effectiveness) fogalmt. Egy mai, modernnek tekinthet tlagos adatkzpont esetben ltalban a PUE > 2,0. Ez azt jelenti, hogy legjobb esetben is a bevezetett energia mennyisgnek csupn a fele hasznos IT kapacits, a tbbi elvsz. Mi okozza ezt a pazarlst? A htsi igny, a leveg keringetse, a rossz hatsfok sznetmentes tpegysgek s transzformtorok, vilgts stb. A Microsoft ltal jonnan zembe helyezett negyedik genercis adatkzpontokban a PUE rtke 1,05 lesz, azaz meg fogja kzelteni az idelis hatrt. Ez azt jelenti, hogy az adatkzpont a maximlis hatkonysgon mkdik, majdnem szinte minden felhasznlt energia kizrlag az IT szolgltatsokra megy el. Ezt a Microsoft adatkzpontokrt felels szervezeti egysge, a Microsoft Global Foundation Services (GFS 10), az adatkzpontoknak a tapasztalatok alapjn trtn folyamatosan fejlesztett s mdostott tervezse, kialaktsa rvn ri el. gy kszlnek a GFS ltal zemeltetett negyedik genercis, gynevezett modulris adatkzpontok, amelyek a korbbi harmadik genercis kontner adatkzpontok tovbbfejlesztsei. A kontner adatkzpont (3-1 bra, 3-2 bra) azt jelenti, amit a neve is sugall: egyetlen kontnerben valsul meg a szmtsi s trolsi kapacits mellett a szksges sznetmentes ellts, hts stb. Egy ilyen kontnerbe csak be kell csatlakoztatni az elektromos s Ethernet hlzatot, s biztostani kell a szellzst.

10

http://www.globalfoundationservices.com/ 42

3. Az Azure mkdse

3-1 bra: A Microsoft harmadik genercis kontner adatkzpontja Chicagban

3-2 bra: A Microsoft chicagi adatkzpontjnak kontnerei bellrl

A harmadik genercis kontner adatkzpontokkal a GFS-nek jelenleg az 1,2-1,5 PUE rtket sikerlt elrnie, ezt szeretnk tovbb javtani a negyedik genercis, jelenleg is bevezets alatt lev adatkzpontok esetn. Mik a negyedik genercis adatkzpontok hatkonysgnvelsnek s kltsgcskkentsnek lehetsgei? Az elllts kltsgeinek cskkentsre a standardizlt, modulris felptsben vannak lehetsgek. A standardizlt kialakts egyben gyorsabb gyrtst s bezemelst jelent, ami szintn fontos a felhszolgltatk szemszgbl, hiszen a felhasznlk szmra vgtelen kapacits biztostsnak az a felttele, hogy gyorsabban tudjk az adatkzpont kapacitsaikat bvteni, mint ahogy a felhasznlsi ignyek jelentkeznek. Az zemeltetsi kltsgek cskkentsre megoldst jelenthetnek az j htsi mdok mint pldul a passzv hts (az egyes terleteken az idjrsbl add lland szl hasznlata az adatkzpont htsre)

43

3. Az Azure mkdse , vagy egyszeren az adatkzpontoknak olyan helyen val fellltsa, ahol az ves kzphmrsklet 10C alatti, s csak minimlisan ingadozik. Mg egy rdekessg: minden kiszolgl hardver gyrtja megadja a javasolt mkdsi tartomnyt a hmrskletre s pratartalomra vonatkozan (ltalban: 17 -26C s 30-50% kztti relatv pratartalom). Az adatkzpont zemeltetjnek teht ezeket a krlmnyeket kell biztostania, ha nem akar garancilis problmkat hardverhiba esetn. A GFS mrsei szerint ez tlbiztostott rtktartomny, s az 1000 kiszolglra jut meghibsodsban nem jelentkezik jelents kiugrs, ha ezt az rtktartomnyt kiszlestjk a 10-35C s 20-80% pratartalom tartomnyra. Viszont az adatkzpont klmjban a szlesebb hmrsklet- s pratartalom-rtktartomny nagyobb rugalmassgot biztost. Ennek rvn a htsi s zemeltetsi kltsgek alacsonyabban szinten tarthatak anlkl, hogy ennek kihatsa lenne az adatkzpont mkdsre vagy egyb kltsgeire. Ami az zemeltetsi kltsgeket illeti, annak csak egy rszt teszi ki az energia. Aki zemeltetett mr nagy rendszereket, az tudja, hogy a megfelel felgyeleti rendszerek s automatizmusok esetn mindegy, hogy 10, 100, 1000 vagy 10000 munkallomst vagy kiszolglt kell zemeltetni, az zemeltetsi feladatok nem exponencilisan nnek. Egy GFS ltal zemeltetett adatkzp ontban, ahol akr szzezres nagysgrendben vannak kiszolglk, a teljes adatkzpontot zemeltet szemlyzet nagyjbl 30-40 ft tesz ki, belertve a biztonsgi szolglat embereit is. Ez a nagyfok hatkonysg a szabvnyosts rvn rhet el mind a kiszolglk, mind az adatkzpont kialaktsa sorn. Hiba tartanak karban tbbezer szervert, nincs klnbsg a kiszolglk, kontnerek kialaktsban, nem kell t gyrt hszfle megoldsra specializlt szakember, hiszen az adatkzpontban minden egysges szabvnyokat kvet. A felhasznlk nagy szma s az egysges kialakts a kiszolglk beszerzsi kltsgeiben is hatkonysgot jelent: gondolom, mindenki tapasztalta mr, hogy minl nagyobb ttelben vsrol egy szllttl, annl nagyobb rkedvezmnyeket fog kapni. Nos, tzezres szerverttelek esetn ez fokozottan igaz! Ms nagy felhszolgltatkkal ellenttben a Microsoft kizrlag neves hardvergyrtk kiszolgl hardvereit hasznlja az adatkzpontjaiban, s nem munkalloms-alkatrszekbl vagy egyb egyni mdon sszelltott konfigurcikat.
Egy rvid anekdota a nagy ttelben val kiszolgl-vsrlshoz kapcsoldan: Trtnt mg valamikor 2005-2006 sorn, hogy egy gyfelnknl bevezets alatt lev szolgltatshoz kapcsoldan a projektemben szksgnk volt 7 8 alapszint kiszolglra, ami akkoriban 1 CPU-t (mg nem volt tbb mag) s 2GB RAM-ot jelentett. Az gyflnek abban az vben volt egy nagy kiszolglrendelse az egyik nagy hardvergyrttl, amely sorn rendelt kb. 500 darab 2 CPU-s, 4GB-os kiszolglt. Vgl mi is ilyen konfigurcit kaptunk a projektnkhz, ugyanis a hardverszllt kzlte, hogy az 1 CPU-s 2GB RAM-os konfigurcikat magasabb ron szlltan, mint a 2 CPU s 4GB RAM-os verzit. A gyrt ltal adott magyarzat az volt, hogy a gyrtsorokat mr belltottk az eredeti 500as ttelben szerepl konfigurcira, s ha ugyanolyan tpus, de csak 1 CPU -s s 2GB RAM-os rendszert szeretnnk, akkor neki alkalmazottakat kell odakldenie, akiknek ki kellene vennie az egyik CPU -t s a RAM felt, jracsomagolni, logisztikban kln kezelni, megjellni, stb. Ez sszessgben tbbe kerlne, mint ha azt a plusz 8 kiszolglt is az eredeti (ktszer olyan ers) konfigurcival szlltjk. Ez a helyzet a mai hardverkapacitsok figyelembevtelvel mg fokozottabban jelenik meg.

Mondanom sem kell, hogy a Microsoft igen nagy ttelben vsrol kiszolglkat a sajt felh - s internetes szolgltatsainak fenntartsra, hiszen mint emltettem, a GFS a Microsoft minden adatkzponti szolgltatst zemelteti, belertve az Xbox Live, Hotmail, MSN, Messenger, Bing, Office 365, Windows Azure s egyb szolgltatsokat. A GFS ltal kzlt publikus informcik alapjn a Microsoft tbb, mint tz s kevesebb, mint szz adatkzponttal rendelkezik a vilgon, tbb szzezer kiszolglv al (figyelem, ez nemcsak az Azure, hanem minden Microsoft adatkzpont, amit a GFS zemeltet). A GFS ltal nyilvnossgra hozott tz adatkzpont helyszne a 3-3 brn lthat, ezek azok az adatkzpontok, amelyekben a GFS jsgrknak, Microsoft gyfeleknek, rdekldknek szervez adatkzpont-ltogatsokat.

44

3. Az Azure mkdse

3-3 bra: A Global Foundation Services ltal zemeltetett, nyilvnossgra hozott adatkzpont helysznek

A felh opercis rendszere


Az Azure esetben jelenleg nyolc adatkzpontbl vlaszthatunk szolgltatsaink vagy virtulis gpeink ltrehozsnl, ezek klnbz geopolitikai rgikba tartoznak: Eurpai Uni o o o o o o o o North Europe (Amszterdam) West Europe (Dublin) North Central US South Central US East US West US East Asia Southeast Asia

USA

Tvol-Kelet

Egy rgiban tbb adatkzpont tallhat, s ezek magas rendelkezsre lls szolgltatsok kialaktst teszik lehetv. Az adatkzpontok elg messze vannak egymstl ahhoz, hogy az egyikket sjt meghibsods, vagy akr katasztrfa (ramkimarads, rvz, fldrengs) a tbbire ne legyen hatssal. Ugyanakkor minden rgiban van legalbb mg egy adatkzpont, ahov szksg esetn tterhelhetek a feladatok. Pldul ha az adataink, szolgltatsaink trolshoz s futtatshoz a West Europe adatkzpontot vlasztjuk (mert nem szeretnnk, hogy az adatok elhagyjk az EU terlett), s engedlyezzk a georeplikcit, akkor a North Europe adatkzpontba fogja az Azure az adatokat dupliklni (3-4 bra).

45

3. Az Azure mkdse

3-4 bra: Georeplikci engedlyezse

Fabric Controller
Egy adatkzpontban a kiszolglk nagyjbl ezres csoportokba vannak szervezve, amelyeket frtnek (cluster) nevez az Azure zemeltetsi terminolgia. Ezek nem keverendk ssze a Windows Serverekben elrhet frtkkel, mert br a nv ugyanaz, ms fogalmat takar. Teht ha egy adatkzpontban 30 000 kiszolgl van, akkor abban nagyjbl 30 frt van. Az Azure hrom tpus frtt klnbztet meg: Windows Azure Compute cluster szmtsi kapacits frt Windows Azure Storage cluster trszolgltats frt Windows Azure SQL cluster SQL adatbzis frt Ez hrom klnbz hardver kialakts, mindegyik ms hasznlati clra optimalizlt kiszolgl konfigurcit jelent. Ezek felgyelett s menedzselst azonban a tpustl fggetlenl egysgesen a fabric controller (FC) ltja el. A 3-5 brn lthat egy sszehasonlts, amely bemutatja, hogy a felhszolgltatsok vilgnak komponensei hogyan feleltethetk meg az egykiszolgls vilgnak.

Alkalmazs

Alkalmazs

Exchange Online

SQL Azure

Windows kernel

Fabric Controller

Kiszolgl

Adatkzpont

3-5 bra: A felh s egy szmtgp felptse

Az FC ltja el az adatkzpontok erforrs-kezelst, mint ahogy az adott szmtgp erforrsainak kezelst a Windows kernel (az opercis rendszer magja) teszi. Az FC feladatai kz tartozik olyan feladatok elltsa, mint: a hardverek provizionlsa, vagyis az jonnan bezemelt hardverek bevonsa a frtbe, vagy j frtk ltrehozsa, a hlzat konfigurlsa, a futtatott szolgltatsok, virtulis gpek provizionlsa s kezelse, a komponensek egszsgi llapotnak figyelemmel ksrse. Az ezres gpcsoportokbl ll hatrok kialaktsra azrt van szksg, mert a felhszolgltatsok nyjtsnl alapfilozfia, hogy brmi, brmikor elromolhat, s ha ez bekvetkezik, akkor minimalizlni kell ennek a szolgltatsra tett hatst, s legfkppen elkerlni a tmeges vagy globlis lellst. Ebben segt,

46

3. Az Azure mkdse ha az adatkzpontot nem egyetlen nagy egszknt, hanem tbb rszre osztott egysgknt kezeljk, vagyis gyakorlatilag particionljuk az adatkzpontunkat. Ezzel meggtoljuk, hogy egy hiba az egsz adatkzpontra hatssal legyen, vagy tovbbterjedjen hiszen az FC-ben vagy annak zemeltetsben is lehet hiba , illetve egy frt kiesse egyszerbb teszi a hibakeresst is. Egy ezer gpbl ll frtt felgyel FC fizikailag ltalban 5-7 tagbl ll frtben kerl megvalstsra a rendelkezsre lls biztostsa vgett. Azrt az t az idelis vlaszts, mert a tbbsgi quorum elv alkalmazsa miatt mindenkppen pratlan szm kiszolgl kell. Ennek alapjn a frtt felgyel FC -k kzl kivlasztsra kerl egy adott algoritmus szerint az aktulis master, akinek tbbsgi szavazatra van szksge ahhoz, hogy irnytknt mkdjn. Ez azt jelenti, hogy az FC frtt alkot kiszolglk szmnak 50%+1 szavazatra van szksg a kivlasztott master elfogadshoz. Egy pldn keresztl taln egyszerbb megrteni: Egy hrom tagbl ll frt tagjai kztt megszakad a kommunikci: az egyik oldalon egy kiszolgl (nevezzk A-nak), a msik oldalon kt kiszolgl (nevezzk ket B-nek s C-nek) reked. A hlzati kommunikci elvesztsnek pillanatban mindegyik kiszolgl jraszmolja, hogy az algoritmus alapjn ki a master. Tegyk fel, hogy az jn ki, hogy az A! Ahhoz, hogy az A valban tvegye az irnytst, 50%+1 szavazatra van szksge, teht hrom tag esetn fel kell, hogy tudja venni a kapcsolatot mg egy kiszolglval, aki szintn megersti, hogy jelenleg az A kiszolgl a master. Nyilvn ez nem trtnik meg, hiszen abbl a felttelezsbl indultunk ki, hogy az A elvesztette a kapcsolatot a msik kett kiszolglval, teht br az algoritmus szerint az A-nak kellene a master szerepet felvennie, ezt nem teszi meg, mivel nem kapja meg a szksges szavazatot. A B s C is kiszmolja, hogy A -nak kellene a masternek lennie, azonban mivel nem rik el az A-t, ezrt jraszmoljk. Ennek alapjn az jn ki, hogy a C kiszolglnak kell lennie a master-nek. Mivel a B s a C is erre az eredmnyre jut (az azonos algoritmus hasznlatbl ereden), s mivel nincs kapcsolat az els vlasztott A fel, ezrt a B megadja a szksges plusz egy szavazatot a C kiszolglnak, aki ezzel felveszi az j master szerept. Ez a tbbsgi quorum elv. Az Azure FC-k esetben egy FC frt nem hrom, hanem t tagbl ll. Vajon mirt? Ha csak hrom lenne a frtben, akkor egy upgrade vagy karbantarts sorn lelltott FC kiszolgl mellett kett mkd maradna. Ha ebbl a kettbl egy meghibsodik, akkor a frt teljes vezrlse s emiatt a teljes frt is lell. Az t esetben a frissts s karbantarts cljra lelltott egy FC kiszolgl mellett mg egy FC kiszolgl meghibsodsa esetn is megvan a tovbbmkdshez szksges tbbsgi szavazat (hrom az tbl).

Hardverprovizionls
Az adatkzpont zemeltetsnek egy msik fontos s a kltsgek alacsonyan tartsa szempontjbl kritikus eleme a magas fok s teljes kr automatizls. Ez biztostja, hogy 30-40 ember tudjon tbb szzezer kiszolglbl ll adatkzpontot zemeltetni. Az automatizlsnak nemcsak az adatkzpont zemeltetsre, de az j kiszolglhardverek, j kapacitsok bevonsra is ki kell terjednie. Ezt a funkcit szintn az FC ltja el. Az FC elre megkapja a provizionland hardverek konfigurcijt az adatkzpont felptst nyilvntart adatbzisbl. Ennek alapjn minden kiszolgl szmra elre kiosztja az IP cmet s az egyb konfigurcis elemek rtkeit. A berkez blade gpek alaprtelmezetten PXE-rl (hlzatrl) indtsra vannak konfigurlva. A PXE-vel egy Windows PE krnyezet kerl letltsre a hardverre, amely tartalmazza azt a deployment agent programot, amely elvgzi a fizikai kiszolgl elksztst, inicializlst (lemezparticionls stb.), nagyon hasonlan egy MDT vagy egy System Center 2012 alap hardver provizionlshoz (bare metal provisioning). Ezutn ez az gens telepti a Windows Server opercis rendszert. A telepts az elre elksztett VHD fjl msolst s konfigurlst jelenti, a gpek a VHD boot kpessget hasznljk. Az gy elindul opercis rendszer biztostja az adott hardveren a virtulis gpek futtatst biztost hypervisor rteget. Az ezen a fizikai gpen fut opercis rendszer tartalmaz egy FC host agentet, amely a fizikai gpen fut opercis rendszer s az FC kztti kommunikcit biztostja, az FC ezen keresztl vezreli az adott kiszolglt, s ezen keresztl ellenrzi annak egszsgi llapott. A kapcsolat titkostsra az FC host agent az els elindulsakor generl egy sajt maga ltal alrt tanstvnyt, s ennek a publikus kulcst elkldi a sajt FC-jnek. Ezzel az FC titkostott kapcsolatot tud kialaktani mindegyik fizikai gpen fut FC host agent fel, amelyeken keresztl a gpek konfigurcijt s felgyelett vgzi.

47

3. Az Azure mkdse

Szolgltatsok felgyelete
Az Azure-ban futtatott szolgltatsok s virtulis gpek felgyelete s elrse az Azure portlon (http://manage.windowsazure.com), PowerShellen vagy a System Center 2012 App Controller funkcijn keresztl lehetsges. Ez utbbi egyarnt kpes a sajt bels virtualizcis hosztokon fut s az Azure-ban fut virtulis gpek felgyeletre. Ezek mind az RDFE (Red Dog Front End) rtegen keresztl vgzik a szolgltatsok s virtulis gpek provizionlst s kezelst, amint azt a 3 -6 bra mutatja.

3-6 bra: Az RDFE s az Azure szolgltatsok felgyelete

Az RDFE felels az albbi szolgltatsok biztostsrt: elfizetsek kezelse, szmlzs kezelse, felhasznli hozzfrs biztostsa, menedzsmentje, szolgltatsok menedzsmentje, a szolgltatsok adatkzpont-frtk kztti elhelyezse s az adatkzpontok kztti replikci . Teht az RDFE a frtk felett ll vezrlst valstja meg a felhasznli preferencik, a belltott paramterek s a rendelkezsre ll erforrsok alapjn. Az egyik legfontosabb funkcija a terhelsek adatkzpontokhoz s adatkzpontokon bell frtkhz rendelse, a terhels elosztsnak biztostsa, a replikci s rendelkezsre lls kezelse. Az elfizetsek s a szolgltatsok kezelse is itt trtnik.

Szolgltatsok provizionlsa
A szolgltatsok (IaaS, PaaS) provizionlsa lnyegben azonos mdon trtnik. A felhasznltl kapott ignyek alapjn a rendszer meghatrozza a szksges erforrsignyeket: a hardverparamtereket, a fizikai blade szerverekhez rendelt dinamikus IP (DIP) cmeket, a virtulis IP (VIP) cmeket, valamint az egyes DIPekhez rendelt portokat. Ezeknek az erforrs-ignyeknek az ismeretben s a frtk jelenlegi terhelsnek

48

3. Az Azure mkdse figyelembevtelvel kerl meghatrozsra, hogy mely frtkn jjjenek ltre az egyes virtulis gpek. A virtulis gpek ltrehozst a kijellt hoszt gpek FC host agent szolgltatsa vgzi, s ez indtja el a konfigurci befejezse utn a virtulis gpeket. PaaS szolgltatsokhoz kapcsold virtulis gpek elhelyezsnl vlik fontoss az update domainek s fault domainek szmnak a krdse. A fault domainek szma azt adja meg, hogy legalbb hny energiaellts, hlzati eszkzk, tzvdelem stb. tekintetben fggetlen znba legyenek sztosztva a virtulis gpek. Egy hardverhiba egyszerre egy ilyen znt rinthet, gy minl tbb fault domainben vannak a gpeink, annl kisebb szzalkukat rinti egy meghibsods. Az update domainek szma azt jelenti, hogy a PaaS szolgltats esetn a kdfrissts eket milyen blokkokban akarjuk kikldeni. A frissts egyidejleg csak egyetlen update domainen trtnik, azaz minl tbb update domainben vannak a gpeink, egy frissts sorn annl kisebb hnyaduk ll le. A virtulis gpek felgyelett a virtulis gpekben lev guest agent komponensek vgzik. A guest agent komponensek feladata nagyban hasonlt a fizikai host gpek felgyelett ellt genshez: virtulis gp provizionlsa, virtulis gp egszsggyi llapotnak nyomon kvetse, szolgltatsi szerepkrk provizionlsa (PaaS), valamint szolgltatsi szerepkrk egszsggyi llapotnak monitorozsa. Az FC host agent s a guest agent elhelyezkedst, kapcsolatt a 3 -7 bra mutatja be.

3-7 bra: Az Azure FC host agent s a guest agent

A guest agent s a host agent kzti kommunikci hasonlan a host agent s az FC kztti kommunikcihoz titkostott csatornn keresztl trtnik. Amikor a guest agent felled, egy tanstvnyt

49

3. Az Azure mkdse generl, s ennek a publikus kulcst elkldi a host agentnek. Innentl kezdve a host agent ennek a tanstvnynak a kulcst hasznlva folytatja a kommunikcit a virtulis gppel.

PaaS
A PaaS gpek klnbzeti virtulis lemezeket (differencilis lemezeket) hasznlnak, mert ezekkel egyszerbb visszallni egy korbbi llapotba, illetve ezek lehetv teszik kzs bzislemezek hasznlatt. Ez azt jelenti, hogy egyszer kszl el egy Windows Server lemezkp, s az mdosts nlkl kerl felhasznlsra a klnbz virtulis gpekben, mivel az egyes virtulis gp pldnyok nem a teljes VHD tartalmat msoljk s hasznljk, csak az eredeti llapottl val eltrseket rgztik egy klnbzeti lemezen. A ltrehozott PaaS szolgltats tnyleges alkalmazsakor VHD-knt kerl csatlakoztatsra. Teht az ltalunk elksztett PaaS alkalmazs kdja belekerl egy VHD fjlba, s a rendszer ezt a VHD fjlt csatlakoztatja a szolgltats futtatst vgz virtulis gpbe. A PaaS gpek felptst a 3 -8 bra mutatja be.

PaaS Virtulis gp
C:\ Kzsen hasznlt erforrs Diszk Dinamikus VHD D:\ Windows diszk Klnbzeti (differencilis) diszk E:\ vagy F:\ Szerepkr image Klnbzeti (differencilis) diszk

Windows VHD

Szerepkr VHD

3-8 bra: A PaaS gpek diszkjnek felptse

Ezek mind a blade gpek loklis meghajtirl futnak. Az alkalmazs megrzsre rdemes adatait viszont rdemes nem a helyi meghajtkon trolni, hanem kihelyezni pl. Azure Blob Storage -ba. A PaaS esetben egy fizikai gp kiesse esetn automatikusan elindul egy azonos mret standard gp, s abba ismt becsatlakoztatsra kerl a szolgltats VHD-ja. Ez a loklis meghajtkon trolt adatok elvesztst is jelentheti, azonban a Blob Storage-ban lv adatok termszetesen gond nlkl hasznlhatk tovbb. (A javasolt hasznlati mintkrl bvebben olvashatsz a 9. fejezetben.)

IaaS
Az IaaS esetben a legjelentsebb klnbsg, hogy a virtulis gpek nem a blade gpeken lev loklis VHD-kbl futnak. A loklis lemezekrl val futtats azrt nem volna j megolds, mert gy az adott blade en fut sszes virtulis gp adatai elvesznnek egy hiba esetn. Az IaaS esetben pedig a virtulis gp OS lemeze is rtket kpvisel, s annak is rendelkezsre kell llnia egy fizikai gp kiesse alkalmval. Ezrt az IaaS esetn az opercisrendszer-lemezeknek s az adatlemezeknek is az Azure Blob Storage-ban kell troldniuk, hiszen ezek hasznos szolgltatsadatokat tartalmaznak. A rendszer tervezinek meg kellett oldaniuk azt, hogy a virtulis gpek az Azure Blob Storage-ban lev virtulis gpekbl tudjanak betltdni, elindulni, s futni. Ehhez a fizikai gpen lv virtulis lemezmeghajtt hasznl az Azure, amely a virtulis gpbl jv I/O-mveleteket tirnytja az Azure Blob Storage-ban trolt VHD fjlba. A teljestmny fokozsa vgett a fizikai gp lemezn s memrijban is van gyorsttrazs. Ez rendszerlemezek

50

3. Az Azure mkdse esetben rsi s olvassi gyorsttrat is jelent (teht nem tervezett meghibsods esetn az IaaS -on is elkpzelhet adatveszts, de csak a legutoljra kirt adatok vannak veszlyben), az adatlemezek esetben viszont alaprtelmezsknt sem rsi, sem olvassi gyorsttrazs nincsen, azok mind kzvetlenl a Blob Storage-bl dolgoznak (3-9 bra). Az IaaS gpek egyb provizionlsi lpsei megegyeznek a PaaS virtulis gpek provizionlsval, vagyis az elre elksztett (sysprepelt) lemezkpekbl az Azure FC host agent provizionlja a virtulis gpet, majd utna a virtulis gpben lev guest agent tveszi a provizionls s konfigurls tovbbi lpseit, illetve biztostja a virtulis gp felgyelett s monitorozst.

Guest gp

Virtual Disk driver Helyi RAM cache Helyi lemez cache

Azure blob storage

Fizikai kiszolgl
3-9 bra: Az Azure IaaS gpek virtulis lemezei

Az IaaS esetn teht mindenkppen van egy C: meghajt, amin az OS van, s egy D:, ami egy ideiglenes drive, mivel az a loklis blade gp lemezn van (3-10 bra), ami tterhels, meghibsods esetn elvsz. Fontos figyelnnk arra, hogy az Azure IaaS esetn a D: meghajtra soha ne teleptsnk s ne is troljunk ott semmit, mivel az elveszhet! Ha a rendszerlemezeken kvl tovbbi adatokat szeretnnk trolni az IaaS gpen, akkor csatlakoztassunk a gphez tovbbi adatlemezeket, s azokra teleptsk az alkalmazs okat, vagy azokon troljunk csak adatokat! A Blob Storage-ban trolt adatok (OS diszk, adat diszkek) georedundnss tehetk s nem vesznek el, ha a futtat fizikai gprl a virtulis gp tkerl egy msik gpre. Az adatlemezek teljestmnye egybknt nvelhet azltal, hogy tbb virtulis adatdiszket adunk a gphez, s azokbl szerveznk egy RAID0-t a virtulis OS-ben. Adatvesztstl nem kell tartanunk, hiszen az Azure Blob Storage-ban trolt adatok vdettek s redundnsak.

51

3. Az Azure mkdse

IaaS Virtulis gp
C:\ OS diszk D:\ Erforrs diszk E:\ vagy F:\ (opcionlis) adat diszk

Helyi RAM cache Helyi diszk cache

Blob storage

Blob storage
3-10 bra: Az Azure IaaS lemeznek felptse

Katasztrfk nyomban: A 2012-es szknap


Az egyik kedvencem a National Geographic Channelen a Katasztrfk nyomban - Seconds from Disaster cm msor (elrulom, a msik a Lgi katasztrfk Air Crash Investigations). Az egyik nagyon fontos visszakszn tanulsg ezekbl a msorokbl, hogy nincs pusztn szerencstlen esemny, mindig tbb egymstl fggetlen esemny egyidej bekvetkezse vezet a katasztrfkhoz. Egy msik jelents zenete ezeknek a msoroknak, hogy az ilyen esemnyek esetn fontos az okok s trtnsek feldertse, azok rtelmezse, mert ez lehetv teszi azoknak a tanulsgoknak a leszrst, amelyek rvn elkerlhetjk, hogy a jvben hasonl esemnyek megismtldjenek. Ennek a msornak a mintjra szeretnm itt bemutatni az Azure esetben bekvetkezett egyetlen jelents szolgltatskiesst, a 2012. vi szknapi meghibsodst.
Az itt kzlt informcik az Azure team sajt blogjn is elrhetk:

http://blogs.msdn.com/b/windowsazure/archive/2012/03/09/summary-of-windows-azureservice-disruption-on-feb-29th-2012.aspx.

Az egsz esemnylncolat kezdete mgtt az albbi egy sor kd ll:


validToYear = currentDate.Year + 1;

Ez az a kdsor, amelyet a guest agent hasznlt arra, hogy az jonnan elindul virtulis gp ltal generlt, a host agenttel trtn kommunikciban hasznlt tanstvny lejrati idejt meghatrozza. Vagyis a tanstvny generlsa az aktulis nap UST idben szmolt v, hnap, napjhoz hozzad egy vet, s azt teszi meg a lejrati idnek. Ebbl kifolylag a 2012. februr 29 -n generland tanstvnyok esetn a lejrati idt 2013. februr 29-re kellett volna tenni, ami viszont rvnytelen dtum, gy a guest agent tanstvnynak generlsa sikertelen volt. A guest agent inicializlsa emiatt megszakadt, s a guest agent nem kezdett kommunikcit a host agent fel. A host agentben van egy beptett vrakozsi id 25 perc , amg arra vr, hogy a virtulis gp beinduljon s a guest agent felvegye vele a kapcsolatot. Ha ez utn a 25 perc utn sem kap letjelet a guest agenttl, alaphelyzetbe lltja a virtulis gpet, mert abbl indul ki, hogy valamilyen tevkenysg sikertelen volt a virtulis gp elindtsa sorn. Ha egy virtulis gpet egy adott fizikai gpen nem sikerl hrom egyms utni prblkozsra sem elindtani, akkor a host agent azt a kvetkeztetst vonja le, hogy ez csak hardverhiba miatt lehet, s az 52

3. Az Azure mkdse egsz fizikai kiszolglt human investigate llapotba teszi, jelezvn az zemeltetknek, hogy azt a blade gpet ki kell cserlni, vagy legalbbis be kell avatkozniuk az zemeltetknek. Ezzel prhuzamosan a fabric controller megprblja a sikertelenl elindtott gpet a frtn bell egy msik fizikai gpen is elindtani. Termszetesen a problma ott is ugyangy jelentkezik, s gy egy id utn a frt gpei nagy szmban fizikailag hibsnak lesznek megjellve. Amikor a meghibsodott fizikai gpek szma tlp egy kszbrtket, a fabric controller az egsz frtt hibsnak jelli, s human investigate llapotba teszi. Ekkor megprblja az adott frtn fut szolgltatsokat egy msik frtn felleszteni, ami tovbbi j virtulis gpek inicializlst jelenti egy msik frtben. gy a problma fertzsknt terjed gprl gpre, frtrl frtre.

Redmondi id: 2012. februr 28. 16:00


A munkaid vghez kzeledve Redmondban az gyeletes zemeltets tveszi az adatkzpont felgyelett. Az amerikai nyugati parti id (PST) szerinti 2012. februr 28. 16:00 idpont az univerzlis idben (UST-ben) a guest agent ezt hasznlja a tanstvny lejrati id generlsra 2012. februr 29. 0:00. Az els virtulis gpek, amelyek ez utn az idpont utn keletkeznek vagy kerlnek msik fizikai gpre thelyezsre, elbuknak a tanstvny ksztse kzben. Ezzel prhuzamosan zajlik egy j fabric controller, host agent s guest agent verzi tertse (ami szintn mg a szknapot nem figyelembe vev, hibs kdot tartalmazza). A frisstsi tertsek miatt szintn szksges a virtulis gpek tterhelse, jraindtsa, ami szintn hozzjrul a problms gpek, hosztok s clusterek szmnak gyors nvekedshez. Az Azure storage frtjei nem rintettek, mivel azok nem futtatnak guest agenteket.

Redmondi id: 2012. februr 28. 17:15


Pontosan 75 perc (3*25 perc elteltvel) a hibs kd miatt sorra elkezdenek lellni a clusterek , emiatt megszlal az azonnali riaszts az Azure zemeltetsnl. Noha a meghibsodsok sokkal lassabban terjedtek azokon a clustereken, amelyeken nem volt folyamatban a verzivlts tertse, a betemezett frissts alatt lev clusterek elg gyorsan generltak nagyszm hibt, ami beindtotta a riasztst. Az zemeltets azonnal rtestette az gyeletben lv fabric controller fejlesztket.

Redmondi id: 2012. februr 28. 18:38


A fejlesztk alig egy rs hibakeress utn megtalljk a hiba forrst.

Redmondi id: 2012. februr 28. 18:55


Hogy meggtoljk a hiba tovbbterjedst, azonnal lelltjk a korbban betemezett fabric controller, host agent s guest agent frisstsek tertst. Ezenfell, hogy az Azure felhasznlk se tudjanak akaratlanul hozzjrulni a problma tovbbterjedshez az j gpek ltrehozsa, vagy meglev szolgltatsok kibvtse rvn, az zemeltets gy dnt, lelltjk a szolgltatsmenedzsmentet. Az Azure trtnetben elszr a felhasznlk nem frnek hozz a menedzsment portlhoz! A PaaS szolgltatsokat klnbz mrtkben rinti a kiess: a szolgltatsok nagy szzalka (ahol nincs folyamatban automatizlt, vagy felhasznl ltal kezdemnyezett verzifrissts) egyltaln nem szenved krt, ms szolgltatsoknl viszont lassuls vagy teljes lells is bekvetkezik. A szolgltatsmenedzsment lelltsval azonban sikerl meggtolni, hogy a problma a felhasznlk esetleges beavatkozsi prblkozsa miatt mg tovbb terjedjen.

Redmondi id: 2012. februr 29. 5:23


Nhny ra alatt elkszl a sebtben sszelltott tertsi s tesztelsi terv, valamint a frisstett guest ag ent, amely kijavtja a tanstvnygenerlsi hibt. A tertsi tervek s a javts tesztelse a teszt frtn 29 -n hajnali 1:50-re, egy les clusteren pedig 2:11-re befejezdik. Az sszes cluster frisstse megtrtnik hajnali 5:23-ra, ezutn az zemeltets bejelenti, hogy visszalltottk a szolgltatsmenedzsmentet a frtk nagy rszn.

53

3. Az Azure mkdse

A msodlagos szolgltatskiess
Mire az zemeltets beavatkozott a szolgltatsmenedzsment lelltsval, addigra a korbban betemezett frissts mr a frtk nagy rszre tertsre kerlt, ezek mr az j fabric controller, host agent s guest agent vltozatokat futtattk (de a guest agent termszetesen mg nem tartalmazta a szknapi hibajavtst). Azonban ht frt esetben az j verzi tertse ppen folyamatban volt, mikor az zemeltets lelltotta azt. Ezek a frtk flig ksz llapotban voltak, vagyis egyes kiszolglk mr az j host agent/guest agent verzit futtattk, msok mg a rgit, de mindkt verzi mg tartalmazta a szknapi hibt. Az zemeltets ennl a ht frtnl az elztl eltr megkzeltst vlasztott. Visszalltottk a fabric controllert a rgebbi verzira, s a blade gpekre is visszalltottk a host agentet s a guest agentet, de egy olyan rgi verzis guest agentre, amely mr tartalmazta a szknapi hibajavtst. Ehhez tesztknt visszalltottk az egyik hoszton a host agentet a korbbi vltozatra, hogy leteszteljk a mkdst a rgi host agenttel s rgi, de szknapi frisstst tartalmaz guest agenttel. A virtulis gpek rendben elindultak. Norml zemels esetn egy frtn a verzivlts rkat is ignybe vesz, mert figyelembe veszi az update domainek ltal jelentett korltokat. Ez az, ami meggtolja, hogy egy szolgltats sszes virtulis gpt egyszerre lltsa le a fabric controller karbantarts miatt. Ezt figyelmen kvl hagyva az zemeltets gy dnttt, egyszerre lltja vissza az sszes host agent s guest agent verzit a felems llapotban lev frtk esetben. A rohamban, egyetlen kiszolgln vgzett visszallts-tesztels sorn azonban elkerlte az zemeltets figyelmt a tny, hogy a visszalltst vgz csomagba a rgebbi host agent mell az jabb verzihoz kszlt hlzati plugin kerlt, s a kett nem kompatibilis (3-11 bra). A hlzati plugin feladata a virtulis gpek hlzati konfigurlsa, a hlzati kapcsolatok biztostsa, nlkle a virtulis gpeknek nincs hlzata, a szolgltatsok hiba futnak, azok a hlzaton nem rhetek el.

Virtulis gp Rgi Guest agent

Virtulis gp Rgi Guest agent

Rgi Host agent


j Hlzati plugin Host

Rgi Host agent


j Hlzati plugin Host

Hlzat

3-11 bra: Az eltr verzis host agent s hlzati plugin miatt a kiszolglk nem tudtak kommuniklni

Februr 29-n hajnali 2:47-kor a ht flksz llapotban lev frtre egyszerre tertsre kerlt a hibs sszetev-kombincit tartalmaz visszallt/javt csomag, amelynek eredmnyeknt minden virtulis gp, amely az adott frtn futott belertve a korbban a szknapi hiba ltal rintetleneket s mkdket is elvesztette a hlzati kapcsolatt. Mivel kritikus Azure szolgltatsok mint a Windows Azure Service Bus s az Access Control Service futottak ezeken a frtkn, ezrt minden olyan alkalmazs rintett lett, amely ezeket hasznlta vagy fggtt tle, mert azok nem tudtk hasznlni ezeket a funkcikat. Az zemeltets gyorsan reaglt, s hajnali 3:40-re kijavtotta s jra tesztelte a csomagot, ezttal ellenrizve a hlzati kapcsolatok mkdst is. Ezek a frtk nagyjbl reggel 8:00-ra kerltek jra mkdkpes llapotba, br sok kiszolgljuk korrupt llapotban volt a szmos verzivlts

54

3. Az Azure mkdse eredmnyeknt. A nap folyamn az zemeltets s a fejlesztk folyamatosan dolgoztak ezek kijavtsn, tesztelsn s jbli zembe lltsn, mg vgl mrcius elsejn hajnali 2:15 -kor jelentettk be, hogy a szolgltats mkdse ismt helyrellt.

A tanulsgok
Az zemeltet s fejleszt csapat alaposan elemezte a trtnteket, s levontk a kvetkeztetseket, amelyek rvn a szolgltats minsge javulhat. Ezek a terletek rviden: Megelzs: Hogyan kerlhetk el, izollhatk vagy llthatk gyorsan helyre a hibk?

Tesztels: Az eredeti problma forrsa egy hibs dtumformtum-kezels. A klnbz dtumokhoz s idkhz kttt tesztek kidolgozsa, az automatikus kdelemzs bvtse szolgl a hasonl jelleg hibk azonostsra. Hibaizolci: A fabric controller nem kszlt fel arra, hogy a guest agent is lehet hibs, nem felttlenl hardverhiba miatt nem indul el, vagy jelentkezik be egy virtulis gp. Jobban szablyozhat lezrs: A teljes szolgltatsmenedzsment lelltsval lehetett csak meggtolni, hogy a felhasznli beavatkozsok tovbbi problmkat okozzanak, ezt kisebb rszegysgekben is szablyozhatv kell tenni.

Detektls: A guest agent hibkra 75 perc elteltvel derlt fny, ennek a problmnak sokkal hamarabb ki kellett volna derlnie. Tjkoztats: A klvilg folyamatos informlsa a fejlemnyekrl.

A felgyeleti portl az elsdleges kommunikcis fellet a felhasznlk fel. Mivel azonban ez is elrhetetlenn vlt, a felhasznlk tjkoztatsa akadozott. Ezrt ennek a tjkoztat funkcijt kln kell vlasztani a felgyeleti portltl. A tjkoztatsnak ki kell trnie egy ltalnos ttekint llapot kzlsre s rszletes, transzparens aktulis llapot kzlsekre. Termktmogats: A szolgltatskiessek miatt a termktmogats kommunikcis vonalai bedugultak, sokkal hosszabbak lettek a vrakozsi idk, mint az elvrhat. A termktmogatst s felhasznli kommunikcit vgz csapatok ltszmt meg kell nvelni. Egyb csatornk: Tbb felhasznli krs is rkezett, hogy az Azure csapat blog oldaln, Facebookon vagy Twitteren is legyen elrhet kommunikci hasonl esetekben, hogy a felhasznlk kpet kaphassanak arrl, mi trtnik, arrl nem is szlva, hogy a tbbfle csatorna alkalmazsval nagyobb zembiztonsg rhet el. Bels eszkzk javtsa a hasonl hibk elkerlse vgett. Fggsgi priorizls: az egymsra pl szolgltatsok, komponensek bevonsa a visszalltsi folyamatokba.

Visszallts

A Microsoft Azure zemeltetsi csapata vgig nylt s szinte kommunikcit folytatott a problma felmerlse s megoldsa sorn. Ennek nagyon pozitv volt a fogadtatsa a felhasznlk krben, hiszen gy belelttak abba, mi is trtnik, s ez segtett megrizni a bizalmat.

sszegzs
Ebben a fejezetben messzirl indulva ttekintettk az adatkzpontok trtnett s a modern adatkzpontok jellemzit, s megllaptottuk, hogy az adatkzpont-kialakts s -zemeltets nll szakma nll szakterletekkel, szakrtkkel. Ezutn ttekintettk a Global Foundation Servicest (a Microsoft sajt adatkzpontjait zemeltet szervezetet) s az ltaluk kezelt adatkzpontokat. Ennek kapcsn megllaptottuk, hogy magas hatkonysg adatkzpontokat csak igen nagy kiszolgligny esetn s professzionlis mdszertan rvn lehet ltrehozni. Erre elssorban nagy felhszolgltatk kpesek. ttekintettk az Azure felptst, a fabric controllert, a host s guest agent komponenseket, a kiszolglk s szolgltatsok provizionlst s felgyelett. Az adatkzpontok zemeltetst vgz szoftver, a fabric

55

3. Az Azure mkdse controller tulajdonkppen az adatkzpontok opercis rendszere. Vgezetl a korbban ismertetett informcik alapjn megnztk, mi trtnt a 2012. vi szknapon.

56

4. Els lpsek

4. Els lpsek
Ebben a fejezetben az albbi tmkat ismerheted meg: Hogyan kezdhetsz neki az Azure tnyleges hasznlatnak? Milyen menedzsment, tanulsi s razsi funkcikat knl az Azure.com? Hogyan regisztrlhatsz magadnak egy Azure elfizetst, s mirt lnyeges ez? Milyen letlthet eszkzkkel tmogatja az Azure a fejlesztsi s zemeltetsi feladatokat, s hol tallod ezeket? Az elz fejezetekben bemutattuk a felh-szmtstechnika alapfogalmait, zeltt kaptl abbl, hogy a gyakorlati letben mikor jn jl a felh, s olvashattl az Azure mgtt ll technolgirl, adatkzpontokrl. Itt az ideje, hogy nekilssunk az Azure tnyleges, gyakorlati felhasznls nak! A knyv ksbbi fejezeteiben az Azure platform ltal knlt szolgltatsokat ismertetjk rszletesen. Mieltt azonban ezekbe belekezdenl, fontos megismerned az Azure honlapjt, a hozz tartoz SDK -kat, s regisztrlnod kell magadnak egy Azure elfizetst. Ezekkel felszerelkezve tudod majd kvetni a tovbbi fejezetek anyagt, illetve sajt cljaidra felhasznlni a felht. Ezekkel az alapokkal foglalkozik ez a fejezet.

Az Azure.com portl
Ha Azure-ral szeretnl foglalkozni, a kiindulpont az Azure.com portl (4-1 bra).

4-1 bra: Az Azure.com honlap

rdemes vgigszaladni a portl ltal knlt szolgltatsokon, mert felesleges sallangoktl mentesen tartalmazza az Azure kezelshez ktd informcikat, segdeszkzket s felleteket. risi segtsg az Azure-ral val munkban, ha tisztban vagy vele, hogy mit is tud a honlap!

57

4. Els lpsek razsi informcik: a Pricing fln egy felhasznlbart rkalkultort tallsz, ahol csszkk segtsgvel nagyon gyorsan megbecslheted, hogy az elkpzelt szolgltats vrhatan milyen kltsgekkel jr majd. Ugyanitt tallod az aktulis rak rszletes listjt is. A knyv a ksbbiekben rszletesen ismerteti majd az Azure platform razsnak mdjt, a klnfle konstrukcikat, vals letbl vett tapasztalatokat. Az Azure honlapnak ennek a rszn mindig megtallod az aktulis rakat! Az Azure csapat mind az zemeltetk, mind a fejlesztk rszre napraksz MSDN dokumentcit s segdeszkzket, SDK-kat tart fenn. A knyv ksbbi rszeiben szleskren bemutatjuk majd ezeket a technolgikat s a klnfle segdeszkzket. A letltsi linkeket, az aktulis dokumentcit pedig a Develop (fejlesztk szmra) s Manage (zemeltetk szmra) fleken tallod. Mindenkinek rdemes letltenie a Windows Azure Platform Training Kitet, amely a fejleszti s zemelteti oldalakrl egyarnt elrhet. Ez tbb szz megabjtos gyjtemny, amely minden ltez Azure technolgihoz folyamatosan naprakszen tartott lersokat, lpsrl lpsre halad bemutatkat tartalmaz. Az Azure platformhoz kapcsolva knnyen ignybe vehetk kls cgek szolgltatsai (pldul SMS- vagy e-mailklds). Az aktulis ajnlatokat a Store fln tallod, ahov sajt szolgltatsaid is bekerlhetnek. A knyv megjelensnek idpontjban (2013 februrja) a Store Magyarorszgon mg nem volt elrhet. Az Azure-hoz egy sor frum, hrlevl s esemny tartozik. Ezeket sszegyjtve megtallod a Community fln. Klnsen rdekes az Azure Blog: mivel az Azure platform nagyon gyorsan fejldik, knny lemaradni az jdonsgokrl, vltozsokrl. A felhasznlk lett megknnytend az Azure csapat minden lnyeges hrt, jdonsgot az Azure blogban gyjt ssze. Clszer feliratkozni ennek az RSS feedjre, mert gy Azure-tudsod nem vl el. Magyar felhasznlk szmra a devPortal.hu honlapot ajnljuk, hiszen a hazai Azure esemnyeket, jdonsgokat itt publiklja a Microsoft Magyarorszg. Elfordulhat, hogy valamilyen problmba tkzl az Azure hasznlata sorn. Lehetnek szmlzssal, fizetssel kapcsolatos gondjaid, de megeshet, hogy valamilyen technikai nehzsggel szembeslsz. Ilyen esetben ltogass el a Support flre! Itt megtallod a megszokott frumot, de kzvetlenl a Microsoft szakembereihez is fordulhatsz. A Pricing fln (s knyvnkben) megismerheted az razssal kapcsolatos ltalnos tudnivalkat. Mi a helyzet a sajt elfizetseddel, az azon jelentkez fogyasztssal? Errl szolgl informcikkal az Account fl (a sajt elfizets regisztrcijt pedig hamarosan megnzzk). Az utols fl pedig taln a legfontosabb: az Azure-ban ltrehozott erforrsok (pldul virtulis gpek, SQL szerverek, fjlszerverek s gy tovbb) kezelse egy grafikus webes felleten, a menedzsment portlon keresztl trtnik. Noha szinte minden Azure szolgltats rendelkezik programbl, PowerShellbl meghvhat interfsszel is, kiindulpontknt s az erforrsok ttekintsre mindenkpp a menedzsment portlt rdemes hasznlnod. Ide a jobb fels sarokban tallhat Portal gombbal lphetsz be (amihez elbb szksged lesz egy Azure-elfizetsre). A portl hasznlatval, a rajta lv szolgltatsokkal a knyv kvetkez fejezetei foglalkoznak.
Megjegyzs: A teljes Azure platformhoz hasonlan az Azure.com portl is rendkvli temben fejldik, vltozik. Ennek megfelelen a kpernykpek elavulhatnak, a menpontok esetleg ms helyre kerlhetnek, de az itt lertakat nagy valsznsggel a portl ksbbi verziiban is megtallod majd.

58

4. Els lpsek

Hogyan szerezhetsz Azure elfizetst?


Az Azure-elfizets jelentse
Az Azure nem hasonlt egy dobozos termkre, nem lehet egyszer megvenni egy darabban, mint egy hagyomnyos szoftvert. Ehelyett elfizetses alapon mkdik: miutn regisztrltad magad, az Azure nyilvntartja az ignybe vett erforrsokat, s ezek tervezett vagy vals hasznlata alapjn kell elre vagy utlag fizetned. Ez egyben risi elny is: Egyrszt az Azure szndkosan gy kerlt kialaktsra, hogy maga a regisztrci teljesen kockzatmentes, s a hasznlni kvnt technolgik is teljesen szabadon, tlapszeren megvlaszthatk mindig csak az utn fizetsz, amit tnylegesen hasznlsz is. Nincsen semmilyen alapdj, kszenlti dj vagy effle. Ha nincs szksged pldul Windows virtulis gpekre, csak egy SQL adatbzist szeretnl elhelyezni a felhben, akkor kizrlag az SQL adatbzis djait szmlzza ki az Azure. Msrszt (ahogy errl a knyvben korbban mr olvashattl) ezzel egy nagy kockzatot is levesz a vlladrl a felh: mivel az razs mindig a pillanatnyi felhasznlsodat kveti, ezrt sokkal rugalmasabban tervezhetsz, mint hagyomnyos IT-infrastruktra esetn. Tegyk fel, hogy a hnap legnagyobb rszben kt szerver elbrja az alkalmazsod terhelst, de havonta nhny napig (pldul a havi zrs ideje alatt) a megnvekedett teher miatt ideiglenesen t szerverre van szksged. Ennek a rugalmassgnak ksznheten mr nem kell t szervert vsrolnod s folyamatosan zemben tartanod (vagy brelned). Kezdetben hozz ltre csak kettt, a terhelsi cscs idszakban adj ezekhez mg jabb hrmat! Amint a terhels visszall a norml szintre, ezt a hrom extra szervert s a velk jr kltsgeket rgtn meg is szntetheted. A szmldon a plusz hrom szerver dja kizrlag a felhasznls tnyleges idejre jelenik meg tredkron a teljes havidjhoz vagy egy tnyleges vsrlshoz kpest. Az Azure hasznlatnak megkezdshez teht nincs szksged tnyleges vsrlsra! Az els lps az, hogy regisztrlsz magadnak egy elfizetst (subscription). Utna minden erforrs-felhasznls ezen elfizetshez kapcsoldva trtnik majd. Egy elfizets mindig egy konkt Live ID-hoz (j nevn Microsoft Accounthoz) ktdik. Ha hasznlsz Xbox Live-ot, vagy van Hotmail, esetleg Messenger fikod, akkor mr rendelkezel Live ID-val ha mgsem, a regisztrci ingyenes s gyors. Amikor ltrehozod az elfizetst, az hozzktdik a hasznlt Live ID -hoz. Ksbb ezzel az azonostval tudsz az Azure menedzsment portljra belpni s ott mveleteket vgezni. Elfordulhat, hogy egy cgnl vagy egy csapatban tbben, megosztva szeretntek hasznlni egy elfizetst. Erre termszetesen van lehetsg, ezt a fejezet ksbbi szakaszban mutatjuk be.

Konstrukcik
Minden Azure-elfizets ugyanazokat a kpessgeket hordozza, nincs olyan, hogy tbbet vagy kevesebbet tud elfizets. Az razsban azonban vannak klnbsgek: a Microsoft klnfle csomagokat dolgozott ki az Azure-ral most ismerked, az Azure erforrsokat kis mennyisgben felhasznl s a szolgltatsokat jelents ttelben ignybe vev elfizetknek. Az zleti konstrukcikrl a knyv razsi rszben rszletesen olvashatsz majd. Mr kezdetben rdemes azonban az albbi kt konstrukcit megismerni: A legalapvetbb, semmilyen klnlegessggel nem rendelkez elfizetsi forma a Pay-as-You-Go (fizets a felhasznls alapjn). Ha ilyennel rendelkezel, akkor az Azure folyamatosan naplzza, hogy milyen erforrsokat milyen mennyisgben hasznlsz, majd a hnap vgn kldi a szmlt. Nincsen semmilyen ktelezettsged, egyszer, rugalmas viszonylag kis felhasznlsnl (pldul egy-kt virtulis gp, nhny gigabjt adat) esetn idelis. Ez az alap. Azure szolgltatsok nagyobb mennyisg felhasznlsnl arra is van lehetsg, hogy a felhasznl bizonyos greteket tegyen a Microsoft fel. Pldul elvllalhatja, hogy havonta

59

4. Els lpsek legalbb 500 dollr rtkben hasznl fel Azure erforrsokat ezrt a vllalsrt cserbe viszont lnyeges, 20-32%-os kedvezmnyeket kap. A ksbbiekben errl mg tovbbi rszleteket olvashatsz. Az Azure-ral jonnan ismerkedk szmra ajnlott a Free Trial (ingyenes kiprbls) konstrukci. A Free Trialt brki regisztrlhatja, az 90 napig (3 hnapig) tart. A Microsoft minden hnap elejn szabadon felhasznlhat erforrskvtkat r jv a felhasznl elfizetsben pldul adattrolsra bevethet gigabjtokat, szmtsi rkat s gy tovbb. Ezeket a kvtkat az elfizet ingyenesen s kockzatmentesen felhasznlhatja. Ha valamelyik kvtbl elri a havi limitjt, akkor nem kell rte fizetnie: arra a hnapra egyszeren nem tudja majd tovbb hasznlni az adott szolgltatst, az Azure nem engedi. Ez azt jelenti, hogy a Free Trial regisztrcija teljesen kockzatmentes, mert nem fordulhat el, hogy brmirt fizetni kelljen. Kimondottan a platformmal frissen ismerkedk szmra talltk ki. Az erforrskvtk meglehetsen bkezek, segtsgkkel alaposan ki lehet prblni a platformot, de nem lphetk tl, gy akkor sem trtnhet baj, ha vletlenl fent felejtnk valamit a felhben. Javasoljuk teht, hogy kezdsknt egy Azure Free Trial elfizetsre regisztrlj. Ha megtetszik a platform, s szeretnd azt tovbb hasznlni, akkor a megfelel lpsekkel elfizetsed tkonvertlhat lesz majd rendes, fizets elfizetss.

A regisztrci folyamata
Regisztrljunk egy Free Trial elfizetst! Ltogass el az Azure.com-ra, s a jobb fels sarokban kattints a Free Trial gombra, amint azt a 4 -2 bra is mutatja!
Ha nem Free Trial-t, hanem valamilyen ms konstrukcit, pl. Pay-as-You-Go-t szeretnl regisztrlni, akkor a Pricing fl Purchase Options s Member Offers almenpontjaiban tudsz vlogatni ezekrl bvebben az razssal foglalkoz fejezetben olvashatsz.

4-2 bra: A Free Trial gomb

A kattints utn megjelenik egy jabb kperny, rajta egy nagy zld Try it free gombbal; kattints erre is! Most kell eldntened, hogy milyen Live ID -val szeretnl elfizetst ktni. Ha mr be vagy jelentkezve egy Live ID-val, akkor az Azure portl ezt hasznlja majd fel; egybknt megjelenik egy Live ID bejelentkeztet oldal, ahol megadhatod egy mr ltez Live ID nevt s jelszavt, vagy regisztrlhatsz egy jat. A ltrehozott elfizets ehhez az azonosthoz ktdik majd, de hozzfrst adhatsz ms felhasznlknak is. A bejelentkezs utn megjelenik a regisztrcis varzsl (4-3 bra).

60

4. Els lpsek

4-3 bra: A regisztrcis varzsl els lpse

A varzsl bal oldaln lthatod azokat az erforrsokat, amiket a 3 hnapos peridus minden hnapjnak elejn jvr majd szmodra a rendszer. Ezek piaci rtke jelen sorok rsakor kb. havi 70 ezer forint, ezrt a Microsoft klnfle vintzkedseket is tesz, hogy a visszalseket megelzze. A varzsl msodik lpsben meg kell adnod a telefonszmodat. A magyar mobiltelefonszm tkletesen jl mkdik (azt elhv nlkl, teht 30 123 4567 formtumban kell megadnunk, a +36 elhvt az orszg alapjn mr tudni fogja az Azure). A telefonszmra egy SMS rkezik, benne egy kddal, amit vissza kell gpelned a varzslba, ezzel igazolva, hogy valban te vagy a telefonszm birtokosa. A harmadik lpsben meg kell adnunk egy rvnyes bankkrtyaszmot. Ez els olvassra rtetlensget vlthat ki, pedig nincs ebben semmi klns: egy online szolgltatsra regisztrlunk, ahol megszokott azonostsi s fizetsi forma a bankkrtya. A bankkrtya szmt a Microsoft termszetesen maximlis diszkrcival kezeli, Free Trial esetn pedig a korbban lertaknak megfelelen (egy kb. 1 eurs zrolstl eltekintve) semmilyen levons nem keletkezik. Nem szokatlanabb s veszlyesebb ez a lps, mint egy Amazon, Vatera, PayPal stb. megrendels, ami napjainkban idehaza is teljesen htkznapinak szmt. s mg egyszer: a Free Trial vdelmi mechanizmusainak ksznheten nem kell kiadsoktl tartanod. Haladj vgig a varzsln! Az adatok megadsa utn az Azure elfizets ltrehozsa rgtn meg is trtnik, s a portl visszairnyt az Account fl al, immr j Azure elfizetsed birtokban (4 -4 bra).

Elzetes szolgltatsok s a ktfle menedzsment portl


Az Azure gyorsan fejldik, s a csapat gyakran hoz nyilvnossgra elzetes (Preview), mg nem teljesen ksz szolgltatsokat is. Ezek rendszerint nagyon rdekesek, knyvnkben is bemutatunk nhny olyat, amelyek mg nincsenek vglegesnek nyilvntva. Ezen szolgltatsokra nha kln fel kell iratkoznod. Ez ingyenes, ltalban mindssze egy-kt plusz kattintst ignyel. Errl a felletrl (vagy ksbb az Account fl all) kattints a Preview Features menpontra, ahol megtallod a jelenleg regisztrlhat, elzetes verziban lv szolgltats listjt. Ltogass el ide, s iratkozz fel az sszes olyanra, ami jelenleg mg nem aktv ksbb jl fog jnni!

61

4. Els lpsek

4-4 bra: Sikeres regisztrcit kveten megjelen kperny

Miutn ezzel megvagy, ideje rnzni a menedzsment portlra. Erre a jobb fels sarokban lv nagy Portal gombra kattintva (vagy a http://manage.windowsazure.com URL begpelsvel) tudsz belpni. Ezen a felleten tudod kezelni a klnfle, ltalad hasznlt Azure szolgltatsokat. A portlra belpskor egy rvid bemutat fogad, majd eljutsz a tnyleges felletre (4-5 bra).

4-5 bra: Az Azure menedzsment portl, egyelre resen

62

4. Els lpsek A fellet tisztn HTML s JavaScript alapokon kszlt, ennek ksznheten a Windows-gpek mellett gond nlkl hasznlhat Linux, Mac gpekrl vagy akr iPad-ekrl s egyb mobil eszkzkrl is. A klnfle szolgltatsokat a knyv rszletesen bemutatja. J, ha tudsz rla, hogy jelen pillanatban kt menedzsment portl is ltezik: a fent ltott modern, HTML alap, s a rgebbi, Silverlight alap. A modern portl mg j, nem rhet el rajta minden funkci, amit a Silverlight portl tudott; ezek temelse folyamatosan trtnik. Viszont emiatt megeshet (knyvnk egyes fejezeteinl is szksged lesz r), hogy nha vltanod kell a kt portlverzi kztt. Az j portlrl a rgi portlra gy vlthatsz t, hogy a jobb fels sarokban rkattintasz a kpernyre kirt azonostdra, s a lenyl menbl kivlasztod a Previous portal menpontot vagy begpeled a http://windows.azure.com URL-t (4-6 bra).

4-6 bra: A rgi, Silverlight alap Azure portl

A rgi portlrl az jra a rgi portl als sorban kzptjon tallhat Take me to the new portal linkre kattintva vlthatsz t (vagy a http://manage.windowsazure.com URL begpelsvel).

Tbb felhasznl elfizetsenknt, tbb elfizets felhasznlnknt


Elfordulhat, hogy csapatodban tbben is szeretntek hasznlni egy elfizetst. Ennek semmi akadlya: elfizetsedhez hozzrendelhetsz tovbbi felhasznlkat, trsadminisztrtorokat ( co-admin) is. Egy trsadminisztrtornak mindssze egy Live ID-val kell rendelkeznie, egyb regisztrcis lpseket nem kell tennie. A szolgltatst regisztrl adminisztrtor s a trsak kztt kt jelents klnbsg van a jogosultsgok tern: A trsaktl el lehet venni az elfizetshez val hozzfrs jogt, a f adminisztrtortl nem. A trsak nem frnek hozz az elfizets pnzgyi adataihoz (szmlk, aktulis fogyaszts s gy tovbb). Ezektl eltekintve az adminisztrtor s a trsak egyenrangak, ugyanazokat a mveleteket vgezhetik el a portlon s az erforrsokon. Jelenleg nincs arra md, hogy a trsak jogosultsgait korltozzuk (pl. csak bizonyos erforrsokhoz frhessenek hozz); ha ilyesmire van szksg, akkor clszer tbb elfizetst ltrehozni, s csak a megfelel elfizetsekhez megadni a trsadminisztrtor jogot.

63

4. Els lpsek Fontos tudni, hogy egy Live ID-hoz (azaz egy felhasznlhoz) tbb elfizets is tartozhat. Free Trial -bl csak egyet, de Pay-as-You-Go vagy egyb zleti konstrukcij elfizetsbl akrhnyat regisztrlhatsz, illetve akrhnyban lehetsz trsadminisztrtor is. Valamennyi elfizetsed egy nzetben jelenik majd meg a menedzsment portlon (de persze az minden erforrsnl meg van jellve, hogy az pp melyik elfizetsedhez tartozik). A klnfle elfizetsekben lv erforrsok gond nlkl egyttmkdhetnek, pldul az 1. szm elfizetsben lv virtulis gped minden tovbbi nlkl rhatja s olvashatja a 2. szm elfizetsedben lv SQL adatbzisodat (termszetesen a megfelel hozzfrsi adatok birtokban). Nzzk meg, hogy adhatsz valakinek trsadminisztrtori jogot! Nyisd meg az Azure menedzsment portlt (vagy az Azure.com oldal jobb fels sarkban lv Portal gombbal, vagy a http://manage.windowsazure.com URL begpelsvel)! A bal oldali, kk szn svban kattints a Settings elemre (legalul)! A Settings elemen bell kattints a fejlcben lv Administrators flre (4 7 bra)!

4-7 bra: Trsadminisztrtorok felvtele az Azure menedzsment portlon

A fellet aljn tallhat Add, Edit s Remove gombokkal tudsz felvenni, szerkeszteni, trlni trsadminisztrtorokat Live ID alapjn.

Fejlesztkrnyezetek, zemelteti eszkzk


A most megismert menedzsment portl segtsgvel grafikus felleten kezelheted klnfle Azure erforrsaidat. Ez azonban csak a trtnet egy rsze; ahhoz, hogy ezeket az erforrsokat programozni, menedzselni tudd, a helyi gpedre telepthet segdeszkzkre is szksged van.

Azure-eszkzk fejlesztknek
Az Azure platform egyes elemeit a korbban megismert csoportosts szerint PaaS, Platform-as-aService kategriba sorolhatjuk. Ezek azok a szolgltatsok, amiket jellemzen fejlesztk szmra talltak ki, hasznlatuk tipikusan valamilyen fejlesztkrnyezeten (pl. Visual Studio, Eclipse s gy tovbb) keresztl trtnik. A fejleszt elkszt egy alkalmazst, ami kdbl klnfle Azure-szolgltatsokat hv meg. Az ilyen

64

4. Els lpsek alkalmazsok hatkony elksztshez klnfle SDK -kra, osztlyknyvtrakra, fejleszteszkzkre van szksg. Az Azure csapata tudatosan trekszik a platformfggetlensgre. Az Azure termsze tesen remek C#/Visual Basic .NET s Visual Studio tmogatssal rendelkezik, de a trtnet itt korntsem r vget: Mac s Linux opercis rendszerekhez, s ezeken bell PHP, Java, Python, node.js s tovbbi nyelvekhez is hivatalosan tmogatott Azure SDK-k kszltek. Ezek clja, hogy az adott nyelv fejleszti szmra megszlthatv tegyk az Azure szolgltatsait osztlyknyvtrakon keresztl, helyi emultorral debugger tmogatst adjanak, bepljenek az adott nyelv fejleszteszkzbe s gy tovbb. Ebben a knyvben elssorban a Visual Studio s a C# eszkzein keresztl mutatjuk be az Azure -t, de fontos tudni, hogy szinte minden, amit itt ismertetnk, elrhet a tovbbi npszer opercis rendszerek s fejlesztkrnyezetek all is. A sajt opercis rendszeredhez s fejlesztkrnyezetedhez illeszked Azure fejleszti csomag letltshez kattints az Azure.com portl Develop flre, s ezen bell vlaszd a Downloads linket (4 -8 bra)!

4-8 bra: Azure-eszkzk fejlesztknek

C# fejlesztk szmra jelen sorok rsakor a Visual Studio 2012 s 2010 verzik, valamint a Windows 8, 7 s Vista opercis rendszerek tmogatottak. A Visual Studibl minden fizets (Professional, Premium s Ultimate) verzi hasznlhat, ha pedig valaki nem rendelkezik VS licenccel, akkor az zleti clra is ingyenesen alkalmazhat Visual Studio 2012 Express for Web vltozatot rdemes hasznlni. A C#-os Azure SDK teleptje a Microsoft Web Platform Installer nev segdprogramot hasznlja. Ez elemzi a szmtgped tartalmt, s az sszes olyan komponenst feltelepti r, amire szksged lesz a fejlesztshez. gy nem kell Visual Studio s ms komponensek utn vadsznod: egyszeren indtsd el a teleptt, az pedig mindent elintz. Ha nincs Visual Studid, akkor telepti az Expresst, bekonfigur lja a Windowst s gy tovbb. A letlttt eszkzk hasznlatt a knyv ksbbi fejezetei rszletesen bemutatjk.

Azure eszkzk zemeltetknek


Az Azure platform ms elemeit, pldul a virtulis gpeket, virtulis hlzatokat IaaS, Infrastructure-as-aService kategriba sorolhatjuk. Ezekkel az eszkzkkel jellemzen rendszergazdk, zemeltet szakemberek dolgozhatnak. Hasznlatukhoz nincs szksg fejleszteszkzkre (ugyangy, ahogy egy router konfigurlst sem Visual Studibl oldjuk meg), az Azure menedzsment portl grafikus fellete azonban sokszor kevs. Egy-kt szerver teleptse egyszeren s gyorsan elvgezhet a GUI -n is, egy tizent gpes szerverfarm esetn ez azonban mr lass s felesleges munka. Ilyenkor jnnek segtsgnkre a klnfle szkriptnyelvek.

65

4. Els lpsek A Microsoft eszkzeinek elsdleges szkriptnyelve jelenleg a PowerShell, amin keresztl szinte minden Microsoft szervertermk (Windows Server, Exchange Server s trsaik) teljes kren konfigurlhat. Hasonl szkriptnyelvek lteznek a tovbbi npszer opercis rendszerekre (Mac, Linux) is. A fejleszteszkzkhz hasonlan az Azure itt is szles kr tmogatst biztost. Szinte minden Azure szolgltats szkriptelhet mindhrom nagy opercis rendszer all. Ezen eszkzk letltshez s teleptshez ltogass el az Azure.com portlra, s a Manage fln kattints a Downloads linkre (4 -9 bra)!

4-9 bra: Azure-eszkzk zemeltetknek

A letlttt eszkzk hasznlatt a knyv tovbbi fejezetei rszletesen bemutatjk.

sszegzs
Ebben a fejezetben megismerhetted az Azure gyakorlati felhasznlshoz szksges els lpseket. Lttad az Azure-ral kapcsolatos weboldalakat, rendelkezel sajt elfizetssel, s mr tudod, hogy hol teleptheted fel a munkhoz szksges eszkzket. Itt az id, hogy nekilssunk az Azure szolgltatsok tnyleges megismershez!

66

5. IaaS Virtulis gpek

5. IaaS Virtulis gpek


Ebben a fejezetben az albbi tmkat ismerheted meg: Mire hasznlhatjuk a virtulis gpek szolgltatst? Virtulis gpek tpusai. Virtulis gpek kezelse. Virtulis diszkek kezelse. A felhszolgltatsok s a virtulis gpek kapcsolata. Rendelkezsre lls nvelse. Active Directory zemeltetse az Azure-ban. A Windows Azure Infrastruktra-szolgltats (Iaas) megjelensvel lehetsged nylik arra, hogy a meglv fizikai vagy virtulis hlzatodat a felhben terjeszd ki. Ennek a szolgltatsnak meghatroz eleme a virtulis gpek funkci. A fejezet elejn bemutatjuk az Azure Menedzsment Portlt, megismerheted az egyes felhasznlsi terleteket, majd rtrnk a gpek ksztsnek s menedzselsnek mdjaira is. nll rszben foglalkozunk a diszkek tpusaival, a nvfeloldssal s a felhszolgltatsokkal is. A fejezet vgn a magas rendelkezsre llssal sszefgg feladatokat trgyaljuk, s azt, hogy milyen krdseket kell megfontolnod, ha Active Directoryt szeretnl zemeltetni a felhben.

A virtulis gpek lehetsges felhasznlsi terletei


A virtulis gpek ltrehozsnak lehetsge tbb forgatknyvet is knl szmodra! Hasznlhatod zleti szolgltatsok esetben (pldul CRM, ERP, CMS). Futtathatsz rajtuk adatbzisokat, vagy akr fjlszerverknt is zemeltetheted ket. Ltrehozhatsz fejleszti vagy tesztkrnyezeteket, kszthetsz hibrid alkalmazsokat, stb. Brmely terleten is szeretnd hasznlni a virtulis gpeket, mg egy fontos elnyt lvezheted az Azure ezen szolgltatsnak, ez pedig nem ms, mint a gpek gyors ltrehozsnak s trlsnek lehetsge. Percek alatt kszthetsz (vagy ppen trlhetsz) teljes teszt - vagy fejleszti krnyezeteket, prblhatsz ki j alkalmazsokat. Mindig csak az ignybe vett szolgltatsokrt kell fizetned. Ezek a lehetsgek jelentsen megknnytik az zemeltetk s rendszerszervezk dolgt. A Windows Azure virtulis gpek szolgltatsa alaprtelmezett mdon tmogatja az SQL Server s az ahhoz kapcsold egyb alkalmazsok mint pldul a SharePoint hasznlatt, de kszthetsz BizTalkkal elteleptett virtulis gpeket is! Termszetesen telepthetsz Active Directoryt is a hozz kapcsold egyb szerepkrkkel, de zemeltethetsz akr fjlszervert is. A sokrt felhasznlsi lehetsgekbl ebben a fejezetben j nhnyat megismerhetsz.

Az Azure szerepkrk s virtulis gpek sszehasonltsa


Kezdjk az ismerkedst az elzmnyek ttekintsvel! Az Azure megjelensvel kezdetben csak platformszolgltatsokat (Platform-as-a-Service, PaaS) vehettl ignybe. Ezek elssorban a fejlesztknek szltak, s valahogy gy mkdtek: tltsd fel a kdot, s mi futtatjuk neked. Az Azure PaaS alkalmazsfuttat szolgltatsa gynevezett szerepkrkre pl, ezek kt fajtja a Worker Role s a Web Role. A Worker Role hasznlata sorn feltltd a kdot az Azure-ba, s mssal mr nem is kell foglalkoznod! Az opercis rendszerek foltozsa, futtatsa, karbantartsa nem a te feladatod. Mind enrl az zemeltet (Microsoft) gondoskodik. Ugyangy mkdik a Web Role is azzal a klnbsggel, hogy kimondottan Internet Information Services (IIS) alatt futtathat kdokat helyezhetsz el. Teht kszthetsz

67

5. IaaS Virtulis gpek olyan alkalmazsokat a felhben, melyek egy rsze Web Role-ban fut (pldul egy weboldal), ms rsze meg Worker Role-ban fut (pldul a weboldal mgtt elhelyezett alkalmazsok). Mi ezzel a baj? Kt dolog hinyzik a PaaS szolgltatsokbl: a tartssg s az azonnali rendelkezsre lls! A Worker s We b role-ok esetben a helyi fjlrendszerben lv fjlok elvesznek, a terts (deployment) folyamata pedig nagymret s komplex alkalmazsok esetben lass. Alkalmazsod publiklsa sorn a felh a kvetkez lpseket hajtja vgre: 1. 2. 3. 4. 5. 6. 7. Megfelelen elksztett s karbantartott opercis rendszer lemezkp keresse Lemezkp tertse, majd indtsa Szeparlt alhlzatok ltrehozsa Portok s tzfalszolgltats belltsa IP cm s DNS szolgltats biztostsa A feltlttt kd futtatshoz szksges krnyezet elksztse A kd futtatsa

Minl bonyolultabb az alkalmazs, annl tovbb tart ez a folyamat. Vagyis a legaprbb vltoztats esetn is az egsz procedra kezddik ellrl. Ez nem hiba, hanem mkdsi sajtossg! Ahhoz, hogy a fjlrendszerhez lland s perzisztens hozzfrsnk legyen, valamint gyorsan tudjunk virtulis krnyezeteket kszteni, a Windows Azure platformon be kellett vezetni a virtulis gpek szolgltatst (Infrastructure-as-a-Service, IaaS) is. A szolgltats rvn hozzfrst kapsz az infrastruktrhoz. Te dntd el, hogy milyen lemezkpet tertesz, mikor frisstesz, milyen portokat s tzfalszablyokat hasznlsz, stb. Termszetesen az IaaS s a PaaS szolgltatsok ltal nyjtott elnyket tvzheted is, ltrehozhatsz olyan krnyezeteket, melyeknek egy rsze PaaS szerepkrket, msik rsze virtulis gpeket hasznl. A szerepkrk s a virtulis gpek kztti alapvet klnbsgeket az 5-1 tblzat tartalmazza. 5-1 tblzat: A szerepkrk s a virtulis gpek kztti alapvet klnbsgek Tulajdonsg Trols Telepts PaaS szerepkr Nem perzisztens Feltlts fejleszteszkzbl, a VHD-t az Azure automatikusan generlja Kezelse konfigurcis fjl segtsgvel Komplex alkalmazsok futtatsa Virtulis gp Perzisztens Gyors ltrehozs VHD kszts kzvetlenl az Azure-ban, vagy VHD kszts helyben, majd feltlts Kezelse portlrl vagy szkriptbl Olyan alkalmazsok futtatsa, melyek megkvetelik a perzisztens trolst

Hlzat Felhasznlsi terlet

A Worker Role s a Web Role funkci inkbb a fejlesztknek szl, a virtulis gpek szolgltats inkbb az infrastruktra mkdtetit clozza meg, bonyolultabb hibrid alkalmazsok futtatsra, komplex informatikai infrastruktra kiptsre ad lehetsget. Ez a fejezet a virtulis gpek szolgltatst mutatja be, s elssorban zemeltetsi krdseket feszeget.

A virtulis gpek tpusai


Mieltt brmilyen infrastruktra tervezshez hozzkezdenl, meg kell ismerned a lehetsgeket! Milyen tpus virtulis gpek kezelhetek? Milyen gpmretekkel dolgozhatsz? Milyen opercis rendszerekbl vlaszthatsz? Milyen Windows szerepkrk futtathatak az Azure-ban?

68

5. IaaS Virtulis gpek

Tmogatott opercis rendszerek s kpessgek


Vlaszthatsz egy adott opercis rendszerrel elteleptett virtulis gpet (tbb Windows Server- s Linuxverzi is elrhet), illetve olyan lemezkpeket, amelyek kiszolgl alkalmazsokat is tartalmaznak. A Microsoft SQL Serverrel s BizTalk Serverrel szerelt virtulis gpeket knl, a VM Depot szolgltats rvn pedig a kzssg tagjai ltal sszelltott s feltlttt konfigurcik is rendelkezsre llnak. Ahogy a fentiekbl ltszik, egyedi lemezkpek fogadsra is kpes az Azure, ez segt a meglv, mkd rendszerek felhbe kltztetsben, amirl ksbb lesz sz. A Windows Server esetben bizonyos kiszolgli szerepkrk, szoftverek s kpessgek nem tmogatottak. Ennek nagyon egyszer, a mkdsi sajtossgbl add oka van. Gondolj csak arra, hogy egy adatkzpontban tbb szzezer szerver helyezkedik el, ezeken a szervereken virtualizlva akr milli nyi pldny is futhat! Az Azure frisstse, karbantartsa sorn ezek a virtulis gpek vndorolnak az egyes rack szekrnyek kztt, aszerint, hogy ppen hol tart a frissts. Lehet, hogy bizonyos szerepkrk ezt a vndorlst nem vagy nem kell biztonsggal viselik el. A kvetkez felsorolsban ttekintheted a tmogatott funkcikat s szoftvereket: A Windows Azure ltal tmogatott szoftverek, szerepkrk s kpessgek:

SQL Server 2008 64 bites s jabb kiadsok (Express verzi is) Microsoft SharePoint Server 2010 s jabb verzik Windows Server 2008 R2 s Windows Server 2012 esetben az albbi szerepkrk hasznlhatak: Active Directory Domain Services Active Directory Federation Services Active Directory Lightweight Directory Services Application Server DNS Server Fax Server Network Policy and Access Services Print and Document Services Web Server (IIS) Windows Deployment Services Windows Server Update Services File Services

A BitLocker, a Failover Cluster s a NLB Cluster technolgik nem tmogatottak! Ezek a funkcik ms megoldssal helyettesthetk, a ksbbiekben lesz mg rluk sz.

A virtulis gpek kezelse


Mieltt hozzkezdennk a virtulis gpek kezelshez, tekintsk t, hogy milyen mdon is frhetnk hozz az infrastruktrhoz! Hasznlhatod a mr eddigiekben is bemutatott menedzsment portlt. Kt fellet is van, a rgi portlon inkbb a platformszolgltatsokhoz tartoz belltsokat red el, az j portlon pedig az infrastruktra elemeit kezelheted. A grafikus felleten tl hasznlhatsz valamilyen szkriptnyelvet is, ez a Windows opercis rendszerek esetben a PowerShell, mg a Linux s a Mac rendszerek esetben is kszlt kln parancssori eszkz. ltalnossgban elmondhat, hogy az sszes funkci kb. 75%-a rhet csupn el a grafikus portlrl, a tbbi kpessg csak parancssori es zkzzel hvhat meg! A PowerShell alap adminisztrcirl rszletesen lesz sz a kvetkez fejezetben, a Linux s a Mac gpekrl mkd felgyeleti szkripteket az albbiak szerint konfigurlhatod:

69

5. IaaS Virtulis gpek

Windows Azure parancssori eszkzk teleptse Mac s Linux rendszereken


Mac: Tltsd le a Windows Azure SDK Installer-t, nyisd meg a letlttt .pkg fjlt s teleptsd azt fel! Linux: Tltsd le a Node.js legfrissebb verzijt, vagy teleptsd azt fel a rendszered csomagkezeljvel! Debian telept:
apt-get install python g++ make mkdir ~/nodejs && cd $_ wget -N http://nodejs.org/dist/node-latest.tar.gz tar xzvf node-latest.tar.gz && cd `ls -rd node-v*` ./configure make install

Ubuntu telept:
sudo sudo sudo sudo apt-get install python-software-properties add-apt-repository ppa:chris-lea/node.js apt-get update apt-get install nodejs npm

OpenSUSE s SLE:
sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/nodejs/openSUSE_12.1/ NodeJSBuildService sudo zypper in nodejs nodejs-devel

A megfelel csomagok teleptse utn add ki az albbi parancsot a tnyleges telept shez s konfigurlshoz:
sudo npm install azure -g

Teszteld le a belltsokat, rd be a terminl ablakba az azure parancsot! Ha jl vgezted el a teleptst, megkapod az Azure-ban hasznlhat parancsok teljes listjt!

A virtulis gpek lehetsges mretei


Az zemeltetk egyik legnehezebb feladata a kapacitstervezs. A felh technolgiinak egyik nagy elnye, hogy tulajdonkppen korltlan kapacits vehet ignybe, mind a felfel, mind a lefel sklzs megoldott. A Windows Azure-ban ktflekppen is sklzhatsz: vertiklisan (scale up) s horizontlisan (scale out). Vertiklisan nvelheted a gpek mrett s a teljestmnyt (memria mennyisge, CPU magok szma stb) , horizontlisan emelheted vagy ppen cskkentheted a gpek szmt. Nzznk egy pldt! Webes ruhzat zemeltetsz, s karcsony krnykn, illetve az nnepnapokon nagyon megn az oldal terhelse. Az IIS-t futtat gp mrett akr a tbbszrsre nvelheted, s ezltal gyorsabb lesz a weboldalad mkdse is. Ugyanakkor vlaszthatsz msik utat is, s nvelheted az IIS-t futtat gpek szmt. A Windows Azure-ban a gpek lehetsges mrete kttt, a nagyobb gpek esetben mindig a kis mret (Small) gp elemeinek s kapacitsnak tbbszrzsvel szmolhatsz. Nincs szabadon vlaszthat processzormag- s memriakonfigurci-egyttes, az elksztett mretekkel kell gazdlkodnod! Az egyes gpmreteket az 5-2 tblzat foglalja ssze.

70

5. IaaS Virtulis gpek 5-2 A Windows Azure-ban vlaszthat virtulisgp-mretek s tulajdonsgaik Mret Extra small Small Medium Large Extra Large CPU magok szma Osztott 1 2 4 8 Memria 768 MB 1,75 GB 3,5 GB 7 GB 14 GB Dediklt svszlessg 5 Mbps 100 Mbps 200 Mbps 400 Mbps 800 Mbps Adatlemezek maximlis szma 1 2 4 8 16

A virtulis gp mrete nemcsak a magok szmt vagy a memria mennyisgt definilja, hanem egyttal meghatrozza az adatkzponton belli svszlessget s a gphez csatolhat diszkek mennyisgt is. Minden virtulis gphez fix IP cm s DNS nvtr is jr, de egy gp csak egyetlen fix IP cmet kaphat!

A virtulis gpek tulajdonsgai


Ksztsnk el egy virtulis gpet, s tekintsk t a tulajdonsgait! Lpj be a Windows Azure management portlon, s vlaszd a jobb als sarokban megjelen New Compute Virtual Machine Quick Create menpontot (5-1 bra)!

5-1 bra: j Windows virtulis gp ltrehozsa

Tekintsk t az egyes mezk jelentst! DNS Name: a leend virtulis gp DNS neve, utlag nem mdosthat. A nvtr felptse: gpnv.cloudapp.net. Image: a teleptend opercis rendszer tpusa. Size: a pldny kezdeti mrete (ksbb brmikor mdosthat). Password: Csak ers jelszavak engedlyezettek! A jelsznak tartalmaznia kell kis - s nagybetket, szmokat vagy specilis karaktereket, s a jelsz hossza nem lehet kevesebb, mint 8 karakter! Location: Az ltalad vlasztott adatkzpont helye. Clszer vagy a West Euro pe (Amsterdam) vagy a North Europe (Dublin) rgikat elnyben rszesteni. Ha kitlttted a mezket, kattints a Create Virtual Machine menpontra! Amikor elkszlt az els virtulis gped, vlaszd a bal oldali menstruktrban a Virtual Machines menpontot, s kattints a virtulis gp nevre! Nzzk meg a virtulis gp tulajdonsglapjt s az egyes funkcikat (5-2 bra)!

71

5. IaaS Virtulis gpek

5-2 bra: Virtulis gpek tulajdonsglapja

A Dashboard menpontban tallod a virtulis gp llapott ler grafikont, illetve egyb ltalnos ler informcikat. Ez a funkci segt az egyes pldnyok monitorozsban. Ha azt ltod, hogy a virtulis gp ersen terhelt, tlphetsz egy nagyobb gpmretre. A Usage overview szekciban az elfizetsedhez tartoz, maximlisan ignybe vehet CPU magok szmt hasonlthatod ssze a mr ignybe vettekkel, alatta a disks menpontot tallod, ahol a gphez tartoz diszkek szmt, tpust s az ott trolt blob objektumok elrsi cmt tekintheted meg. A kperny jobb oldaln a quick glance lersban sok hasznos informcival tallkozhatsz, ezek kzl az albbiak a legfontosabbak: Status: a gped llapota (Running, Deploying, Stopping) DNS: gped aktulis DNS neve Host name: a gp hosztneve Public Virtual IP Address (VIP): a virtulis gp publikus (IPv4) cme Internal IP Address: a pldny bels, magnhlzati IP cme Size: a virtulis gp aktulis gpmrete Location: az aktulis adatkzpont, ahol a gp megtallhat Tekintsk t felsorolsszeren a kperny aljn tallhat menpontokhoz tartoz egyes funkcikat! Connect: Windows tpus gpeknl mkdik, elre konfigurlt RDP fjlt tlthetsz le, mely a gp DNS nevt s az elrshez szksges portot tartalmazza (pldul: azurebook1.cloudapp.net:3389) Restart: a szmtgp jraindtsa Shut Down: a gp lekapcsolsa Attach: meglv vagy j diszk csatolsa Detach Disk: diszkek levlasztsa Capture: lemezkp ksztse Delete: a virtulis gp trlse A fels menben a Dashboard mellett mg tovbbi kt menpont tallhat:

72

5. IaaS Virtulis gpek Endpoints: kapcsolatot biztost a virtulis IP cm (VIP) s a bel magnhlzati IP cm kztt, tulajdonkppen itt konfigurlod az Azure tzfalat. Hasznlatval rszletesen megismerkedhetsz a Hlzatok kezelse fejezetben. Configure: segtsgvel a virtulis gp sklzsa s a rendelkezsre lls nvelse valsthat meg. Miutn ttekintettk a virtulis gpekhez tartoz menpontokat s funkcikat, trjnk t a gpek ksztsnek folyamatra!

Virtulis gpek ksztse


Az elz fejezetrszben megismert folyamat (Quick Create) csak a gyors ltrehozsi mdot mutatta be. ltalban akkor hasznljuk, ha tipikusan valamilyen tesztfunkcit ellt Windows gpre van szksgnk. Ha tartsan szeretnnk kikltzni az Azure-ba, akkor mr rszletesebb belltsi funkcikra is szksgnk lehet! Mieltt a testre szabott virtulis gpek ltrehozshoz kezdenl, ismerkedj meg nhny fontos alapfogalommal! Mkdsi szempontbl kt gptpust klnbztethetsz meg. Az nll (standalone) virtulis gp egy vagy tbb dediklt feladatot nllan ellt gp, amely nem kapcsoldik ms virtulis gphez (pldul egy webszerver). A msik tpus gp az, amikor a teljestmny vagy a rendelkezsre lls nvelse miatt tbb gpet fzl ssze egy csoportba. Erre azrt lehet szksged, hogy a gpek megosszk egyms kztt a feladatokat, vagy csak egyszeren kommuniklhassanak egymssal a felhn bell (pldul webszerver farm, front-end s back-end alkalmazsok). A gpek ksztse sorn meg kell hatroznod, hogy az adott virtulis gp melyik storage accountba fog kerlni. Ezt gy kell elkpzelned, mintha a gpedet egy adott knyvtrban helyeznd el. A stor age account meghatrozsa trtnhet a gp ltrehozsa sorn automatikusan ( use an automatically generated storage account opci), de clszer inkbb elre meghatroznod a helyt (mely rgiban helyezed el) s a mkdst is (geo-repliklt-e vagy sem)!

Linux virtulis gp ksztse


Linux virtulis gp ksztshez vlaszd az Azure portl jobb als sarkban tallhat New Compute Virtual Machine From Gallery menpontot! Egy j, eddig nem ismertetett felletre jutsz el, ahol kivlaszthatod a lemezkpet. Jellj ki pl. egy Ubuntu Server disztribcit, s lpj a kvetkez oldalra! Tltsd ki az rlapot az albbiak szerint (5-3 bra)! Virtual Machine Name: 3-15 karakter hosszsg szveg, amely az angol bc betin kvl mg ktjeleket is tartalmazhat. Az itt megadott nv lesz egyben a gp hosztneve is, ezrt 15 karakter lehet a maximlis hosszsga. New User Name: nem hasznlhat sem a root, sem az admin nv. A Linux disztribcikban hasznlatos dmonok s az azokat futtat felhasznlk nevei egyltaln nem vehetk ignybe. A nevekre vonatkoz megktsek teljes listjt is itt olvashatod el: https://www.windowsazure.com/en-us/manage/linux/other-resources/user-names-inlinux/ Password: bonyolult jelsz, minimum 8 karakter hosszsgban Size: mret Upload SSH key for authentuication: sajt .CER vagy .PEM kiterjeszts tanstvny feltltse az autentikcihoz (nem ktelez)

73

5. IaaS Virtulis gpek

5-3: Virtulis gp konfigurcija

A konfigurci definilsa utn a kvetkez oldalon meg kell adnod az j gp mkdsi mdjt (5-4 bra): Standalone Virtual Machine / Connect To An Existing Virtual Machine DNS Name Storage Account Region / Affinity Group / Virtual Network

74

5. IaaS Virtulis gpek

5-4 bra: Virtulis gp mkdsi mdjnak meghatrozsa

A DNS nvnek termszetesen egyedinek kell lennie , megadsa sorn az Azure ellenrzi is, van-e mr ilyen. Az automatikusan generlt storage account vlasztsa sorn ltrejn egy geo -repliklt storage fik abban a rgiban, ahov a gpedet is szeretnd elhelyezni. Htrnya, hogy a storage account elnevezse nem lesz beszdes (pldul portal97ehd653), s ez a ksbbi felhasznls sorn tbb bosszsgot is okozhat. A varzsl utols pontjban opcionlisan megadhat availability settel a ksbbiekben kln is foglalkozunk. A virtulis gp elksztse utn teszteld le, hogy rendben mkdik-e! A linuxos gpek elrshez szksged lesz a gped DNS nevre, valamint az SSH portra is. Ezeket az adatokat elrheted a Virtual Machines menpontban a gped nevre kattintva s a VM tulajdonsglapjn az SSH DETAILS cmke alatt (5-5 bra).

5-5 bra: Linux VM SSH elrhetsge

A cm s a port belltsa utn mr csak egy SSH kliensprogramra van szksged a gp elrshez, mint pldul a putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html ).

75

5. IaaS Virtulis gpek A putty elindtsa utn lltsd be a hosztnevet, s kattints az Open gombra! A sikeres csatlakozs utn vedd birtokba az j Linux szerveredet!

Windows Server virtulis gp ksztse


A Windows alap virtulis gp ksztsnek folyamata nagyon hasonl az elz pontban lertakhoz. Egy j Windows virtulis gp ksztshez vlaszd az Azure portl jobb als sarkban tallhat New Compute Virtual Machine From Gallery menpontot! Vlaszd ki a Windows Server 2012 lemezkpet (5 -6 bra)!

5-6 bra: Lemezkp kivlasztsa

A kvetkez kpernyn add meg a gp nevt, az adminisztrtor jelszavt, s hatrozd meg a virtulis gp kezdeti mrett (5-7 bra)!

5-7 bra: A virtulis gp konfigurlsa

76

5. IaaS Virtulis gpek A kvetkez lpsben a gp mkdsi mdjt hatrozhatod meg, annak hlzatban betlttt szerept, illetve azt, hogy nll VM lesz, vagy ms virtulis gpekhez is csatlakoztatod. Ha tbb gpet is sszekapcsolsz a felhben, akkor csak az els gp DNS nevt kell meghatroznod, a tbbi VM is ugyanezen a nvtren keresztl lesz elrhet! Vlaszd ki a Connect to an Existing Virtual Machine menpontot (5-8 bra)!

5-8 bra: A virtulis gp mkdsi mdjnak meghatrozsa

A varzsl utols lpsben csak hagyd jv a gp ksztst! A Windows virtulis gp tesztelshez s a gpre val csatlakozshoz a jl megszokott RDP protokollt hasznlhatod. Szerencsre minden Windows opercis rendszerben van RDP kliens, a szksges konfigurci pedig mr a rendelkezsedre ll. Csak vlaszd ki a gp tulajdonsglapjnak als rszn a Connect menpontot, s az RDP fjl megnyitsval csatlakozhatsz a virtulis gpedhez (5 -9 bra)!

5-9 bra: Csatlakozs a virtulis gphez

A virtulis gpek ksztsnek tervezsi folyamata


Amennyiben tartsan szeretnl az Azure hasznlatra berendezkedni, tbb gpet s funkcit is tcsoportostanl a felhbe, rdemes vgiggondolnod az albbi krdseket:

77

5. IaaS Virtulis gpek Standalone gpeket fogsz hasznlni, vagy sszekapcsolod a gpeidet? Esetleg mindkt funkcit ignybe veszed? A virtulis gpek storage accountjhoz milyen nvkonvencit hasznlsz? Az egyes storage accountokat melyik rgiban helyezed el? Szksged lesz-e valamilyen hlzat kialaktsra a felhben lv gpek kztt , esetleg a privt s a publikus felh kztt? Hogyan biztostod a nvfeloldst? Termszetesen ezek mellett mg tovbbi krdseid is lehetnek. Ahny elfizets, annyi vlaszt lehet adni a fenti krdsekre! Munkd segtsnek rdekben sszegyjtttnk nhny javasolt lpst a gpek publiklshoz. Az itt lertak termszetesen nem kbe vsett dolgok, inkbb irnymutatsul szolglnak: 1. 2. 3. 4. 5. Storage account ksztse lehetleg beszdes nvvel (pldul webservers) Hlzat ksztse, nvfelolds meghatrozsa DNS nvtr kialaktsa (pldul cgnevem.cloudapp.net) Virtulis gpek ksztse annak meghatrozsval, hogy mely hlzatba, storage accountba vagy nvtrbe lesz rendezve, illetve a standalone mkds definilsa A gp hasznlatba vtele

Termszetesen ha brmi ki is maradt volna a konfigurls sorn, a gp egyes paramterei ksbb is mdosthatk!

Egyedi lemezkp feltltse az Azure-ba


A fejezet eddigi rszben ttekintettk, hogy hogyan lehet j vir tulis gpet ltrehozni a felhben. Az let azonban ms forgatknyveket is tartogat az zemeltetk szmra! Sokkal gyakoribb eset az, hogy meglv, mr zemel s jl bejratott rendszernket szeretnnk tovbb zemeltetni a felhben. Termszetesen erre is van lehetsg, most ezt tekintjk t!

Windows lemezkp ksztse


Az albbiakra mindenkppen szksged lesz: Windows Server 2008 R2 vagy Windows Server 2012 Windows Server telept mdia vagy ISO fjl. CSUpload.exe s CSEncrypt.exe az Azure SDK-bl A feladat az albbi lpsekbl ll: 1. 2. 3. 4. Hyper-V szerepkr teleptse Lemezkp ksztse Storage account ksztse Lemezkp feltltse az Azure-ba

Els lps: A Hyper-V szerepkr teleptse A Hyper-V role teleptshez hajtsd vgre az albbi lpseket: 1. A Windows Server 2008 R2 rendszeren kattints a Start Administrative tools Server Manager menpontra! A Roles Summary lapon vlaszd ki az Add Roles menpontot (5 -10 bra)!

78

5. IaaS Virtulis gpek

5-10 bra: Szerepkr hozzadsa

2. 3. 4. 5. 6.

A Select Server Roles lapon vlaszd ki a Hyper-V szerepkrt! A Create Virtual Networks lapon jellj ki egy hlzati krtyt, melyet a virtulis gpeid fognak hasznlni! A Confirm Installation Selection lapon vlaszd az Install gombot! A telepts vgeztvel indtsd jra a kiszolgld! Az jraindts utn zrd be a varzslt! A sikeres teleptsrl meggyzdhetsz a Server Manager Roles Summary lapjn (5-11 bra).

5-11 bra: A telepts sikeressgnek ellenrzse

Msodik lps: lemezkp ksztse A DISK2VHD hasznlatval a meglv s ppen fut rendszeredrl kszthetsz msolatot egy VHD formtum fjlba, s ksbb ezt a fjlt elindthatod a Hyper-V szervereden. A mr meglv fizikai rendszer kltztetshez hajtsd vgre az albbi lpsek sorozatt: 1. 2. Tlsd le a DISK2VHD eszkzt az albbi cmrl: http://technet.microsoft.com/enus/sysinternals/ee656415.aspx! Indtsd el a Disk2Vhd alkalmazst azon a szerveren, melyet az Azure-ba szeretnl kltztetni, s vlaszd ki a szksges lemezeket (5-12 bra)!

5-12 bra: A Disk2VHD alkalmazs

3.

Az elkszlt VHD fjlokat msold t a Hyper -V szerveredre!

79

5. IaaS Virtulis gpek 4. 5. Kszts egy j virtulis gpet, ehhez vlaszd a Start All programs Administrative Tools Hyper-V manager parancsot! A Hyper-V konzol jobb oldaln kattints a New Virtual Machine menpontra (5-13 bra)!

5-13 bra: j virtulis gp ltrehozsa a Hyper-V konzol segtsgvel

6. 7. 8.

Add meg a virtulis gp tulajdonsgait, majd a Connect Virtual Hard disk lapon vlaszd ki a Use an existing virtual hard disk menpontot, s keresd ki a megfelel VHD fjlt! Miutn a varzsl befejezte a munkjt, indtsd el a virtulis gpet! A virtulis gp megfelel futtatshoz teleptsd fel a Hyper-V Integration Services kiegsztt is, az Action men Insert Integration Services Setup Disk segtsgvel (5-14 bra)!

5-14 bra: Az Integration Services Setup Disk funkci kivlasztsa

9.

A virtulis gp sikeres elindtsa utn gyzdj meg arrl, hogy a gp DHCP kiszolgl hasznlatra legyen konfigurlva, illetve a Remote Desktop (Tvoli asztal) szolgltats be legyen kapc solva!

Harmadik lps: storage account ksztse Miutn sikeresen konfigurltad s virtualizltad a kivlasztott szervert, ksztened kell egy storage accountot a felhben, ahova fel tudod tlteni a VHD fjlt! 1. 2. Lpj be az azure portlra a http://azure.com cmen! Vlaszd ki a kperny jobb als sarkban tallhat New Data Services Storage Quick Create menpontot, s add meg a leend storage account nevt, rgijt, illetve azt, hogy szeretnl-e georeplikcit krni az adatok trolsa sorn (5-15 bra)!

80

5. IaaS Virtulis gpek

5-15 bra: j storage account ksztse

Negyedik lps: Lemezkp feltltse A VHD fjlok feltltshez szksged lesz a Csupload.exe alkalmazsra, mely megtallhat az Azure SDKban (https://www.windowsazure.com/en-us/develop/downloads/). Az SDK teleptse utn a C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\<sdkversion>\bin mappban tallod meg a Csupload.exe s a Csencrypt.exe fjlokat. Mg az elbbivel VHD fjlokat tudsz feltlteni (a VHDX formtumot jelenleg nem tmogatja), az utbbi a feltltshez szksges tanstvny elksztsben segt. (Tanstvny kszthet IIS segtsgvel is.) A csencrypt alkalmazs hasznlata: Lpj be a C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\<sdk-version>\bin knyvtrba s add ki a kvetkez parancsot:
csencrypt.exe new-passwordencryptioncertificate -copytoclipboard -friendlyname "azurebookhun_cert"

Az azurebookun_cert helyre rj be egy egyedi tanstvnynevet (lsd 5-16 bra)!

5-16 bra: Tanstvny ksztse a csencrypt paranccsal

Tanstvny exportlsa: Az elkszlt tanstvnyt exportlnod kell. Ehhez indtsd el a certmgr.msc konzolt, s a Personal store-ban keresd meg az elzekben elksztett tanstvnyt! Kattints jobb gombbal a tanstvny nevre, majd vlaszd az All task Export funkcit (5-17 bra)!

81

5. IaaS Virtulis gpek

5-17 bra: Tanstvny exportlsa

Exportld a tanstvnyt a privt kulcs nlkl, .CER formtumban, s mentsd le a gpedre (lsd 5-18 bra)!

5-18 bra: Az exportlt tanstvny mentse

Tanstvny feltltse a menedzsment portlra: Az Azure portlon a bal oldali menben vlaszd ki a Settings Management Certificates Upload a Management Certificate menpontot, s tltsd fel a .CER fjlt (lsd 5-19 bra)!

5-19 bra: Tanstvny feltltse

82

5. IaaS Virtulis gpek Lemezkp feltltse: Most mr minden kszen ll arra, hogy sikeresen feltltsk a lemezkpet az Azure -ba! Ehhez csak ki kell adnod az albbi parancsot (5-20 bra):
csupload.exe Add-Disk -Connection "SubscriptionId=af5d974b-5472-a4de-16d574320398; CertificateThumbprint=7E18CBD91197A4DCC45FB21A6953A4B908; ServiceManagementEndpoint=https://management.core.windows.net" -Destination "http://azurebookhun.blob.core.windows.net/vhds/to azure.vhd" -Label "win7whd" -OS "Windows" LiteralPath "f:\Virtual Hard Disks\to azure.vhd"

5-20 bra: A csupload.exe futs kzben

A parancssor egyes paramtereinek megrtse knnyebb lesz az albbi magyarzatokkal: -Connection Subscription ID : itt kell megadni az Azure elfizetsedhez tartoz azonostt. Ez t az rtket leolvashatod a Management Portlon, ha pldul rkattintasz a storage nevre, s a jobb oldalon megnzed a quick glance felsorols utols rtkt. -CertificateThumbrint: az elksztett s feltlttt tanstvny ujjlenyomata. Ha a csencrypt parancsot a -copytoclipboard kapcsolval adtad ki, akkor mr a vglapon szerepel ez az rtk. Ha ez mgsincs meg, akkor a tanstvnyt megnyitva a Rszletek fln az utols rtk az ujjlenyomat (5-21 bra). -ServiceManagementEndpoint : a szolgltats menedzsment vgpontjnak cme -Destination: a storage blob cme, leolvashat a storage tulajdonsgainl -Label: a feltlttt VHD logikai neve -OS: opercis rendszer tpusa -LiteralPath: a feltltend VHD fjl tvonala, neve

83

5. IaaS Virtulis gpek

5-21 bra: A management certificate ujjlenyomata

Virtulis gp ksztse a feltlttt lemezkpbl: Mr csak az maradt htra a VHD fjl feltltse utn, hogy a konfigurcit hozzrendeljk a diszkhez, s elindtsuk a virtulis gpet. Vlaszd az Azure portl jobb als sarkban tallhat New mengombot, majd ott a Compute Virtual Machine From Gallery My Disks menpontot! Itt ltnod kell a korbban feltlttt VHD fjlt (5-22 bra)!

5-22 bra: Egyedi VHD fjl az Azure Storage-ben

A kivlasztott VHD fjlhoz rendelj egy konfigurcit, itt mr csak a gp s a DNS nevt, illetve a gpmretet kell megadnod ! A sikeres sszelltst kveten indtsd el a virtulis gpet, s vedd hasznlatba!

Lemezkp alap terts s a Windows Azure


Ttelezzk fel, hogy webszerver farmot szeretnl ltrehozni a felhben! Egy ilyen farm kialaktsa sorn elsdleges szempont, hogy annak egyes tagjai (node) teljesen azonosan legyenek konfigurlva. Egyforma legyen a patch level, az egyes mappk NFTS jogosultsga, a wwwroot belltsok stb. Ezt az egysges konfigurcit leghatkonyabban egy image ksztsvel rheted el: elkszted a referencia lemezkpet, s

84

5. IaaS Virtulis gpek ebbl a kpbl annyi virtulis gpet hozol ltre, amennyire csak szksged van.Ennek a forgatknyvnek a figyelembevtelvel kt eset lehetsges: 1. 2. A lemezkpet a fldn kszted el, majd ezt kveten tltd fel a Windows Azure Storage-ba, s ott ksztesz belle a virtulis gp teleptsre alkalmas image fjlt. A lemezkpet mr eleve a felhben hozod ltre, syspreppeled, majd tbbszrzd.

Rviden tekintsk t az els lehetsget! A fejezet korbbi rszei alapjn vilgos, hogy a fenti folyamatban csak egy nagyon kis lpst kell mdostanod, s mris megtbbszrzheted a feltlttt VHD fjlt. Ez a folyamat a kvetkez lpsekbl ll ssze: Meglv Hyper-V szervered az egyedi konfigurcijnak kialaktsa, tesztelse Sysprep folyamat vgrehajtsa, vagyis a gp egyedisgnek megszntetse, S ID-ek s egyb egyedi azonostk, profilok trlse A sysprepelt VHD feltltse (az elz fejezetrszben lertak alapjn) Image fjl ksztse a VHD-bl A feltlttt s sysprepelt VHD-bl az albbiak szerint kszthetsz sajt lemezkpet: Az Azure portlon a bal oldali menben vlaszd a Virtual Machines Images Create Image menpontot! Add meg a lemezkp nevt, a VHD elrhetsgt (ahova elzleg feltlttted), hatrozd meg az opercis rendszer tpust, s jelld be, hogy a feltlttt VHD mr tesett a sysprep folyamaton (5 -23 bra)!

5-23 bra: Image ksztse VHD-bl

J hr, hogy ha szeretnd elkerlni a hosszadalmas feltltst s konfigurlst, akkor a teljes folyamat vgrehajthat kzvetlenl az Azure-ban is! Ha ezt az utat vlasztod, az albbi lpsek sorozatt kell vgrehajtanod: j VM ltrehozsa a Windows Azure portlon A VM konfigurlsa, patch, jogosultsgok belltsa Sysprep, majd lellts Capture (az a folyamat, amelynek sorn a VHD-bl Image lesz) Terts (deployment) Tekintsk t a teljes folyamatot rszleteiben!

85

5. IaaS Virtulis gpek 1. Lpj be a Windows Azure portlra s kszts egy j virtulis gpet, amelynek legyen a neve IISTemplate! A New Compute Virtual Machine From Gallery Platform Images funkcival vlaszd ki a Windows Server 2012 lemezkpet! Add meg a gp nevt, az adminisztrtor jelszavt! Hatrozd meg a gp mrett, a DNS nevet, a storage accountot s a rgit, majd vrd meg, mg elkszl a szerver! Csatlakozz RDP segtsgvel a frissen teleptett gpre, s konfigurld be! Ha vgeztl a konfigurcival, teleptettl minden szksges komponenst (pldul az IIS-t), akkor futtasd a sysprep.exe alkalmazst a C:\Windows\System32\sysprep\ tvonalon, s jelld be a Generalize, illetve a Shutdown opcikat (5-24 bra)!

2. 3.

5-24 bra: A Sysprep belltsa

4.

A virtulis gp lellst kveten elksztheted a sajt lemezkpedet! A Virtual Machines menpontban a gp nevre llva az als menben vlaszd ki a Capture nyomgombot! Itt add meg a leend lemezkp nevt, s jelld be, hogy a sysprep folyamatot mr vgrehajtottad (5-25 bra)! Fontos tudnod, hogy a preparlt virtulis gp (nem a VHD!) trldik a folyamat vgn, s csak az image fjl marad meg! A capture mvelet befejeztvel kvetkezhet a sajt image tmeges teleptse, az albbiak szerint: a New Compute Virtual Machine From Gallery My Images menpontban vlaszd ki a sajt elre konfigurlt lemezkpedet, add meg a nevt, mrett stb., s hozd ltre annyi pldnyban, amennyi csak szksges (5-26 bra)!

5.

5-25 bra: Lemezkp ksztse VHD-bl

86

5. IaaS Virtulis gpek

5-26 bra: Virtulis gp ksztse sajt lemezkpbl

Lemezek kezelse a Windows Azure IaaS szolgltatsban


A fejezet elejn mr emltettk, hogy az infrastruktra szolgltats magval hozta a perzisztens lemezek hasznlatt is. Tekintsk t rviden az egyes lemezek tpusait, csoportostsukat s felhasznlsi terleteiket!

A lemezek tpusai
Az Azure IaaS szolgltatsa az albbi lemeztpusokat klnbzteti meg: Opercisrendszer-lemez (OS Disk, perzisztens): Jellemzen a C:\ meghajt, 30GB mret lemez, mely tartalmazza az opercis rendszert. Maximum kapacitsa 127G B lehet, s ez a tpus lemez (mivel opercis rendszert tartalmaz) felhasznlhat lemezkp ksztsre. Adatlemez (Data Disk, perzisztens): Rszben az opercis rendszertl fggetlen adatlemez, amelynek kezdeti kapacitst magunk hatrozhatjuk meg. Maximlis mrete 1TB lehet, s mivel jellemzen adatokat tartalmaz, gy nem hasznlhat lemezkp ksztsre. A gp futsa kzben dinamikusan fel- s lecsatolhat, vagyis hordozhat. A virtulis gp mrettl fggen egyre tbb adatlemezt csatolhatunk gpnkhz, maximlisan 16-ot. Gyorsttr lemez (Cache Disk, nem perzisztens): A virtulis gp mretvel arnyosan nvekv, nem perzisztens, de nagyon gyors lemez. les adatok trolsra ne hasznld ! Jellemz felhasznlsa: swap fjlok, temp adatbzisok stb. Ez a lemez tulajdonkppen nem is virtulis lemez , hanem az adott fizikai szerver amelyen a virtulis gp fut fizikai lemeze, ezrt nem is tarts.

Cache funkcik
Mivel a rendszer- s az adatlemez ms-ms funkcit tlt be, gyorsttr-belltsaik is klnbznek. Nem mindegy ugyanis, hogy egy Active Directory-t vagy egy SQL adatbzist tartalmaz lemezen milyen gyorsttr-funkcik vannak. Hrom bellts lehetsges: Read: gyorsttr csak olvasshoz ReadWrite: rst s olvasst is tmogat gyorsttr None: nincs bekapcsolva a cache funkci rdemes megjegyezni, hogy a rendszerlemezek esetben az alapbellts a ReadWrite, mg az adatlemezek esetben a None. Mivel adatlemezt rzkeny adatok trolsra is hasznlhatunk, ezrt alaprtelmezsben semmilyen gyorsttr funkci nincs bekapcsolva, ha mgis szksges, neknk kell azt bekapcsolnunk ezt megtehetjk a portlon, illetve a parancssorbl is.

87

5. IaaS Virtulis gpek Mivel a rendszerlemez Active Directory adatbzist is tartalmazhat, ebben az esetben szintn neknk kell gondoskodni a gyorsttr mdostsrl. Az egyes diszkek tulajdonsgait s alaprtelmezett belltsait az 5-3 tblzat foglalja ssze. 5-3 tblzat: Azure lemeztpusok s tulajdonsgaik Tulajdonsg Gyorsttr alapbelltsa Maximlis kapacits Lemezkp ksztsre alkalmas Kzvetlen mdosts Rendszerlemez ReadWrite 127GB Igen Gyorsttr mdostsa csak jraindtssal Adatlemez Nincs 1TB Nem Fel- s lecsatols, gyorsttr mdostsa jraindts nlkl

C:\ = OS Disk D:\ = Nem perzisztens Cache Diszk E:\, F:\, G:\ ... Data Disk

Adatlemezek kezelse
Tekintsk t rviden, hogyan lehet adatdiszkeket gyorsan fel- s lecsatlakoztatni, mind Linux, mind Windows tpus gpek esetn! 1. Az Azure portlon kattints a mdostand virtulis gp nevre, majd a gp tulajdonsglapjn az als menben az Attach nyomgombra! Itt kt lehetsgbl is vlaszthatsz: Attach empty disk, vagyis res lemez csatlakoztatsa meglv virtulis gphez; illetve Attach disk a mr meglv vagy ppen ltalad feltlttt VHD fjl csatolshoz. Vlaszd az Attach empty disk opcit, s add meg a leend lemez mrett s nevt (5-27 bra)!

2.

5-27 bra: res adatlemez csatolsa meglv virtulis gphez

3.

A lemez csatolsa utn mr csak annyi teendd van, hogy az opercis rendszerednek megfelelen belltsd a fjlrendszert s a csatlakoztatsi pontot, nevet (disk management, fdisk, format vagy a Linuxban mount). Ha mr nincs szksged a lemezre, vagy szeretnd tkltztetni a rajta lv adatokat egy msik szerverre, akkor az als menben vlaszd a Detach Disk menpontot, s vrd meg, mg az Azure lecsatolja a lemezt! Ezutn azt egy msik virtulis gphez csatlakoztathatod az Attach Attach disk nyomgomb segtsgvel.

4.

88

5. IaaS Virtulis gpek

A Cloud Service-ek s a virtulis gpek kapcsolata


A fejezetben eddig csak nll (standalone) gpeket hasznltunk. Ebben az esetben a virtulis gp egy bels, magnhlzati IP-cmet kap az Azure DHCP szolgltatstl, ezenkvl rendelkezik mg egy kls, publikus IP-vel (VIP) is. A gp s a klvilg kztt a kapcsolatot az Azure tzfalszolgltatsa biztostja, hlzati vgpontok segtsgvel szablyozhatjuk a kommunikcit. De mi van akkor, ha egy szolgltatst tbb szerver fog biztostani, s az egyes szerverek kztt is szeretnnk valamilyen kommunikcit kialaktani, persze mindezt gy, hogy a konfigurcink egsze el legyen rejtve a klvilg ell? Az Azure-ban fut virtulis gpek csoportostst, sszerendelst a felhszolgltatsok (cloud service) biztostjk. A cloud service nemcsak csoportostja, sszerendeli a gpeket, hanem nvteret is biztost a szmukra! Nzznk egy pldt! Tegyk fel, hogy ltrehozol egy virtulis gpet, melynek a neve SRV1, DNS neve webapp.cloudapp.net. Ez a szerver weboldalt vagy weboldalakat szolgl ki. A redundancia nvelse miatt ltrehozol mg egy msik virtulis gpet is, amely szintn kiszolglja a weboldalakat, s mg ms alkalmazsokat is futtathat. Ha a msodik gpet hozzrendeled az els gp cloud service-hez, akkor mindkt gp a klvilg fel tovbbra is csak egy DNS nvvel rhet el, ez a webapp.cloudapp.net. Viszont a kt gped innentl kezdve kzvetlenl egymssal is kommuniklhat a cloud service-en bell!
Fontos! Egy elfizetsen bell a standalone gpek nem tudnak egymssal kommuniklni , csak a publikus cmeken keresztl, mintha brmely ms szerverrel lpnnek kapcsolatba. Az azonos cloud service-be tartoz gpek kztt megvalsthat a bels hlzati kommunikci, akr a bels, magnhlzati cmek segtsgvel is! (Ha az opercis rendszeren van tzfal szolgltats, akkor azt is konfigurlni kell, pldul Windows szerverek esetben.)

Gpek kzs Cloud Service-be rendezse


Ha tbb virtulis gpet szeretnnk sszerendelni egy cloud service-be, nem kell mst tennnk, mint a gp ksztse sorn jellni, hogy azt egy mr meglv Cloud Service alatt szeretnnk zemeltetni. Ehhez az Azure portlon ki kell vlasztanod a New Compute Virtual Machine From Image funkcit, s a varzsl msodik oldaln megadni a Connect to an Existing Virtual Machine opcit (5-28 bra)!

5-28 bra: Virtulis gpek csatlakoztatsa kzs Cloud Service-be

89

5. IaaS Virtulis gpek

Magas rendelkezsre lls biztostsa


A Windows Azure legalbb havi 99,9%-os rendelkezsre llst vllal a gpeink futtatsa sorn. Mint minden ms adatkzpontban, itt is vannak, lesznek ktelez frisstsek, karbantartsok, melyek sorn bizony jraindulhatnak a virtulis gpeink (ezek elre jelzett, tervezett karbantartsok). A platformszolgltats (PaaS) esetben az Azure automatikusan gondoskodik arrl, hogy a Web vagy Worker Role-ok frisstse mindig gy trtnjen, hogy az alkalmazsunk folyamatosan elrhet maradjon. IaaS szolgltatsoknl neknk kell a Fabric Controller tudomsra hoznunk, hogy mely gpek ltnak el azonos feladatokat, gy a frisstsi ciklusoknl az automatizmus ezt is figyelembe veszi. A gpek sszerendelsnek neve az availability set. Egy availability set esetben az Azure 99,95%-os rendelkezsre llst vllal! Az availability set azt jelenti, hogy megmondhatjuk, mely gpek kerljenek kln fault s update domainekbe, gy a frisstsi ciklus alatt is mkdkpes marad mindig legalbb az egyik virtulis gp. Ennek konfigurlst a kvetkezkppen vgezheted el: 1. Kattints az adott virtulis szerver nevre, majd a Configure lapon vlaszd a Create Availability Set funkcit, s nevezd el a csoportot (5-29 bra)!

5-29 bra: Availability set ltrehozsa

2. 3.

Lpj az als menben a Save menre, s vrj kb. 1 percet, majd frisstsd a bngszd tartalmt! Nyisd meg a msik szervered tulajdonsglapjt, lpj a Configure menre, s rendeld a virtulis gpet a megfelel (frissen ltrehozott) csoporthoz, majd nyomd meg a Save gombot!

A knyv megjelensekor, 2013 februrjban az IaaS szolgltats n. preview fzisban van. Amikor kilp onnan, a Microsoft konkrt szolgltatsi szintet (SLA-t) vllal erre a szolgltatsra is.

Az Active Directory s a Windows Azure


Nyugodtan mondhatjuk, hogy az Active Directory (AD) a Windows Server egyik legfontosabb szolgltatsa. Termszetesen AD is zemeltethet a felhben, de mieltt brki ebbe a fba vgn a fejszjt, mindenkppen rdemes megfontolni pr krdst:

Futtathat az AD virtulis gpen? Hol helyezzem el az adatbzisomat? Replikcis topolgia kialaktsa: a forgalomnak ra van. rhat s olvashat DC-t vagy csak olvashat DC-t tegyek a felhbe? Mi a helyzet a Global Catalog hasznlatval? Trustot vagy replikt hasznljak? Mi legyen a nvfeloldssal?

Ha az sszes krdsen nem is megynk vgig, mindenkpp tekintsnk t pr problmakrt!

90

5. IaaS Virtulis gpek

Virtualizlt DC
Tmogatott, de ne lj az albbi lehetsgek egyikvel sem: pillanatkpek, klnozs, P2V migrci! Problma esetn hasznld a klasszikus ments-helyrellts megkzeltst! j DC teleptsnl tovbbra is a dcpromo segdeszkzt tudod hasznlni. A Windows Server 2012-ben tallhat DC klnozs funkci mg nem tmogatott!

Adatbzis elhelyezse
Clszer megfontolnod, hogy az Active Directory adatbzist nem a C:\ meghajtn helyezed el, hanem egy kln ltrehozott adatlemezen. Gondolj a cache belltsokra, arra, hogy az rsi gyorsttr nincs bekapcsolva alapesetben az adatlemezen, s gy nagyobb biztonsgban lesz a DIT fjl!

Replikci, svszlessg, forgalom


Az egyes DC-k kztt folyamatos a replikci, de ez a forgalom s ennek az razsa annyira alacsony, hogy szinte el is tekinthetnk a problmtl. Nagyobb adatforgalom a szerverek tertse sorn kvetkezhet be, de az is inkbb befel irnyul (az adatkzpont irnyba halad) forgalom lesz, amirt nem kell fizetni. A forgalom minimalizlsa rdekben clszer az Azure-ban lv DC-t kln site-ba s alhlzatba helyezni.

Trust vagy replica?


Akr egy meglv erdhz adsz hozz egy DC-t, akr egy j erdt hozol ltre, s gy kapcsolod ssze a kt hlzatot, mindkt alternatvnak megvan a maga elnye. Pldul ha trust-ot alaktasz ki, akkor sztvlaszthat a felhben lv hlzat.

IP cmek s nvfelolds
A DC-nek clszer lenne fix IP cmet adni, de az Azure-ban nem hasznlhat fix IP cm! Br az Azure biztostja a szksges nvfeloldst, de nem ad ahhoz egyb megszokott szolgltatsokat, pldul SRV rekordokat, dinamikus DNS regisztrcit, stb. DC teleptse eltt ltre kell hoznod egy j virtulis hlzatot, ahol be kell lltanod a DNS kiszolglkat!

Fldrajzilag elosztott szolgltats ksztse


Amint a fejezetben lthattad, az availability setek segtsgvel knnyszerrel ltrehozhatsz olyan tbb gpbl ll csoportokat, amelyek adatkzponton bell tbb fault domainben (azaz kln rackeken) helyezkednek el. Ezzel az eszkzzel biztosthatod, hogy ha az adatkzpontban valamilyen problma trtnik (pldul egy router vagy egy tpegysg meghibsodik), akkor nem esik ki egyszerre valamennyi gped. Ehelyett a hiba csak szmtsi kapacitsod egy bizonyos hnyadt rinti, az Azure pedig termszetesen nhny percen bell ptolja a kiesett gpeket, helyrelltva ezzel az eredeti llapotot. Nha azonban szksges ennl is tovbb menni. Hogyan garantlhatod szolgltatsod fennmaradst akkor is, ha az egsz adatkzpont kiesik? Vizsgljunk meg egy msik problmt is! Tegyk fel, hogy alkalmazsod felhasznli bzisa nemzetkzi: egyarnt vannak eurpai s zsiai gyfeleid is! Hova rdemes ilyenkor elhelyezni a gpeidet? Az eurpai gyfeleknek termszetesen egy eurpai adatkzpont a kedvezbb, azonban egy amszterd ami vagy egy dublini szerver elrse Knbl, Japnbl viszonylag lass s fordtva is. Hogy lehet ezt megkerlni? A vlasz mindkt problmra az Azure Traffic Manager szolgltats! Ennek segtsgvel tbb adatkzpontban is ltrehozhatsz gpeket, majd ezeket egy adatkzpontokon tvel csoportba fzheted ssze. A csoportnak egyetlen kzs URL-je lesz, ezt publiklod felhasznlid fel. A csoport ltrehozsakor pedig megadhatod, hogy milyen viselkedst vrsz el. Megvlaszthatod, hogy a gyjt URL mindig mondjuk az szak-eurpai adatkzpontra mutasson, ennek meghibsodsa esetn viszont a nyugat eurpai adatkzpontra (failover md). De akr azt is megadhatod, hogy a gyjt URL automatikusan vlassza ki, hogy melyik adatkzpont esik legkzelebb a felhasznldhoz, s mindig abba kldje a krst, amelyik a teljestmny szempontjbl a legmegfelelbb (performance md). gy ezzel az eszkzzel

91

5. IaaS Virtulis gpek fldrajzilag elosztott szolgltatst kszthetsz, s ezzel mg nagyobb zembiztonsgot s teljestmnyt biztosthatsz, mint ha csak egy adatkzpontot hasznlnl.
Fontos ltni, hogy a Traffic Managerre viszonylag ritkn van szksg. Az Azure ltal nyjtott SLA -knak ksznheten egyetlen adatkzpont s az azon belli vdelmi mechanizmusok is igen magas zembiztonsgot nyjtanak. Tbb adatkzpontbl ll szolgltatst pteni nehz; a Traffic Manager segt ugyan a forgalomirnytsban, de pldul az adatkzpontokban sztszrt adatbzisok szinkronizlsnak megoldsa mr a fejleszt feladata. Fldrajzilag elosztott alkalmazst ltalban csak a legnagyobb projektek esetn clszer pteni.

A Traffic Manager hasznlata


A Traffic Manager azon kevs szolgltats egyike, ami jelen sorok rsakor mg nem kerlt t a modern, HTML alap menedzsment portlra. Ezrt hasznlathoz nyisd meg a rgi portlt (az j portl jobb fels sarkban lv Live ID-ra kattintva, majd a Previous portal linket kivlasztva; vagy a http://windows.azure.com link begpelsvel)! Megjelenik a rgi, Silverlight alap portl. Ennek bal als sarkban tallod a Virtual Network gombot, kattints r erre (5-30 bra)! Az elnevezs nmileg zavarkelt ennek a feliratnak semmi kze a kvetkez fejezetben lert, Azure IaaS gpek sszektsre szolgl Virtual Network funkcionalitshoz.

5-30 bra: A Traffic Manager az Azure portlon

A Traffic Managerben ltrehozhat, adatkzpontokon tvel, tbb szolgltatst tartalmaz csoportok neve Policy. Egy Traffic Manager Policy mindig egy elfizetshez ktdik; tbb elfizetsbl szrmaz gpekbl nem lehet csoportot alkotni. A csoportba nem egyni gpeket, hanem cloud service -eket helyezhetsz el. Ezekrl mr olvashattl ebben a fejezetben (egy cloud service-en bell potencilisan tbb IaaS virtulis gp foglalhat helyet), de nagyon fontos, hogy a ksbbi fejezetben bemutatott PaaS virtulis gpek, felhszolgltatsok is cloud service ekbe vannak rendezve, gy azok is tagjai lehetnek Traffic Manager Policyknek. Policy ltrehozshoz jelld ki azt az elfizetst, amelyikben dolgozni szeretnl , majd kattints az eszkztron (szalagon) tallhat Create gombra! Megjelenik a Policy ltrehozsra szolgl ablak (5 -31 bra).

92

5. IaaS Virtulis gpek

5-31 bra: Traffic Manager Policy ltrehozsa

Elszr vlaszd ki, hogy a csoport hogy viselkedjen! A Performance opcival a csoport a berkez krst mindig abba a cloud service-be tovbbtja, ami a felhasznl szmra a legkzelebbi, leggyorsabban elrhet. A Failover opcival a csoport a berkez krst mindig az els cloud service -be tovbbtja; ha az egy hiba miatt elrhetetlen, akkor a msodikba; s gy tovbb. (Helyes mkds esetn teht a msodik cloud service-be egyltaln nem jut forgalom.) A Round Robin opcival a forgalom egyenletesen oszlik meg a cloud service -ek kztt. A dialgus kzpen lv nylgombjaival add hozz a csoporthoz azokat a cloud service-eket, amelyeket abba bele szeretnl foglalni! Ezutn hatrozd meg azt az URL-t, amellyel az Azure megvizsglja, hogy egy cloud service l -e mg! Az 531 brn lthat belltsokkal pldul az Azure a http://felhovm1.cloudapp.net/Default.aspx s http://felhovm3.cloudapp.net/Default.aspx URL-eket ellenrzi majd rendszeresen (jelenleg 30 msodpercenknt). Ha az URL helyes vlaszt ad (nem pedig valamilyen HTTP hibakdot), akkor a Traffic Manager mkdnek nyilvntja az adott cloud service-t, ellenkez esetben pedig hibsnak. Vgl nincs ms htra, mint megadnod a csoport gyjt-URL-jt. Ez mindig <valami>.trafficmanager.net formtum lesz majd. Amikor egy felhasznl vagy egy rendszer erre hivatkozik, akkor az Azure megvizsglja, hogy a krst melyik cloud service-be clszer kldenie, majd annak a cloud service-nek az IP cmt adja vissza vlaszul, amelyiket kivlasztotta. Ez azt jelenti, hogy a Traffic Manager gyakorlatilag egy okos DNS szerver. Ez a nvfelolds csak eg y adott ideig, alapesetben 300 msodpercig l. Ezen id letelte utn a Traffic Manager jra megvizsglja majd, hogy a felhasznlt melyik adatkzpontba clszer irnytania. Megeshet teht, hogy a felhasznl krse hirtelen msik adatkzpontba fut be, ezrt a DNS time-to-live idejt gyesen kell megvlasztani. Fontos ltni, hogy a Traffic Manager kizrlag a forgalom irnytst vgzi, s ezt is csak a csoportok szmra ltrejtt kzs URL (valami.trafficmanager.net) esetn teszi. Az egyes cloud service-ek viselkedst semmilyen mdon nem befolysolja, azok sajt URL-jeikkel (valami.cloudapp.net) tovbbra is megcmezhetk kzvetlenl, akkor is, ha ezek egy Traffic Manager csoport rszei.

93

5. IaaS Virtulis gpek Miutn ltrehoztad a Traffic Manager -es URL-t, ezt a megfelel DNS eszkzk segtsgvel elrejtheted egy sajt DNS nv mg (errl lsd a DNS belltsokkal foglalkoz szakaszt a knyvben). gy vgeredmnyben megoldhat, hogy sajt domainneved, pldul a www.example.com, az example.trafficmanager.net cmre mutasson, ami pedig mondjuk hrom nll cloud service-bl ll, s a felhasznl krst vgs soron valamelyik cloud service szolglja majd ki.

sszegzs
Ebben a fejezetben megismerkedhettl a virtulis gpek kezelsnek folyamatval. A fejezet elejn megtanultad, hogy melyek az alapvet mkdsbeli klnbsgek az Azure IaaS virtulis gpek s a PaaS szerepkrk kztt. Miutn ttekintetted a tmogatott opercis rendszerek krt, az egyes gpek lehetsges mrett s tulajdonsgait, megismerkedhettl az zemeltets mindennapi krdseivel. Lthattad, hogy mire kell figyelni s hogyan kell terteni Linux, illetve Windows virtulis gpeket, melyek a gpek alapvet tulajdonsgai, s ezeket hogyan tudod mdostani. A gpek zemeltetsnek egyik alapfelttele, hogy tisztban lgy a lemezek kezelsvel, tpusaival ezt is megismerhetted ebben a fejezetben. Megtanulhattad, mirt fontos a gpek kzs nvtrbe rendezse, melyek a cloud service-ek kezelsnek s a rendelkezsre llsnak alapvet lpsei. A fejezet vgn megismerhetted az Active Directory teleptsnek s a Traffic Manager belltsnak lehetsgeit is.

94

6. IaaS Virtulis hlzatok

6. IaaS Virtulis hlzatok


Ebben a fejezetben az albbi tmkat ismerheted meg: Az Azure virtulis hlzatok ttekintse Hasznlati esetek Vgpontok s terhelselosztk Vllalati s felh hlzatok sszekapcsolsa A fejezetben bemutatjuk az Azure virtulis hlzatok jellemzit, azok lehetsgeit s hasznlati eseteit. Itt ismertetjk a virtulis gpekhez kapcsold vgpontok (endpoint) s terhelselosztk (load balancer) jellemzit is. A fejezet ezenfell kitr a sajt on-premise hlzat s az Azure IaaS hlzatok sszekapcsolsra, amely rvn az Azure IaaS-sel megvalsthat a meglev adatkzponti kapacitsok kiterjesztse.

Kls elrs
Az IaaS bevezetsvel szmos jdonsg jelent meg az Azure hlzatok kezelsben. Korbban nem volt DNS nvfelolds a virtulis gpek kztt, mert a PaaS szolgltatsokat futtat gpek az Azure PaaS APIkon keresztl vgeztk a nvfeloldst, ez az API biztostotta a gpek kztt az IP cmre fordtst. Ez szerveralkalmazsok esetben nem jrhat, azok DNS -en keresztl talljk meg egymst. Az internetes nvfelolds automatikusan biztostott minden Azure IaaS gp szmra, de sajt DNS nvfeloldsunkat vagy DNS szervernket is megvalsthatjuk. Ez most mr az IaaS s a PaaS gpeken egyarnt igaz. Az Azure IaaS gpek egy fontos sajtossga, hogy a ltrehozs pillanattl kezdve rendelkeznek internetelrssel az ehhez szksges nvfeloldssal , valamint az, hogy az internet irnybl is elrhetv tehetk. Erre mr csak azrt is szksg van, mert az IaaS gpek tvoli felgyelete az RDP protokollon keresztl trtnik. Tovbbi jdonsg az UDP forgalom, valamint a virtulis gpek kztti ICMP kapcsolat tmogatsa. Az ICMP forgalom kvlrl nem rhet el, teht a virtulis gpek az internet irnybl nem pingelhetk tovbbra sem. Ha megnzzk, hogyan is pl fel a virtulis gpek hlzati elrse, mindjrt lthatjuk, hogy ez mirt is van gy (6-1 bra). Az Azure esetben a cloud service (felhszolgltats) egyik fontos jellemzje, hogy pontosan egy publikus IP cm tartozik hozz. A virtulis gpek pedig minden esetben privt IP cmtartomnybl kapnak cmet. Minden, az adott cloud service-ben fut szolgltats vagy virtulis gp azon a publikus IP cmen keresztl rhet el. A szolgltatshoz tartoz IP cm fix, soha nem vltozik, s mindaddig az adott szolgltatshoz tartozik, amg az teleptett (deployed) llapotban van, azaz akkor sznik meg, ha az adott cloud service-ben lv gpeket trljk. A virtulis gpek kls elrsre a PaaS esetben a virtulis gpekben van egy RDP tovbbt ( forwarder) kpessg, amely az RDP forgalmat a megfelel gphez irnytja. Az IaaS virtulis gpek esetben nem ezt a megoldst alkalmaztk, mert az volt a cl, hogy a kls elrs lehetleg hagyomnyos, a virtulis gpeken extra komponenseket nem ignyl mdon trtnjen. gy az IaaS esetben a kls forgalmak virtulis gpekhez val eljuttatsa a terhelselosztn vagy a kls IP cmen rkez forgalmak egyszer port forwardolsval s cmfordtssal (NAT) kerlt megvalstsra, ahogyan ezt a 6 -1 bra is mutatja. Ez nemcsak az RDP elrsre, hanem minden egyb kls elrsre is vonatkozik, teht ha egy HTTP alap webes forgalmat akarunk kvlrl elrhetv tenni a virtulis gpeken, akkor a 80 -as kls portot kell a megfelel bels portra irnytani. Ezt a virtulis gpek konfigurcijnak End points belltsainl tudjuk megtenni, ahogy az a 6-2 brn lthat.

95

6. IaaS Virtulis hlzatok

6-1 bra: Azure szolgltatsok kls elrse

6-2 bra: Port forwarding belltsa az Azure felleten

Amennyiben azt szeretnnk, hogy a kvlrl jv krseket ne csak egyetlen virtulis gp szolglja ki akr nagy rendelkezsre lls, akr terhelseloszts vgett , akkor hasznlhatunk terhelselosztt (load

96

6. IaaS Virtulis hlzatok balancer). Ezt a szolgltatst az Azure biztostja, mghozz egy nagy teljestmny terhelseloszt segtsgvel, amely csak minimlis ksleltetst ad a krsek kiszolglshoz. Amennyiben a terhelselosztt konfigurltuk, akkor az automatikusan, 15 msodpercenknt ellenrzi a terhelseloszt mgtt lev virtulis gpeket egy HTTP krs segtsgvel. Ha a terhelseloszt HTTP 200 -as (OK) zenetet kap vissza, akkor nyugtzza, hogy az adott virtulis gp mg l. Ha az ilyen letjel -ellenrzsre ktszer egyms utn nem rkezik vlasz (teht legfeljebb 30 mp kiess utn), akkor a terhelseloszt automatikusan nem mkdnek detektlja az adott gpet, s a tovbbiakban nem tovbbtja a forgalmat fel egszen addig, amg jra nem veszi tle az letjeleket. Mivel nincs semmilyen gynk a virtulis gpeken, ezrt szksges, hogy a terhelseloszt ilyen mdon ellenrizze, hogy a konfigurlt gpek mg mindig lnek-e. A terhelselosztn konfigurlhat, hogy milyen URL-en, milyen elrsi ton s porton vgezze a rendszer ezt a HTTP ellenrzst az adott gpeken.

lland IP cmek
Mint korbban lttuk, a cloud service minden esetben lland kls IP cmekkel rendelkezik. De mi a helyzet a virtulis gpekkel? Amennyiben olyan szolgltatst akarunk futtatni a virtulis gpnkn, amely esetben mr nem elegend az, hogy a gp a DNS neve alapjn elrhet legyen (pl. sajt DNS szerver), akkor szksgnk van arra, hogy a virtulis gp is lland bels IP cmet kapjon. A virtulis gpek automatikusan rendelkeznek IP cmmel s internetelrssel, amint ltrehozzuk ket. Azonban mivel az Azure virtulis gpek akr klnbz adatkzpontokban is futhatnak, vagy egyszeren egy tterhels esetn msik IP alhlzatba kerlhetnek, ezrt a kzzel vgzett IP cm konfigurci nem jrhat t. Az Azure virtulis gpek esetn soha nem szabad IP cmet kzzel konfigurlni, mg gy sem, hogy azt az IP cmet lltjuk be kzzel, amit a rendszertl kapott a gpnk, mivel egy tterhels esetn akr t is kerlhet egy msik IP cmtartomnyba, s akkor teljes mrtkben s visszallthatatlanul elveszthetjk az adott gppel a kapcsolatot. Ha lland bels IP cmet szeretnnk egy vagy tbb virtulis gphez, akkor a virtulis hlzatok funkcit (Virtual Network) kell hasznlnunk. A Virtual Network-k hasznlatnak az egyik legnagyobb elnye, hogy ha ltrehozunk egy virtulis hlzatot, s a gpeinket ahhoz rendeljk, akkor az adott gpek minden jraindts vagy tterhels esetn ugyanazt az IP cmet fogjk megkapni. Ez egy DHCP -bl kiadott IP cm tbb, mint 136 ves rvnyessgi intervallummal (6 -3 bra). Teht mg virtulis hlzatok hasznlata esetn is meg kell hagynunk a virtulis gpeinkben az automatikus IP konfigurcit, viszont biztosak lehetnk benne, hogy az elkvetkez 68 vben az IP cmnk nem fog megvltozni (mert a DHCP a lejrati id felnl, vagyis 68 vnl prblkozik elszr az IP cm megjtsval). Ebbl kifolylag a gpek IP bels cme gyakorlatilag fix, viszont DHCP-vel kell ket konfigurlni.

97

6. IaaS Virtulis hlzatok

6-3 bra: Azure IaaS gp lland, de nem statikus IP cmmel

A virtulis hlzatok esetben lehetsgnk van a ltrehozott hlzatokat tovbbi alhlzatokra bontani, ahogy ezt a 6-4 brn lthatjuk.

6-4 bra: Azure virtulis hlzatok konfigurcija

A virtulis hlzatokhoz tartozan lehetsgnk van DNS kiszolglkat definilni. Az adott virtulis hlzathoz csatlakoztatott kiszolgl ezek utn az adott DNS kiszolglkat kapja meg a DHCP kiszolgltl (6-5 bra).

98

6. IaaS Virtulis hlzatok A fentiek rtelmben az Azure virtulis gpeken nem futtathatunk DHCP szolgltatst sem, de szksg sincsen r, hiszen az adatkzpont magtl biztostja a hlzati konfigurcit minden virtulis gpnk szmra.

6-5 bra: DNS kiszolgl megadsa az Azure hlzatok esetn

VPN a felh s a vllalati hlzat kztt


Az Azure IaaS egyik legrdekesebb funkcija az, hogy a felhben fut virtulis gpeinket sszekapcsolhatjuk a sajt vllalati hlzatunkkal, s gy az Azure virtulis gpek a bels hlzatunk rszei lesznek. Ennek segtsgvel az Azure IaaS gpek tnylegesen sajt adatkzpontunk (on -premise) kiterjesztseiv vlnak a felhben! Ez szmtalan lehetsget biztost attl kezdve, hogy idszakosan nagyobb terhelsek esetn egyszeren a bels hlzaton fut szolgltatsok kapacitsait ki tudjuk terjeszteni a felhbe, egszen addig, hogy akr a teljes katasztrfa esetre fenntartott adatkzpontunkat felkltztessk a felhbe (6-6 bra).

Azure felh VNET (10.1.0.0/16


MiddleWare 10.1.1.0/24

Bels hlzat (192.168.1.0/24)


FrontEnd 10.1.0.0/24

Internet
AD

BackEnd 10.2.0.0/24

6-6 bra: Az Azure felh s a sajt hlzat sszekapcsolsa

A bels hlzatunk s az Azure hlzatok sszekapcsolshoz egy olyan VPN eszkzre van szksgnk, amely: rendelkezik publikus IPv4-es cmmel; tmogatja az IKEv1-et; IPSec SA-t kpes Tunnel mdban felpteni; tmogatja az AES-128 titkostsi funkcit, az SHA-1 hasht s a Diffie-Hellman Perfect Forward Secrecy-t Group 2 mdban s VPH header begyazs eltt darabolja a csomagokat.

99

6. IaaS Virtulis hlzatok A Microsoft kiadott egy listt a tmogatott VPN hlzati eszkzkrl, amelyekkel a mkdst le is teszteltk. Ez a lista elrhet az http://msdn.microsoft.com/enus/library/windowsazure/jj156075.aspx oldalon.

6-7 bra: Azure hlzatok sszekapcsolsa loklis hlzatokkal

A felh s az adatkzpontok sszekapcsolshoz elszr fel kell vennnk az adatkzpontunk IP cm tartomnyt a Local Networks opciban. Ezutn a korbban ismertetett VNET konfigurciban be kell lltanunk, hogy a ltrehozott hlzatot szeretnnk sszekapcsolni az adatkzpontunkkal. Ezutn mr csak meg kell adnunk azt a korbban ltrehozott loklis hlzatot ( Local Network), amellyel kapcsolatot szeretnnk ltesteni (6-7 bra). Nhny tmogatott VPN eszkzhz a konfigurci belltst elvgz szkript le is tlthet. A Site-to-Site VPN kapcsolat kiptsrl rszletes, magyar nyelv tmutatt tallsz a kvetkez cmen: https://technetklub.hu/blogs/kiralyi/archive/2012/09/23/blog_2F00_azure_2D00_iaas_2D00_sit e_2D00_to_2D00_site_2D00_vpn_2D00_cisco_2D00_asa_2D00_5505_2D00_step_2D00_by_2D00_step.asp x Ugyanide mutat, de knnyebben begpelhet a http://tinyurl.com/d56grwo URL.

sszegzs
Ebben a fejezetben ttekintettk az Azure hlzatokat s azok legfbb jellemzit. Az Azure esetben ltrehozott virtulis gpeknl az Internet elrse alaprtelmezett mdon automatikusan biztostott. Ha lland IP cmre vagy tbb hlzati szegmensre van szksgnk, egyszeren ltre tudunk hozni Virtual Networkket, azaz virtulis hlzatokat. Az Azure lehetsget biztost a felh s a helyi hlzatok sszekapcsolsra is, ennek rvn az Azure-ban fut virtulis gpeink egyszeren a meglev adatkzpontok kiterjesztsv tehetek.

100

7. IaaS Storage

7. IaaS Storage
Ebben a fejezetben az albbi tmkat ismerheted meg: Az Azure Storage szolgltatsai s felptse A Blob Storage kpessgei A Blob Storage felhasznlsi mdjai A knyv eddigi fejezeteiben megismerkedhettl az Azure alapfogalmaival, s lthattad, hogyan vehet ignybe a felh masszv szmtsi kapacitsa sajt virtulis gpeid futtatsra. A szmtsi kapacits mellett a msik taln leglnyegesebb informatikai erforrs termszetesen a trhely. Ebben a fejezetben az Azure nagymennyisg adat redundns s kltsghatkony trolst lehetv tv Azure Storage szolgltatsrl lesz sz. A szolgltats nmagban is felhasznlhat, illetve tbb Azure -szolgltats, gy pldul a virtulis gpek szolgltats is ezen alapszik. A knyvben kt fejezet is szl az Azure Storage szolgltatsrl; a mostani, azaz 7. fejezet elssorban zemeltetknek szl, a 10. fejezet pedig bemutatja a szolgltats fejlesztk szmra rdekes oldalt.

Az Azure Storage szolgltatsai s felptse


A hromfle Storage szolgltats
Az Azure Storage szolgltats nagymennyisg adat trolsra ad lehetsget. Hrom f kpessggel rendelkezik: A Blob Storage szolgltats egy masszv fjlszerverknt kpzelhet el. Fjlokat (blobokat) lehet ide feltlteni, nagyon megbzhatan trolni, nemzetkzileg terjeszteni s gy tovbb. A korbban megismert IaaS virtulis gpek merevlemezei is voltakppen fjlok, amik az Azure Blob Storage szolgltatsban vannak trolva. A Table Storage szolgltats rekordok trolsra alkalmas. Egy rekord nhny kulcsbl s adatmezkbl ll. Nem SQL-rl beszlnk: nincsenek kls kulcsok vagy trolt eljrsok. A szolgltats lnyege, hogy nagyon sok ilyen rekordot tud megbzhatan s igen alacsony ron trolni. A Queue Service pedig vrakozsi sorokat biztost. A sorokba zeneteket (pl. t kell konvertlni ezt s ezt a videt, ki kell szmlzni ezt s ezt a megrendelst) pakolhatunk, feldolgozegysgeink pedig kiolvassk s feldolgozzk ezeket az zeneteket. A szolgltats lnyege, hogy egyszerre tetszleges szm termel s fogyaszt rhatja -olvashatja a sorokat, s egy okos mechanizmus garantlja, hogy a belekerlt zenetek csak akkor trldnek, ha a feldolgozsuk sikerrel befejezdtt. A Queue Service kedvelt mechanizmus pl. olyan webalkalmazsoknl, ahol a webes frontenden feladatok keletkeznek, amiket backend gpeknek kell elvgeznie. A Queue Service hasznlatval a frontend s backend gpek nem kell, hogy kzvetlenl kommunikljanak, teht laza csatols valsthat meg (pl. szabadon varilhat a backend gpek szma). Ebben a fejezetben az Azure Storage ltalnos jellemzirl s a Blob Storage -rl lesz sz. A Table s Queue szolgltatsokrl a PaaS Storage fejezetben olvashatsz bvebben.

101

7. IaaS Storage

Az Azure platform termszetesen nem csak az Azure Storage szolgltatson keresztl ad lehetsget adattrolsra. SQL jelleg adataink trolsra ott van pldul a SQL Database szolgltats, a Queue Service -hez hasonl kpessgekkel a Service Bus szolgltats is rendelkezik, s gy tovbb. Az Azure Storage ezen a tren nagyon fontos, de nem kizrlagos.

Az Azure Storage architektrja


A fenti hrom szolgltats (Blob, Table, Queue) ltszlag teljesen klnbz, valjban azonban ugyanarra az infrastruktrra plnek. Minden Azure-adatkzpont egy vagy tbb storage stampet tartalmaz. Ezek a storage stampek alkotjk a Storage szolgltats alapjt. Egy storage stamp tbb szerver-rack csoportja. Minden egyes rack egyben egy nll fault domain, azaz nincs olyan hardver, amin kt rack osztozna. Ez azt jelenti, hogy brmilyen hardverhiba is trtnik, maximum egy racket tud magval vinni. A rackekben pedig termszetesen nagymret merevlemezekkel vagy SSD-kkel felszerelt gpek vannak (7-1 bra).

7-1 bra: Azure adatkzpont, Storage Stamp-ek, rackek s bennk a gpek

Az Azure Storage mindent hrom replikban trol. Amikor feltltesz egy fjlt, bersz egy tblasort vagy bekldesz egy zenetet, akkor addig nem lesz sikeres a mvelet, amg mind a hrom replika rsa sikerrel be nem fejezdtt. A hrom replika mindig ugyanabban a storage stampben, de hrom klnbz rackben van, ezrt egy (vagy akr kt) egyidej hardverhiba sem tudja megsemmisteni vagy akr elrhetetlenn tenni adataidat. Az Azure Storage pedig folyamatosan monitorozza a replikk llapott, s a kiesett replikkat rgvest ptolja. Ennek a mechanizmusnak ksznheten a szolgltats rendkvl megbzhat. A fentiek a 7-2 brn lthatk: az brn a Storage Stamp 1 trolja az adataidat, egy -egy replika tallhat az els, msodik s harmadik rackben is. Egy replika termszetesen lehet, hogy tbb gpre is szt van szrva (lehet pl., hogy egyetlen gp merevlemezre nem fr r).

102

7. IaaS Storage

7-2 bra: A replikk elhelyezkedse a Storage Stamp 1 rackjeiben

Mg ennl is nagyobb adattrolsi biztonsg rhet el a georedundancia segtsgvel. Ez egy igny szerint ki- s bekapcsolhat szolgltats, ami adataidat folyamatosan repliklja egy msik adatkzpontba. A msodlagos adatkzpont mindig az elsdlegessel megegyez fldrajzi rgin bell tallhat (azaz ha eredetileg pl. a West Europe adatkzpontot hasznlod, akkor adataid a North Europe adatkzpontba msoldnak). Az tmsolt adatok a msodlagos adatkzpontban is hrom replikban troldnak, bekapcsolt georeplikci mellett teht adataid sszesen hat pldnyban lteznek, kt klnbz fldrajzi telephelyen s hat nll hardverkszleten. A georeplikci segtsgvel teht pratlanul magas adattrolsi megbzhatsg rhet el. A 7-3 bra mutatja be a georeplikcit. Az elsdleges adatkzpontban adataid hrom msolatban, msolatonknt kln-kln rackben lteznek, tovbb egyirny, folyamatos replikcival tkerlnek a msodlagos adatkzpontba is, ahol szintn hrom msolatban, hrom klnbz rackben troldnak.

7-3 bra: A georeplikci mkds kzben

103

7. IaaS Storage Az adattrols megbzhatsga mellett nagyon fontos termszetesen a szolgltats gyorsasga, sklzhatsga is. Ezt biztostjk a partcik. A Storage szolgltatsokba feltlttt elemeket az Azure partcikra osztja: Blob Storage esetn egy fjl, Table Storage esetn az azonos kulcs rekordok, Queue Service esetn pedig egy vrakozsi sor (s a benne lv sszes zenet) alkot egy partcit. Nzzk, hogy viselkednek a partcik (az egyszersg kedvrt egy replikn bell)! Az egy partciba tartoz elemek mindig egy fizikai gpen lesznek. Ennek ksznheten a partcin bell vgzett mveletek atomiak (vagy teljesen lefutnak, vagy egyltaln nem). Az ugyanahhoz a felhasznlhoz tartoz partcik azonban nem biztos, hogy egy fizikai gpen vannak. Kt partci lakhat egytt, de az Azure szt is rakhatja ket klnbz fizikai gpekre. Ennek ksznheten az Azure Storage akkora adatmennyisgeket is kpes kezelni, amiket egy fizikai gp nem tudna: egyszeren tbb partcira bontja az adatokat, s ezeket sztosztja tbb fizikai gp kztt. Ennek htrnya persze, hogy partcik kztt nem atomiak a tranzakcik. Fjlok s vrakozsi sorok esetn ez ritkn okoz gondot, tblknl viszont okosan kell megvlasztani a partcionls mdjt. Errl lsd ksbb, a Table Storage-dzsal foglalkoz fejezetben. A 7-4 bra bemutatja a partcikat. Az brn a Storage Stamp 1-en bell vannak az adataid, hrom replikban. A Rack 1, 2 s 3 is tartalmaz 1-1 replikt. A replikkon bell pedig adataid hrom partcira vannak sztosztva, a partcikat klnbz sznek jellik. Lthatod, hogy minden replikn bell kln -kln fizikai gpek troljk az egyes partcikat. Ha tovbbi adatokat tltenl fel, akkor az j adatok mindhrom replikba bekerlnnek, s az adatmennyisgtl fggen jabb partcik jnnnek bennk ltre. Knnyen lthat, hogy az Azure Storage risi adatmennyisgeket is gyorsan kpes kiszolglni (a partcis mechanizmus segtsgvel prhuzamosthat, tbb gp trol- s szmtsi kapacitst vonhatja be), s ekzben az adattrols megbzhatsga folyamatosan magas maradhat (mert ekzben folyamatosan karbantartja a replikkat is).

7-4 bra: A klnbz partcik, sznkdolva, a replikkon bell

A fent lert architektra a kvetkez fontos tulajdonsgokat klcsnzi az Azure Storage-nak: Sklzhatsg (Scalability): Lthattad, hogy a partcis mechanizmus segtsgvel az Azure Storage prhuzamosthat, s megnvekedett terhels esetn tovbbi fizikai gpek kapacitst

104

7. IaaS Storage vonhatja be. Mindez radsul teljesen automatikusan trtnik, nem ignyel felhasznli beavatkozst. Tartssg (Durability): Minden Azure Storage-felhasznl adatai legalbb hrom, hardverhibk szempontjbl teljesen izollt racken troldnak, s igny szerint krhet georeplikci is , amikor egy fldrajzilag tvoli msodik helysznen jabb hrom, folyamatosan naprakszen tartott replika jn ltre. Magas rendelkezsre lls (Availability): Az Azure Storage kihasznlja az Azure nmenedzsel voltt (a Fabric Controllert), gy a hardver- s szoftverhibkat nmkden javtja, ennek megfelelen az igen magas fok adattrolsi biztonsg mellett a Microsoft a hozzfrhetsgre 99,9%-os SLA-t biztost. Vagyis nem csak az adatveszts ellen van hatkony biztostk, de arra is garancit vllal a Microsoft, hogy a szolgltats az id 99,9%-ban elrhet online, s kiszolglja a berkez krseket. Kedvez r: Az Azure Storage a teljes platformhoz hasonlan nagy ttelben vsrolt, nmenedzsel szerverkomponensekbl kszlt, gy a fajlagos kltsg igen j szolgltatsminsg mellett is alacsonyan tarthat.
Ha szeretnl rszletesebben is megismerkedni az Azure Storage rdekes architektrjval, a http://blogs.msdn.com/b/windowsazure/archive/2011/11/21/windows-azure-storage-a-highlyavailable-cloud-storage-service-with-strong-consistency.aspx cmen bvebben is olvashatsz rla.

Az Azure Storage felhasznlsa


A fenti szolgltatsok ignybevtelhez egy Azure-elfizetsre s azon bell egy n. Storage Accountra van szksged. Azure-elfizetseden bell tbb Storage Accountot is ltrehozhatsz. Minden Storage Account egyni nvvel s hitelestsi adatokkal rendelkezik, s minden Storage Accountban l mindhrom szolgltats (Blob, Table, Queue). Amikor valamelyik szolgltatst ignybe akarod venni, ak kor egy korbban ltrehozott Storage Account al kell elhelyezned fjljaidat, tblidat, vrakozsi soraidat. Ltogass el az Azure menedzsment portlra (http://manage.windowsazure.com), nyisd meg a Storage kategrit, majd nyomd meg a bal als sarokban a New gombot s kattints a Data Services Storage Quick Create gombokra (7-5 bra)!

7-5 bra: Storage Account ltrehozsa

105

7. IaaS Storage Az URL mezben add meg a Storage Account kvnt nevt (ez egy URL rsze lesz, teht n em tartalmazhat kezeteket, szkzket, stb), s vlaszd ki azt a rgit, ahov rakni szeretnd a Storage Accountot! Itt tallod az Enable Geo-Replication jellngyzetet is, ami alaprtelmezsben ki van piplva. Ha ezt bejellve hagyod, akkor a Storage Account djai valamivel (kb. 25%-kal) drgbbak lesznek, de cserbe az Azure a korbban lertaknak megfelelen hat replikban, kt klnbz fldrajzi helysznen trolja majd adataidat. Ha trld a pipt, adataid akkor sem lesznek veszlyben, mert az Azure akkor is hrom replikban tartja majd ket. Ez a bellts a Storage Account ltrehozsa utn is llthat. Az razsi rszletekrl lsd az razssal foglalkoz 16. fejezetet. A mezk kitltse utn kattints a Create Storage Account gombra! Az Azure kisvrtatva ltrehozza a fikot, amit utna rgtn hasznlatba is vehetsz (ennek eszkzeirl lsd a fejezet ksbbi rszt). A Storage Account-ok biztonsgi modellje ktszint. Ahhoz, hogy maghoz a Storage Account-hoz hozzfrj, a Storage Account nevt (a pldban azurekonyv) s titkos kulcst kell ismerned. A titkos kulcs a portlrl rhet el: miutn ltrejtt a Storage Account, jelld ki a listban s alul nyomd meg a Manage Keys gombot (7-6 bra).

7-6 bra: A Manage Keys gomb (bekeretezve) s a megjelen prbeszdpanel

Kt kulcs jelenik meg, mindkett 512 bit hossz. Funkcionalits szempontjbl teljesen egyenrangak, mindegy, hogy melyiket hasznlod. Azrt van bellk kett, hogy az egyiket pl. begyazhasd egy les webalkalmazsba, mg a msikat kiadhasd pl. tesztelknek. A kulcsok brmikor rvnytelenthetk s jragenerltathatk a mellettk lv Regenerate gombokkal. Mivel termszetesen a Storage -dzsal https fltt kommuniklunk, ezrt a kulcsok nincsenek veszlyben, egy egyszer lehallgatssal nem kerlhet meg ez a vdelmi mechanizmus. A Storage account neve s az egyik kulcs birtokban rendszergazdai hozzfrsed van egy Storage Accounthoz. rhatod-olvashatod a Blob, Table, Queue szolgltatsokat. Ez az els biztonsgi szint. Ha valakinek nem szeretnl teljes hozzfrst adni, akkor a hrom szolgltats tartalmaz finomabb biztonsgi belltsi lehetsgeket ezek kpezik a msodik szintet; rszletek ksbb. Minden Storage Accountba 100 terabjtnyi adatot helyezhetsz el (a hromfle szolgltatson bell sszesen). Ha ennl tbb helyre van szksged, akkor termszetesen ltrehozhatsz tbb Storage Accountot is. 106

7. IaaS Storage A Storage Account tnyleges felhasznlsra, a vele val kommunikcira egy REST API ltezik. (A REST annyit tesz, hogy HTTP krsekkel programozhat pl. egy j fjl feltltshez egy megfelelen formzott HTTP krst kell kldeni, aminek a trzsben ott van a feltlteni kvnt adat, fejlcben pedig a hitelestsi paramterek, a fjl neve s gy tovbb). A REST API risi elnye, hogy platformfggetlen (hiszen gyakorlatilag minden szmtgpes platformrl lehet HTTP krseket kldeni), viszont knyelmetlen vele dolgozni. Ebbl a kt okbl kifolylag a Microsoft s a kzssg szmos eszkzt ksztett, amikkel az Azure Storage megcmezhet: ltezik egy sor program, amikkel grafikus felleten lehet manipullni a Storage tartalmt, egyre tbb termk (pl. backup-megoldsok) beptve tmogatja a Storage-ot adattrolknt, lteznek osztlyknyvtrak szinte minden fontosabb programnyelvre (C# s .NET, Java, PHP stb.), illetve termszetesen az Azure platform maga is hasznlja az Azure Storage -ot. Ezeket az eszkzket a fejezet ksbbi rszben, illetve a msik Storage-dzsal foglalkoz fejezetben mutatjuk be. Elssorban fejlesztk szmra fontos, hogy az Azure Storage-hoz ltezik egy helyi gpen futtathat emultor is. Ez az Azure SDK rszeknt telepl, s segtsgvel a Storage-ot hasznl alkalmazsok helyben is tesztelhetk, nem kell krseikkel egy les Storage Accountot bombzni uk. Lnyeges az is, hogy az Azure Storage-felhasznls nagyon pontosan nyomon kvethet a Storage Analytics szolgltatsnak ksznheten. Ha bekapcsolod, akkor ez a szolgltats minden egyes Storage mveletetet naplz, amivel sokat tud segteni problmk diagnosztizlsban, vagy statisztikk generlsban. A Storage Analyticsrl rszletesen olvashatsz a PaaS Storage fejezetben. Az ltalnos, mindhrom Storage szolgltatsra egyarnt vonatkoz bevezet utn most lssuk a Blob Storage szolgltatst rszletesen!

A Blob Storage kpessgei


Felpts
Ahogy korbban mr volt rla sz, a Blob Storage lnyegben fjlok trolsra alkalmas szolgltats. Hasznlathoz elszr is egy Azure elfizetsre, s egy ezen bell ltrehozott (lsd korbban) Storage Accountra van szksged. Miutn megvan a Storage Account, konkrt blobok feltltshez gynevezett kontnereket (Container) kell ltrehoznod. A kontnerek specilis mappk. Minden blobnak ktelezen egy kontnerben kell lennie, kontnereket viszont nem lehet egymsba gyazni: a kontnerek teht egy egyszintes mapparendszert alkotnak. Ettl mg termszetesen van lehetsged arra, hogy mappkba rendezd a fjljaidat. A helyben megszokott fjlrendszerekkel ellenttben azonban Blob Storage esetn a mappa nem nll fogalom, nmagban nem ltezik. gy rendezhetsz fjlokat mappkba, hogy a fjlok nevbe perjeleket (/) helyezel el. Ha egy blobot pldul gyumolcsok/alma.jpg-nek nevezel el, akkor a gyumolcsok mappban lesz; ha viszont az sszes olyan blobot letrld, aminek a nevben a gyumolcsok/ kifejezs szerepelt, akkor a mappa is megsznik. Egy blobot teht a kvetkez paramterek azonostanak: a blobot tartalmaz Storage Account neve, ezen bell a kontner neve (ktelez), ezen bell pedig a blob neve (lehet egyszer, mint pl. alma.jpg, illetve tartalmazhat mappaneveket is, mint pl. gyumolcsok/alma.jpg). Ezen paramterek alapjn keletkezik a blob URL-je. Ennek smja:
https://<Storage Account neve>.blob.core.windows.net/<kontner neve>/<blob neve>

Ha a Storage Account neve azurekonyv, a kontner neve mycontainer, a blob neve pedig gyumolcsok/alma.jpg, akkor az URL:
https://azurekonyv.blob.core.windows.net/mycontainer/gyumolcsok/alma.jpg

107

7. IaaS Storage

Jogosultsgkezels
Korbban mr olvashattad, hogy a Storage Account nevnek s a hozz tartoz kulcsnak az ismeretben teljes kren hozzfrhetsz egy Storage Account tartalmhoz, ezen bell mindhrom szolgltatshoz. (Fogod majd tapasztalni, hogy gyakorlatilag minden Azure Storage-ot hasznl eszkznl ezt a kt paramtert kell megadnod konfigurciknt). Termszetesen ennl kifinomultabb jogosultsgkezelsre is szksg van. Erre (Blob Storage esetn) kt lehetsget biztost az Azure. Az els lehetsg a kontner hozzfrsi szintjnek belltsa. Minden blobnak egy kontnerben kell lennie, viszont kontnerbl tetszleges szmt ltrehozhatsz egy Storage Accounton bell. (Illetve termszetesen Storage Accountbl is lehet tbb egy Azure elfizetsben.) Minden kontner rendelkezik egy gynevezett hozzfrsi szinttel. Ez hrom rtket vehet fel. Kontnerenknt termszetesen kln-kln llthat. Private jogosultsgi szint esetn a kontnerben lv blobokhoz csak a Storage Account nevnek s kulcsnak ismeretben lehet hozzfrni, ezek nlkl sehogy sem. Hiba tallja ki valaki egy blob URL-jt, az URL-re vlaszul mindssze egy 404-es hibt kap vissza az Azure-tl. Ez a jogosultsgi szint az alaprtelmezett, s kivlan alkalmas a publikummal megosztani nem kvnt adatok, archvumok trolsra. Blob jogosultsgi szint esetn egy blob URL-jnek ismeretben a blob letlthet. Tkletes pl. egy kzssgi webalkalmazsnl: a felhasznlid ltal feltlttt kpeket eltrolhatod Blob Storage -ba, ahonnan kzvetlenl be is gyazhatod ket az oldal HTML kdjba, mert az URL alapjn a bngsz le tudja majd tlteni ket. Kilistzsra viszont nincs lehetsg: ha valaki nem tudja egy blob URL -jt, akkor maximum tippelgethet, mappalistzst nem enged az Azure. Emellett ez a jogosultsgi szint szigoran csak olvassi hozzfrst engedlyez, a Blob Storage-ba rni tovbbra is csak a nv s kulcs ismeretben lehet. A Container jogosultsgi szint ugyanazt tudja, mint a Blob jogosultsgi szint, de a kontner tartalmnak listzsra is van lehetsg (a megfelel REST API parancsok meghvsval) . A msik lehetsg az gynevezett Shared Access Signature. A megfelel API hvsokkal egy specilis, digitlis alrst tartalmaz URL-t generltathatsz, amit aztn elkldhetsz felhasznlidnak. Az URL-ben megadhat, hogy melyik blobhoz (vagy kontnerhez), mennyi idre, s milyen jogosultsgokat (pl. olvass, rs, trls, stb.) adsz. Az URL-t megkap felhasznl a meghatrozott ideig hozzfrhet az adott erforrsokhoz s elvgezheti rajtuk az engedlyezett mveleteket. Ezzel gyakorlatilag ideiglenes jogo kat oszthatsz ki bizonyos elemekre, azaz igen kifinomult jogosultsgkezelst vgezhetsz.
Containerek csak a Blob Storage-ban vannak, gy rtelemszeren a Container-szint jogosultsgkioszts is csak Blob Storage esetn lehetsges. A Shared Access Signature mechanizmus viszont a Table s Queue szolgltatsok esetn is hasznlhat.

A fentiek mellett termszetesen teljesen egyedi jogosultsgkezelst is megvalsthatsz ehhez viszont kicsit programoznod kell. A megvalstshoz lltsd privtra az adott kontnert, s kszts egy olyan webalkalmazst, ami implementlja az ltalad kvnt jogosultsgkezelst, s csak a megfelelen hitelestett felhasznlk szmra olvassa fel a kvnt fjlokat a Blob Storage-bl.

Block s Page Blobok


Az Azure Storage ktfle blobtpust tmogat. Mindkett fjlok trolsra val, azonban technikai jellemzik kicsit eltrk, ms-ms clra alkalmasak. A Block Blobok a hagyomnyos felhasznlsi mintkat clozzk. Egy Block Blob feltltse trtnhet egy mveletben (ha a feltlteni kvnt fjl 64 megabjtnl kisebb), de nagy fjlok esetn a fjl feldarabolhat 4 megabjtos (vagy kisebb) blokkokra, amik kln-kln is feltlthetk. Miutn egy fjl sszes blokkjt feltlttted, egy mvelettel sszeforraszthatod a fjlt. Ezzel a

108

7. IaaS Storage mechanizmussal igen nagy fjlokat is hatkonyan, prhuzamostva fel tudsz tlteni az Azure -ba. Egy Block Blob blokkjai maximum 4 megabjtosak lehetnek s egy Block Blobban maximum 50 ezer blokk lehet, gy aztn egy Block Blob maximlis mrete 200 GB. A Block Blobok folyamatos olvassra (streamelsre) optimalizltan vannak trolva, azaz akkor a leggyorsabbak, ha a felhasznl az elejktl a vgkig folyamatosan tlti le ket (pl. fjlletlts, videstreaming). A Page Blobok lnyege, hogy vletlenszeren (random access) lehet ket rni-olvasni. 512 bjtos lapokbl llnak, brmelyik lap (vagy lap-intervallum) megclozhat rsra vagy olvassra. A Page Blobok maximlis mrete 1 TB. A vletlenszer rsi-olvassi kpessgnek ksznheten a Page Blobok szolglnak az Azure virtulis gpek httrtrul (egy virtulis gp merevlemezei egsz pontosan VHD formtum Page Blobok), illetve felhasznlhatk sajt alkalmazsokban pl. adatbzisok trolsra.

Tovbbi szolgltatsok
A fent ismertetetteken fell a Blob Storage nhny tovbbi szolgltatssal segti a gyakori felhasznlsi mintkat. Az Azure Content Delivery Network (CDN) egy tartalomterjeszt hlzat. Vilgszerte 24 adatkzpontbl ll (ezek szma folyamatosan bvl), a haznkhoz legkzelebbi adatkzpont Bcsben van. Ha pl. a West Europe adatkzpontban helyezed el Storage Accountodat, akkor egy zsiai gyfl szmra blobjaid letltse az alacsony nemzetkzi svszlessg miatt vrhatan lass lesz. A CDN feladata ennek a problmnak a megoldsa. A CDN-t nagyon egyszeren bekapcsolhatod egy Storage Account-ra. A bekapcsolskor kszlni fog egy specilis URL. Egy hagyomnyos Blob Storage URL:
https://azurekonyv.blob.core.windows.net/mycontainer/gyumolcsok/alma.jpg

Ugyanennek a fjlnak a CDN-es specilis URL-je (plda):


http://az232047.vo.msecnd.net/mycontainer/gyumolcsok/alma.jpg

Ezt a specilis URL-t kell kzztenned. A specilis URL megnyitsakor az Azure automatikusan ellenrzi, hogy a felhasznlhoz melyik CDN vgpont van a legkzelebb, s ehhez a vgponthoz irnytja a krst. gy a felhasznl helyi svszlessggel tltheti le az adott fjlt. (Egsz pontosan az adott rgi els felhasznlja mg az eredeti adatkzpontbl kapja meg a fjlt, de utna az Azure gyorsttrazza azt, s minden tovbbi felhasznl mr a CDN adatkzpontbl lesz kiszolglva.) A CDN hasznlata a kezdeti konfigurcin kvl semmi egyb belltst nem ignyel. A bellts mg nincs kivezetve az j portlra, a rgi portlon (http://windows.azure.com) kell elvgezni. A Hosted Services fln vlaszd a CDN opcit, s kattints a New Endpoint gombra (7-7 bra).

109

7. IaaS Storage

7-7 bra: CDN konfigurlsa a rgi portlon

A blobokra a megfelel mvelettel zrolst (lease) lehet tenni. Egy zrolt blobot csak az rhat, aki zrolta, mindenki msnak meg kell vrnia a zr felolddst. Ezt is hasznljk egybknt az Azure virtulis gpek: amg a gpek futnak, addig a merevlemezeiket trol blobok zroltak, gy nem fordulhat el, hogy ms mdostja vagy trli azokat. A blobokhoz hozzrendelhetk metainformcik, gyakorlatilag nv-rtk prok, pl. egy knyvhz eltrolhat a szerzje, nem kell ebbl a clbl kln tblt ltrehozni. Ezeken fell van pillanatkp-ksztsre (snapshotting) is lehetsg. Ha egy blobrl ksztesz egy pillanatkpet, akkor a ksbbi mdostsok rendben vgrehajtdnak ugyan a blobon, de brmikor visszatrhetsz a pillanatkp ksztsekor fennllt llapothoz is.

A Blob Storage felhasznlsi mdjai


Clszoftverek
A Blob Storage (s az Azure Storage) felhasznlsnak taln legkzvetlenebb s legegyszerbb mdja az erre kszlt clszoftverek hasznlata. Tbb gyrt is kszt olyan ingyenes vagy fizets szoftvert, amivel kzvetlenl csatlakozhatsz a Storage-hoz (ltalban egy Storage Account nv s kulcs megadsval), aztn kzzel tlthetsz fel-le fjlokat, llthatsz jogosultsgokat s gy tovbb. Az egyik legnpszerbb ilyen szoftver a Cerebrata Cloud Storage Studio (7 -8 bra, http://www.cerebrata.com/products/cloudstoragestudio/). Ez fizets; ingyenes alternatva pldul az Azure Storage Explorer (http://azurestorageexplorer.codeplex.com/), vagy a CloudBerry Explorer for Azure Blob Storage (http://www.cloudberrylab.com/free-microsoft-azure-explorer.aspx).

110

7. IaaS Storage

7-8 bra: A Cerebrata Cloud Storage Explorer

rdekesek mg a Gladinet-termkek (http://www.gladinet.com) is. Ezekkel az Azure Storage hlzati megosztsknt csatlakoztathat a gphez, vagyis a Storage tartalma Windows Intzbl bngszhet.

Azure virtulis gpek


A korbban ltott Azure virtulis gpek merevlemezei valjban Page Blobknt trolt VHD formtum fjlok. Ez azrt lnyeges, mert ezeket a VHD-kat megtallhatod a virtulis gp ltrehozsakor megadott Storage Accounton, s pldul a fent ismertetett eszkzkkel letltheted magadhoz (illetve termszetesen helyi VHD-kat pedig feltlthetsz).

Httrtr
Az Azure Storage felhasznlhat Microsoft szervertermkek biztonsgi msolatainak trolsra. Ez a Windows Azure Online Backup szolgltatson keresztl trtnik. A szolgltats rszletes bemutatst a kvetkez fejezetben olvashatod!

StorSimple
rdekes j eszkzket gyrt a StorSimple. Az eszkzk nagy kapacits merevlemezekkel vagy SSD -kkel szerelt gpek, amikre fjlokat msolhatsz a vllalati hlzaton keresztl. A g pek gyakorlatilag ideiglenes trknt mkdnek: a rjuk mentett adatokat felkldik a felhbe. A rendszer lnyege, hogy a backup nagyon gyorsan lefuthat (hiszen gyakorlatilag a helyi hlzaton keresztl kell merevlemezre rni), az ennl vrhatan jval lassabb felhbe val feltltst az eszkz mr a backup utn, aszinkron vgzi el. gy a backupok gyorsan befejezdhetnek, de az adatok vgeredmnyknt mgis a felh sokszoros redundancit biztost trhelyn ktnek ki.

Fejleszteszkzk
Ahogy korbban volt rla sz, az Azure Storage-dzsal egy REST API-n keresztl lehet kommuniklni. Efl rengeteg klnbz programnyelvhez (C#, Java, PHP, Ruby, Erlang, stb.) kszlt n. wrapper, amelyekkel szinte brmilyen program fel tudja hasznlni az Azure Storage -ot httrtrknt. A .NET-es osztlyknyvtr PowerShellbl is hvhat, gyhogy akr PowerShell szkriptek is kpesek felhasznlni az Azure Storage szolgltatst.

111

7. IaaS Storage

sszegzs
A fejezetben megismerkedhettl az Azure Storage architektrjval s felhasznlsi modelljvel. Ezutn kitrtnk a hrom fontos szolgltats (Blob, Table, Queue) kzl az elsre, a Blob Storage -ra, megnztk a felptst s a klnfle eszkzket, amelyekkel hozzfrhetsz, illetve amik a Blob Storage -ra tmaszkodnak. Az elssorban fejlesztknek szl Table s Queue szolgltatsokrl, a Storage Analyticsrl s a programnyelvekhez kszlt osztlyknyvtrakrl a PaaS Storage fejezetben olvashatsz!

112

8. IaaS zemeltets

8. IaaS zemeltets
Ebben a fejezetben az albbi tmkat ismerheted meg: A Windows Azure-ban fut virtulis gpek kezelse PowerShell segtsgvel Virtulis gpek kezelse System Center App Controller 2012 hasznlatval Adatok mentse a felhbe A Windows Azure infrastruktra menedzsmentje csak akkor teljesedhet ki igazn, ha va lamilyen script megoldshoz folyamodunk. A fejezet els rszben bemutatjuk, hogyan hozhatsz ltre a PowerShell segtsgvel virtulis gpeket, illetve mdosthatod azok belltsait. Megismerheted a diszkek kezelst, a virtulis gpek tmeges ltrehozst s konfigurcijuk exportlst, importlst. Ezt kveten tfog kpet kapsz a System Center alap menedzsmentrl, megismerheted az AppController 2012-ben rejl lehetsgeket s azt, hogyan kezelheted egy felleten a publikus s a privt felht. A fejezet vgn egy mentsi megoldssal a Windows Azure Online Backup szolgltats lnyegt tekintheted t, a Data Protection Manager s az online backup kzs lehetsgeivel egytt.

Windows Azure virtulis gpek kezelse PowerShell segtsgvel


A Windows Azure Iaas szolgltatsok kb. 75%-a rhet el a menedzsment portl segtsgvel, a tbbi funkci csak valamilyen szkriptnyelv vagy parancssor segtsgvel konfigurlhat. Windows rendszerek esetben termszetesen PowerShell parancsok (cmdlet) tmkelege segti a munknkat. Ebben a fejezetrszben rviden ttekintjk a PowerShell menedzsment hasznlatnak alapjait s a leggyakoribb mveletek pldakdjait.

Elnyk
Mirt j neked, ha Azure PowerShell-t hasznlsz? Virtulis gpek kezelsnek automatizlsa: ltrehozs, trls, export-import. Virtulis gpeket, felhszolgltatsokat, hlzatokat s storage accountokat kezelhetsz, egy gprl akr tbb elfizetst is karbantarthatsz. Kiterjesztett konfigurcival rendelkez gpek ksztse s tmeges teleptse. Meghatrozhatak az endpointok, a diszkek tpusa s darabszma, az rsi gyorsttr tulajdonsga is. Nemcsak a gp mrett s alaptulajdonsgait hatrozhatod meg, hanem pldul domain -be is lptetheted stb. Virtulis hlzatok teljes kr kezelse s konfigurlsa, mdostsa.

Elkszletek
Tbb ton is elindulhatsz, ha a PowerShell alap menedzsment rdekel. Ha mr teleptetted a gpedre a Windows Azure SDK csomagot, akkor nem kell mst tenned, mint elindtani a PS konzolt s beimportlni a megfelel modult. Ezt az albbi mdon teheted meg: 64-bites opercis rendszeren:
Import-Module "C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure\Azure.psd1"

113

8. IaaS zemeltets 32-bites opercis rendszeren:


Import-Module "C:\Program Files\Microsoft SDKs\Windows Azure\PowerShell\Azure\Azure.psd1"

Ezt kveten mr hasznlhatod az Azure specifikus parancsokat is. Ha nincs a gpeden SDK, s nem is szeretnd telepteni, megteheted, hogy csak a Windows Azure PowerShell csomagot rakod fel a Web Platform Installer segtsgvel (http://go.microsoft.com/?linkid=9811175&clcid=0x409 ), ahogyan azt a 8-1 bra mutatja. A sikeres teleptst kveten egy kln ikon segtsgvel elrheted az Azure PS konzolt.

8-1 bra: Azure PowerShell teleptse a Web Platform Installer segtsgvel

Mieltt megismerkedsz az egyes parancsokkal, fontos ellenrizni, hogy az ltalad hasznlt szmtgpen engedlyezve van-e a PowerShellben a tvoli kdfuttats lehetsge. Rendszergazdaknt indts egy PS konzol ablakot, s rd be a kvetkez parancsot!
Set-ExecutionPolicy RemoteSigned

Ezt elg egyszer lefuttatni a gpeden (nem kell minden alkalommal), most mr minden ksz az Azure PS szkriptek hasznlatra!

Feliratkozs
Egy rendszergazdai szmtgprl tbb elfizetst is kezelhetsz, ehhez nem kell mst tenned, mint az adott gpre letlteni az Azure fik publishsettings fjljt s beimportlni azt! Ez a fjl tartalmazza az elfizets adatait, a szolgltatskezels hlzati vgpontjait s a kezelshez szksges tanstvnyt is. A konfigurcis fjlt lekrheted az albbi paranccsal:
Get-AzurePublishSettingsFile

Azt kzvetlenl is letltheted a https://windows.azure.com/download/publishprofile.aspx oldalrl. A letlttt fjlt importld be a szmtgpedre (az elrsi utat rtelemszeren trva):
Import-AzurePublishSettingsFile 'C:\temp\3-Month Free Trial-11-24-2012-credentials.publishsettings'

Ellenrizd le, hogy sikeres volt-e az import (8-2 bra)!

114

8. IaaS zemeltets

Get-AzureSubscription

8-2 bra: Sikeres feliratkozs

Figyelj arra, hogy az egyes elfizetsek belltsai tovbbra is megmaradnak a szmtgpen, az albbi tvonalon: C:\Users\user\AppData\Roaming\Windows Azure Powershell! Az egyes elfizetsek kztt a Set-AzureSubscription paranccsal vlthatsz:
Set-AzureSubscription -SubscriptionName $mySubName -Certificate $myCert -SubscriptionID $mySubID

Ne feledd el trni a mintul megadott PowerShell parancsokban szerepl paramterek rtkeit!

rdemes megfigyelni, hogy amikor kivlasztasz egy elfizetst, akkor azzal mg nem vlasztasz automatikusan storage accountot! Mivel egy Azure elfizetshez tbb storage account is tartozhat, ki kell jellnd, hogy melyikben szeretnl dolgozni. A Get-AzureSubscription parancs kimenetnek utols eltti sorban a CurrentStorageAccount rtke jelli, hogy ppen hol tartzkodsz az elfizetsen bell, amint azt a 8-2 bra is mutatja. A storage accountok nevt az albbiak szerint krheted le:
Get-AzureStorageAccount | Select StorageAccountName

Az elfizetsek vltsakor egyttal a storage accountot is bellthatod az albbi plda alapjn:


Set-AzureSubscription 'azurebookhun' -CurrentStorageAccount 'mystorage'

Virtulis gpek ltrehozsa PowerShell segtsgvel


Mieltt gpeket hozol ltre, elszr az alapvet informcikat kell lekrdezned. Az egyik ilyen fontos adat az elrhet lemezkpek listja. Ezt a Get-AzureVMImage paranccsal rheted el:
Get-AzureVMImage | select ImageName

A parancs kimenete ehhez hasonl lesz:


ImageName

115

8. IaaS zemeltets

--------CANONICAL__Canonical-Ubuntu-12-04-amd64-server-20120528.1.3-en-us-30GB.vhd CANONICAL__Canonical-Ubuntu-12.04-amd64-server-20120924-en-us-30GB.vhd MSFT__BizTalk-Server-2010R2-CTP-3.10.77.0-07162012-en-us-50GB.vhd MSFT__Win2K8R2SP1-Datacenter-201210.01-en.us-30GB.vhd MSFT__Sql-Server-11EVAL-11.0.2215.0-08022012-en-us-30GB.vhd MSFT__Windows-Server-2012-Datacenter-201210.01-en.us-30GB.vhd OpenLogic__OpenLogic-CentOS-62-20120531-en-us-30GB.vhd SUSE__openSUSE-12-1-20120603-en-us-30GB.vhd SUSE__SUSE-Linux-Enterprise-Server-11SP2-20120601-en-us-30GB.vhd MyIISImage

Az utols sor kivtelvel az sszes tbbi a rendszer ltal felknlt lemezkp, az utolst mr sajt magam ksztettem! Ha nem lemezkpbl szeretnl dolgozni, hanem feltlttt sajt VHD fjlokkal, akkor le kell krned a lemezek listjt is a Get-AzureDisk parancs segtsgvel:
Get-AzureDisk | select DiskName

Ennek kimenete ehhez hasonl lesz:


DiskName -------azurebook2-azurebook3-0-20121104102530 IISTemplate-IISTemplate-0-20121122214330 toazure-toazure-0-20121123135937 Toazure.vhd

A virtulis gpek ltrehozsa eltt azt is el kell dnteni, hogy melyik adatkzpontban akarod ket ltrehozni. Ebben segt az albbi parancs:
Get-AzureLocation

Az adatkzpontok jelenlegi listjt (a parancs kimenett) itt lthatod:


DisplayName ----------West US East US East Asia Southeast Asia North Europe West Europe

Virtulis gpet az albbi mdokon terthetsz az Azure-ban: Gyors (Quick) md: a New-AzureQuickVM paranccsal hozod ltre a virtulis gpet. Szakrt (Advanced) md: a virtulis gp ksztse sorn egyb adatokat is meghatrozol, pldul a hlzati vgpontokat, az adatlemezeket, a gyorsttr belltsait stb. Ktegelt (Batch) md: tmeges teleptsnl hasznlhatod. Brmely mdszert is vlasztod, mindenkppen rdemes megfontolni, hogy ahol lehet, ott vltozkkal dolgozz! Vltozt brmikor definilhatsz a $vltoznv = rtk paranccsal, pldul:

116

8. IaaS zemeltets

$svcwin = winservers $svclin =linuxservers $vm1 = srv1 $wimg = MSFT__Windows-Server-2012-Datacenter-201210.01-en.us-30GB.vhd $wimlin = CANONICAL__Canonical-Ubuntu-12.04-amd64-server-20120924-en-us-30GB.vhd $location = West Europe $pwd = Pa$$word1 $vm2 = srv2

Egyszer virtulis gp ksztse


Az alapok megismerse utn itt az id, hogy ltre is hozd els virtulis gpedet PowerShell parancsok segtsgvel. j Windows Server virtulis gpet a hozz tartoz felhszolgltatssal egytt az albbi mdon hozhatsz ltre a New-AzureQuickVM paranccsal:
New-AzureQuickVM -Windows -ServiceName $svcwin -Name $vm1 -ImageName $wimg -Location $location Password $pwd

Figyeld meg, hogy ebben a parancsban nem hatroztuk meg a gp mrett, gy az alaprtelmezett Small VM mrettel fog ltrejnni! Azt is szreveheted a fenti szkriptben, hogy a gp tulajdonsgait a korbban definilt PowerShell vltozk segtsgvel adod meg! j Windows virtulis gpet a mr meglv mell, ugyanahhoz a felhszolgltatshoz az albbi mdon hozhatsz ltre:
New-AzureQuickVM -Windows -ServiceName $svcwin -Name $vm2 -ImageName $wimg -Password $pwd

Ha Linux virtulis gpet szeretnl kszteni s azt egy meglv felhszolgltatsban elhelyezni, hasznld a kvetkez parancsot:
New-AzureQuickVM -Linux -ServiceName $svcwin -Name $vm3 -ImageName $limg -LinuxUser $lu -Password $pwd

Figyelj arra, hogy a Linux gpeknl nincs adminisztrtor, gy a gp ltrehozsakor az adminisztrtori jogosultsggal rendelkez felhasznlt is meg kell hatrozni! Ez a nhny plda is jl szemllteti, hogy milyen egyszeren s gyorsan lehet kszteni virtulis gpeket a New-AzureQuickVM paranccsal. Ha szeretnl jobban megismerkedni ezzel a paranccsal , rdemes lekrned a sgjt is, pldakdokkal egytt:
get-help New-AzureQuickVM -examples

VM konfigurci ksztse s tertse a New-AzureVMConfig paranccsal


Bonyolultabb konfigurci kialaktsa csak tbb parancs sszefzsvel lehetsges. Az j konfigurci a New-AzureVMConfig, meglv mdostsa az Add-* parancsok, mg a hozzads a New-AzureVM segtsgvel trtnik. Nzznk egy pldt!
New-AzureVMConfig -Name $vm1 -InstanceSize Medium -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd | Add-AzureDataDisk -CreateNew -DiskLabel 'data' -DiskSizeInGB 10 -LUN 0 | Add-AzureEndpoint -Name 'web' -PublicPort 80 -LocalPort 80 -Protocol tcp | New-AzureVM -ServiceName $newSvc -Location $location

Ebben a pldban ltrehoztunk egy j kzepes mret Windows virtulis gpet, melyhez csatoltunk egy darab 10GB mret adatlemezt, s kinyitottuk a 80-as portot. 117

8. IaaS zemeltets Windows gpek esetben az albbi paramtereket hasznlhatjuk:


Add-AzureProvisioningConfig Options -Windows -Password $pwd -WindowsDomain -Password $pwd -Domain $dom, -JoinDomain $fqdn, -DomainUser $domUser -DomainPassword $domPwd -MachineObjectOU $ou -DisableAutomaticUpdates -NoRDPEndpoint, -TimeZone, Certificates

Linux gpek esetben a kvetkez paramterek rhetk el:


Add-AzureProvisioningConfig Options -LinuxUser $user -Password $pwd -DisableSSH , -NoSSHEndpoint -SSHKeyPairs, -SSHPublicKeys

VM ksztse batch segtsgvel


Ha tbb virtulis gpet is ltre szeretnl hozni ktegelt mdon, az elz parancsbl kiindulva nincs ms dolgod, mint az egyes gpek konfigurcijt egy-egy vltozban elhelyezni, majd gpeket ltrehoz parancsokat egy temben kiadni:
$vm1 = New-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | AddAzureProvisioningConfig -Windows -Password $pwd $vm2 = New-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | AddAzureProvisioningConfig -Windows -Password $pwd $vm3 = New-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | AddAzureProvisioningConfig -Windows -Password $pwd New-AzureVM -CreateService -ServiceName $cloudSvcName -VMs $vm1,$vm2,$vm3 -Location $dc

Ezt gy is megoldhatod, hogy egy tmbt ksztesz, s meghatrozod a virtulis gpek darabszmt:
$vmcount = 5 $vms = @() for($i = 0; $i -lt 5; $i++) { $vmn = 'myvm' + $i $vms += New-AzureVMConfig -Name $vmn -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd | Add-AzureDataDisk -CreateNew -DiskLabel 'data' -DiskSizeInGB 10 -LUN 0 | Add-AzureDataDisk -CreateNew -DiskLabel 'logs' -DiskSizeInGB 10 -LUN 1 } New-AzureVM -ServiceName $cloudSvcName -VMs $vms -Location $dc

A fenti pldakdokbl jl ltszik, hogy PowerShell segtsgvel akr bonyolultabb konfigurcival rendelkez gpeket is nagyon gyorsan, tmegesen terthetnk.

Windows szerver tertse ActiveDirectory belltsok meghatrozsval


Definilj nhny j vltozt, pldul rd le azokban a tartomny belltsait:
$dom = 'contoso' $jdom = 'contoso.com' $onPremDNS = New-AzureDns -IPAddress '192.168.1.4' -Name 'OnPremDNS' $cloudDNS = New-AzureDns -IPAddress '10.1.1.4' -Name 'CloudDNS'

118

8. IaaS zemeltets

$computerOU = $advmou = 'OU=AzureVMs,DC=contoso,DC=com

Ezek utn egyszeren elksztheted a virtulis gpeket, s egyttal be is lptetheted azokat a tartomnyba:
New-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName img | Add-AzureProvisioningConfig -WindowsDomain -Password $pwd -Domain $dom ` -DomainUserName $domUser -DomainPassword $dpwd -JoinDomain $jdom ` -MachineObjectOU 'AzureVMs' | Set-AzureSubnet -SubnetNames 'AppSubnet' | New-AzureVM ServiceName $svc -AffinityGroup 'adag' ` -VNetName 'ADVNet' -DnsSettings $onPremDNS, $cloudDNS

Storage s lemezek kezelse


Virtulis gpek esetben a kt leggyakoribb lemezekhez kapcsold mvelet a lemezek hozzadsa s eltvoltsa, illetve a gyorsttr belltsok mdostsa. Nzznk meg pr pldt ezekre a mveletekre! j szervert gy kszthetsz egyetlen adatlemez felcsatolsval:
New-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd | Add-AzureDataDisk -CreateNew -DiskSizeInGB 10 -DiskLabel 'myddisk' -LUN 0 | New-AzureVM -ServiceName $cloudSvcName

Tovbbi adatlemezt az albbi mdon csatolhatsz hozz a mr meglv virtulis gphez:


Get-AzureVM -ServiceName 'myvm1' | Add-AzureDataDisk -CreateNew -DiskSizeInGB 10 Update-AzureVM

-DiskLabel 'myddisk' -LUN 1 |

A gyorsttr kezelsnek a mdjt az albbi plda szerint hatrozhatod meg s mdosthatod a telepts sorn:
New-AzureVMConfig -Name 'myvm1' -InstanceSize 'Small' -ImageName $img | Add-AzureProvisioningConfig -Windows -Password $pwd | Set-AzureOSDisk -HostCaching 'ReadOnly' | New-AzureVM -ServiceDescription $cloudSvcName

Egy meglv virtulis gp esetben a gyorsttr belltsait az albbiak szerint mdosthatod a futs kzben:
Get-AzureVM -ServiceName $cloudSvcName -Name 'myvm1' | Set-AzureDataDisk -HostCaching 'ReadWrite' -LUN 0 | Update-AzureVM

Ne feledd! OS diszk esetben csak jraindtssal vagy a terts sorn mdosthat a gyorsttr, adatlemezek esetben online mdon, jraindts nlkl is elvgezheted a mdostsokat.

Virtulis gpek belltsainak importlsa-exportlsa


Az Azure razsa radjban trtnik, ezrt nagyon fontos figyelni arra, hogy ha nincs szksgnk egy virtulis gpre, akkor a gpet nem lelltani kell, hanem le kell trlni! A lelltott virtulis gp szmtsi

119

8. IaaS zemeltets kapacitsa tovbbra is szmlzsra kerl, hiszen a virtulis gp lelltott llapotban is foglalja az adatkzpont erforrsait. Az adatkzpontnak biztostania kell, hogy az adott gp brmikor elindthat legyen. A virtulis gpek trlsvel trld a virtulis gphez tartoz egyb belltsokat is, pldul a hlzati vgpontokat, DNS nevet stb. Nagyon fontos, hogy ezek megrzshez exportld a konfigurcit! Egy virtulis gp belltsait az albbi parancssorral exportlhatod egy XML fjlba: Export-AzureVM -ServiceName '<cloud service>' -Name '<vm name>' Path 'c:\vms\myvm.xml' Ezt kveten mr trlheted a virtulis gpet: Remove-AzureVM -ServiceName '<cloud service>' -Name '<vm name>'

rtelemszeren a Remove-AzureVM parancs nem trli a VHD fjlt, a meglv fjlbl a virtulis gp jra visszallthat! A korbban exportlt virtulis gp importlsa a kvetkez paranccsal trtnhet: Import-AzureVM -Path 'c:\vms\myvm.xml' | New-AzureVM -ServiceName '<cloud service>' -Location 'West Europe' Ha egy Cloud Service mgtt tbb gp helyezkedik el, akr tmegesen is exportlhatod azokat:
Get-AzureVM -ServiceName '<cloud service>' | foreach { $path = 'c:\vms\' + $_.Name + '.xml' Export-AzureVM -ServiceName '<cloud service>' -Name $_.Name -Path $path } Remove-AzureDeployment -ServiceName '<cloud service>' -Force

A Remove-AzureDeployment parancs eltvolt minden virtulis gpet az adott cloud service mgl, de a DNS nv, vagyis maga a szolgltats megmarad, gy azt ms nem foglalhatja le! Ez fontos lehet, ha ragaszkodunk hozz, hogy a szolgltatsunk a felhben mindig azonos nven legyen hozzfrhet. Importld vissza a gpeket a meglv DNS nv mg:
$vms = @() Get-ChildItem 'c:\vms\' | foreach { $path = 'c:\vms\' + $_ $vms += Import-AzureVM -Path $path } New-AzureVM -ServiceName '<cloud service>' -VMs $vms

A bemutatott mintk a napi menedzsment feladatok vgrehajtsban sokat segthetnek, de termszetesen itt nem tudjuk az sszes belltst rinteni. Itt arra trekedtnk, hogy a naponta elfordul feladatok megvalstst tudjuk gyorstani a fenti pldk magyarzatval, bemutatsval.

Windows Azure virtulis gpek kezelse System Center App Controller segtsgvel
A System Center termkcsald 2012-es verzija, abbl is az SP1-gyel rendelkez kiads mr tmogatja, hogy a felhben s a sajt adatkzpontunkban lv virtulis gpeket egyarnt egysges grafikus felleten kezeljk. Ebben a fejezetben nem trnk ki a System Center teleptsre s belltsra, csak rviden bemutatjuk az App Controller 2012 SP1-ben rejl lehetsgeket.

120

8. IaaS zemeltets A szoftver nagy elnye, hogy egyetlen kzs felleten lthatjuk, kezelhetjk a privt s a publikus felhnket is, amint azt a 8-3 bra is mutatja.

8-3 bra: Egy fellet, kt felh

Meglv Azure fikot az albbi mdon vonhatsz be a felgyeletbe: Kattints a Connect a Windows Azure Subscription linkre! A megjelen dialgusban meg kell adnod az elfizets nevt, lerst, az n. Subscription ID-t, a szolgltatsok kezelshez tartoz tanstvnyt ler fjl s a fjlhoz tartoz jelszt (8-4 bra). A Subscription ID az elfizetsed GUID azonostja, ezt az Azure management portlrl olvashatod le, megfelel tanstvnyt pedig kszthetsz az IIS segtsgvel is.

8-4 bra: Azure elfizets belltsa az AppController 2012-ben

Termszetesen tbb Azure elfizetst is felvehetsz a konzolba! Az egyes gpek kezelst segti, hogy a program kpes hlzati diagram segtsgvel kirajzolni egy adott Cloud Service mgtt tallhat virtulis gpeket s az azok kztti kapcsolatot, ahogyan azt a 8-5 bra is mutatja.

121

8. IaaS zemeltets

8-5 bra: A Cloud Service s a gpek kapcsolata

Tovbbi pozitvum, hogy a gpek ksztse s mdostsa sorn olyan mveleteket (pl. tartomnyba lptets) is elvgezhetsz, amelyeket az Azure portlon nem, csak PowerShell segtsgvel konfigurlhatsz. Virtulis hlzatokat viszont nem tudsz kezelni a System Center App controller segtsgvel! Meglv hlzathoz vagy alhlzathoz ugyan hozz tudsz rendelni gpeket, de j hlzatot vagy VPN kapcsolatot ltrehozni nem lehet. Az AppControllerrel elssorban Cloud Service-eket, virtulis gpeket, lemezkpeket s lemezeket lehet kezelni. Tmogatja az egyes felhasznli szerepkrk sztvlasztst (User Roles), valamint megtekinthetek az egyes felhasznlk ltal vgzett mveletek is (Jobs).

Windows Azure Online Backup: ments a felhbe


A Windows Azure Online Backup s a Windows Azure Active Directory szolgltatsok jelen pillanatban mg csak prbavltozatban rhetk el, s a kt szolgltatsra egyszerre lehet regisztrlni. A felhbe ments koncepcija mr rgta mkd megolds, de a Microsoft kzvetlenl nem tmogatta azt. Vsrolhattunk ugyan trhely szolgltatst az Azure-on, de az adatok kijuttatsa mr a mi feladatunk volt. A Windows Server 2012 rkezsvel ez is megvltozik. Az Azure Online Backup a szervereken trolt adatok mentst tmogatja, a hozz elrhet gynk alkalmazs telept eszkze Windows Server 2012-t kvetel meg. Ezt nem elsdleges mentsi megoldsknt, hanem biztonsgi tartalk kpzseknt clszer kezelni. Vagyis: nem kell lebontatnunk vagy felszmolnunk az eddigi mentsi megoldsokat s stratgikat, hanem kedvnk szerint kibvthetjk azokat egy j biztonsgi elemmel, a felhbe mentssel. Termszetesen kisvllalatok esetn hasznlhatjuk kizrlagosan ezt a megoldst is, de tudnunk kell rla, hogy ez a szolgltats nem tmogatja a lemezkp alap mentst, vagyis a teljes szervernk nem llthat vissza a felhbl! Szintn emltst rdemel, hogy a System Center Data Protection Manager 2012 SP1 -es verzija is egytt tud mkdni ezzel a szolgltatssal. Tekintsk t rviden, hogyan lehet hasznlatba venni ezt a szolgltatst! Regisztrcira hasznld az albbi linket: https://www.windowsazure.com/en-us/home/features/onlinebackup/! Bejelentkezs utn a foldalon kattints a Your Organizations Services alatt a Manage menpontra ! Kt telept eszkzt is elrhetsz : Windows Server 2012

122

8. IaaS zemeltets Windows Server 2012 Essentials A szolgltats magban foglal 300GB online trterletet, ez elegend teret biztost a tesztelshez. Az gynk teleptse utn regisztrlnod kell a szervert, meg kell adnod az online bejelentkezsi adataidat s a titkostsi belltsokat is (8-6 bra). Termszetesen tbb szerverrl is fel tudsz iratkozni ugyanarra az online trterletre. A regisztrcit kveten az asztalon lv Windows Azure Online Backup ikonnal indthatod el a konfigurlst, temezhetsz klnbz mentseket, generlhatsz titkost kulcsokat, st a svszlessg szablyozst is meghatrozhatod! Clszer az els nagyobb mentst jszakra idzteni, ezt kveten a klnbsgi mentsek mr gyorsan lemennek akr napkzben is. Az adataid mg a fldn titkostsra s tmrtsre kerlnek, a felhben mr gy troldnak.

8-6 bra: Szerver regisztrlsa

A Windows Server 2012 Essentials-hoz kszlt telept annyiban ms, hogy a kezelfellet bepl a termk sajt menedzsment felletbe, a Dashboardba, s onnan tudod konfigurlni az egyes belltsokat (8-7 bra). Az eszkz funkciiban nincs eltrs, a felhasznli fellet azonban alkalmazkodik az Essentials Serverhez.

A System Center Data Protection Manager 2012 SP1 s az Online Backup kapcsolata
Termszetesen a nagyvllalatokra is gondolt a Microsoft, amikor megalkotta a Windows Azure-alap online mentsi megoldst. Ha az Online Backup szolgltats gynkt a DPM szerverre teleptjk, akkor attl kezdve a Data Protection Managerbl a felhbe tudunk menteni szinte brmilyen tpus adatot, tulajdonkppen brmilyen helyrl, amit a DPM gynk elr.

123

8. IaaS zemeltets

8-7 bra: Online Backup fellet a Windows Server Essentials kezelpaneljn

A DPM-beli mkdsnl mindenkppen figyeljnk arra, hogy az online ments csak msodlagos ments lehet, erre a fellet is figyelmeztet! Teht mentsnk tovbbra is vagy kazettra, vagy lemezekre, vagy egyb troleszkzre, s csak utna kpezznk egy tartalkot a felhben is (8-8 bra)!

8-8 bra: Ments lemezre s a felhbe is

j protection group ltrehozsakor megadhatjuk, hogy mely adatokat szeretnnk a felhbe is menteni, milyen temezsben, milyen idkznknt stb.

124

8. IaaS zemeltets

sszegzs
Ebben a fejezetben megismerhetted az Azure infrastruktra kezelsnek, mindennapi feladatainak vgrehajtst segt eszkzket, a PowerShellt s az App Controllert. Rviden bemutattuk, hogyan lehet ezekkel az eszkzkkel virtulis gpeket ltrehozni s kezelni. A napi zemeltetsi feladatok nemcsak az egyes fizikai vagy virtulis szerverek kezelsbl llnak, hanem az adatok mentse is kiemelt szerepet kap. Az eddig megszokott kazetts vagy lemezes alap mentsek mell mr felsorakozik az online trols lehetsge is. Ez az j megolds elrhet a legkisebb cgek szmra is, de kielgt megoldst nyjthat a nagyvllalati infrastruktrban is.

125

9. PaaS Felhszolgltatsok

9. PaaS Felhszolgltatsok
Ebben a fejezetben az albbi tmkat ismerheted meg: Az Azure Platform-as-a-Service (PaaS) szolgltats alapgondolata PaaS alkalmazsok struktrja, a szerepkrk fogalma PaaS alkalmazsok fejlesztse s belltsi lehetsgei Elkszlt PaaS alkalmazs teleptse a felhbe, illetve a verzifrissts lehetsgei Diagnosztikai eszkzk PaaS alkalmazsokhoz PaaS alkalmazsok sklzsnak krdsei A knyv eddigi rszben megismerkedhettl az Azure virtulis gpekkel (Virtual Machines) s az ezekhez kapcsold szolgltatsokkal. Ezek kzsen alkotjk az Azure platform IaaS (Infrastructure -as-a-Service) rszt. Ezen szolgltatsokkal a helyi szerverek zemeltetsnl megszokott fogalmakat, technikkat alkalmazva tudsz a felhben is sajt szerverfarmot kipteni, s ekzben mr profitlhatsz is a felh ltal nyjtott elnykbl (gyors reagls, korltlan mennyisgben elrhet hardver, vdelem a hardverhibktl, olcsbb rak s gy tovbb). Ebben a fejezetben az Azure platform egy teljesen j terletre eveznk: a z Azure Platform-as-a-Service (PaaS) rszre. A PaaS egszen mshogy mkdik, mint az IaaS. Az Azure Virtual Machines (IaaS) esetn egyesvel hozhatsz ltre virtulis gpeket, melyekre te magad teleptheted az opercis rendszert, amit utna teljes kren testre szabhatsz, konfigurlhatsz. A rendszer feletti teljes irnyts a te kezedben van, ezrt cserbe ugyanazokkal a teleptsi s felgyeleti feladatokkal kell megbirkznod, mint helyben. Az Azure PaaS egy lpssel tovbbmegy. Alapveten fejlesztk szmra szl, nekik az Azure PaaS hasznlata esetn nincs ms dolguk, mint megrni az alkalmazst, ami al a felh helyezi el majd az infrastruktrt. A PaaS-nl kevesebb kontrollod van a fut gpeid felett, cserbe azonban kevesebb a teendd is, mert az Azure automatikusan elvgzi a gpek kezelst. Nincs tbb teleptgets, patchels vagy esetleg frtzs ha a megnveked igny miatt tbb gpre van szksged hiszen mindezt az Azure intzi nllan, a fejlesztnek gyakorlatilag csak nhny szmot kell trnia a portlon. Ebben a fejezetben a PaaS-rl, illetve annak a legfontosabb ptelemrl, a Cloud Servicesrl lesz sz. Kezdjnk is neki!

Az Almabka Kft. nyelvfggetlen kzssgi oldala


Hasonltsuk ssze a helyi infrastruktra, az IaaS s a PaaS viselkedst egy termszetesen sarkalatos s leegyszerstett pldn keresztl! Ekzben megismerheted a PaaS alapfogalmait s az IaaS-tl, illetve a helyi infrastruktrtl val alapvet eltrseit. Kpzeletbeli cgnk, az Almabka Kft. j kzssgi oldalt indt. Ez lesz a vilg els nyelvfggetlen kzssgi oldala. A felhasznlk videkat, kpeket s egyb adatokat tlthetnek fel, melyet kzssgi oldalunk automatikusan lefordt a fordtmotorunk ltal tmogatott sszes nyelvre, gy mindenki mindenkivel ismerkedhet majd nyelvi korltok nlkl. Vizsgljuk meg ezt a trtnetet hrom lehetsges mdon!

127

9. PaaS Felhszolgltatsok

Helyi infrastruktra
Derk fejlesztcsapatunk megbecsli a vrhat ignyeket, tizent rendkvl ers szervert s klnfle hlzati hardvereket vsrol, majd nekilt a fejlesztsnek. A szerverekre Windows Servert, SQL Servert, IIS -t, ASP.NET-et teleptenek, belltjk rajtuk a tzfalat, tanstvnyokat vesznek. Az els igazn stabil verzi elkszlsekor pezsgt bontanak, teleptik az oldalt a szerverekre s meghirdetik a nyilvnossg fel. Hamarosan mr tzezrek hasznljk az oldalt. Kt httel ksbb egy hangos durrans hallatszik s egy rossz UPS miatt a szerverek harmadban kignek az alaplapok. Backup termszetesen mindenrl volt, gy adatveszts nincs, a csapat azonban kt napig pnikban van, mire sikerl a megfelel j szerverhardvert megrendelni, elszlltani, telepteni s szolglatba lltani. Egy hnap mlva mr akkora az igny az oldalra, hogy a szerverek mindegyike 90% -os terheltsggel fut. Nincs ms htra: jabb szervereket kell rendelni. A csapat ismt csak knytelen a beszerzshez fordulni, a rendszergazdk fl napot tltenek el minden jabb vas teleptsvel s munkba lltsval. Az gyvezet ekzben a fejt vakarja s az oldal exponencilis bvlst sszeveti azzal az exponencilis mennyisg szerverrel, amire szksg lesz. Msfl hnap mlva eljn az els komoly verzifrissts ideje. Harminc szervernl ez nem egyszer! A csapatnak vagy le kell lltani az oldalt egy rra, vagy meg kell oldania, hogy a rgi s az j verzi amelyek kztt igen komoly eltrsek vannak egyszerre tudjon futni mindaddig, amg minden szerveren sikerl elvgezni a verzivltst. Mindenki jszakzik, de vgl megoldjk a vltst. Kt hnap mlva itt az jabb hidegzuhany! A vilg legnagyobb kzssgi hljnak megtetszik az tlet s elrukkol a sajt hasonl szolgltatsval. A ltogatk hirtelen elmaradnak. A csapat prblja felvenni a versenyt, az gyvezet pedig farkasszemet nzhet a 30 teljesen flslegesen lldogl, mregdrga szerverhardverrel.

Infrastructure-as-a-Service, IaaS
A trtnet kezdete hasonl. A fejlesztcsapat nekiugrik a fejlesztsnek, m ezttal Azure IaaS mellett dntenek. Indulskor egy szervert is elegendnek ltnak, mert tudjk, hogy ksbb brmikor ltrehozhatnak jakat, a felhben nem kell napokat vrni a beszerzsre. gy aztn ltrehoznak egyetlen virtulis gpet a felhben, Windows Servert, SQL Servert, IIS -t, ASP.NET-et teleptenek, belltjk a tzfalat, tanstvnyokat vesznek. Megtrtnik az oldal indulsa. Kt httel ksbb egy hangos durrans hallatszik az Azure adatkzpontban s egy rossz UPS miatt hsz szerverben, tbbek kztt a hseink virtulis gpt kiszolgl szerverben kig az alaplap. Fszereplink errl mit sem tudnak, mert nhny perc alatt az Azure msik fizikai hardverre mozgatja t virtulis gpket, ami vidman dolgozik tovbb. Egy hnap mlva az oldal 90%-ban terhelt s j gpeket kell belltani. Ugyan a rendszergazdk tovbbra is sokat dolgoznak az j gpek konfigurlsval, de mr semmit nem kell vennik: rkatalgusok bngszse s autzs helyett a New Virtual Machine gombot nyomogatjk. Ez sokkal kevesebb ideig tart. Msfl hnap mlva verzivlts. Sajnos csapatunk most sem ssza meg a komoly munkt: gpeik ugyan az Azure-ban futnak, de ettl mg k zemeltetik ket, ezrt most is mindenki jszakzik, amg minden gpre fel nem csempszik az j szoftververzit. Kt hnap mlva megrkezik a konkurencia. Visszaess van a ltogatszmban, de az gyvezetnek ez kevsb esik rosszul, mint az elz esetben: nem ll pnz a sajt szerverekben, a csapat egyszeren letrl pr flslegess vlt virtulis gpet, s gy a ltogatszmmal egytt a kltsgeik is visszaesnek, ezrt az zlet addig is jvedelmezen megy tovbb, amg a vlaszlpsen gondolkoznak.

Platform-as-a-Service, PaaS
A fejlesztcsapat elkszti az alkalmazst, m gy gondoljk, hogy egyltaln nincs kedvk gpek teleptgetsvel szrakozni. Ezrt Azure PaaS-t hasznlnak.

128

9. PaaS Felhszolgltatsok Egy Azure PaaS alkalmazs szerepkrkbl (role) ll. Visual Studio s .NET esetn egy szerepkr kevs kivtellel egy Visual Studio projektnek felel meg. Egy szerepkrbl, azaz Visual Studio projektbl futsi idben a felhben egy vagy tbb virtulis gp lesz, ezeket az adott szerepkr pldnyainak (instance) hvjuk. A Visual Studio projektek kdot tartalmaznak, s ezek mellett nhny XML fjl is van, amik lerjk, hogy a szerepkrbl kszl virtulis gp pldnyok hogyan nzzenek ki. Ezek az XML fjlok adjk meg, hogy a virtulis gpek mrete mekkora legyen, milyen tzfalportok legyenek rajtuk kinyitva, vannak -e specilis teleptsi ignyek (pl. minden virtulis gp ltrejttekor fusson le egy szkriptfjl) s gy tovbb. Egy szerepkr teht olyan, mint egy recept, vagy sablon virtulis gpekre. Hseink gyakorlott ASP.NET fejlesztk, s mr flig kszen van az alkalmazsuk, amikor az Azure PaaS mellett dntenek. Nem ijednek meg klnsebben: ASP.NET projektjket egy kattintssal szerepkrr, azon bell is webes szerepkrr (web role) alaktjk, azaz mellteszik az Azure szmra szksges XML fjlokat. A kdhoz lnyegben hozz sem kell nylniuk. Mivel webes szerepkrrl van sz, az Azure tudni fogja, hogy a kd al a felhben webszervereket kell tennie (azaz Windows Servert, IIS-t, ASP.NET-et kell teleptenie), az XML fjlokbl pedig kiolvassa a csapat ltal kvnt tzfalbelltsokat, tanstvnyokat s egyebeket. Az alkalmazs fontos rsze a weboldal mellett a videk, kpek lefordtst vgz komoly zleti logika is. Ezt a csapat korbban Windows szolgltatsknt (Windows Service) implementlta, s a webszerveren akarta futtatni. Ezt tovbbra is megtehetnk (a webes szerepkrn bell megoldhatnk, hogy a ltrejv pldnyokra telepljn fel a Windows szolgltatsuk), de tudjk, hogy ennl van elegnsabb megolds is. Korbbi projektjket munkavgz szerepkrr (worker role) alaktjk. Ez a msik fontos szerepkrtpus az Azure PaaS-ban. Egy munkavgz szerepkr pldnyain csak .NET Framework van (IIS s ASP.NET nincs), a gp indulsakor az Azure meghvja a szerepkrben lv kd belpsi pontjt, s attl kezdve az a kd fut a gp mkdsnek teljes ideje alatt. A munkavgz szerepkrk teht ltalnos clak, a webes szerepkrk pedig kimondottan ASP.NET alkalmazsoknak lettek kitallva. Elindul az oldal. Az elz kt esettl eltren nincs teleptgets: a vezet fejleszt ltrehoz az Azure -ban egy Cloud Service-t ezzel lefoglal az alkalmazsnak egy DNS nevet , majd a Visual Studio megfelel menjben lv Publish opcira kattint. A kd feltltdik a Cloud Service-be, majd az Azure a kt szerepkrbl nllan ltrehozza a kvnt darabszm s mret szerverpldnyt. Ez kb. 20 percig tart, kzben mindenki nzeldik s beszlget, mert a mvelet sorn emberi beavatkozsra nincs szksg. Kt ht mlva hangos pukkanssal kileheli a lelkt az egyik UPS az Azure adatkzpontban, magval rntva a szerverek egy rszt is. Ahogy az IaaS esetben, a csapat itt sem vesz szre semmit, az Azure automatikusan korriglja a hibt. Egy hnap mlva a szerverek 90%-os terheltsgen futnak. A vezet fejleszt ezt egy kv mellett eljsgolja az gyvezetnek, majd az Azure portlon egy csszkt feljebb hzva megnveli a gpek szmt. Az Azure nhny perc alatt elvgez minden teleptsi s konfigurcis feladatot, s a terhelsi grbe kisimul. Msfl hnap mlva verzivlts. Az alkalmazs aktulis kdja a csapat Cloud Service -nek gynevezett Production slotjban fut nhny szerverpldnyon, s a klvilg szmra is lthat. A vezet fejleszt publiklja az alkalmazs j verzijt a Staging slotba, ami ugyangy a Cloud Service-en bell van, de tartalma nem lthat a klvilg szmra. A publiklst kveten az Azure kb. 20 perc alatt nllan ltrehozza az j verzi szmra szksges szerverpldnyokat (gy egy rvid ideig a rgi verzibl s az j verzibl is vannak szerverpldnyok). Mivel a telepts automatikusan trtnik, a fejlesztk ezalatt lestik tesztel -eszkzeiket, majd nyugodt krlmnyek kztt kitesztelik a Staging slotban lv j verzit. Amikor elgedettek, a vezet fejleszt megnyomja a Swap VIP gombot, erre a Production s a Staging slotban lv szerverek kb. harminc msodperc alatt megcserldnek s hirtelen, mindenfle szolgltatskiess nlkl mr az j verzi rhet el a klvilg szmra. A vezet fejleszt egy-kt rig fennhagyja a rgi gpeket, htha valami hiba miatt vissza kell llni a rgi verzira (nem aggdik, mert jl tudja, hogy a Swap VIP gombot ismt megnyomva ez jabb fl perc alatt vgbemegy), vgl letrli ket s a tbbiekkel egytt idben hazamegy.

129

9. PaaS Felhszolgltatsok Kt hnap mlva megrkezik a konkurencia. Ahogy az IaaS esetben, gy itt sem aggdik az gyvezet, mert nem llnak millik a szerverekben. A csapat egyszeren lejjebb veszi a fut gpek szmt, ezzel azonnal lecskkennek a kltsgeik is, s megfontoltan kszlnek a vlaszlpsre.

Hello World, PaaS mdra


A fenti rvid trtnetbl megismerkedhettl a helyi infrastruktra, az IaaS s a PaaS viselkedse kztti klnbsgekkel nhny gyakori szituciban, s mr a PaaS alapfogalmairl is olvashattl. Hamarosan elksztjk els Azure PaaS alkalmazsunkat, s ekzben rszletesebben is vgighaladunk ezeken az alapfogalmakon, rgtn azok gyakorlati felhasznlst is megismerjk.
A fejezet tlnyom rszben Visual Studio s .NET alap pldkon haladunk vgig. Az itt lertak termszetesen az ilyenkor vrhat felletbeli, szintaktikai eltrsekkel rvnyesek az Azure ltal tmogatott tbbi fejlesztkrnyezetben (pldul Javban vagy PHP-ban) is.

Az indulshoz a Visual Studio egy tmogatott verzijra s az Azure SDK-ra lesz szksged. Ezek beszerzsrl a 4. fejezetben olvashatsz. A fejezet kpernykpei Visual Studio 2012 -vel kszltek. Indtsd el a Visual Studit s nyiss egy j projektet! A projekt tpusa legyen a C# nyelven s Cloud kategrin belli Windows Azure Cloud Service! A projektet nevezd HelloAzure-nak (9-1 bra)! Amennyiben a Cloud kategrit nem ltod, vagy nem a Windows Azur e Cloud Service elem van benne, gyzdj meg rla, hogy az Azure SDK helyesen van-e teleptve!

9-1 bra: j Cloud Service ltrehozsa

Miutn megnyomtad az OK gombot, a megszokottl eltren a Visual Studio nem vlt t rgtn kdnzetbe. Ahogy a bevezetben is olvashattad, Azure PaaS esetn alkalmazsunk szerepkrkbl (role) ll. Minden szerepkr ritka kivtelektl eltekintve egy-egy Visual Studio projektbl s nhny XML fjlbl ll. Minden szerepkr egy virtulisgp-recept: a projekt tartalmazza a recept alapjn kszlt gpeken futtatand kdot, az XML fjlok pedig minden mst (gpmretet, tzfalbelltsokat s gy tovbb). Futsi idben az Azure valamennyi szerepkrdbl egy vagy tbb virtulis gpet, pldnyt (instance) hoz majd ltre. Ez adja az Azure PaaS erejt: mivel az Azure pontosan tudja, hogy hogyan tud jabb gppldnyokat ltrehozni, kls beavatkozs nlkl is el tudja vgezni a teleptsi, sklzsi s karbantartsi feladatokat.

130

9. PaaS Felhszolgltatsok Fontos ltni, hogy egy szerepkr teljeskren ler egy virtulis gpet, de az nem egy virtulis merevlemez (image)! A virtualizcis krnyezetek ltal ksztett virtulis merevlemezek s a szerepkrk kztti klnbsget egy analgival lehet a legegyszerbben szemlltetni:

Egy image, azaz egy teljesen felteleptett virtulis merevlemez olyan, mint egy mirelit pizza: a csomagban benne van az egsz pizza, rajta minden hozzvalval, egyszeren csak fel kell olvasztani (vagy lemezkpfjl esetn el kell indtani), s mr ehetnk is. A mirelit pizzn n em tudunk vltoztatni, ha egy 26 centis feta pizza van a csomagban, akkor azt fogunk vacsorzni. Mivel a csomag mindent (a teljes pizzt, vagy a teljes felteleptett Windowst) tartalmaz, ezrt j nagy (pizza esetn nehz, image esetn sok gigabjtos). Egy szerepkr, azaz egy Visual Studio projekt s a hozztartoz metainformcik sszessge olyan, mint egy recept. Egy recept pizza esetn nhny sorban lerja, hogy milyen tsztt vegynk, s mit rakjunk r. Ehhez hasonlan egy recept, vagyis szerepkr a virtulis gp esetn lerja, hogy telepteni kell az IIS-t, ki kell nyitni a 80-as portot, zembe kell lltani a felhasznl ltal rt webalkalmazst stb. Ennek megfelelen sokkal kisebb helyet foglal (pizznl pr sor, Visual Studio esetn nhny megabjt), s sokkal rugalmasabb. Ha paradicsomos helyett tejfls alapot szeretnnk a pizznkra, akkor egyszeren mshogy hajtjuk vgre a recept egyik utastst. Ugyangy egy szerepkrnl is knnyszerrel tllthatjuk, hogy Windows 2008 R2 helyett Windows 2012 -t szeretnnk a gpeinkre, az Azure pedig egyszeren a mdostott recept alapjn hozza majd ltre a gpeket.

Ahogy korbban olvashattad, a szerepkrknek kt rsze van: egyrszt bennk van a programkd (hasonlan egy hagyomnyos Visual Studio projektben), msrszt bennk vannak a recept klnbz utastsait (gpek mrete s darabszma, opercis rendszer tpusa, tzfalszablyok stb.) ler XML llomnyok. Ezeknek az XML fjlokat, azaz szerepkr-belltsokat valahol trolni is kell. Az Azure ezeket nem a szerepkr projektek belsejben helyezi el, hanem egy specilis projektben gyjti ssze, amit nevezhetnk mondjuk Azure metaadatprojektnek. Egy kt szerepkrbl ll Azure PaaS alkalmazs teht valjban hrom Visual Studio projekt lesz:
1. 2. 3.

a szerepkrk (mindkt szerepkr) metainformciit tartalmaz Azure metaadatprojekt, amiben csak XML fjlok vannak, kd nincs, az els szerepkr kdjt tartalmaz projekt, a msodik szerepkr kdjt tartalmaz projekt.

Amikor az alkalmazst telepteni a felhbe akarod, akkor tnylegesen az Azure metaadatprojektet kell telepteni, s ez majd a benne tallhat XML fjlokat rtelmezve magval viszi a szerepkr -projekteket is a felhbe. Az elz lpsben, a Windows Azure Cloud Service projekttpust kivlasztva az Azure metaada tprojektet hoztad ltre (1. szm a fenti listban). A Visual Studio mg nem tudja, hogy a projekt al milyen szerepkrknek kell tartozniuk, ezrt a kvetkez lpsben (9 -2 bra) erre krdez r.

131

9. PaaS Felhszolgltatsok

9-2 bra: Szerepkrk hozzadsa s tnevezse

A bal oldali listban vlogathatsz a hozzadhat szerepkrk kztt. Ahogy a bevezetben olvashattad, ezek kt nagy csoportra bonthatk: webes szerepkrkre (web role) s munkavgz szerepkrkre (worker role). Webes szerepkrknl az Azure ASP.NET -tel, IIS-sel stb. telepti majd a pldnyokat s az elkszlt projektet az IIS-hez adja webalkalmazsknt. Munkavgz szerepkrknl pedig csak a .NET Frameworkt telepti a pldnyokra, a projektet DLL fjlknt msolja r a gpekre, futtatskor pedig egy adott belpsi pontot hv meg rajtuk. A kt f szerepkrtpusnak szmos altpusa van. Az ASP.NET Web Role szerepkrtpus egy ASP.NET Web Forms projektet hoz ltre, a MVC 3 s MVC 4 szerepkrtpusok pedig rtelemszeren MVC projekteket jelentenek. A Worker Role is tbbfl e altpussal rendelkezik, ezekrl a knyv ksbbi rszeiben tudhatsz meg tbbet. A Worker Role szerepkrk a Visual Studiban Class Library projekteket hoznak ltre. Adj hozz egy ASP.NET Web Role projektet az Azure metaadatprojekthez! Miutn hozzadtad, vidd r az egeret. Megjelenik egy toll ikon, amivel tnevezheted a projektet (9 -2 bra).
Fontos, hogy szerepkrket nem ktelez hozzadni: ha pldul egy mr ltez webes projektet akarsz Azure -ba publiklni Web Role-knt, akkor ezen a prbeszdpanelen szerepkr hozzadsa nlkl is tovbblphetsz az OK gomb megnyomsval. Mr ltez projektedet pedig ksbb beveheted az Azure metaadatprojekt al szerepkrknt.

Miutn elkszltl, kattints az OK gombra! A Visual Studio elkszti az Azure -alkalmazs projektjeit (9-3 bra).

132

9. PaaS Felhszolgltatsok

9-3 bra: A HelloAzure alkalmazs projektjei

Kt projektet is lthatsz: Az els a HelloAzure nev, amely mindssze nhny XML fjlt tartalmaz (.cscfg s .csdef kiterjesztssel). Ez az Azure metaadatprojekt, vagyis a korbban trgyaltaknak megfelelen az Azure PaaS alkalmazs gykere. A projektben lv XML fjlok rjk le, hogy milyen szerepkrk tartoznak az Azure PaaS alkalmazsba, s azoknak mik a tulajdonsgaik. Ennek megfelelen PaaS alkalmazsonknt egy ilyen metainformcis projekt van a szerepkrk szmtl fggetlenl. A msodik a HelloAzure.WebRole, a webes szerepkr projektje. Ez egy kznsges ASP.NET 4 Web Role projekt, ami nmagban, Azure nlkl is futtathat hagyomnyos ASP.NET webalkalmazsknt. Egy teljesen hagyomnyos ASP.NET projekthez kpest azonban kt eltrst tartalmaz: nhny plusz referencia van benne Azure-os DLL-ekre, illetve egy WebRole.cs fjl, amibe a webes szerepkr kdjt rjuk le. Ez a kdot az Azure a szerepkr minden gppldnynak beindulsakor lefuttatja (sokban hasonlt teht a Global.asax fjlra). A HelloAzure projekten bell tallsz egy Roles mappt. Ez a merevlemezen valjban nem ltezik, a Visual Studio azt az Azure metaadatainak rtelmezse utn rajzolja ki. Ha tovbbi szerepkrket szeretnl felvenni PaaS alkalmazsodba, akkor kattints jobb gombbal a Roles mappra, s vlassz a megjelen lehetsgek kzl! Ezek segtsgvel tudsz j, res szerepkrket felvenni, vagy akr mr ltez projekteket szerepkrknt hozzadni Azure-alkalmazsodhoz.
Korbbi ASP.NET fejlesztseidet minden tovbbi nlkl hozzadhatod a PaaS alkalmazshoz, nem kell rajtuk semmi vltoztatst elvgezned. A Visual Studio ltrehozza azok alaptulajdonsgait a metaadatprojektben, magukba az ASP.NET projektekbe nem kell belenylnod. Egy .NET-es Web Role projekt gyakorlatilag egy az egyben ugyanaz, mint egy ASP.NET projekt (a fent emltett apr vltoztatsokkal pl. WebRole.cs , amik azonban nem ktelezek). rthet is, hogy ez mirt van gy: az Azure-ban ugyangy hagyomnyos Windows Serverek futnak, mint helyben, ezrt nem kell tszabni a projekteket. Br a mr meglv ASP.NET projektek gond nlkl beemelhetk Azure -ba, figyelj arra, hogy az Azure valjban egy szerverfarm, ezrt van a viselkedsben nhny fontos eltrs a helybeli krnyezethez kpest! Ezek a fejezet ksbbi rszbl kiderlnek majd.

A Roles mappa jelenleg sem res: van benne egy elem az alkalmazsban lv HelloAzure.WebRole szerepkr szmra. Kattints dupln erre az elemre! Megjelennek a HelloAzure.WebRole szerepkr Azure

133

9. PaaS Felhszolgltatsok PaaS belltsai (ms nven a szerepkr tulajdonsglapja, ahogy ksbb hivatkozunk majd r). Az eredmnyt a 9-4 brn lthatod.

9-4 bra: Egy szerepkr tulajdonsglapja

Ezen a panelen gyakorlatilag az Azure metaadatprojektben lv XML fjlok (a .cscfg, .csdef kiterjeszts fjlok) tartalmt szerkesztheted grafikusan. Az XML fjlokba kzzel is belenylhatsz, de erre szerencsre csak nagyon ritkn van szksg, a legtbb tulajdonsg ezen a dialguson is llthat. A tulajdonsglap bal fels rszn klnbz fleket tallsz. A knyvben valamennyi fllel megismerkednk majd. Kezdsnek nzzk a legfelst, a Configuration flet! Ennek legfontosabb eleme kzptjon, Instances nven tallhat. Itt llthatod be, hogy amikor a szerepkrt a felhbe telepted, akkor hny darab (Instance count) s mekkora (VM size) virtulis gp kpzdjn belle. A gpek pldnyszma futsi idben is mdosthat. Miutn feltetted a PaaS alkalmazst a felhbe, utna is brmikor trhatod a gpek kvnt pldnyszmt (az Azure menedzsment portl segtsgvel), az Azure pedig ltrehozza, illetve trli a kell szm gpet. A gpek mrete azonban jelenleg csak helyben, telepts eltt adhat meg. Egy szerepkr valamennyi pldnya egyforma mret lesz. A kvnt mretet az albbi opcikak a 9 -1 tblzat mutatja be. 9-1 tblzat: A szerepkr pldnyok lehetsges mretei Gpmret Extra Small Small Medium Large Extra Large CPU magok Osztott 1 2 4 8 CPU sebessg 1,0 GHz 1,6 GHz 1,6 GHz 1,6 GHz 1,6 GHz RAM 768 MB 1,75 GB 3,5 GB 7 GB 14 GB Loklis trhely 20 GB 225 GB 490 GB 1000 GB 2040 GB

Ahogy a tblzatban is lthatod, a Small mret tekinthet etalonnak. A Medium ennek duplja, a Large ngyszerese, az Extra Large nyolcszorosa. Az Extra Small mret pedig egy igen alacsony teljestmny, csak tesztelsre javasolt gpmret.

134

9. PaaS Felhszolgltatsok A gpek razsa mretktl fgg; egy Medium gp pldul ktszer annyiba kerl rnknt, mint egy Small gp. Az razs rszleteirl a 16. fejezetbl tjkozdhatsz. A szerepkr tulajdonsglapjn lv tovbbi belltsi lehetsgekre ksbb visszatrnk majd egyelre a pldnyszm s a gpmret belltst volt lnyeges megismerned. Most mr tudod, hogyan mdosthatod az Azure metaadatprojektben lv belltsokat. A Visual Studio megoldsban lv msik projektre, a Web Role-ra klnsebben nem fontos kitrni, mert az valban egy kznsges ASP.NET projekt, a korbban mr emltett DLL referencikon s WebRole.cs fjlon kvl nincs benne semmi Azure-specifikus. gy aztn nincs ms htra, mint futtatni az elkszlt alkalmazst. Hagyomnyos ASP.NET webes fejlesztskor ilyen esetben a Visual Studio egy knnysly webszervert indtana be az elkszlt webes projekt futtatshoz. Az idig megszokott webszerverek azonban nem lennnek kpesek szimullni, hogy egy szerepkrbl tbb pldny is lehet, valamint nem tudnk futtatni a munkavgz szerepkrket sem. gy aztn az Azure SDK rszeknt egy emultor is rkezik. Az Azure PaaS alkalmazsok futtatsakor ez indul be, s ez futtatja az alkalmazsban lv valamennyi szerepkrt a kvnt pldnyszmban. Az alkalmazs futtatshoz (ahogy azt Visual Studiban megszokhattad) nyomd meg az F5 gombot, v agy kattints az eszkztron lv Futtats gombra (zld nyl)! Ha kzvetlen ezutn egy hibajelzst kapsz, ne ijedj meg: az emultor futtatshoz a Visual Studinak rendszergazdai mdban kell lennie. Ha erre utal hibazenet rkezik, egyszeren zrd be a Visual Studit, indtsd el jra rendszergazdai mdban, majd nyisd meg jra a projektet! Az emultor indulsa utn a Visual Studio megnyitja a bngszt, ahol megcsodlhatod webalkalmazsodat (9-5 bra).

9-5 bra: Az emultorban fut webalkalmazs

Maga az emultor a rendszerindt terleten (system tray) tallhat, egy kk Windows-ikon formjban. Erre jobb gombbal rkattintva (9-6 bra) s a Show Compute Emulator UI menpontot kivlasztva megtekintheted az emultor grafikus fellett (9-7 bra), ami megmutatja a fut alkalmazsokat. Ennek kt haszna is van: egyrszt megtekintheted a szerepkrpldnyok ltal kirt diagnosztikai zeneteket (ilyet magad is kirathatsz a Trace.WriteLine() metdus segtsgvel), msrszt, ha valamilyen okbl beragadna egy PaaS alkalmazs s nem akarna lellni, akkor innen, az emultorbl trlheted. A felleten bell lthatod a HelloAzure alkalmazst, benne a HelloAzure.WebRole szerepkr egyetlen fut pldnyval.

9-6 bra: Az emultor ikonja (jobbra) s helyi menje

135

9. PaaS Felhszolgltatsok

9-7 bra: Az emultor grafikus fellete

Az emultor segtsgvel elvgezheted a megszokott hibakeressi mveleteket: tmogatott a debugger, az IntelliTrace s gy tovbb. Fejleszts kzben nagyon jl jn, hogy alkalmazsaidat helyben is tudod tesztelni. Ne feledd azonban, hogy az emultor csak kzelti a valsgot: az lests eltt az alkalmazst a felhben is ki kell tesztelned! Ennek mdjrl a fejezet ksbbi szakaszban olvashatsz. A gyakorlat zrsaknt lltsd le az alkalmazst (zrd be a bngszt, vagy a Visual Studiban kattints a Stop gombra). Az emultor tovbbra is fut majd, de trldik belle az alkalmazspldny, a Visual Studio pedig visszavisz a kdnzetbe. Ebben a szekciban megismerted a PaaS alkalmazsok ltrehozsnak els lpseit. Nem tallkozhattl mindennel, amirl a bevezet trtnetben sz volt (pldul Production s Staging slot), de a fejezet ksbbi rszeiben ezekrl is sz esik majd.

Munkavgz szerepkrk
A fenti Hello World pldban megismerhetted az Azure PaaS alapfogalmait, s lthattad a szerepkrk egyik fontos vlfajt, a webes szerepkrt (web role). Egy webes szerepkr gyakorlatilag nem ms, mint egy ASP.NET projekt. A szerepkrk msik fontos vlfaja a munkavgz szerepkr (worker role). Egy munkavgz szerepkr ltalnos cl, brmire felhasznlhat. Nzzk, hogy fest egy ilyen szerepkr kdja! Nyisd meg a Visual Studit, s hozz ltre egy Windows Azure Cloud Service tpus j projektet HelloWorker nven! A projektbe vegyl fel egy Worker Role-t (9-8 bra)!

136

9. PaaS Felhszolgltatsok

9-8 bra: Worker Role felvtele a felhalkalmazsba

Ahogy web role-bl, gy worker role-bl is tbbfle kpzelhet el. A Worker Role szerepkr -tpus jelenti az alapvet, mindenfle testreszabst nlklz munkavgz szerepkrt, mg a tbbi projekttpus (Cache Worker Role, Worker Role with Service Bus Queue stb.) pedig valamilyen egyb Azure -technolgia hasznlatra mr eleve belltott szerepkrt hoz ltre. Miutn hozzadtl egy Worker Role szerepkrt a projekthez, kattints az OK gombra, s a Visual Studio elvgzi a kdgenerlst! Ahogy az elz Hello World mintaplda esetn, gy itt is kt projekt jn ltre: az Azure metaadatprojekt s egy msik a Worker Role szmra, ez utbbi Class Library tpus. Nzzk meg a Worker Role tartalmt! Lnyegben res, a .NET -es konfigurcis llomnyokon kvl egyetlen kdfjlt tartalmaz, amelynek WorkerRole.cs a neve (9-9 bra). Nyisd meg ezt az llomnyt!

9-9 bra: Egy Worker Role tartalma

A WorkerRole.cs kdfjlban kt metdus tallhat: az OnStart() s a Run(). Az OnStart() egy belpsi pont, a szerepkr minden egyes pldnynak (azaz virtulis gpnek) indulsakor meghvja az Azure futtatkrnyezet. A Run() alkotja a munkavgz szerepkr trzst. Amg a Run() metdus fut, addig fut a worker role is. Ha a Run() metdus kilp (azaz visszatr, vagy egy kezeletlen kivtelt dob), akkor az Azure gy tli, hogy a Worker Role mkdsben hiba kvetkezett be, s vgrehajtja a helyrellt mveletsort (kd jraindtsa,

137

9. PaaS Felhszolgltatsok ha az sikertelen, a Windows jraindtsa, majd a gp trlse s jra ltrehozsa, stb. rszletekrl lsd a fejezet ksbbi rszt). Ez azt jelenti, hogy a metdus kdjt gy kell megrni, hogy helyes mkds esetn sose lpjen ki. Lthat, hogy mr a gyri implementciban is egy vgtelen ciklus tallhat, ppen emiatt. Ezen fell viszont semmilyen megkts nincs a worker role kdolsra, a Run() metdusban brmi trtnhet matematikai szmtsok, egy EXE fjl meghvsa, egy Java program lefuttatsa, egy sajt gyrtmny jtk szervernek futtatsa stb. Nhny tipikus hasznlati minta: Feladatok elvgzse: Akkor hasznlhat, ha olyan alkalmazsunk van, amelyben valamilyen munkaignyes, jl elklnthet, nllan vgezhet feladatok keletkeznek (pl. kpek tmrtse, videk kdolsa, szmtsok elvgzse, stb.). Ilyenkor a Run() metdusban egy ciklus fut. A ciklus elejn a szerepkrpldny lekrdezi, hogy rkezett-e jabb feladat. Ha igen, elvgzi azt, ha nem, akkor rvid vrakozs utn ismt elkld egy lekrdezst. A feladatok jellemzen Azure Queue-ban szoktak gylni, mert ez egy igen olcs s megbzhat adatstruktra (lsd az Azure Storage-dzsal foglalkoz fejezetekben). De termszetesen egy SQL tbla vagy valamilyen ms adattrol is hasznlhat a feladatok gyjtsre. A minta nagy elnye, hogy sklzhat. Ha igen sok a feladat, egyszeren csak meg kell emelni a munkavgz szerepkr pldnyszmt, s mris tbb prhuzamos gp kezeli a feladatokat, vagyis megn a feldolgozsi teresztkpessg (throughput). Ugyanez fordtva is igaz, vagyis nyugodtabb idszakban ugyanilyen knnyedn vissza lehet trni egy alacsonyabb pldnyszmra anlkl, hogy a pldnyszm vltoztatsn kvl brhol bele kellene nylni az Azure-alkalmazsba. Windows Service helyettestse: A Windows-szolgltatsok mr rgta rszei az opercis rendszernek. Nem kell ket kln elindtani, a httrben futnak (akr akkor is, amikor nincsen felhasznl bejelentkezve), s egy sor feladatrt felelsek. gy van megvalstva pldul a Windows keressi indexnek naprakszen tartsa, klnfle szoftverek automatikus frisst eszkzei, nhny hlzati szolgltats, stb. Windows Service-t termszetesen mi magunk is rhatunk alkalmazsaink rszeknt, s az gy elkszlt Windows Service-t pedig telepthetjk szerverekre is. Azure-ban vlasztsi lehetsget kapunk:

maradhatunk a hagyomnyos modellnl, vagyis Windows Service -einket tovbbra is telepthetjk pldul egy webes szerepkr pldnyaira (ennek mdjrl lsd a fejezet ksbbi rszben a Startup Task-okat), vagy kiszervezhetjk Windows Service-einket worker role-okba, s akkor a szolgltats teljesen kln gpeken futhat, kln sklzhat, stb.

Szoftverfuttats: A worker role ltalnos cl, s Windows Server opercis rendszer fltt jn ltre. Brmi, ami fut a Windows-ban, az futhat egy worker role pldnyain is. Semmi nem tarthat vissza teht attl, hogy egy EXE alkalmazst, PHP vagy Java kdot, stb. egy Worker Role pldnyain futtass, s a PaaS elnyeit kihasznlva utna szabadon szablyozd ennek a szoftvernek az aktulisan fut pldnyszmt! A munkavgz szerepkrk teht szmos feladat elltsra alkalmasak. Azt viszont mindenkpp tartsd szem eltt, hogy minl tbb klnbz szerepkrd van, s azok minl tbb pldnyban futnak, annl nagyobbra n az Azure-szmla is! Pnzgyi szempontbl rdemes az alkalmazst minl kevesebb szerepkrre sztbontani, teljestmny szempontjbl meg persze ennek az ellenkezje igaz ez egy olyan dnts, amit alkalmazsonknt kln mrlegelni kell.

A szerepkrk tulajdonsgai
Az elz szakaszokban tbb fontos alapfogalommal megismerkedtl. ttekintve ezeket: egy PaaS alkalmazs nem ms, mint szerepkrk sszessge, minden szerepkr egy Visual Studio-projekt s nmi metainformci, amelyek egyttese egy recept vagy sablon virtulis gpek ltrehozsra.

138

9. PaaS Felhszolgltatsok Megnzted egy PaaS alkalmazs ltrehozsnak lpseit, s megismerkedtl a szerepkrk tulajdonsglapjval, valamint a legfontosabb belltsi lehetsggekkel (gpmret, darabszm). Ebben a szakaszban krljrjuk a szerepkrk tbbi lnyeges belltsi lehetsgt is. Megnzzk, hogy egy szerepkrbe kerl alkalmazs fejlesztsekor mire kell figyelni, milyen testreszabsi lehetsgei vannak a szerepkrknek tzfalportok kinyitsa, inicializl szkriptek futtatsa, az opercis rendszer verzijnak belltsa s gy tovbb. A szakasz vgre tfog kped lesz a szerepkrk programozsi modelljrl.

A szerepkrk llapotmentesek, a terhelseloszt nem sticky


Az eddigiekbl mr tudod, hogy a PaaS elnyei teleptskor vagy felfel sklzskor az j gppldnyok automatikus ltrehozsa, a ltez pldnyok automatikus karbantartsa stb. abbl fakadnak, hogy az Azure nllan kpes j gpeket ltrehozni, a gpek darabszma pedig teljesen szabadon vltoztathat. Ennek van azonban egy msik, nagyon lnyeges kvetkezmnye is: a gpek llapotmentesek, azaz a rajtuk trolt adatok nem perzisztensek. Azure PaaS esetn brmikor cskkenthetjk-nvelhetjk gpeink darabszmt, magban az Azure-ban is brmikor eljhet egy verzifrissts, patchels ideje, vagy brmikor trtnhet valamilyen hardverhiba, ami miatt rgi gppldnyokat jakkal kell helyettesteni. Ezek miatt Azure PaaS esetn a gpeink darabszma garantlt (vagyis egyszerre mindig a krt darabszm gp fut majd minden szerepkrnkbl), azonban az egyes gpek nmagukban brmikor eltnhetnek. Az biztos, hogy a kdunk mindig a kvnt pldnyszmban fut majd, de nem szabad semmi maradandt (pldul adatbzis, felhasznlk ltal feltlttt kpek) trolnunk a helyi merevlemezen, mert az Azure az egyes gpeket az adattartalmukkal egytt brmikor trlheti (s msikkal vltja fel). gy gondoljunk a szerepkr-pldnyokra, mint feldolgozegysgekre, amiknek a darabszma knynkre kedvnkre varilhat, adatot azonban nem trolnak. Minden adattrolst ezeken a feldolgozegysgeken kvl kell vgeztetnnk! Egy msik fontos vonatkozsa az Azure PaaS -nak, hogy a szerepkrk terhelseloszt (NLB, network load balancer) mgtt vannak. Minden PaaS alkalmazs egy adott DNS nven (pldul example.cloudapp.net) ltszik a vilg fel. Ha kinyitunk egy portot (pldul 234) egy szerepkrn bell, akkor a kinyitott portot a klvilg ennek a DNS nvnek az adott portjaknt ri el (example.cloudapp.net:234), a bejv krsek pedig bell az adott szerepkr pldnyai kztt lesznek elosztva (pl. ha van hrom pldnyunk, s jn harminc krs, akkor minden pldny tlagosan 10-10 krst fog megkapni). Ez a terhelseloszt azonban nem ragads, nem sticky. Ez azt jelenti, hogy ha egy gyfelnk els krst a #1 pldny kapja meg, akkor ugyanezen gyfelnk msodik krst (pl. mg egyet kattint a weboldalunkon) mr lehet, hogy a #2, vagy #3 pldny kapja meg. ltalban ez nem jelent gondot, azonban ASP.NET Web Forms hasznlata esetn problmkhoz vezethet. Az ASP.NET Web Forms esetn ltezik egy Session State nev lehetsg, amellyel a programoz szerveroldalon eltrolhatja az oldalt ltogat felhasznlkhoz fzd munkamenetadatokat (pldul ez a felhasznl be van jelentkezve Kiss Jnos nven). Ezek a session adatok alaprtelmezsknt a szerver memrijban troldnak. Azonban a #1 szerver memrijban trolt adatokat a #2 szerver rtelemszeren nem ltja, gy gyfelnk munkamenetadatai ltszlag elvesznek! Termszetesen ezt a problmt is kezelnnk kell valahogy. Mindez els olvassra meglepnek tnhet (br az llapotmentes alkalmazs-kiszolgl rgta ltez koncepci, nem a felh vezette be). Szerencsre a fent lertak ltalban minimlis erfesztssel orvosolhatak mg akkor is, ha mr korbban elkszlt alkalmazst visznk t Azure PaaS-ra. Alkalmazsunk adatbzist SQL Database-ben (korbban SQL Azure) trolhatjuk, ami egy megbzhat s olcs SQL Server alap adatbzis-szolgltats az Azure-ban. Ha ez valamirt nem megfelel a cljainknak, vagy nem SQL Servert hasznlunk, akkor ltrehozhatunk egy IaaS virtulis gpet (lsd a knyv korbbi rsze), ami perzisztens, erre pedig tetszs szerint brmilyen adatbziskezel telepthet. A PaaS s IaaS gpek termszetesen egytt tudnak mkdni. A SQL Database -rl a knyv 11. fejezetben olvashatsz. Alkalmazsunk fjljait pldul a felhasznlk ltal feltlttt kpeket az Azure Blob Storage-ba tehetjk. Ez gyakorlatilag egy risi kapacitssal rendelkez, nagyon megbzhat, s termszetesen perzisztens fjlszerver. Az Azure Blob Storage fejleszti (azaz PaaS-bl trtn) felhasznlsrl a 10. fejezetben esik sz.

139

9. PaaS Felhszolgltatsok Vgl, az ASP.NET Session State problmra is egyszer a megolds. A Session State az ASP.NET -ben provider alap, ami azt jelenti, hogy egyszeren kicserlhet a Session State trolsi helye. A munkamenet adatai alaprtelmezetten a helyi memriban vannak, de knnyszerrel thelyezhetk egy SQL tblba vagy az gynevezett Azure Tables szolgltatsba (tblajelleg adatok trolsra val nagyon olcs Azure megolds). A legjobb alternatva azonban a legtbb esetben valsznleg az Azure Caching. Ha ezt bekapcsoljuk, akkor a szolgltats lecspi fut pldnyaink memrijnak egy konfigurlhat arny rszt, s ebbl osztott memriaterletet hoz ltre, amit minden gpnk rni s olvas ni is tud. A Session State-et bellthatjuk gy, hogy erre az osztott memriaterletre rjon, gy lnyegtelen, hogy gyfelnk krse melyik gphez fut be, mert mindegyik gp ltni fogja a letrolt munkamenetadatokat. Az Azure Caching nagyon gyors, ingyenes (mert gpeink mr kifizetett memrijba dolgozik), bekapcsolni pedig sz szerint nhny kattints s pr sor a Web.config fjlban. Hasznlatrl szintn egy ksbbi fejezetben esik sz. Ezzel megismerhetted azokat a fontos klnbsgeket (llapotmentes gpek s nem-ragads terhelseloszt), amelyek az Azure PaaS programozsi modelljbl fakadnak, valamint az ezek ltal felvetett tipikus problmk megoldsait is. Az Azure PaaS rendkvl elegns architektrjrl elmo ndhatjuk: minden alkalmazs szerepkrkbl ll, ezek tetszleges pldnyszm, automatikusan ltrehozott s karbantartott, llapotmentes virtulis gpet (feldolgozegysget) jelentenek, a perzisztencit, httrtrolst pedig a gpektl teljesen fggetlen trolszolgltatsok (SQL Database, Blob Storage) vgzik. A mr meglv, vagy frissen ksztett alkalmazsunkat knnyszerrel tllthatjuk erre az architektrra, utna pedig lvezhetjk az ezzel jr elnyket: nincs tbb fejfjs a gpeink llapota miatt, jtszva trtnik a sklzs, hiszen az llapotmentessgnek ksznheten nem kell adatvesztstl tartanunk, s gy tovbb.

A tzfal belltsa: Endpointok


Az llapotmentessg s a terhelseloszts rdekessgeinek megismerse utn nzzk meg a szerepkrk konkrt belltsi lehetsgeit! Kezdjk a tzfallal! A tzfal alapvet biztonsgi szolgltats. Minden Windows Server verzi tartalmaz tzfalat is. Helyben hosztolt infrastruktra esetn ezt kzzel tudjuk belltani, PaaS esetn azonban a tzfalbelltsokat kzvetlenl a szerepkrknek kell tartalmazniuk, hogy a pldnyok ltrehozsakor figyelembe vehesse ket az Azure. A tzfalbelltsokat a szerepkrk tulajdonsglapjn tallod. Nyiss meg egy Azure PaaS -projektet (pldul a fejezet korbbi rszben ksztett HelloAzure alkalmazst), s az Azure metainformcis projekt (HelloAzure) alatt tallhat Roles mappban kattints dupln a szerepkr (HelloAzure.WebRole) nevre! A tulajdonsglapon pedig vlts az Endpoints flre (9-10 bra)!

9-10 bra: Az Endpoints fl a szerepkr tulajdonsglapjn

Amikor egy Azure-alkalmazst teleptesz a felhbe, akkor abban az sszes szerepkr sszes pldnya egyetlen adott DNS nven (pl. valami.cloudapp.net) ltszik majd a klvilg fel. Ez azt jelenti, hogy az egyes szerverpldnyoknak nem lesz sajt kls IP cme: az egsz alkalmazs egyetlen kvlrl lthat DNS nevet

140

9. PaaS Felhszolgltatsok s IP cmet kap, s az egyes gpek elrse ezen DNS nv adott portjain keresztl trtnik. A portok viselkedsnek belltsra szolgl az Endpoints tulajdonsglap. A vgpontok belltsi lehetsgei a kvetkezk: Name: Kdbl ezen a nven hivatkozhatsz az endpointra (lsd kvetkez pontban). Type: Hromfle endpoint-tpus ltezik, melyek annak terhelselosztsi mdjt s lthatsgt szablyozzk.

Input: Az Input tpus endpointok a klvilg fell egyetlen nyitott portknt ltszanak. Az erre a portra berkez krseket az Azure terhelselosztval egyenletesen sztosztja az adott szerepkr pldnyai kztt. InstanceInput: Ilyen tpus endpoint ltrehozsakor a klvilg fel egy port-intervallumot (pl. 1005-1010) kell megadnod. A szerepkr minden pldnya kap egy publikus portot ebbl az intervallumbl. Hrom pldny esetn pl. a 1005, 1006, 1007 publikus portokat kaphatjk meg. A klvilg ezeken a portszmokon keresztl rheti el ket. Az ide berkez fo rgalmat pedig az Azure tovbbtja a pldnyokon egy adott bels portra (teht a virtulis gpekben fut alkalmazs szemszgbl a forgalom mindig ugyanarra a portra fut be, ami megknnyti a programozst). Az InstanceInput endpointok teht az Instance endpointokhoz hasonlan lthatk kvlrl, de nem terhelselosztottak. Internal: Az Internal endpointok az InstanceInput endpointokhoz hasonlan nem terhelselosztottak, azonban kvlrl nem lthatak, csak az adott Cloud Service -en bell lv tbbi szerepkrbl. Alkalmazson belli kommunikcira valk, a klvilg fell nem elrhetk.

Protocol: Minden endpointhoz megadhat, hogy milyen protokollon keresztl lehet vele kommuniklni. A vlaszthat opcik: HTTP, HTTPS, TCP s UDP. Web Role -oknl a 80-as HTTP port alaprtelmezsknt mr szerepelni fog a listban. Ha HTTPS forgalmat szeretnl, akkor tanstvnyt is hozz kell rendelned az adott endpointhoz. Tanstvnyokat a szerepkr tulajdonsglapjnak Certificates fln vehetsz fel a szerepkrbe a fejleszti gped Local Machine\Personal tanstvnytrbl. A felvett tanstvnyt az Endpoints flre visszatrve a SSL Certificate Name mez segtsgvel rendelheted hozz a HTTPS endpointhoz. Public Port, Private Port: Ezek segtsgvel llthatod be, hogy az endpoint a klvilg fell (Public Port) s bellrl (Private Port) milyen portszmokon legyen nyitva. Ha a Public s Private port eltr, akkor az Azure elvgzi a csomagtovbbtst (port forwarding). Egy Cloud Service szerepkreiben sszesen 25 darab endpointot vehetsz fel. Ezek tzfalbelltsok lesznek majd, azaz teljesen ltalnos felhasznlsak, nem csak .NET kdbl hasznlhatak. Ha pldul egy Java alkalmazst szeretnl futtatni a szervereden, amely valamilyen okbl a 300-as UDP porton vr bejv adatcsomagokat, semmi gond: vedd fel a megfelel endpointot, az Azure kinyitja majd a portot, az alkalmazs pedig beregisztrlhatja magt s figyelheti a bejv forgalmat. Az endpointok felhasznlsa .NET kdon bellrl leggyakrabban WCF (Windows Communication Foundation) szolgltatsok kpben trtnik. Nincs szksg semmilyen klnleges manverre, ha az endpointok segtsgvel kinyitottad a portokat, akkor a portokra a WCF megszokott eszkzeit hasznlva tudsz webszolgltatst illeszteni. Termszetesen arra is van lehetsg, hogy futsi idben lekrdezd a szerepkrn belli endpointoknak kiosztott IP cmeket s portszmokat. Erre a kvetkez kdsor hasznlhat:
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Vgpont neve"]

Az endpointok nhny tovbbi testreszabsi lehetsggel is segtik a munkt, amelyek jellemzen kevsb hasznltak, ezrt itt bvebben nem trnk ki rjuk: A Network Traffic Rules nev lehetsggel megszabhatod, hogy melyik szerepkr melyik msik szerepkr endpointjaival kommuniklhat. Ezek a szablyok jelenleg nincsenek kivezetve a Visual Studio grafikus interfszre, hasznlatukhoz kzvetlenl az XML fjlokat kell szerkesztened.

141

9. PaaS Felhszolgltatsok InstanceInput endpointok esetn a publikus portnak ktelezen egy intervallumnak kell lennie. Ehhez hasonlan a tbbi endpoint-tpus esetn is megadhatk intervallumok. Az endpointok segtsgvel teht a virtulis gpek tzfalt s az Azure terhelselosztjt tudod konfigurlni az alkalmazsod ltal ignyelt kommunikcis mintknak, portszmoknak s protokolloknak megfelelen. Az itt megadott belltsok a szerepkr rszv vlnak, a szerepkr pldnyainak ltrehozsakor lpteti ket letbe az Azure.

Ideiglenes fjlok trolsa: Local Storage


A fejezet korbbi szakaszban olvashattad, hogy az alkalmazsunk ltal perzisztensen (azaz hossztvon) trolni kvnt fjlokat, pldul felhasznlk profilkpeit vagy dokumentumait, a PaaS szerepkrkn kvl kell trolnunk. A javasolt megolds erre az Azure Blob Storage nev szolgltats, amirl knyvnkben rszletesen esik sz. Elfordulhat azonban, hogy ideiglenes fjlokra is szksged van. Ha egy munkavgz szerepkr pldul videokdolssal foglalkozik, akkor kdols kzben szksge lehet arra, hogy a helyi merevlemezen ideiglenesen nagymret fjlokat troljon, amiket folyamatosan r s olvas. A Local Storage szolgltats segtsgvel a szerepkr tulajdonsglapjn megadhatod, hogy szksged lesz ilyen tmeneti trhelyekre. Futsi idben, kdbl pedig lekrdezheted az ilyen mdon ltrehozott tmeneti trhelyeket, s olyan mappk elrsi tjait fogod visszakapni, amik garantltan lteznek, sok szabad hellyel rendelkeznek s kdod szmra rhatk-olvashatk. gy nem kell azon gondolkoznod, hogy egy Azure PaaS gp partcii vajon milyen elrendezst kvetnek: a Local Storage segtsgvel olyan mappkat kapsz, amik garantltan hasznlhatk. A Local Storage hasznlata igen egyszer. Els lpsben (a korbban megismert mdon) ltogass el a szerepkr tulajdonsglapjra, majd vlts a Local Storage flre (9-11 bra)! Az Add Local Storage gombbal vehetsz fel j Local Storage mappt.

9-11 bra: Local Storage mappk konfigurcija

A mappknak az albbi tulajdonsgai vannak: Name: Kdbl ez alapjn hivatkozhatsz majd a mappra. Size: A mappa maximlis mrete. Minden gpmrethez adott, hogy mekkora loklis trhellyel rendelkezik (9-1 tblzat). Hely bven van, mr egy Small Instance esetn is 225 gigabjt ll rendelkezsedre. Clean on role recycle: Ha egy szerepkr hibra fut (pl. az IIS valamirt lefagy), akkor az Azure egy helyrelltsi folyamat rszeknt megprblkozik a virtulis gp jraindtsval. Ezt a folyamatot nevezzk role recyclingnak. A Clean on role recycle belltsi lehetsggel azt adhatod meg, hogy role recycling esetn a Local Storage tartalma megmaradjon-e, vagy sem. A Local Storage mappt felvtele utn kdbl tudod felhasznlni. Erre a kvetkez metdus val:

142

9. PaaS Felhszolgltatsok

RoleEnvironment.GetLocalResource("Local Storage neve")

Ez egy LocalResource tpus objektumot ad vissza, amelynek RootPath tulajdonsgbl olvashatod ki az adott Local Storage-hez tartoz mappt, s azt utna a megszokott .NET-es IO osztlyokkal rhatod, olvashatod. Amennyiben tesztels kzben szeretnd megnzni, hogy a tesztels alatt ll szerepkrk Local S torageban mi van, a korbban ltott mdon nyisd meg az emultor grafikus fellett, kattints jobb gombbal a krdses szerepkrpldnyra, majd vlaszd az Open local store menpontot (9 -12 bra)!

9-12 bra: Local Storage megnyitsa az emultorbl

A megnyl mappa directory almappjban tallod alkalmazsod Local Storage knyvtrait. A Local Storage tartalma termszetesen a felhben is megtekinthet, errl ksbb, a Remote Desktop kapcsn esik sz.

Inicializl szkriptek: Startup Tasks


Ahogy a fejezetben korbban mr olvashattad, kt f szerepkrtpus ltezik (web s worker role), az Azure pedig a tpus alapjn elkszti a Windowst (pldul web role esetn telepti az IIS -t). Elfordulhat azonban, hogy olyan belltsokat is meg kell tenned a gpen, amiket az Azure magtl nem vgez el, a szerepkrk belltsi lehetsgei pedig nem tesznek lehetv ilyen pldul valamilyen kls szoftver teleptse vagy egy Registry-bellts. Ilyenkor jn jl a Startup Task lehetsg. Egy Startup Task gyakorlatilag egy parancssori hvs. Az itt szerepl a parancsot az Azure a szerepkr minden pldnynak indulsakor kiadja. A parancs elindthat egy EXE fjlt (pldul valamilyen teleptt), futtathat egy batch fjlt vagy egy PowerShell szkriptet, mdosthatja a Registryt stb. Mindezek radsul rendszergazdai mdban is futtathatk, teht az gy futtatott szkript szinte brmit megtehet a gpen. Nzzk egy egyszer pldn keresztl, hogy hogyan helyezhetsz el egy Startup Task -ot egy szerepkrben! A Visual Studiban nyiss meg egy Azure-os megoldst, pldul a korbban ltrehozott HelloAzure alkalmazst! Kattints jobb gombbal a HelloAzure.WebRole projektre, s adj hozz egy j Text File tpus elemet startup.bat nven! Mivel a fjl kiterjesztse .bat, ezrt a fjl nem szvegfjlknt fog ltrejnni, hanem batch fjlknt. Ezt futtatjuk majd le a Startup Taskbl.
Ebben a konkrt pldban egy batch fjlt hvunk meg a Startup Taskbl, de ugyanezzel a mechanizmussal a batch fjl helyn egy EXE fjl, egy Registry fjl (.reg), egy PowerShell fjl stb. is llhatna.

Tltsd fel a batch fjlt nhny plda-paranccsal, amivel tesztelheted majd, hogy tnyleg lefut -e! 143

9. PaaS Felhszolgltatsok rd a kvetkezket a startup.bat fjlba:


REM Azure Startup Task C: cd / mkdir Temp cd Temp echo Startup Task lefutott: %date% %time% > AzureTest.txt

A kvetkez lpsben gondoskodnod kell rla, hogy az elkszlt startup.bat fjlt az Azure a felhbe teleptend csomag rszeknt kezelje. Ehhez jelld ki a fjlt a Solution Explorer ablakban, majd a fjl tulajdonsgai kztt a Copy to Output Directory tulajdonsgot lltsd Copy Always-re (9-13 bra).

9-13 bra: A Copy to Output Directory tulajdonsg belltsa

Ezzel elkszlt a Startup Taskban fut fjl. Most ksztsk el magt a Startup Task -ot is! Ez a bellts egyelre mg nem kerlt ki a szerepkr-tulajdonsglapra, ezrt kzzel szerkeszteni kell hozz a szerepkrt ler XML fjlokat. Az Azure metaadatprojektben (HelloAzure) kattints dupln a ServiceDefinition.csdef fjlra. A Startup Task defincinak ebbe a fjlba kell kerlnie, a webes szerepkrt ler <WebRole> elemen bellre (mondjuk a </WebRole> sor fl). rd ide a kvetkezket:
<Startup> <Task commandLine="startup.bat" executionContext="elevated" taskType="simple"></Task> </Startup>

A commandLine paramter adja meg a lefuttatand parancsot. A szerepkrprojekten bell lv fjlokra relatv hivatkozssal is lehet hivatkozni, mint ahogy az itt is trtnik. Az executionContext paramter dnti el, hogy milyen felhasznl nevben fusson a Startup Task limited esetben egy kznsges Windows-felhasznl futtatja majd, elevated esetben teljes rendszergazdai jogai lesznek. A taskType paramter azt adja meg, hogy a Startup Task futtatsa hogy viszonyuljon a szerepkr -pldny tbbi rsznek a futtatshoz. Ha ez simple, akkor az Azure csak a Startup Task lefutsnak befejezte utn indtja a szerepkr-pldny kdjt (pl. az IIS weboldalt, vagy a worker role kdot), ha pedig background vagy foreground, akkor a Startup Task kdja s a szerepkr-pldny kdja egymssal prhuzamosan futnak majd. Teleptk esetn rtelemszeren a simple tpust rdemes hasznlni. Tbb <Task> sor egyms utn rsval egy szerepkrbe tbb Startup Task is elhelyezhet. Teszteld a Startup Task mkdst, indtsd be az alkalmazsodat! Helyes mkds esetn a C: meghajtn ltrejn egy Temp knyvtr, benne egy AzureTest.txt fjllal, ami azt tartalmazza, hogy pontosan mikor futott le a Startup Task.

144

9. PaaS Felhszolgltatsok

J tudni rla, hogy a legtbb teleptmotor rendelkezik n. Silent vagy Unattended kapcsolval. Ez azt jelenti, hogy a legtbb alkalmazs teleptje meghvhat egy specilis parancssori argumentummal, aminek hatsra nem jelenik meg a tipikus Next-Next-Finish prbeszdpanel, hanem a telept magtl lefut, azaz Startup Task -bl is hasznlhat. Ha valamilyen programot szeretnl telepteni, nzz utna, hogy az adott program ltal hasznlt teleptnl hogy nevezik ezt a kapcsolt!

A Startup Taskok segtsgvel teht szleskren testre tudod szabni a virtulis gpeket. Van azonban kt megkts a Startup Taskok hasznlata sorn: A kvnt testreszabsi mveletnek olyannak kell lennie, amit egy szkript el tud vgezni. Ha pldul egy telept mindenkppen ignyli az emberi beavatkozst, nincs benne Silent kapcsol, akkor azt egy Startup Task nem tudja majd feltelepteni. Az Azure-ba feltlthet csomagok mrete jelenleg 600 megabjtban van korltozva, gy pl. egy kt gigabjtos teleptt nem tudsz felkldeni a szerepkr rszeknt. Ha kikerlhetetlenl beletkzl ezekbe a korltokba, akkor rdemes rajta elgondolkodni, hogy egy IaaS virtulis gp (ld. a knyv korbbi rszben) nem alkalmasabb-e az adott feladat elvgzsre. Az IaaS virtulis gpekre a hagyomnyos tvoli asztali kapcsolattal rcsatlakozhatsz, kzzel elvgezheted a kvnt testreszabsokat, a gp pedig perzisztens, gyhogy meg is rzi azokat. (Persze az IaaS gpek nem rendelkeznek a PaaS elnyeivel, gymint az egyszer sklzs, verzivlts s gy tovbb.)

Belltsok
Gyakran szksg lehet r, hogy valamilyen belltsokat (pl. connection string-eket) ne az alkalmazs kdjban, hanem azon kvl, egy konfigurcis llomnyban trolj. Erre mr idig is ott volt a web.config vagy app.config fjl (.NET alkalmazsok esetn). Az Azure-ban ezek termszetesen tovbbra is mkdkpes lehetsgek, de mivel ezek az adott Visual Studio projekt rszei, ezrt rszv vlnak az Azure-ba teleptett csomagnak, s futsi idben nem lehet rajtuk vltoztatni (illetve lehet, csak a vltoztatsok az adott gp megsznsekor szintn elvesznek, teht nem perzisztens ek arrl nem is szlva, hogy ha tbb szerepkr-pldnyod van, akkor mindegyiken egyesvel kell elvgezni a vltoztatgatst). Az Azure azonban lehetsget biztost arra, hogy olyan belltsokat hozz ltre, amik szintn hozzfrhetk kdbl, perzisztensen megvltoztathatk futsi idben az alkalmazs jrateleptse nlkl, s szerepkrszintek (vagyis egy helyen kell ket megvltoztatni, s az sszes szerepkr-pldny ltja a vltozst). Ezek ltrehozshoz kattints a szerepkr tulajdonsglapjnak Settings flre. Ott vehetsz fel ilyen nv-rtk prokat (illetve ha kivlasztod a Connection String belltst, akkor Azure Storage connection string -eket is eltrolhatsz ide ezek bersban mg egy tallz gomb is segt). Kdbl a RoleEnvironment osztlyon keresztl frhetsz hozzjuk. Telepts utn pedig ezek a belltsok a Cloud Service tulajdonsglapjnak Configure fln vltoztathatk meg.

Opercis rendszer verzijnak megadsa


Nhny esetben szksges lehet megadnod, hogy az Azure ltal ltrehozott szerepkr-pldnyok pontosan melyik Windows-verzin (2008, 2008 R2 vagy 2012) fussanak. Azure PaaS esetn a verzikezels a kvetkezkppen trtnik: Megadhatod, hogy melyik OS verzin szeretnd futtatni a gpedet (2008, 2008 R2 vagy 2012). Minden OS verzibl kb. havonta j image-et kszt az Azure csapat, amik tartalmazzk az pp aktulis patcheket s mdostsokat. Amikor valamelyik OS verzihoz megjelenik az j image, akkor az adott OS verzit futtat virtulis gpeket frissti az Azure az j vltozatra. Ezzel garantlja azt, hogy az opercis rendszer patchelse, biztonsgi frisstse stb. folyamatosan napraksz. (A frissts sorn lsd ksbb az Azure termszetesen megoldja, hogy a folyamat miatt az alkalmazsod ne lljon le.) Eldntheted, hogy kred-e ezt az automatikus frisstst, vagy pedig szeretnl megllni egy jl ismert, ltalad tesztelt OS image verzinl.

145

9. PaaS Felhszolgltatsok Ezt a kt belltsi lehetsget (vagyis a hasznlni kvnt OS verzit, s az azon bell hasznlni kvnt image-verzit vagy automatikus frisslst) nem ktelez belltanod, de igny esetn megteheted. Ehhez kattints dupln Azure-megoldsod (pldul a HelloAzure alkalmazs) Azure metaadatprojektjben a ServiceConfiguration.Cloud.cscfg fjlra. Itt a <ServiceConfiguration> elem attribtumaknt tudod felvenni az osFamily s osVersion tulajdonsgokat. Az osFamily attribtum lehetsges rtkei 1, 2 s 3: ezek felelnek meg a Windows 2008, 2008 R2 s 2012 opercis rendszer csaldoknak. Az osVersion automatikus frissts esetn * kell, hogy legyen, egybknt pedig a kvnt image verzi neve (amit a MSDN knyvtrban publikl az Azure csapat). Egy lehetsges kitlts:
<ServiceConfiguration serviceName="HelloAzure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="3" osVersion="*" schemaVersion="2012-10.1.8"> ... </ServiceConfiguration>

szreveheted, hogy a ServiceConfiguration.Cloud.cscfg fjl mellett egy ServiceConfiguration.Local.cscfg fjl is ltezik, meglehetsen hasonl tartalommal. A kt fjl jelentsrl ksbb, az Azure-alkalmazsok felhbe val teleptst bemutat szakaszban lesz sz.

Cloud Service-ek a felhben


A telepts menete
A fejezet eddigi rszben megismerted a Cloud Service-ek felptst, fontosabb tulajdonsgait. Lthattad, hogy az emultor segtsgvel hogyan lehet ezeket helyben tesztelni. Nzzk meg, hogyan tudod Cloud Service-eidet telepteni a felhbe! Ehhez termszetesen szksged lesz egy Azure-elfizetsre. Az elfizets beszerzsvel kapcsolatos lpsekrl lsd a 4. fejezetet! Els lpsknt ltogass el az Azure menedzsment portljra ( http://manage.windowsazure.com), s jelentkezz be a Microsoft Accountoddal! Bal oldalt kattints a Cloud Services kategrira (9-14 bra)!

146

9. PaaS Felhszolgltatsok

9-14 bra: A Cloud Services kategria az Azure portlon

Lehetsges, hogy a Cloud Services alatt mr tallsz bejegyzseket akkor is, ha korbban mg egyltaln nem teleptettl PaaS alkalmazsokat Azure-ba. Ennek oka, hogy amikor az Azure-ban ltrehozol egy virtulis gpet, akkor az Azure lefoglal szmra egy DNS nevet (pldul valami.cloudapp.net), majd miutn ezt a virtulis gpet letrld, ez a DNS nv foglals htramarad egy res Cloud Service formjban. Ha ilyen res bejegyzseket ltsz, nyugodtan trld le azokat! j Cloud Service ltrehozshoz kattints a bal als sarokban lv New gombra, majd a Quick Create opci segtsgvel hozd ltre a Cloud Service-t! Mindssze a Cloud Service nevt (amely egyben a DNS nv is lesz), rgijt s elfizetst kell megadnod (9-15 bra). A Cloud Service resen jn ltre, ksbb kerl bele tartalom.

9-15 bra: j Cloud Service ltrehozsa

147

9. PaaS Felhszolgltatsok Miutn ltrejtt a szolgltats, kattints r a nevre, hogy belpj a tulajdonsglapjra (9-16 bra)!

9-16 bra: Egy Cloud Service tulajdonsglapja

A tulajdonsglap tetejn tbb flet is tallsz (Dashboard, Monitor, Configure stb.). Jelenleg a Dashboard fl van kivlasztva, amin bell kt tovbbi lap is lthat (Production, Staging). Ezek az gynevezett slotok. A Cloud Service regisztrcijakor megadtl egy nevet (a fenti pldban ez azurekonyv). Az Azure ennek hatsra lefoglalta a szolgltats szmra az azurekonyv.cloudapp.net DNS nevet. Ha a Production slot-ba feltltesz egy Azure-alkalmazst, akkor az alkalmazs e DNS nv mgtt lesz majd elrhet, teht az alkalmazsban megadott klnfle portok a DNS nv portjaiknt lesznek hozzfrhetk. A Staging slot tesztelskor vagy verzifrisstskor nagyon hasznos. Ebbe is feltlthetsz egy alkalmazs verzit, ami sajt, teljesrtk gppldnyokat kap majd, ugyangy fizets, mint a Production slot lakja azonban a Staging slotba kerl alkalmazsverzi egy vletlenszer elre nem kitallhat DNS nvvel rendelkezik majd, pldul 7f8e1d5bd73a4f7ea9ebd65a02ee195d.cloudapp.net. Ennek megfelelen te, mint az Azure-elfizets rendszergazdja, hozzfrsz az adott alkalmazshoz (hiszen ltod az URL -t a portlon), kls felhasznl azonban nem, hiszen szmra ez az URL nem kitallhat. A kt slot tartalma a portlon lthat Swap gomb segtsgvel megcserlhet. A csere sorn tnylegesen nem mozognak virtulis gpek, egyszeren az Azure klnfle hlzati eszkzein mdosulnak belltsok, gy aztn a csere nagyon gyors (jellemzen msodpercek alatt megtrtnik). Ennek a kpessgeknek ksznheten a Staging slot egyrszt alkalmas tesztelsre felrakhatod alkalmazsod egy verzijt az les felhbe gy, hogy rajtad kvl senki nem lthatja azt , msrszt verzifrisstsre az alkalmazs j verzijt telepted a Staging slotba, alaposan kitesztelheted, majd a Swap gombbal nhny msodperc alatt kipubliklhatod az les zemi krnyezetbe.
A verzifrissts krdsrl mg ksbb rszletesebben lesz sz a fejezetben.

A slotokba tbbflekppen is feltltheted az elkszlt Azure-alkalmazsodat: Mind a Visual Studio, mind az sszes tbbi tmogatott fejlesztkrnyezet (pldul Eclipse) kpes Azure csomagokat generlni (.cspkg kiterjeszts). Egy ilyen Azure-csomag tartalmazza a teljes alkalmazsodat. A csomag elksztse utn elltogathatsz a portlra, ahol a portl aljn lv Upload gomb segtsgvel feltltheted a .cspkg fjlt. Az Azure ezt kicsomagolja, megkeresi a

148

9. PaaS Felhszolgltatsok benne lv szerepkrket, majd ezekbl elkszti a kvnt pldnyokat. Ennek az opcinak az az elnye, hogy minden Azure-fejlesztsre kpes keretrendszer tmogatja, st, egy .cspkg fjl akr mindenfle fejlesztrendszer nlkl is barkcsolhat az Azure SDK rszeknt rkez ingyenes CSPack parancssori eszkz segtsgvel. Htrnya, hogy fapados, a csomag generlsa utn mindig be kell jelentkezni a portlra s kzzel elvgezni a feltltst. A .cspkg fjl nem csak kzzel tlthet fel. Az Azure rendelkezik egy menedzsment API-val is, amin keresztl PowerShellbl vagy programkdbl lehet parancsokat kiadni. A legtbb parancs, amit az Azure menedzsment portljn keresztl grafikusan kiadhatsz, kiadhat programnyelvbl is. Ennek megfelelen a .cspkg csomagok feltltse automatizlhat is, pldul megoldhat az, hogy jflkor mindig feltlts egy batch-feladatok feldolgozst vgz Azure-alkalmazst, s hajnali kettkor letrld. Knyvnk terjedelmi korltai miatt a PaaS PowerShell parancsok s a REST API ismertetsre nem kerl sor, ezekrl az Azure.com dokumentcijban olvashatsz. Visual Studio hasznlata esetn sszekapcsolhatod Visual Studio pldnyodat s az Azure menedzsment portlt, majd ezutn kzvetlenl a Visual Studibl, egy varzsl felletn keresztl publiklhatod alkalmazsodat. Ez a leginkbb felhasznlbart s legtbb belltst lehetv tv megolds, ezrt a fejezetben ezzel ismerkednk meg. Nzzk vgig a publikls folyamatt! Nyisd meg a Visual Studit, s hozz ltre egy Windows Azure Cloud Service tpus projektet! A projekt neve legyen HelloPublishing.Cloud (ebbl lesz az Azure metaadatprojekt)! Amikor a Visual Studio rkrdez, vegyl fel a projektbe egy ASP.NET Web Role tpus szerepkrt, amit nevezz el HelloPublishing.Web-nek (9-17 bra)!

9-17 bra: A ltrejtt projektek

Az alkalmazs publiklshoz kattints jobb gombbal a HelloPublishing.Cloud projektre, s vlaszd a Publish opcit (9-18 bra)! A helyi menben tallsz egy Package opcit is. Ezzel tudod legenerlni a korbban mr emltett .cspkg fjlokat, amelyeket utna kzzel feltlthetsz a felhbe. Most nem ezt a megoldst hasznljuk, olvass tovbb!
Ha a HelloPublishing.Web projektre kattintasz jobb gombbal, akkor is tallsz publiklsi lehetsgeket, Publish s Publish to Windows Azure nven. Az els opci (Publish) a kznsges ASP.NET webes projektek publiklsra val varzslt hozza fel. Ez esetnkben nem j, hiszen mi ezt a projektet nem kznsges webes projektknt szeretnnk kzztenni, hanem Azure alkalmazsknt. A msodik opci (Publish to Windows Azure) ezt a webes projektet tenn gy Azure -alkalmazss, hogy mellrakna egy Azure metaadatprojektet. Ez flsleges lenne, hiszen a HelloPublishing.Web mr rsze egy Azurealkalmazsnak, eleve gy hoztuk ltre.

149

9. PaaS Felhszolgltatsok

9-18 bra: A Publish menpont a HelloPublishing.Cloud projekt helyi menjben

Miutn rkattintottl a HelloPublishing.Cloud projekt helyi menjben lv Publish parancsra, megjelenik az Azure-alkalmazsok publiklst vgz varzsl (9-19 bra).

9-19 bra: Azure-publikl varzsl, els oldal

A varzsl els oldaln kell kivlasztanod, hogy melyik elfizetsedbe szeretnl publiklni. Ez a lista valsznleg res lesz, mert a Visual Studio s az Azure-elfizetsed mg nincs sszekapcsolva. Az sszekapcsols elvgzshez kattints a varzsl tetejn lv Sign in to download credentials linkre, amely megnyit egy bngszablakot. A bngszablakban be kell jelentkezned, ezutn a weboldal egy .publishsettings kiterjeszts fjlt knl majd fel letltsre. Ezt a fjlt mentsd el, majd a varzslba visszatrve tltsd be az Import gomb segtsgvel! Miutn ezt megtetted, az elfizetsek listjban megjelennek az adott Microsoft Account szmra hozzfrhet elfizetsek, melyekbe ettl a pillanattl kezdve publiklhatsz.

150

9. PaaS Felhszolgltatsok

A httrben tanstvnymveletek trtnnek. Ahogy korbban mr olvashattl rla, az Azure rendelkezik egy menedzsment API-val, aminek parancsok adhatk ki. A Visual Studio ezt az API-t hasznlja akkor, amikor publiklja az alkalmazsodat. Az API-hoz gy lehet programbl hozzfrni, hogy a megcmzett elfizetsbe elszr kzzel fel kell tltened egy tanstvnyt (egsz pontosan annak a publikus kulcst), mikzben a tanstvny privt kulcst megrzd. A ksbbiekben pedig ezzel a privt kulccsal tudod igazolni, hogy jogosult vagy hozzfrni az adott elfizetshez. A fenti lpsnl gyakorlatilag az trtnt, hogy automatikusan ltrejtt egy tanstvny a sajt gpeden, ennek publikus kulcsa pedig bekerlt az sszes elfizetsedbe. Innentl kezdve a Visual Studio ezzel a tanstvnnyal igazolja majd, hogy jogosult hozzfrni az elfizetseidhez, ezrt a ksbbiekben gy tudsz majd publiklni a fejlesztkrnyezetbl, hogy nem kell mg egyszer bejelentkezned. A ltrejtt menedzsment tanstvnyokat (management certificate) meg is tekintheted: ltogass el az Azure menedzsment portlra, kattints a Settings kategrira s ezen bell vlaszd ki a Management Certificates flet. Itt ltod majd az elfizetseidben meglv tanstvnyokat; magad is tlthetsz fel jat, vagy trlhetsz egy meglvt.

Miutn kivlasztottad azt az elfizetst, amelybe publiklni szeretnl, kattints a Next gombra! Megjelenik a varzsl kvetkez oldala (9-20 bra).

9-20 bra: Azure-publikl varzsl, msodik oldal

A varzslban a kvetkez tulajdonsgokat vlaszthatod ki: Cloud Service: Az a Cloud Service, ahov publiklni szeretnl. Environment: A kvnt slot ez a fejezetben korbban olvasottaknak megfelelen lehet Production vagy Staging. Build configuration: Ez a ms Visual Studio projekteknl is ismert bellts, megadja, hogy a fordt Release vagy Debug mdban fordtsa-e le a kdodat. Service configuration: A hasznlni kvnt belltskszlet. Az Azure metaadatprojektben megadott belltsokbl tbb kszletet is fenntarthatsz, amelyekbl az egyiket pldul les teleptskor, a msikat helyi tesztelskor hasznlhatod. A kszletek segtsgvel nem kell minden egyes alkalommal tszerkesztened egy sor belltst, csak magt a hasznlt kszletet kell tlltanod. Ezek kezelsre, a kztk val vltogatsra a szerepkrk tulajdonsglapjainak tetejn van lehetsged (9-21 bra).

151

9. PaaS Felhszolgltatsok A publikcis varzslnak ezt az opcijt csak akkor kell megvltoztatnod, ha hasznlod a bellts kszleteket.

9-21 bra: A belltscsomagok kezelsre val vezrlelemek

Enable Remote Desktop for all roles: Ezzel az opcival engedlyezheted, hogy a gpekre tvoli asztali kapcsolattal (Remote Desktop Connection vagy RDP) lehessen csatlakozni. Ennek segtsgvel hozzkapcsoldhatsz egy tvoli Windows gphez, aminek a kpt sajt monitorodon ltod, vezrlst pedig sajt egereddel s billentyzeteddel vgezheted. Noha az Azure PaaS egyik f erssge ppen az, hogy az egyes gpek menedzsmentjvel nem kell bajldnod, tesztelskor vagy fejleszts kzben mgis gyakran jl jn, ha kzvetlenl r tudsz nzni a fut gppldnyokra. Az opcit bejellve megjelenik egy jabb ablak (9 -22 bra), ahol megadhatod, milyen felhasznlnvvel s jelszval szeretnl csatlakozni a gpekre. Itt nem egy ltez felhasznlnv jelsz prost vr az Azure, hanem annak az jonnan ltrehozand Windows -felhasznlnak az adatait kell bernod, amit az Azure majd felvesz a gpeiden.

9-22 bra: Remote Desktop belltsok megadsa

Enable Web Deploy for all web roles (requires Web Deploy): Ha ezt a belltsi lehetsget engedlyezed, akkor a web role-jaid kdjt a Visual Studiban megtallhat Web Deploy funkcival is frissen tarthatod. Ez gyakorlatilag felmsolja a Web Role kdjnak j verzijt kzvetlenl a tvoli gp merevlemezre. Tesztelshez hasznos szolgltats, mert segtsgvel azonnali mdon tudsz telepteni j kdverzit, azonban les hasznlatra nem ajnlott. Ahogy a fejezetben korbban mr sz volt rla, az Azure szerepkr-pldnyok brmikor jrateleptsre kerlhetnek pldul egy Azure-on belli verzivlts, vagy hardverhiba miatt , s ilyenkor az Azure a gppldnyt az eredetileg teleptett receptbl hozza ltre, az utlagos vltoztatsokat (pldul Web Deployjal felmsolt kdverzik) nem veszi figyelembe. A varzslnak van egy Advanced Settings fle, ez ritkbban hasznlt belltsokat tartalmaz, melyekre itt nem trnk ki ksbb mg lesz rluk sz.

152

9. PaaS Felhszolgltatsok A belltsok megadsa utn kattints a Next gombra! A varzsl megjelent egy sszefoglal oldalt (9 -23 bra).

9-23 bra: Azure-publikl varzsl, sszefoglal oldal

Kattints meg a Publish gombra! A Visual Studio hozzlt az alkalmazs sszecsomagolshoz s publiklshoz. Alul megjelenik egy jabb ablak, ami a folyamat elrehaladsrl tjkoztat (9 -24 bra). Az ablakban egyetlen sor lesz; a bal oldaln tallhat nyllal (a 9-24 brn jellve) kinyithatod a sort, hogy a publikls sorn keletkez esemnyeket is megtekinthesd.

9-24 bra: A publikls llapott mutat ablak

A publiklst megelzen az Azure elemzst vgez a szerepkrkn. Az emultor nem tkletes (nem is lehet az hiszen egy Azure-adatkzpontot nem lehet tkletesen emullni egy laptopon), ezrt elfordulhat, hogy az alkalmazs helyben ugyan mkdik, de a felhben nem. Az elemzs azokat a pontokat igyekszik megtallni, amiktl egy helyben mkd alkalmazs a felhben nem mkdne. Tipikus problmk: rvnytelen connection stringek: mind SQL, mind Azure Storage connection stringek mutathatnak helyi erforrsokra (loklis SQL szerverre, Azure Storage emultorra), amik az les felhbl termszetesen nem lesznek elrhetk. Az ellenrzs kiszri az ilyeneket.

153

9. PaaS Felhszolgltatsok rdekessg, hogy a gyri web role sablon rgtn tartalmaz is egy loklis SQL Express -re mutat connection stringet, ezrt ha az alaprtelmezett web role-t trs nlkl telepted, akkor is egy ilyen elemzsi hibt kapsz. Ettl nem kell megijedni: mivel ez a connection string tnylegesen nincs hasznlva, ezrt nem okoz majd semmilyen problmt a mkds sorn. Jelen nem lv DLL fjlok: az Azure gppldnyokon termszetesen megtallhat a .NET Framework s az Azure SDK. Azonban ha alkalmazsodban valamilyen msik microsoftos SDK -t, vagy esetleg egy harmadik fl ltal rt knyvtrat hasznlsz, akkor megeshet, hogy az alkalmazsod ltal hivatkozott DLL fjlok helyben megvannak, a felhben viszont hinyzik a megfelel SDK. Ilyenkor az alkalmazs a felhben egy olyan DLL-t prblna betlteni, ami nincs jelen. Az elemzs szreveszi az ilyen eseteket, s figyelmeztet arra, hogy az adott DLL -t az alkalmazs rszv kell tenni. Ehhez a References mappban ki kell vlasztani a DLL-t, s Copy Local tulajdonsgt Truera kell lltani (9-25 bra). Ennek hatsra a Visual Studio teleptskor belemsolja az alkalmazs fjljaiba a DLL-t.

9-25 bra: DLL hivatkozs Copy Local tulajdonsgnak belltsa

Az elemzs ltal tallt problmkat ha vannak ilyenek a View Warnings linkre kattintva tudod megtekinteni (lsd a 09-24 brn bell). A telepts az alkalmazs mrettl, az adatkzpont aktulis terheltsgtl stb. fggen 5-15 perc alatt trtnik meg. A folyamat sorn a Visual Studio lefordtja s sszecsomagolja az alkalmazst, feltlti az Azure-ba, majd ltrehozza a kvnt darabszm s mret virtulis gpet, belltja az Azure klnfle hlzati eszkzeit s gy tovbb. A telepts addig tart, amg valamennyi komponens mkdkpess nem vlik, s gy telepts utn az alkalmazs rgtn hasznlhat is. A telepts vgn a Windows Azure Activity Log ablakban a Website URL cmke alatt meg is jelenik az alkalmazs linkje, amire rgtn r is kattinthatsz, s megcsodlhatod jdonslt felhalkalmazsodat (9 -26 bra).

9-26 bra: A teleptett Cloud Service

154

9. PaaS Felhszolgltatsok Esetnkben a telepts ennyi volt. Ha ksbb ugyanebbl az alkalmazsbl szeretnl jabb verzit publiklni, akkor ugyanezt a varzslt hasznlhatod, de a szksges kattintsok szma jval alacsonyabb lesz, mert a Visual Studio termszetesen megjegyezte a korbban megadott belltsokat. Bonyolultabb alkalmazsnl persze tovbbi lpsekre is szksg lehet. Amennyiben pldul alkalmazsod HTTPS vgpontokkal dolgozik, akkor tanstvnyokat is hasznl, s ezeket a menedzsment portlon keresztl kln fel kell tlteni (errl lsd kvetkez szakasz). Ha az alkalmazs SQL adatbzist vagy egyb kls erforrst vesz ignybe, akkor ezeket termszetesen kln kell felkszteni a publiklsra, verzivltsra.

Cloud Service-ek az Azure menedzsment portlon


Nzzk, hogy a teleptett alkalmazs hogyan jelenik meg a portlon! Nyisd meg az Azure menedzsment portlt (http://management.windowsazure.com), s a bal oldalon vlaszd ki a Cloud Services kategrit! Lthatod, hogy a korbban ltrehozott res Cloud Service -ed Production slotjba bekerlt a frissen felteleptett alkalmazs (9-27 bra).

9-27 bra: A felteleptett alkalmazs Cloud Service-e a portlon

Lpj be a Cloud Service tulajdonsglapjra! Kattints a nevre, amely sttebb sznnel jelenik meg, s a jobb oldaln egy nylgomb van, amint az a 9-27 bra is mutatja (azurekonyv)! A tulajdonsglapon egy dvzlkperny fogad. A tovbbi lapokra (pl. Dashboard, Monitor, Configure stb.) ezek nevre kattintva vlthatsz t. Kattints a Dashboard flre (9-28 bra)!

155

9. PaaS Felhszolgltatsok

9-28 bra: A Dashboard fl egy Cloud Service tulajdonsglapjn

A Dashboard fln lthatk a Cloud Service fbb tulajdonsgai. A Dashboard felirat alatt lthat Production s Staging lapok segtsgvel vlthatsz a kt slot kztt. Ha tvltasz a Staging slotra, ltni fogod, hogy az jelenleg res. Az oldal aljn lv gombok segtsgvel klnfle mveleteket vgezhetsz el a Cloud Service -zel: A Stop gomb segtsgvel megllthatod a kivlasztott slotban lv alkalmazst. Ez a mvelet nem trli a virtulis gpeket, azok tovbbra is ott maradnak az Azure-ban (csak nem lesznek elrhetk). Ez azt jelenti, hogy a Stopped llapotban lv alkalmazsokrt is kell fizetni, hiszen tovbbra is foglaljk az adatkzpont erforrsait! Az Update segtsgvel frisstst vgezhetsz el, vagy az alkalmazs egy j verzijt tltheted fel a Cloud Service-be. A verzivltsra kt lehetsg is ltezik: egyik a korbban mr ismertetett Production-Staging slot-csere, a msik pedig az Upgrade, amikor az j verzival fellrod a korbbi vltozatot. A kt frisstsi lehetsgrl a fejezet kvetkez szakaszban tudhatsz meg tovbbi rszleteket. A Swap gomb segtsgvel a mr tbbszr emltett Production-Staging slotok kzti csert vgezheted el. A Delete gomb segtsgvel pedig letrlheted valamelyik slot tartalmt, illetve magt a teljes Cloud Service-t is. Ha valamelyik slot tartalmt trld, akkor a benne lv virtulis gpek (a Stop funkcival ellenttben) tnylegesen trldnek is, s a ksbbiekben mr nem kell fizetni rtk. A kvetkez a Monitor fl. Az Azure klnfle teljestmnyadatokat gyjt a szerepkrpldnyokrl, s ezeket egy kzponti helyen sszegyjtve megjelenti. Ennek a szolgltatsnak a segtsgvel nyomon kvethet pldul egy hsz pldnnyal rendelkez szerepkr tlagos CPU -terheltsge, vagy begyjthetk a gpeken keletkez ASP.NET hibk stb. A Monitor fln ennek a szolgltatsnak a kimenete tekinthet meg grafikus formban, illetve az Add Metrics gomb segtsgvel bellthat, hogy milyen teljestmny-szmllkat (pldul CPU, memria s gy tovbb) figyeljen. A szolgltats nemcsak a portlon keresztl, hanem kdbl is konfigurlhat, bvebb megismershez lsd a Naplzs: Azure Diagnostics szakaszban, a fejezet ksbbi rszben. A Configure fln a szerepkrk belltsait vltoztathatod meg. Az itt lthat belltsok azok kzl kerlnek ki, amiket a Szerepkrk tulajdonsgai szakaszban korbban olvashattl (pldul opercis

156

9. PaaS Felhszolgltatsok rendszer, tanstvnyok stb). Nem minden tulajdonsg vltoztathat meg futsi idben. Ezen a fln rtelemszeren csak a futsi idben varilhat tulajdonsgokhoz frsz hozz. A Scale fln (9-29 bra) llthatod a Cloud Service szerepkreinek pldnyszmt. A csszkt maximum 20 processzormagig tudod felhzni (azaz egyszerre maximum 20 Small , vagy 10 Medium, vagy 5 Large stb. pldnyod lehet). Ez a korltozs azonban mestersges: ha egy komoly alkalmazshoz tbb, mint 20 magra van szksged, egyszeren rj az Azure Supportnak, akik megemelik a limitet! A gpek pldnyszma futsi idben is szabadon mdosthat, felfel s lefel is. Az Azure magtl nem vgez sklzst, nllan azonban ez megvalsthat, s szmos eszkz ltezik r. Errl lsd a Sklzs szakaszt nhny oldallal ksbb!

9-29 bra: A Scale fl egy Cloud Service tulajdonsglapjn

Az Instances fln (9-30 bra) van lehetsged megnzni a szerepkr-pldnyokat, azaz a konkrt virtulis gpeket.

157

9. PaaS Felhszolgltatsok

9-30 bra: Az Instances fl egy Cloud Service tulajdonsglapjn

Az oldal aljn tallhat gombokkal a gpeken vgezhetsz mveleteket. A Stop, Update, Swap s Delete gombok jelentsrl a Dashboard flnl mr volt sz. Ezek a gombok a teljes alkalmazsra vonatkoznak (vagyis pl. a Delete gomb nem egy virtulis gpet trl, hanem az egsz alkalmazst). A Connect, Reboot s Reimage gombok viszont csak az Instances fln rhetk el, s gpenknt fejtik ki a hatsukat. A Connect gomb segtsgvel csatlakozhatsz egy virtulis gpre. Ez csak akkor rhet el, ha a gp publiklsakor konfigurltad a Remote Desktop kapcsolatot. A Remote Desktop krdseirl lsd bvebben a fejezet ksbbi rszben a vonatkoz szakaszt! A Reboot gomb rtelemszeren jraindtja az adott gpet. A Reimage gomb hatsra ped ig az Azure jratelepti a megadott gppldnyt tesztels kzben megsrlt, vagy elkonfigurlt Windows -ok gyors helyrelltsra hasznos. A Linked Resources fln hozzrendelhetsz SQL Database pldnyokat, vagy Storage Account -okat a Cloud Service-hez. Fontos azonban, hogy ez az sszekapcsols kizrlag vizulis. Az sszerendelt erforrsok csoportostva jelennek meg a portlon (a Cloud Service Dashboard fln ltszanak a hozzrendelt erforrsok), de nem ettl fgg, hogy a kdod kpes-e hasznlni azokat. A kdbl akkor is kommuniklhatsz egy SQL Database -zel, vagy Storage Account-tal, ha a Linked Resource szolgltatssal nincsenek hozzkapcsolva a Cloud Service -hez, s fordtva: hiba van Linked Resource-nak felvve egy SQL Database vagy Storage Account, ha a connection string rtkket hibsan adod meg kdban. Vgl, a Certificates fln a Cloud Service-hez tartoz tanstvnyokat tudsz feltlteni. Pldul ha az egyik szerepkr tulajdonsglapjn a Visual Studiban megadtad, hogy valamelyik endpointja HTTPS -t hasznljon egy tanstvnnyal, akkor az adott tanstvnyt itt tudod majd feltlteni a felhbe. A tanstvnyfeltlts kln mvelet, a Visual Studio automatikusan nem vgzi el, st, a Cloud Service teleptse hibval le is ll, ha egy olyan tanstvnyt akarnl hasznlni, amit elzleg nem tltttl fel az Azure -ba.

A verzifrissts lehetsgei
Az elz szakaszokban lthattad, hogy egy elkszlt felhalkalmazst hogyan tudsz a Visual Studio segtsgvel telepteni a felhbe, illetve feltlts utn mi lthat a Cloud Service tulajdonsglapjn. Logikus az a krds, hogy mi trtnik, ha alkalmazsodbl j verzit szeretnl publiklni? Az Azure erre kt klnbz megoldsi lehetsget nyjt.

158

9. PaaS Felhszolgltatsok Az els megolds a korbban mr emltett Production-Staging slotcsere. Ennek hasznlathoz alkalmazsod j verzijt az adott Cloud Service Staging slotjba kell publiklnod (mikzben a rgi verzi a Production slotban fut). A Staging slotban teljeskren letesztelheted az alkalmazst, mert az Azure annak teljes krnyezett kipti (azaz az sszes krt gppldnyt ltrehozza, az sszes tzfalszablyt belltja s gy tovbb), viszont az alkalmazs URL-je vletlenszer s gyakorlatilag kitallhatatlan lesz, gy a klvilgbl nem lehet hozzfrni. Miutn elgedett vagy az j verzi mkdsvel, a portlon a Swap gomb segtsgvel megcserlheted a Production s a Staging slot tartalmt. A csere egy nhny msodperces mvelet (mert tnylegesen nem mozognak szerverek, csak az Azure hlzati eszkzei llnak t). Amint ez megtrtnik, az gyfelek krsei mr rgtn az j gpekhez futnak be, s gy a verzifrissts lnyegben szolgltatskiess nlkl vgrehajthat. A rgi vltozat ami gy tkerl a Staging slotba pedig trlhet. Nha jl jhet, hogy a csere visszafel is mkdik: ha kiderl valamilyen last -minute hiba, akkor a kt slot rgtn vissza is cserlhet.
Fontos adalk, hogy az Azure mindssze azt garantlja, hogy a Staging slotban teljesrtk alkalmazs -krnyezetet pt ki, s ezt kpes gyorsan megcserlni a Production slottal. Az ezeken fell lv krdseket, mint pldul az SQL adatbzis cserjnek krdskrt, mr a fejlesztnek kell megoldania. Pldul ha az j verzit elszr egy tesztadatbzison akarod kiprblni, akkor clszer elszr egy olyan vltozatot feltlteni Stagingbe, amiben a tesztadatbzis connection stringje van, majd a prbk befejezse utn feltlteni egy les connection strin ggel rendelkez verzit a Stagingbe, s ezen vgrehajtani a csert. Ez a te feladatod, az Azure automatikusan nem gondoskodik rla.

Lnyeges az is, hogy slotcsere csak akkor hajthat vgre, ha az alkalmazson nem sok minden vltozott a kdjn kvl. Ha pldul j endpointokat nyitottl (azaz pl. a Production slot -ban ms portok vannak nyitva, mint a Staging slotban), akkor a slotcsere nem fog mkdni. A msodik verzifrisstsi megolds az Upgrade lehetsg. Egy Upgrade vgrehajtshoz egyszeren gy publiklj egy foglalt slotra, hogy a Deployment update opci be van kapcsolva. Ezt a lehetsget a publikls varzsl Settings oldaln, az Advanced Settings fln tudod ki-be kapcsolni (9-31 bra).

9-31 bra: A Deployment update opci a publiklsi varzslban

159

9. PaaS Felhszolgltatsok Ha az opci be van kapcsolva, akkor az Azure frisstst vgez. Ez azt jelenti, hogy vgighalad a gpeiden, s kln-kln frissti ket (rszletekrl lsd a kvetkez szakaszban az upgrade domain fogalmt). Maga a szolgltats vgig elrhet marad, hiszen minden idpillanatban lesz mkd gped, viszont a folyamat nem vonhat vissza gy, ahogy egy slot-csert vissza tudsz vonni. A slot-cserhez hasonlan az update lehetsg is csak akkor mkdik, ha nincsenek nagy vltozsok a verzik kztt. Ha a fenti kt lehetsg egyike sem mkdkpes, mert az alkalmazsodban vgrehajtott vltoztatsok miatt nem futnak vgig, akkor marad a harmadik megolds: egyszeren trlni kell az adott slot tartalmt, s jra feltelepteni bele az alkalmazst. Ez trtnik akkor is, ha egy foglalt slotra publiklsz, de nincs bekapcsolva a deployment update. Ebben az esetben semmilyen megkts nincs, az j verzi brhogy kinzhet, de ez a megolds termszetesen nhny percnyi szolgltats-kiesssel jr.

A hibakeress eszkzei
Hogy vigyz alkalmazsainkra az Azure?
Az Azure PaaS egyik nagy elnye, hogy mentest a hagyomnyos zemeltetsi feladatok nagy tbbsge all. Azt mr lthattad, hogy a telepts automatizlt: az Azure maga telepti fel a virtulis gpeket s rjuk az alkalmazst. Arrl is volt mr sz, hogy a fel-le sklzst is elvgzi az Azure: amennyiben megadod egy szerepkr kvnt pldnyszmt, a felh nllan ltrehozza vagy trli a szksges gpeket. Arrl viszont mg nem volt sz, hogy mi a helyzet a hibkkal. Annyi bizonyos, hogy minden rendszer meghibsodhat: a hardverek elromlanak, az opercis rendszerekben s futtatkrnyezetekben bugok vannak, s bizony megeshet, hogy mg a sajt kdod sem tkletes. A vletlenszeren bekvetkez hibkon kvl radsul mg a szoftverfrisstsekre is fel kell kszlni. Az Azure adatkzpontokon bell rendszeresen (nhny hetente) trtnnek verzifrisstsek a virtulis gpeken, illetve magad is publiklhatsz j szoftververzit (lsd az Upgrade lehetsget). Fontos azt is megoldani, hogy a szoftverfrisstsek se tegyk elrhetetlenn a szolgltatsodat. Az Azure a Fault s Update Domainek mechanizmusval vdekezik az ilyen hibk ellen. Amikor publiklsz egy Azure-alkalmazst, akkor minden szerepkr minden pldnya besorolsba kerl egy Fault s egy Update Domainbe. A besorols automatikusan zajlik, eredmnye megtekinthet az adott Cloud Service Instances fln (9-32 bra).

09-32 bra: Fault s Update Domain beoszts

Az Azure a szerepkrk pldnyait nll hardverkrnyezetekbe, gynevezett Fault Domainekbe helyezi el. Kt, klnbz Fault Domainben lv szerepkr-pldny kztt nincs osztott router, tpegysg stb. egy hardverhiba egyszerre csak egy Fault Domaint tud lednteni, vagyis alkalmazsodban hardver szempontjbl nem lesz Single Point of Failure. Ha egy szerepkrd legalbb 2 pldnyban fut, akkor az Azure garantltan legalbb 2 Fault Domainbe osztja szt a gpeidet. Ennl tbb pldny esetn pedig az Azure trekszik a minl tbb Fault Domainbe val sztosztsra. Emiatt a szerepkrk pldnyszma igen lnyeges: PaaS alkalmazsokra csak akkor jr a 99,95% -os rendelkezsrellsi garancia (SLA), ha minden szerepkr legalbb kt pldnyban fut. Ellenkez esetben az

160

9. PaaS Felhszolgltatsok Azure nem tudna minden szerepkrbl legalbb kt klnbz Fault Domainbe tenni pldnyokat, vagyis nagy lenne egy esetleges hardverhibval szembeni kitettsg. Ez azt is jelenti, hogy rdemes kevesebb, nagyobb pldny helyett inkbb tbb, kisebb pldnyt hasznlni. Kt Large pldny ugyanannyiba kerl, mint ngy Medium, viszont a ngy Medium pldny potencilisan ngy Fault Domainben is lehet, teht egy adott hiba a gpeid kisebb szzalkt rinti. Ha egy hardvermeghibsods trtnik, az Azure rzkeli azt, s a kiesett gpeket ptolja. Ilyenkor az ltalad korbban felteleptett alkalmazsverzibl j pldnyokat hoz ltre. A hardverhibt szenvedett gpeken trolt adatok elvesznek de ahogy a fejezetben korbban olvashattad, erre eleve szmtani kell Azure PaaS esetn, s minden adatot a gpeken kvl kell trolni (pl. SQL adatbzisban, Blob Storage -ban, stb). Ezek az adattrol szolgltatsok pedig sajt maguk biztostjk a bennk trolt adatok robusztussgt. Az Update Domain hasonl a Fault Domainhez, de nem hardverhibkhoz, hanem a frisstsekhez kapcsoldik. Amikor az adatkzponton bell valamilyen frissts zajlik (pldul az Azure PaaS gpek alatt fut Windowsok j verzija jtt ki, vagy te magad publikltl j verzit az alkalmazsbl az Upgrade lehetsggel), akkor egyszerre mindig egy Upgrade Domain gpei kerlnek lelltsra. Ez garantlja, hogy ha legalbb kt gppldnyod van minden szerepkrbl, akkor a verzifrisstsek alatt is elrhet marad a szolgltatsod. A Fault s Upgrade Domainek teht csoportokra osztjk a gpeket s biztostjk, hogy hardverhibk, illetve szoftverfrisstsek esetn egyidejleg a gpeidnek csak egy rsze de sohasem az sszes legyen rintett. Szoftverhiba esetn pedig az Azure egy helyrelltsi folyamaton halad vgig, amely nagy vonalakban az albbi: Az Azure jraindtja az adott gpen az alkalmazst (pl. Web Role esetn az IIS -t). Ha a problma tovbbra is fennll, az Azure jraindtja az adott virtulis gpet. Ha a problma tovbbra is fennll, az Azure eldobja az adott gppldnyt, s jratelepti azt egy msik hardveren. Ha a problma tovbbra is fennll, akkor az Azure az utols lpst ismtelgeti. Az Azure teht a Fault Domain mechanizmussal korltozza a hardverhibk hatsait, a fenti munkafolyamattal korriglja a szoftverhibkat, s az Update Domain mechanizmussal biztostja a szolgltats elrhetsgt frisstsek alatt, gy biztostva alkalmazsod megbzhat mkdst tervezett s nem tervezett kiessek esetn is.

Az Azure Service Dashboard


Amikor hibabejelents rkezik, minden informatikusban ott motoszkl a krds, hogy vajon hol a hiba? Az szoftvere a hibs, vagy az azt kiszolgl infrastruktra? Nem lehet -e, hogy esetleg az Azure-ban magban van problma, s nem pedig a sajt szolgltatsban? Erre a krdsre egyrtelm vlaszt ad az Azure Service Dashboard. Ez egy weboldal, ahol minden Azure komponens aktulis llapota, illetve az elmlt nhny ht trtnete megtekinthet. Amennyiben valamilyen problma trtnik, az Azure-csapat elssorban ezen a honlapon keresztl kommunikl a felhasznlkkal. A Dashboard a kvetkez URL-en tekinthet meg: http://www.windowsazure.com/enus/support/service-dashboard/ (9-33 bra).

161

9. PaaS Felhszolgltatsok

9-33 bra: Az Azure Service Dashboard

Az bra ksztsnek pillanatban az East US adatkzpontban tallhat Compute szolgltatssal valami problma volt, mg a tbbi rendben mkdtt. Minden szolgltats mellett tallhat egy RSS feed. Erre feliratkozva az adott szolgltats hreirl rteslhetsz. Az Azure csapat termszetesen csak a hibkat publiklja a RSS feedbe, nem kell attl tartanod, hogy t percenknt egy jabb mg mindig mkdik bejegyzs rkezik majd. Amennyiben Azure alkalmazst futtatsz, clszer felvenni az alkalmazs ltal hasznlt szolgltatsokat RSS-olvasdba, hogy az esetleges problmkrl proaktvan tudomst szerezz.

Naplzs: Azure Diagnostics


A Windows Server gazdag eszkzkszlettel rendelkezik a teljestmnyproblmk, alkalmazshibk , stb. feldertshez. Ilyen eszkzt jelentenek pldul a teljestmny-szmllk (Performance Counters), amivel gpnk rendkvl sokfle mkdsi paramtert mrhetjk: kvethet termszetesen a CPU magok terheltsge, a szabad memria, stb., de mrhetjk akr a gp htberendezsnek mkdst, a .NET CLR ltal lefoglalt RAM-terletet, vagy tbb szz egyb paramter brmelyikt. (Termszetesen sajt teljestmnyszmllt is rhatunk, ami alkalmazsunk valamilyen paramtert mutathatja.) Hasonlan fontos eszkz az esemnynapl, amelyben a Windows rendszer, illetve a rajta fut egyb szoftverek (pldul az IIS) bejegyzseit, hibit tartalmazza. Igen sok szoftverproblma diagnosztizlsnak els lpse az esemnynapl megnyitsa, s webfejlesztk szmra is kiemelte n hasznos, mert az ASP.NET is itt naplzza az alkalmazsokban nem kezelt kivteleket. Ezeket az eszkzket hasznos lehet Azure PaaS szerepkrk esetn is hasznlni. Mivel a gpek Windows Servert futtatnak, ezrt az eszkzk ott vannak az opercis rendszerben, de hasznlatuk igen knyelmetlen. Ha egy szerepkr tz pldnyt futtat, mris nagyon krlmnyes egyesvel bejelentkezgetni mind a tz gpre a monitoroz eszkzk bekapcsolshoz, figyelshez. Ezt a problmt oldja meg az Azure Diagnostics. Ennek a szolgltatsnak nhny sor konfigurcis kdban le kell rni, hogy mit szeretnl mrni (pldul pontosan melyik teljestmnyszmllkra vagy kvncsi). Ezek alapjn az adott szerepkr sszes pldnyban bekonfigurlja a Windows megfelel eszkzeit. A mrt adatokat pedig helyileg gyjti, s bizonyos idnknt kimsolja egy kzs, osztott trhelyre (az Azure Storage-ba). gy az sszes gp mrsi adatai egy helyen lesznek megtallhatk, s mivel ez a hely perzisztens, a mrsi adatok akkor sem vesznek el, ha valamelyik gpet jratelepti az Azure. Az Azure Diagnostics szolgltats ltal konfigurlhat s gyjthet adattpusok az albbiak: Windows Azure naplk (trace logok) IIS 7 naplk Windows Azure diagnosztikai informcik (adatok magnak az Azure-nak a mkdsrl) Failed Request bejegyzsek az IIS-bl Windows esemnynaplk

162

9. PaaS Felhszolgltatsok Teljestmnyszmllk Crash dumpok (amiket a Windows kszt pldul egy kk hall esetn) Egyni naplk (ennek segtsgvel megadhat egy mappa, ahov egy sajt naplzmotor napli kerlhetnek; az Azure Diagnostics ennek a mappnak a tartalmt is be fogja gyjteni). Lssuk, hogyan hasznlhatod az Azure Diagnostics-ot sajt alkalmazsodban! Nyisd meg a Visual Studit, s kszts egy j Cloud Service-t HelloDiagnostics nven, egyetlen webes szerepkrrel! Az Azure Diagnostics-ot kdbl konfigurljuk. Ennek a kdnak az adott szerepkr minden pldnynak indulsakor le kell futnia. Ezrt clszer ezt az Azure ltal biztostott belpsi pontba helyezni. Ezt a WebRole.cs fjlban tallod, a metdus neve OnStart().
A WebRole.cs mintjra munkavgz szerepkrkben WorkerRole.cs van. Ha sajt ASP.NET projektedet tltd fel a felhbe, amiben mg nincs WebRole.cs, akkor egyszeren msold t egy Azure-os WebRole.cs tartalmt sajt ASP.NET projektedbe, s azonnal lesz egy mkd llomnyod, mert az Azure futsi idben a .NET Reflection segtsgvel a RoleEntryPoint sosztly alapjn keresi ki a meghvand WebRole.cs metdusokat.

A WebRole.cs fjl OnStart() metdusba helyezd el az albbi kdot:


public override bool OnStart() { DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration(); config.PerformanceCounters.DataSources.Add(new PerformanceCounterConfiguration() { CounterSpecifier = @"\Processor(*)\% Processor Time", SampleRate = TimeSpan.FromSeconds(5) }); config.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromMinutes(1); DiagnosticMonitor.Start( "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config); return base.OnStart(); }

A kd ltrehoz egy pldnyt a DiagnosticMonitorConfiguration osztlybl, ezen belltja a mrend teljestmnyszmllt (processzorterheltsg), majd megadja, hogy a loklisan keletkezett mrsi adatokat egy percenknt kell felkldeni a felhbe. Ugyanezen a DiagnosticMonitorConfiguration osztlyon lehetne felvenni tovbbi teljestmnyszmllkat, vagy a fenti listban felsorolt egyb esemnytpusokat is. Utna a DiagnosticMonitor.Start() metdusnak megadjuk annak a Connection Stringnek a nevt, ahov az Azure elhelyezi majd a begyjttt naplfjlokat. Ez egy Azure Storage Accountra mutat, a fenti rtk az alaprtelmezs. Futtasd az alkalmazst! Vrj nhny percig, majd valamilyen eszkzzel (rszleteket lsd az Azure Storagedzsal foglalkoz fejezetekben) nyisd meg a helyi Azure Storage emultor tartalmt (9 -34 bra)!

163

9. PaaS Felhszolgltatsok

9-34 bra: A loklis Azure Storage emultor tartalma (a kp forrsa: Cerebrata Cloud Storage Studio)

Kt fontos elemet kell itt ltnod, ezek az albbiak: A wad-control-container nev Blob kontner. Ebben rengeteg mappa van, minden mappa egy egy PaaS alkalmazsverzinak felel meg, amit a helyi emultorodon futtattl. A mappn bell az adott verzi minden szerepkrhez tartozik egy-egy almappa, azon bell pedig a szerepkr minden pldnyhoz egy-egy XML fjl. Ez az XML fjl rja le a Diagnostics konfigurcis belltsokat. A tnylegesen fut Diagnostics motor ezt a fjlt veszi alapul. Ha teht valami nem mkdik az Azure Diagnostics-szal, akkor ezekben az XML fjlokban tudod megnzni, hogy a konfigurl kdod rendben lefutott-e. A WADPerformanceCountersTable tbla. Ebbe gylnek a CPU terheltsgi adatok mrsei. Minden sor tartalmaz idblyegzt, az adott szerepkr nevt, a szerepkrpldny azonostjt stb., s persze a mrt adatot (9-35 bra). Ha a tblt nem ltod rgtn, elszr is vrj egy kicsit (4 -5 percet). Ha ezutn sem jn ltre, akkor ellenrizd, hogy a fenti kdot helyesen rtad -e be (kln gyelj arra, hogy a ScheduledTransferPeriodot bellt sor ott legyen)!

9-35 bra: Performance Counter mrsi eredmnyek

Az Azure Diagnostics segtsgvel teht ugyangy felhasznlhatod a megszokott Windows diagnosztikai eszkzket, mint helyben. Segtsgkkel automatizltan nyomon kvetheted gpeid tlagos terheltsgt, a legjellemzbb hibkat stb. Mivel az adatok Azure Storage-ban gylnek, ezrt hozzfrhetk kdbl s felgyeleti eszkzkbl, felhasznlhatk pldul egy sklz megolds bemeneteknt, vagy klnfle jelentsek is generlhatk bellk. A 9-36 brn egy ilyen jelents lthat, az bra egy tbb pldnybl ll Worker Role egyes pldnyainak CPU terheltsgt mutatja. Megfigyelhet, hogy az Azure terhelselosztnak ksznheten az egyes gpek terheltsge nagyjbl egytt mozog, kzptjon pedig egy optimalizls hatsai lthatk.

164

9. PaaS Felhszolgltatsok

9-36 bra: Azure Diagnostics jelents (a kp forrsa: Cerebrata Azure Diagnostics Manager)

Tvoli asztali kapcsolat: Remote Desktop


A Remote Desktop funkcionalits szintn rsze a Windowsnak. Segtsgvel bejelentkezhetsz egy tvoli gpre, s sajt perifriiddal vezrelheted azt. Azure PaaS gpekre is be lehet jutni Remote Desktoppal. Ehhez mindssze arra van szksg, hogy teleptskor bekapcsold ezt a lehetsget (ahogy arrl mr sz esett a fejezetben a teleptsrl szl rszben). Nzzk, hogyan s mire j Azure PaaS esetn a tvoli asztali kapcsolat! Ha mg a felhben van a HelloPublishing alkalmazs, akkor ltogass el a menedzsment portlon a Cloud Service-hez, s nyisd meg az Instances flet (9-37 bra)! Ha mr trlted, akkor teleptsd fel jra!

9-37 bra: Egy Cloud Service Instances fle s a Connect gomb

Vlassz ki egy pldnyt (egy pldny esetn termszetesen egyrtelm a vlaszts), s kattints a Connect gombra (az brn jellve)! Letltdik egy RDP kiterjeszts fjl a gpedre. Amikor ezt megnyitod, elindul a Remote Desktop kliens s csatlakozik a tvoli gpre. A bejelentkezshez azt a nv -jelsz prost hasznlhatod, amit a teleptskor, a Remote Desktop funkci bekapcsolsakor adtl meg.

165

9. PaaS Felhszolgltatsok A gpre bejelentkezs utn rendszergazdai jogod van azon. Brmit megvltoztathatsz, telepthetsz vagy trlhetsz. Tartsd azonban szem eltt, hogy az Azure PaaS gpek llapotmentesek (ahogy korbban mr volt rla sz), vagyis az Azure brmikor trlheti s jra ltrehozhatja ket, ha valami ezt indokolja. Ilyenkor a vltoztatsaid elvesznek, mert az Azure a legutols feltlttt programverzi alapjn hozza ltre az j gpeket. Ennek megfelelen egy PaaS gp nem alkalmas arra, hogy Remote Desktopon keresztl pldul egyni konfigurcit hozz rajta ltre, vagy manulis teleptsi lpseket iktass be maradand vltozsokat csak gy tudsz elrni egy PaaS gpen, ha magba a PaaS alkalmazsba rod bele ezeket a vltoztatsokat (lsd pldul a Startup Task funkcionalitst). Ha olyan virtulis gpre van szksged, ami megrzi az llapott, akkor nzd meg az Azure IaaS virtulis gpeit, amelyek pontosan erre alkalmasak! A Remote Desktop ettl eltekintve tbb fontos clra is hasznlhat: Vals idben nyomon kvetheted a gpek teljestmnyt, konfigurcijt. Elindthatod a feladatkezelt vagy a Resource Monitort, rnzhetsz az IIS-re vagy az esemnynaplra, ellenrizheted, hogy az esetleges Startup Taskjaid helyesen futottak-e le. A gpekben mindig 3 meghajt van: C, D, s E vagy F. A C meghajt a legnagyobb, ott vannak alkalmazsod futs kzbeni fjljai (pldul a Local Storage). A D meghajtn van a Windows. Az E vagy F meghajt tartalmazza alkalmazsod kdjt: worker role esetn egy approot nev mappban, web role esetn pedig a sitesroot\0 mappban. Ennek ismeretben hozzfrhetsz alkalmazsod fjljaihoz s megvltoztathatod ket. Egy teljes felhs telepts 5-15 perc, tesztels kzben ennl sokkal gyorsabban tudsz verzit vltani, ha egyszeren a Vglapon keresztl felmsolod ide az j alkalmazsverzit. Termszetesen ez a technika szigoran csak tesztelshez ajnlott, a korbban ismertetett okok miatt.

IntelliTrace
Tesztels kzben gyakori a non-repro jelensg: a tesztel, vagy gyfl gpn a program bizarr hibkat dobl, amik a fejleszt gpn nem reproduklhatk, gy aztn nem is javthatk. Ezzel valsznleg minden alkalmazsfejleszt tallkozott mr. A jelensg megoldsra kszlt az IntelliTrace funkcionalits, amely a Visual Studio 2010 Ultimate verzijban debtlt. Segtsgvel a szoftverhez egy felvev csatolhat, ami teljes rszletessggel naplzza a program mkdst. Amennyiben hiba trtnik, a tesztel eljuttathatja a naplkat a fejlesztnek, aki pedig olyan rszletessggel kvetheti vissza a program mkdst, mintha vgig eltte lt volna egy bekapcsolt debuggerrel. Gyakorlatilag visszajtszhatja a fggvnyhvsokat, vltozrtkeket s gy tovbb. Az IntelliTrace az Azure-ban fut (webes) alkalmazsok esetn is hasznlhat, azok mkdsnek rszletes lekvetshez. Hasznlata rendkvl egyszer: amikor telepted az alkalmazst, a teleptsi varzsl kzps lpsben kattints az Advanced Settings flre, s pipld be az IntelliTrace opcit (9-38 bra)!

166

9. PaaS Felhszolgltatsok

9-38 bra: IntelliTrace bekapcsolsa teleptskor

Miutn a telepts elkszlt, a Visual Studiban megnylik egy panel, benne az alkalmazsod ltal futtatott gppldnyok listjval. Ezekre jobb gombbal kattintva tltheted le az adott gp IntelliTrace naplit. Az IntelliTrace teht nagyon egyszeren hasznlhat s igen hasznos. rnyoldala, hogy jelen pillanatban csak a Visual Studio legkomolyabb, Ultimate verzijbl rhet el (mind VS 2010, mind VS 2012 esetn).

Sklzs
A fejezetben mr tbbszr volt sz arrl, hogyan is sklzhat egy Azure PaaS alkalmazs: maguk a gpek llapotmentes feldolgozegysgnek tekintendk (minden megrzend adatnak a gpeken kvl, pldul SQL adatbzisban kell helyet kapnia), a gpek mrete s darabszma pedig megvltoztathat. Ha nagyobb gpeket veszel, akkor ezt felfel sklzsnak hvjuk (scale-up), ha pedig tbb gpet veszel, akkor ezt oldalra sklzsnak (scale-out). Azure PaaS esetn a felfel sklzsra korltozott lehetsgeid vannak (mert Extra Large gpmretnl nem vehetsz nagyobb gpeket, illetve a gpmret csak az alkalmazs teleptsekor vlaszthat meg), viszont az oldalra sklzs lehetsge lnyegben korltlan (nem ritka a tbb ezer gppldnyt ignybe vev Azure-alkalmazs sem). Fontos az is, hogy az razs rnknti elszmolssal mkdik, azaz a fizetend vgsszeg nagyon szorosan kveti a tnyleges felhasznlst. gy aztn az ignybe vett kapacits a terhels vagy az id fggvnyben varilhat: alkalmaz sod cscsidszakban is lassuls nlkl futhat, az alacsony forgalm idszakokban viszont a szerverpark mrete visszavehet, amivel igen sokat lehet sprolni. Pldul ha felhasznlid jszaka alszanak, akkor gpeid szmnak minimlisra cskkentsvel az zemeltets dja akr meg is felezhet, hiszen a nap felben alig hasznlsz valamit! Azt is lttuk, hogy a sklzs kzzel hogyan vgezhet el: megnztk, hogy a Visual Studiban a szerepkrk tulajdonsglapjn hogyan adhat meg a kvnt gpmret s pldnyszm, s arrl is volt sz, hogy a felhbe telepts utn a menedzsment portlon hol van a pldnyszmot llt vezrlelem. Arrl viszont mg nem volt sz, hogy mi a teend akkor, ha a sklzst automatikusan, emberi beavatkozs nlkl szeretnd vgeztetni.

167

9. PaaS Felhszolgltatsok Az Azure nllan nem sklz. Egyszer beltni, hogy mirt: nem tudhatja, hogy mi alapjn sklzzon. Ha egy gpen 100%-os a CPU kihasznltsg, az jelenthet egy rendkvl tlterhelt webszervert (sklzni kell), meg jelenthet egy normlisan mkd videkonvertert is (nem kell sklzni). A feladat elvgzshez viszont kivl segdeszkzket biztost a Microsoft. A legfontosabbak: Az Autoscaling Application Block a Microsoft Enterprise Library rsze. Lnyegben egy szoftverkomponens, egy DLL, amit bepthetsz sajt alkalmazsodba. Szablyokat definilhatsz neki (pl. maximum s minimum mennyi kapacitst hasznlhat az alkalmazs, mekkora s milyen terhelsnl sklzzon fel-le stb), pedig ezeket vgrehajtja. Az Application Block a MSDN -rl rhet el a http://msdn.microsoft.com/en-us/library/hh680892(v=pandp.50).aspx cmen. Az Azure Service Management API segtsgvel akr PowerShellbl, akr C# kdbl hozzfrsz alkalmazsod adataihoz (milyen szerepkrk vannak, ezek hny pldnyban futnak stb.), s szinte minden mveletet elvgezhetsz programbl, amit a menedzsment portlon s a Visual Studiban megtehetsz. Ennek megfelelen lehetsged van pldul alkalmazst trlni s telepteni egy Cloud Service-be, vagy az egyes szerepkrk pldnyszmt vltoztatni. A fejezetben korbban mr volt sz az Azure Diagnostics-rl. A szolgltats segtsgvel automatikusan gyjthetsz teljestmnyadatokat. A Diagnostics bemeneti adatait s a Managemen t API-t sszektve gyakorlatilag tetszleges sklzsi logikt implementlhatsz akr PowerShellbl, akr C# kdbl. A Service Management API-rl itt olvashatsz bvebben: http://msdn.microsoft.com/enus/library/windowsazure/ee460799.aspx. A Management API megszltsra hasznlhat PowerShell parancselemek pedig innen tlthetk le: http://wappowershell.codeplex.com/ .

sszegzs
A fejezetben megismerhetted az Azure PaaS lnyegt, a PaaS alkalmazsok fejlesztsnek menett, felhbe publiklst s klnfle diagnosztikai eszkzeit. A PaaS alkalmazsfejleszts risi tmakr, ebben a fejezetben csak az alapokat tudtuk bemutatni. A fentiek alapjn mr el tudod kezdeni egy PaaS alkalmazs fejlesztst, a kzben felmerl esetleges szrke terletekre, krdsekre pedig a knyvnkben javasolt tovbbi anyagok segtsgvel tallhatsz vlaszt.

168

10. PaaS Storage

10. PaaS Storage


Ebben a fejezetben az albbi tmkat ismerheted meg: Hogyan rhetjk el alkalmazsainkban a Windows Azure Blob, Table s Queue szolgltatsait ? Hogyan hasznlhatjuk fel az Azure beptett naplzsi szolgltatst, illetve hogyan kaphatunk statisztikai adatokat szolgltatsaink mkdsrl ? Milyen esetekben rdemes az Azure trszolgltatst felhasznlni? Az elz fejezetekben j ttekintst kaphattunk arrl, milyen rszekbl pl fel a Windows Azure, illetve rviden betekinthetnk abba, hogy ennek adattrols-specifikus rsze, a Windows Azure Storage (WAS) blob-troljt hogyan konfigurlhatjuk fel a hasznlathoz. A kvetkezkben rtrnk arra, hogyan mkdik, s mire hasznlhat a WAS Table Storage rsze, mire szolgl a Queue Service, valamint arra, hogyan rhetjk el a mr bekonfigurlt trolkat programjainkbl. A fejezet gyakorlatias megkzeltst nyjt rszt kveten pedig ttekintst kapunk a Storage Analytics ltal nyjtott lehetsgekrl. Az Azure Storage alapveten hrom adattrolsi technolgit tmogat: a nagy fjlokat trolni kpes blobot, a hagyomnyos, relcis MS SQL-hez nagyon kzeli Azure-os SQL Database-t, illetve a strukturltsgban nagyjbl az elz kett kz tehet Table Storage-et. A Queue Service az elzektl logikailag s mkdst tekintve jl elklnthet. A tbbfajta vlasztsi lehetsggel az Azure platform biztostja, hogy a fejlesztk klnll mdokon, mindig az optimlis technolgit s struktrt vlasztva trolhassk el alkalmazsaik adatait a felhben. Ahol nllan felhasznlt kisebb-nagyobb fjlokat kell kezelni, ltalban a blobok nyjtjk a leghatkonyabb megoldst. Ezekkel tbb-kevsb a fjlrendszerekre emlkeztet megoldst kapunk, gy egyszint knyvtrakban (kontnerek) rendszerezhetjk fjljainkat (blobok). Ahol azonban nem szigetekknt ltez binris objektumokat szeretnnk trolni, hanem egymssal szorosan sszefgg, strukturlt adathalmazokat , a legtbb esetben az SQL Database szolgltatst rdemes ignybe vennnk. Ezzel egy, a hagyomnyos alkalmazsoknl mr megismert relcis adatbziskezel rendszert kapunk, ahol kihasznlhatjuk az Azure-on kvli vilgban szerzett minden SQLtapasztalatunkat.

A Table Storage
ltalnos felhasznls, tlagos terhels alkalmazsoknl, mint pldul egy kzepes mret felhasznli bzissal rendelkez webes ruhz, a blob s az SQL lehetsgek legtbbszr elegend ek is ahhoz, hogy minden adattrolsi problmra kielgt megoldst nyjtsanak. Akadnak azonban helyzetek, amikor se m az egymstl fggetlen objektumok, sem a relcis adatbzisok nem nyjtanak megfelel teljestmnyt.

Mire j a Table Storage?


A Table Storage strukturltsg szempontjbl az elz kt megolds, a blob s az SQL kztt helyezhet el. Elsdleges clja egy olyan magas rendelkezsre lls adattrol kialaktsa, mely nagy sklzhatsg i szint mellett kpes kiszolglni az tlagosnl jval nagyobb mennyisg krst is. Trterlet szempontjbl mindssze nhny megktssel kell szmolnunk a Table Storage hasznlata sorn. Ahogyan az adatok mennyisge n, tblink mrete is szinte korltlanul (100 TB-ig) nhet, azaz gyakorlatilag nincs olyan eset, amikor ezt kinjk. A tblk szmban viszont nem kell megktsekkel szmolnunk, itt csak az Azure Storage accountunk maximlis mrete jelenti a plafont.

169

10. PaaS Storage Fontos azonban tudni, hogy a tblk nem llnak relcis kapcsolatban egymssal, teht itt nem a hagyomnyos rtelemben vett adatbzis felptsrl van sz! A tblkon belli entitsok (ezekkel bvebben a kvetkez alfejezet foglalkozik) mretnek 1 MB a fels hatra, gy teht nagyobb sszefgg llomnyok trolsra a Table Storage csak korltozottan alk almas. Magas sklzhatsga s teherbrsa miatt az Azure Storage megoldsai kzl ez a legmegfelelbb arra, hogy pldul egy nemzetkzi weboldal vagy egy hasonl alkalmazs adatait eltroljuk s lekrdezzk, felttelezve, hogy az adatok s a tblk kztt nem szksges bonyolult relcis kapcsolatokat felpteni s nem is szeretnnk sszetett joinokkal lekrdezni az adatokat. Ha egy szocilis hlzati oldalt vagy hozz hasonlan nagy adatmennyisggel mkd, vagy teljesen publikus felhasznls alkalmazst ptnk, akkor ltalban az SQL Database jut esznkbe elszr knyelmes adattrolsi megoldsknt. A tapasztalat azt mutatja, a Table Storage szinte biztos, hogy jobb vlaszts lesz, ha nem akarjuk, hogy a relcis adatbzis ktttsgei miatt a nagy felhasznlszmnl s a mgtte rejl rengeteg adatnl lelassuljon a rendszer.

Hogyan mkdik a Table Storage?


A Table Storage a NoSQL szisztma alapjn kzelti meg az adattrols krdst. Nevvel ellenttben nem a relcis adatbzisoknl megszokott tblkat tartalmaz: a Table objektumok inkbb listkknt vagy sztrakknt kpzelhetk el. Ezekbl a tblkbl akrmennyit ltrehozhatunk Storage Accountunkon, hozzjuk frni pedig az albbi URL sma alapjn tudunk:
protokoll://hozzfrs.table.core.windows.net/tbla

Itt a protokoll http vagy https, a hozzfrs a trhely-hozzfrsnk (Storage Account) globlisan egyedi azonostja, tbla pedig a tbla egyedi neve. Ez az egyedi nv csak alfanumerikus karakter eket tartalmazhat, megklnbzteti a kis s a nagybetket, mindenkppen betvel kell kezdd nie, s 3-63 karakterbl kell llnia. Tblinkon bell entitsokat trolhatunk. Ezek tulajdonkppen kulcs/rtk prokbl ll objektumokknt kpzelhetk el. Az entitsok szma ktetlen, mretk viszont nem az: egy entits maximum 1 MB mret lehet. Ezenfell az entitsok legfeljebb 255 tulajdonsggal (kulcs/rtk prral) rendelkezhetnek, ezek kzl hrom elre lefoglalt (partci- s sorazonostk, valamint egy idblyeg). Mivel nincs egysges sma, olyan lekrdezst sem rhatunk, mellyel egy tbla elemeinek rtkeire szrnnk csakis az imnt emltett partci-, illetve sorazonost alapjn krdezhetnk le entitsokat. Emellett a Table Storage a trolt eljrsokat sem tmogatja. Az entitsok, illetve tblk kztt nem hozhatunk ltre semmifle kapcsolatot. Ha tudjuk, hogy pldul a Megrendelk s a Megrendelsek nev tblban lv elemek kztt fennll egy logikai relci, azt csak alkalmazsunkban tudjuk feldolgozni, a Table Storage nem bocst rendelkezsnkre az SQL idegen kulcsaihoz hasonl kpessget. Fontos klnbsg a relcis adatbzisokhoz kpest, hogy a Table Storage nem kvetel meg egy adott smnak val megfelelst az entitsoktl. Egy tbla teljesen eltr szerkezet, vagyis eltr tulajdonsgokkal rendelkez entitsokat is kpes eltrolni, ha azok a tervez szerint egy tblba kell, hogy tartozzanak. Eltrs mg az is, hogy a Table Storage csak korltozottan tmogatja tbb mvelet tranzakciban val vgrehajtst. Csak abban az esetben hajthatunk vgre tranzakciszeren tbb mveletet, ha a mveletekben rintett entitsok trolnk egyazon partcijnak elemei. Miutn mr tbbszr is megemltettk, jogosan merl fel a krds: mi az a partci? A nagy terhels elosztsban dnt szerepet jtszik, hogy tblinkat tbb fizikai trolra oszthatjuk szt ez automatikusan s a fejleszt szempontjbl transzparens mdon trtnik. A sztoszts mdj a, hogy a tblkban lv entitsok mindegyike rendelkezik egy partci -azonostval (PartitionKey). Az egyazon partci-azonostval rendelkez elemek egy fizikai trolra kerlnek, mg a klnbzeket sztosztja az Azure Storage infrastruktrja.

170

10. PaaS Storage

Fontos megjegyezni, hogy a sorazonostknak csak a partcikon bell kell egyedinek lennik.

A 10-1 brn lthat egy kt tblbl ll rendszer felptse. (kezetes karaktereket csak a plda rthetsge kedvrt hasznlunk!)

10-1 bra: Egy kttbls trol a Table Storage-ben

Ahogy az brn lthat, legfels szinten storage accountunk, vagyis az Azure trszolgltatsaihoz val hozzfrst biztost azonostnk van (piac). Ezen bell pedig a Table Storage-ot felhasznlva ltrehozhatunk tblkat (Termkek, Termelk), melyekben entitsokat sql-es analgival lve: sorokat helyezhetnk el. Minden entits kell, hogy rendelkezzen egy-egy partciazonostval (PKey), mely egy partciba rendeli az sszetartoz entitsokat. Ezenfell minden entitsnak rendelkeznie kell egy sorazonostval (RKey) is, amely a partcin bell azonostja az objektumot. Ezen tl az entitsok ktszznl is tbb egyb, ltalunk meghatrozott nev s tpus tulajdonsggal brhatnak. Az brn az is lthat, hogy egy tbla nem kvetel meg egysges smt a belehelyezett entitsoktl: a Termkek tblban lv elemek egy rsze Szn tulajdonsggal br, mg msik rsze egy z nevvel. Br a partcik fizikailag ms-ms helyre kerlnek a felhben, programunk szmra csupn logikailag jelennek meg; a partci-azonost tlagos tulajdonsgknt rhet el programjainkban.

A Queue Service
Az Azure Storage adattrolsi megoldsai kzl a Queue az, amely nem a hagyomnyos rtelemben vett adattrolssal ll kapcsolatban. Cljt s mkdst tekintve teljesen eltr koncepcival rendelkezik a korbban ismertetett troltpusoktl; emiatt taln a Queue az, amelynl a legknnyebb eldnteni, hogy megfelel-e egy adott problma megoldsra, vagy inkbb egy msfajta megoldst kell vlasztanunk.

Mire j a Queue Service?


Noha az Azure platform pratlan flexibilitsnak ksznheten jcskn lehet tallni ellenpldkat, elmondhat, hogy ltalban akkor ptnk Azure-ra egy webes alkalmazst, ha sok felhasznlval, nagy mennyisg adattal szmolunk, vagy egybknt nehezen megfizethet mennyisg szmtsi vagy trolsi kapacitsra van szksgnk. Az ilyen nagy webalkalmazsok azonban nem monolitikusan plnek fel, hanem egy jl tgondolt architektrval tbb egymssal lazn csatolt komponensre (szerepkrre) oszthatk. Az ilyen, tbb rszre osztott alkalmazsoknl az egyes komponensek kztt valamilyen kommunikcis mechanizmust kell kialaktani. Ha egy webes, tulajdonkppen egymst hv szolgltatsokra pl alkalmazsrl beszlnk, ahol az egyes modulok akr klnbz gpeken is futhatnak majd, akkor a komponensek kztti szoros csatols pldul a szerelvnyek kztti kzvetlen egymsra hivatkozs

171

10. PaaS Storage nem jhet szba. Ilyen helyzetekre a Microsoft nagyon jl konfigurlhat alternatvkat nyjtott eddig is, pldul a WCF-en keresztl. Az els problma egy WCF-szolgltatssal az lehet, hogy ha a kiszolgloldal rvid id alatt tl sok krst kap egyszerre, az a szolgltatst knnyen tlterhelheti. Persze, itt tnyleg nagyszm krsrl beszlnk! A Queue Service kulcsraksz, knnyen kezelhet megoldst nyjt erre a problmra. A rendszer klnbz rszei, amelyek egy zenetsoron (Queue) keresztl kapcsoldnak egymshoz, nem kzvetlenl rik el egymst. Nem lehet problma abbl, hogy az egyik modul (vagy tbb modul) krsekkel bombzza a msikat, s emiatt az tlterheldik, hiszen a berkez krsek sorba llthatk. A Queue Service hasznlatval aszinkronn tehet a kommunikci alkalmazsunk komponensei kztt. Az elosztott, nagy terhelsre tervezett alkalmazsok egy msik problmja, hogy a sklzhatsgot bonyolult feladat manulisan megoldani. Ha pldul van egy front-end komponensnk, amelyrl a felhasznlk nagy szmtsigny feladatokat indthatnak s ezeket aztn a back-endnek kell feldolgoznia , knnyen belthat, hogy nagy valsznsggel a front-endet nagysgrendekkel kevesebb szervergp is ki tudja szolglni, mint ami ahhoz szksges, hogy a back-enden megfelel temben folyjon a feldolgozs. A Windows Azure hasznlatval egyszeren sztbonthatjuk alkalmazsai nkat modulokra, szerepkrkre, melyekbl azutn egy-egy kattintssal hozhatunk ltre j pldnyokat.
Megjegyzs: A Win the Web versenyt ltogatknak mr ismers lehet a Mandelbrot videt sszellt Azure alkalmazs esete. A felhasznlt kiszolgl modul gyakorlatilag csak nhny kattintst kell, hogy feldolgozzon, mikzben a httrben Mandelbrot halmazok szmtst kell a lehetsgekhez kpest gyorsan megoldani. rezhet a szmtsi ignyek kztti klnbsg.

Az ilyen elosztott, sklzhat esetben teht kt modul vagy szolgltats kztt abban is klnbsg mutatkozhat, hogy hny pldnyt kell futtatnunk az egyikbl, hnyat a msikbl. Ekkor pedig felmerl a terhelseloszts krdse: ha az egyik modul krst kld a msik modulnak, annak melyik pldnya kapj a meg a krst? Az egyms mellett fut, klnozott modulok nem tudnak egymsrl, teht krlmnyes megoldani, hogy kommuniklhassanak egymssal. Az ell lv modul, ami a krst vagy feladatot kldte, nem foglalkozhat azzal, hogy a httrben lv tbbi modul llapott figyeli. (Technikailag persze lehetsges, de nem felttlenl elnys, ha egy modulban vagy szolgltatsban ilyen, egymstl fggetlen feladatokat drtozunk ssze.) Kellene teht egy kztes modul vagy szolgltats, amely terhelselosztknt (load balancer) viselkedik, s a lehetsgekhez kpest egyenl arnyban osztja szt a krseket. Tbbek kztt erre is automatikus tmogatst nyjt a Queue Service. Egy harmadik problma: mi trtnik akkor, ha a sok-sok feldolgozegysg egyike megkapja a feladatot, elkezd dolgozni rajta, de valamilyen problma trtnik pldul egy le nem kezelt kivtel keletkezik , s az egsz feldolgozegysg lell? A feladat elveszik! Gondoljuk meg, mekkora problmt jelent ez, ha pldul egy olyan feladatrl volt sz, melynek eredmnytl majd ms feladatok eredmnye is fgg! Rengeteg zleti folyamat szempontjbl egyltaln nem megengedhet, hogy elvesszen az informci! A Queue Service garantlja az zenetek perzisztlst mindaddig, amg valaki (a feldolgoz egysg, mely megkapta a feladatot) azt nem jelzi, hogy elkszlt a munkval. Emellett viszont a megfelel belltsok hasznlata mellett azt is biztostja, hogy az egyes zeneteket pontosan egyetlenegyszer dolgozhassk fel. Jrulkos elny a Queue Service hasznlatakor, hogy az zenetsorok elrse s az zenetek feldolgozsa egyttal klnbz platformok kztt az egyttmkdst ( interoperability) is biztostja: az zenetet kld s feldolgoz egysgek akr teljesen eltr programozsi nyelvben, platformon is rdhattak. Az elz pldkban jrszt egyirny kommunikcirl volt sz egy front-end modul kldte a feladatokat a httrben lv egy vagy tbb back-end kiszolglnak. Termszetesen nincs semmifle megkts arra, hogy egy rendszer kt rsze kztt csak egyirny kommunikci trtnhet, az zenetsorokon keresztl oda-vissza folyhat a prbeszd. Ne feledjk el, hogy a Queue hasznlata adta elny egyben htrny is lehet, ha rossz helyen, vagy rossz belltsokkal alkalmazzuk! Ha pldul a felhasznli fellet mkdst attl tesszk fggv, hogy a httrben egy zenetsorbl egy worker role kiveszi az zenetnket, s feldolgozza azt, tl kevs feldolgoz

172

10. PaaS Storage egysg futsa esetn elfordulhat, hogy lassabban szletik meg az eredmny, mintha nem hasznltunk volna sorkezelst.

Hogyan mkdik a Queue Service?


Ahogy neve is sejteti, a Queue Service esetben sorba rendezett zenetek perzisztens troljrl van sz. Valjban tbb trolrl: a Queue Service szolgltatson bell brmennyi zenetsort ltrehozhatunk, ezek mindegyike egyedi nvvel rendelkezik. Azure alkalmazsunk rszei e nv alapjn hivatkozhatnak egy zenetsorra azok felhasznlshoz. Az zenetsorok elrse az Azure Storage vgpontelnevezsi konvenciinak megfelelen trtnik. Minden zenetsorunk rendelkezik egy sajt URL-lel, amely az albbi sma szerint alakul:
protokoll://hozzfrs.queue.core.windows.net/sor

Itt a protokoll a megszokott http vagy https, a hozzfrs a trhelyhozzfrsnk globlisan egyedi azonostja, sor pedig az adott zenetsor egyedi neve, mely csak alfanumerikus karaktereket s ktjelet tartalmazhat (3-63 darabot), csupa kisbetbl kell llnia, illetve betvel kell kezddnie s vgzdnie. zenetsorainkba nem meglep mdon zeneteket kldhetnk. Ezek egyenknt jelenleg legfeljebb 64KB-osak lehetnek ez a jvben akr nvekedhet is , gy ha egy nagyobb feldolgozand adathalmaz tartozik az zenethez, annak tovbbtst nem bzhatjuk teljes egszben a Queue Service-re. Ehelyett pldul a Blob Storage-ban trolhatjuk el az adatokat, s az zenet egy URL-t tartalmazhat, ami a megfelel blobra mutat. Nincs korltozva, hogy egy zenetsorban hny zenet lehet, a fels hatrt tulajdonkppen itt is a Storage hozzfrsnk 100TB-os plafonja jelenti. Emellett azonban nem rt figyelembe venni, hogy egy zenetekkel teli zenetsor ltalban azt mutatja, hogy a rendszer zeneteket feldolgoz rsze lass, optimalizlsra vagy felsklzsra szorul! Tartalmukat tekintve nincs megkts az zenetekre ahogy ksbb ltni fogjuk, egyszer karakterlncokat is tadhatunk egy zenetsornak, de akr bjttmbket is, amelyek brmit tartalmazhatnak. Emellett az zenetek mindig rendelkeznek egy MessageID nev tulajdonsggal, ami egy a rendszer ltal kiosztott egyedi azonost (GUID). A 10-2 bra a Queue Service logikai felptst mutatja be.

10-2 bra: A Feladatok zenetsor a Munka nev Storage Accounton

Az zenetsorok mkdsnek a lnyege, hogy a rendszer egyik rsze zeneteket helyez el egy zenetsorban, a rendszer ms rszei pedig kpesek FIFO elv alapjn a legrgebbi zenetet levenni a sor

173

10. PaaS Storage elejrl, hogy feldolgozzk. (A FIFO mkds a masszv prhuzamostsbl addan nem szz szzalkig garantlt!) gy a rendszer rszei kztt csak laza kapcsolat ll fenn, s a krst kiszolgl modul optimlis sebessggel tudja kivenni a feladatokat a sorbl. Amikor egy modul, pldul egy ASP.NET worker role kivesz egy feladatot egy zenetsorbl, a feladat rgtn elrhetetlenn vlik msok szmra, gy nem trtnhet meg, hogy tbben dolgoznak ugyanazon a feladaton. Viszont az zenet nem trldik attl, hogy kivettk a sorbl, csak lthatatlann vlik egy idre. Ezt az idt zenetsoronknt szablyozhatjuk 30 msodperc s 168 ra kztt. Az zenetet feldolgoz egysgnek kln utastania kell az zenetsort, hogy a korbban levett zenetet trlje is. Ha ezt nem teszi meg, az zenet a lthatatlansgi id lejrta utn ismt megjelenik az zenetsorban. Ezzel a megoldssal biztostott az, hogy ha esetleg az zenetet feldolgozsra lekr modul valamilyen oknl fogva mkdskptelenn vlna, az zenet akkor is feldolgozsra kerl: visszakerlse utn egy msik egysg majd jra leemelheti a sor elejrl. Ugyanakkor ez a mkds ktl fegyver: ha tl rvidre lltjuk a lthatatlansgi idt, s a feldolgoz modul nem tudja idben jelezni az zenetsornak, hogy a korbban leemelt (s tmenetileg lthatatlann vlt) zenet trlhet, a feladat jra megjelenhet a sorban, s egy msik egysg ismt feldolgozhatja feleslegesen. Mg egy fontos dolog: br a Queue mkdsbl addan az zenetek clba rse garantlt (mr amennyiben van feldolgoz modul, amely leemeli ket a sor elejrl), de ez csak a kt htnl fiatalabb zenetek esetn van gy! Ms szval a Queue Service-t a Blobbal s Table-lel szemben semmikpp se hasznljuk mint tnyleges perzisztens trolt, ugyanis az zenetsorokat rendszeres en megszabadtja az Azure a 14 napnl regebb zenetektl. A Queue Service szolgltatst minden hasonlsga ellenre sem azrt hoztk ltre, hogy kivltsk az MSMQ (Microsoft Message Queue) szolgltatst. Bizonyos esetekben alkalmas lehet erre a clra, de az MSMQ-val szemben nem tmogat olyan szolgltatsokat, mint pldul a tranzakcikezels.

Az Azure Storage hasznlata


.NET vagy Windows Store alkalmazsaink egy-egy osztlyknyvtr letltse utn kpesek hozzfrni a korbban elksztett Azure Storage trhelyeinkhez. Az, hogy pontosan melyik trolt hasznljuk (blob, table, queue) csupn rszletkrds, hiszen mindhez kapunk egy-egy felgyelt API-t, amely illeszkedik a megszokott programozsi krnyezetnkbe. Az Azure trtpusok elrse kzti klnbsg a trol URL-jn, illetve a trol mkdsnek s lehetsgeinek halmazn vehet csak szre pldul azon, hogy a blobokat nem partciazonost alapjn krdezzk le, vagy hogy a Table Storage nem enged tl nagy entitsokat ltrehozni.

Felkszls az Azure Storage hasznlatra


Miutn ltrehoztad Windows Azure Storage accountodat (errl bvebben a 7. fejezetben olvashatsz), a felhszolgltats azonnal ignybe vehet. A Storage Account ltrehozsval maximlisan 100TB ll a rendelkezsnkre, hogy azt blobokkal, tblkkal vagy zenetsorokkal tltsk fel. Kliensoldalrl REST, illetve OData programozsi felleten rheted el a trolt, esetleg .NET fejlesztknt kiegsztheted alkalmazsaidat egy osztlyknyvtrral, mely az Azure Storage elrshez szksges felgyelt tpusokat tartalmazza. 1. A legegyszerbb md az osztlyknyvtr beszerzsre, ha a Windows Azure oldaln letltd azt. Naviglj a https://www.windowsazure.com/en-us/develop/downloads/ cmre, majd kattints a .NET rsz alatt a Visual Studio vltozatodnak (VS 2010 vagy VS 2012) megfelel linkre, ahogy az a 10-3 brn lthat! Az alul megjelen svban vlaszd a Run gombot, s engedlyezd a Windowsnak a teleptst!

174

10. PaaS Storage

10-3 bra: A Windows Azure SDK letltse

2. 3.

A Web Platform Installer megjelen ablakban kattints az Install gombra, majd fogad d el a felhasznlsi feltteleket! A telepts befejeztvel kattints a Finish gombra! Ha mr nem szeretn l ms komponenst telepteni, zrd be a Web Platform Installert az Exit gombbal!

Ha ezek utn megnyitod a Visual Studit, s egy j projekt ltrehozsba kezdesz, a Cloud kategriban mr megjelenik a Windows Azure Cloud Service sablon, ahogy az a 10-4 brn lthat.

10-4 bra: Windows Azure projekt ltrehozsa

175

10. PaaS Storage Az Azure Storage szolgltatsait nemcsak Cloud Service-knt ltrehozott alkalmazsokbl rheted el, hanem brmilyen ms .NET-es alkalmazsbl is. Mindssze hrom dolgot kell ehhez tenned: 1. Tedd be alkalmazsunk referencii kz a Microsoft.WindowsAzure.Storage szerelvnyt! Ezenkvl mg hasznos lehet (de ritkbban van r szksg), ha a Microsoft.WindowsAzure.Configuration szerelvnyt is a projekthez adod. Ebben tallhat a CloudConfigurationManager osztly, melynek segtsgvel egyszeren hozzfrhetsz ahhoz a kapcsolati karakterlnchoz (3. lps), mellyel az alkalmazs a felhhz tud kapcsoldni. Azokban a forrsfjlokban, ahol az Azure trhellyel kapcsolatos osztlyokat szeretnd hasznlni, add a megfelel using utastsokat a fjlhoz! A 10-1 pldakd a Blob Storage osztlyainak hasznlatt mutatja be.

2.

10-1 kdlista: A Blob Storage hasznlata


using using using using using System; Microsoft.WindowsAzure; Microsoft.WindowsAzure.Storage; Microsoft.WindowsAzure.Storage.Auth; Microsoft.WindowsAzure.Storage.Blob;

namespace AzureBlobStorageDemo { class Program ...

3.

Hozd ltre, s trold el a kapcsolati karakterlncot, amellyel a program kpes lesz elrni a megfelel trszolgltatsi vgpontokat! Felhben futtatott alkalmazsnl (web role vagy worker role) ezt az adott szerepkr tulajdonsgai kztt tudod megtenni: add hozz Settingknt a karakterlncot a projekthez! Egy nem felhben futtatott .NET alkalmazsnl viszont rdemes az app.config vagy a web.config fjlban elhelyezni azt. A 10-2 kdlista ezt mutatja be.

10-2 kdlista: Egy Azure Storage-ot hasznl .NET-alkalmazs app.configja


<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <connectionStrings> <add name="AzureStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=NV;AccountKey=KULCS" /> </connectionStrings> </configuration>

A NV az elz pldban a trol hozzfrs azonostja ez az a nv, amivel az Azure portlon ltrehoztad a trhelyet, amelybe majd blob, table s queue objektumokat helyezhetsz. A KULCS az ehhez a trolhoz automatikusan generlt karakterlnc, amellyel a trszolgltats fel azonosthatod magad. A kulcs rtkt szintn a felgyeleti portlon tallod meg. Jelentkezz be a felgyeleti portlra, s vlaszd ki a bal oldali menbl azt a trolt, amelynek tulajdonsgaira kvncsi vagy ahogy az a 10-5 brn lthat!

176

10. PaaS Storage

10-5 bra: A Storage megtekintse a Windows Azure felgyeleti portlon

Ezutn kattints alul a Manage keys gombra! Ahogy a 10-6 brn lthat, a megjelen ablakban megnzheted a hozzfrs nevt, valamint elsdleges s msodlagos titkos kulcsait. Ezek helyett jat is generltathatsz, de ekkor minden olyan alkalmazsban, amely az adott trolt hasznlja, le kell cserlned a rgi kulcsot az jra!

10-6 bra: A Storage megtekintse a Windows Azure felgyeleti portlon

Ebbl a dialgusbl az alkalmazs konfigurcis fjljba msolva a kulcsot mr kszen llsz az Azure Storage hasznlatra.

Kliens ltrehozsa
Az els lps, amit alkalmazsainkban meg kell tenni, egy CloudStorageAccount objektum pldnyostsa. Ennek segtsgvel tudjuk majd ltrehozni az egyes trol tpusokhoz tartoz klienseket.

177

10. PaaS Storage A CloudStorageAccount pldnyt vagy az osztly statikus Parse, illetve TryParse metdusval hozhatjuk ltre, vagy konstruktorral. Utbbi akkor hasznos, ha valamilyen oknl fogva fontosnak tartjuk, hogy manulisan adjuk meg a Blob, a Queue s a Table Storage elrsi tjt ezeket egybknt a Storage Account elrsi tja alapjn az osztly ki tudja tallni. A 10-3 kdlista azt mutatja be, hogy hogyan hozhatunk ltre CloudStorageAccount objektumot egy .NET parancssoros alkalmazsban, ha az app.config fjlban a 10-2 kdlistban ltott mdon ltrehoztunk egy AzureStorage nev kapcsolati karakterlncot. 10-3 kdlista: CloudStorageAccount ltrehozsa egy .NET-projektben
using using using using using using using using System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks; Microsoft.WindowsAzure.Storage; Microsoft.WindowsAzure.Storage.Auth; Microsoft.WindowsAzure;

namespace AzureTableStorageDemo { class Program { static void Main(string[] args) { CloudStorageAccount csAcc; if (CloudStorageAccount.TryParse(CloudConfigurationManager .GetSetting("AzureStorage"), out csAcc)) { //CloudStorageAccount felhasznlsa } } } }

Ahogy lthat, a CloudConfigurationManager segtsgvel olvassuk be a konfigurcis fjlbl, hogy hova s milyen belltsokkal kell csatlakozni. A CloudStorageAccount objektumon keresztl hozzfrhetnk a tregysgekhez.

A Table Storage elrse


Ebben az alfejezetben a 10-4 kdlistn lthat Main metdusban hvott, a listban kiemelt metdusok fejlesztsn keresztl ismerkedhetsz meg a trszolgltatsok hasznlatval. A kiemelt mveleteket egyesvel valstod majd meg. A Microsoft.WindowsAzure.Storage szerelvnyen kvl a System.Configurationre is szksged lesz. 10-4 kdlista: A Table Storage hasznlata alapkd
using using using using Microsoft.WindowsAzure.Storage; Microsoft.WindowsAzure.Storage.Table; System; System.Configuration;

namespace AzureTableStorageDemo { class Program { static void Main(string[] args) {

178

10. PaaS Storage

CloudStorageAccount csAcc; if (CloudStorageAccount.TryParse(ConfigurationManager .ConnectionStrings["AzureStorage"].ConnectionString, out csAcc)) { CloudTableClient tClient = createTableStorageClient(csAcc); CloudTable series = createTable(tClient, "series"); enumerateTables(tClient); Serie archer = new Serie("Archer", "animated") { Description = "No Cyril, when they're dead, they're just hookers!" }; addEntity(series, archer); Serie trek = new Serie("Star Trek - TNG", "scifi") { Description = "Romulans. Borg. Tea. Earl Grey. Hot." }; Serie firefly = new Serie("Firefly", "scifi") { Description = "Best gorram scifi in the 'verse." }; addBatchOfEntities(series, trek, firefly); listSeriesInGenre(series, "scifi"); modifySerie(series, "animated", "Archer", "Lying is like 95% of what I do.") ; listSeriesInGenre(series, "animated"); } Console.ReadLine(); } }

A kd mkdse a kvetkez: Miutn sikerlt felcsatlakozni az Azure Storage-ra, ltrehozunk egy tblt a Table Storage-ban (csak akkor, ha az mg nem ltezik), majd a kpernyn megjelenti, milyen tblk tallhatk a trban. Ezutn feltlt egy, majd ksbb kt Serie objektumot egyetlen batch mveletknt az imnt ltrehozott tblba, majd kirja a kpernyre a scifi kategriba tartoz sorozatok adatait. Ezt kveten megvltoztatj a egy sorozat lerst, s kirja annak mdostott adatait a kpernyre. Ahhoz, hogy rendben mkdjn az alkalmazs, szksg lesz a Microsoft.Data.OData szerelvnyre. Ha ezt mg nem hasznltad, vagyis nincs felteleptve a gpre, a legegyszerbben gy adhatod hozz a projekthez, hogy a projekt referenciihoz tartoz gyors menvel (jobb gombbal rhet el) a Manage NuGet Packages parancs dialgusval rkeresel a szerelvnyre, s az Install gombra kattintasz. A 10-7 bra a NuGet Package Manager ablakot szemllteti.
Elfordulhat, hogy a fggsgek valamelyikt nem tudja telepteni a package manager. Ebben az esetben az OData teleptshez hasonlan keress r a dialgusban a System.Spatial osztlyknyvtrra, illetve a Microsoft.Data.Edm komponensre, s teleptsd fel kln-kln azokat!

Az elz kdban felhasznltl egy Serie nev tpust. Ez egy sajt osztly, amely egy tvsorozat adatait trolja el: a sorozat cmt, a mfajt, illetve egy r jellemz szveget. A sorozatokat a Table Storage -ben stlusuk szerint osztjuk partcikra. Ennek az az elnye, hogy ha valaki pldul egy romantikus komdira keres r, elg egyetlen partcijt ttekinteni a sorozatokat trol Azure tblnak az eredmny meghatrozshoz. A Serie osztly megvalstsa a 10-5 kdlistn lthat.

179

10. PaaS Storage

10-7 bra: Az ODataLib a Nuget Package Managerben

10-5 kdlista: A Serie osztly


using Microsoft.WindowsAzure.Storage.Table; namespace AzureTableStorageDemo { class Serie : TableEntity { public Serie() { } public Serie(string title, string genre) { PartitionKey = genre; RowKey = title; } public string Description { get; set; } } }

A Table Storage csak olyan objektumokat fogad el entitsknt, melyek a TableEntity osztlybl szrmaznak, vagy megvalstjk az ITableEntity interfszt. Ez garantlja tbbek kztt, hogy rendelkezni fognak PartitionKey s RowKey tulajdonsgokkal, melyek a tblban val azonostshoz elengedhetetlenek. Tovbbi kvetelmny, hogy a tblkba helyezend entitsoknak legyen egy paramtermentes konstruktora. Emellett minden sajt tulajdonsgnak, melyet az entitsba tesznk, get s set accessor mvelettel is rendelkeznie kell. Ahogy lthat, a listban hasznlt konstruktor kt paramtert vr: a sorozat cmt s stlust. Mivel a sorozat cme nagy valsznsggel egyedi, ezrt azt hasznlhatjuk sorazonostknt (RowKey). Korbban mr leszgeztk, hogy a sorozatokat stlusuk alapjn akarjuk csoportostani ezrt a stlus (genre) argumentum rtkt a PartitionKey tulajdonsgban troljuk el. Az egyetlen sajt tulajdonsg teht a Description nev string lesz.

180

10. PaaS Storage A Table Storage elrshez elszr is egy CloudTableClient objektumra van szksgnk, ami lehetv teszi, hogy elrjk tblinkat; azt, hogy egyltaln ltrehozhassuk ket. Ez viszonylag egyszer feladat: csak meg kell hvnunk a CreateCloudTableClient metdust a mkdkpes CloudStorageAccount objektumunkon, s ettl visszakapjuk a klienst reprezentl pldnyt. A 10-4 kdlistban a createTableStorageClient metdussal oldottuk ezt meg, amelynek kdja a 10-6 kdlistban lthat. 10-6 kdlista: CloudTableClient ltrehozsa
static CloudTableClient createTableStorageClient(CloudStorageAccount csa) { CloudTableClient tableClient = csa.CreateCloudTableClient(); return tableClient; }

A CloudTableClient pldny segtsgvel vgezhetnk mveleteket a tblkkal. Egy tbla ltrehozshoz elbb egy CloudTable objektumot kell ksztennk a CloudTableClient pldny GetTableReference metdusval. Itt adhatjuk meg a tbla nevt. Ezutn a tblt a CloudTable objektum Create vagy CreateIfNotExists metdusval hozhatjuk ltre. A 10-7 kdlista szemllteti, hogy a 10-4 kdlistban felhasznlt createTable metdust hogyan is lehet megvalstani. 10-7 kdlista: CloudTable ltrehozsa
static CloudTable createTable(CloudTableClient client, string tName) { CloudTable table = client.GetTableReference(tName); table.CreateIfNotExists(); return table; }

Ha szksgnk van arra, hogy kilistzzuk tblinkat, azt is a CloudTableClient objektum segtsgvel tehetjk meg. A 10-8 kdlista a korbban hasznlt enumerateTables nev metdus megvalstst mutatja be. 10-8 kdlista: Tblk felsorolsa
static void enumerateTables(CloudTableClient client) { Console.WriteLine("Tblk:"); foreach (var t in client.ListTables()) Console.WriteLine(t.Name); Console.WriteLine(); }

Ha mr van egy tblnk, akkor van hol elhelyezni entitsainkat. A tbln a TableOperation osztly segtsgvel vgezhetnk olyan mveleteket, mint pldul elemek ltrehozsa, mdostsa, lekrdezse vagy trlse. Ezzel olyan TableOperation objektumokat hozhatunk ltre, melyeket aztn a kiszemelt tbla Execute metdusnak kell tadnunk, hogy a trszolgltats feldolgozza az adott mveletet. Egyetlen elem tblban val ltrehozst az Insert mvelettel tudjuk megoldani. Ezt szemllteti a 10-9 kdlista, mely az addEntity nvre hallgat metdus megvalstst tartalmazza.

181

10. PaaS Storage 10-9 kdlista: Sor beszrsa tblba


static void addEntity(CloudTable table, TableEntity entity) { TableOperation insert = TableOperation.Insert(entity); table.Execute(insert); }

Amennyiben mr ltezik entits ezzel a partci- s kulcsazonostval, akkor a Merge vagy a Replace mveleteket rdemes hasznlnunk, attl fggen, hogy pontosan milyen eredmnyt vrunk. Ha nem vagyunk biztosak benne, hogy ltezik a tbla, akkor az InsertOrMerge vagy InsertOrReplace mvelettel rdemes dolgozni. Amennyiben egy entitst szeretnnk lekrdezni, azt a fentiekhez hasonl mdon, de a Retrieve mvelettel tehetjk meg. A tbla Execute metdusa ltal visszaadott objektum Result tulajdonsga lesz az az entits, amit a partci- s sorazonost segtsgvel lekrdeztnk. Ha trlni szeretnnk egy entitst, akkor az elz mdon lekrdezhetjk, majd a TableOperation objektum Delete mveletvel tvolthatjuk el a trterletrl. Az egyesvel val mveletvgzs nem mindig a legjobb megolds. Ha pldul elre tudjuk, hogy tbb entitst hoz ltre a kliens, s mindegyiket fel kell tltennk a felhbe, lehetsgnk van arra is, hogy a sok mveletet egyetlen atomi mvelett ktegeljk ssze. Erre szolgl a TableBatchOperation osztly. Ennek a TableOperation osztlyhoz hasonl metdusaival tbb entitson is vgezhetnk mveleteket, majd a vgrehajtst egyetlen parancsknt adhatjuk t a Table Storage-nek a StorageTable ExecuteBatch metdusval. Fontos megkts, hogy az entitsoknak, amelyekkel dolgozunk, ugyanabba a partciba kell tartozniuk. A 10-10 kdlista a 10-4 kdlistban ltott addBatchOfEntities nev metdust mutatja be. 10-10 kdlista: Ktegelt vgrehajts
static void addBatchOfEntities(CloudTable table, params TableEntity[] entities) { TableBatchOperation tbop = new TableBatchOperation(); foreach (var item in entities) tbop.Insert(item); table.ExecuteBatch(tbop); }

Ha mr vannak entitsok egy tblban, akkor valsznleg le is krdezzk ket. Ehhez a TableQuery osztly nyjt segtsget, melyet ltrehozsa utn egy CloudTable pldny ExecuteQuery metdusnak tadva futtathatunk. Ezenkvl, miutn ltrehoztunk egy TableQuery objektumot, lehetsgnk van szrst s projekcit vgrehajtani a Where s a Select metdusai segtsgvel. A 10-11 kdlista a korbban felhasznlt listSeriesInGenre metdust mutatja be, amelyben egy tblbl lekrdezzk azokat a Serie objektumokat, amelyek megfelelnek egy bizonyos stlusnak ( a stlust a PartitionKey tulajdonsgukban troltuk el). A TableQuery osztly GenerateFilterCondition metdusai segtsgvel specifiklhatjuk, hogy mi alapjn szeretnnk szrni az elemeket. 10-11 kdlista: Entitsok listzsa szrssel
static void listSeriesInGenre(CloudTable table, string partition) { TableQuery<Serie> query = new TableQuery<Serie>(); query.Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partition)); foreach (Serie s in table.ExecuteQuery(query)) Console.WriteLine(s.RowKey + ":\t" + s.Description); }

182

10. PaaS Storage Termszetesen lehetsg van az entitsok mdostsra s trlsre is. Ahogy azt a beszrst bemutat pldnl lthattuk, a TableOperation osztly az, amely a tblval kapcsolatos CRUD mveleteket (s mg nhny bonyolultabbat) elrhetv tesz szmunkra. Ha mdostani szeretnnk egy mr ltez entitst, akkor elbb le kell azt krdeznnk. Erre a TableOperation Retrieve mvelett hasznlhatjuk, melyet szoks szerint egy tbla Execute metdusnak tadva futtathatunk le. Ha sikerlt a lekrdezs, az eredmnyobjektumot (melyet az Execute ltal visszaadott objektum Result tulajdonsgn rnk el) megvltoztathatjuk a kliensen, majd egy Replace tblamvelettel tlthetjk vissza a felhbe. A 10-12 kdlista a 10-4 kdlistban ltott modifySerie metdus implementcijt mutatja be. 10-12 kdlista: Entits mdostsa
static void modifySerie(CloudTable table, string partition, string row, string newDescription) { TableOperation retrieveOp = TableOperation.Retrieve<Serie>(partition, row); Serie serie = table.Execute(retrieveOp).Result as Serie; if (serie != null) { serie.Description = newDescription; table.Execute(TableOperation.Replace(serie)); Console.WriteLine("Entits frisstve."); } else Console.WriteLine("Bkken volt..."); }

Az elz ht kdlistn bemutatott metdusok implementlsa utn a 10 -4 kdlistn ltott pldaprogram ksznek tekinthet. Futtatskor a 10-8 brn lthathoz nagyon hasonl eredmnyt kell , hogy lssunk. Most, hogy tl vagyunk a Table Storage elmleti ttekintsn s gyakorlati felhasznlsn, egy tle jrszt eltr clokra tervezett trolsi megoldsra trnk t.

10-8 bra: Az AzureTableStorageDemo futtatsa

A Queue Service elrse


Ebben a rszben a Queue Service hasznlatba kapunk betekintst. Ahogy korbban, gy itt is egy lnyegre tren egyszer .NET pldaalkalmazson vizsgljuk meg a lehetsgeket. A parancssoros alkalmazs kdjnak alapjt a 10-13 kdlista szemllteti.

183

10. PaaS Storage Az alapok nem vltoztak: az alkalmazs egy app.config fjlt tartalmaz, amelyben elhelyeztk a kapcsolati karakterlncot, illetve referenciaknt felvettk a Microsoft.WindowsAzure.Storage s a System.Configuration osztlyknyvtrakat. 10-13 kdlista: A Queue Service hasznlata alapkd
using using using using using Microsoft.WindowsAzure.Storage; Microsoft.WindowsAzure.Storage.Queue; System; System.Configuration; System.Threading.Tasks;

namespace AzureQueueStorageDemo { class Program { static bool endProcessing = false; static void Main(string[] args) { CloudStorageAccount csAcc; if (CloudStorageAccount.TryParse(ConfigurationManager .ConnectionStrings["AzureStorage"].ConnectionString, out csAcc)) { CloudQueue queue = CreateQueue(csAcc); Task.Run(() => StartAdding(queue)); Task.Run(() => StartProcessing(queue)); } Console.ReadLine(); } } }

A kvetkezkben a kiemelt mveleteket valstjuk meg. A program feladata, hogy egy olyan rendszert szimulljon, amely kt komponensbl ll: az egyik komponens az zenetsorba rakja a feladatokat, mg a msik kiveszi a sorbl a legrgebbi feladatot, s feldolgozza azt. A szimulci jelen esetben azt jelenti, hogy nem kt klnll programot (pldul egy web role-t s egy worker role-t) hasznlunk fel, hanem egy programon bell kt feladatot futtatunk prhuzamosan, a .NET 4-bl mr ismert Task Parallel Library segtsgvel. A kd eleje lnyegben ugyanaz, mint a Table Storage-ot bemutat pldnl volt: a CloudStorageAccount s a ConfigurationManager osztly segtsgvel ltrehozunk egy CloudStorageAccount objektumot, amellyel az Azure trhelynkhz csatlakozhatunk. A msodik lps az zenetsor ltrehozsa. A harmadik lpsben beindtjuk azt a szlat, amely zeneteket ad az zenetsorhoz, a negyedik lpsben pedig azt, amely figyeli az zenetsort, s ha feladatot tall rajta, feldolgozza. Valjban az itt alkalmazott Task objektumok nem azonosak a szlakkal (System.Threading.Thread objektumok), de esetnkben j kzeltssel ugyanazt az eredmnyt kapjuk, mintha kzvetlenl szlakat alkalmaznnk. Az els feladat teht az zenetsor ltrehozsa. Ehhez a CloudStorageAccounton kvl kt osztlyra lesz szksgnk: a CloudQueueClientre s a CloudQueue-ra. Elbbin keresztl a Queue Service szolgltatst rhetjk el, mg utbbival egy adott zenetsort hozhatunk ltre, trlhetnk, illetve egyb mveleteket vgezhetnk rajta. A 10-14 kdlistn a 10-13 kdlistban mr felhasznlt CreateQueue metdus implementcijt lthatjuk.

184

10. PaaS Storage 10-14 kdlista: zenetsor ltrehozsa


static CloudQueue CreateQueue(CloudStorageAccount csAcc) { CloudQueueClient cqc = csAcc.CreateCloudQueueClient(); CloudQueue q = cqc.GetQueueReference("feladatok"); if (!q.Exists()) q.Create(); return q; }

A CloudQueueClient elksztse utn ltrehozunk egy CloudQueue objektumot (q). Ezutn ennek Exists metdust hasznljuk fel arra, hogy leellenrizzk, ltezik-e. Ha nem, akkor a Create metdus segtsgvel ltrehozzuk azt. Ha mr van zenetsorunk, akkor rhatunk bele zeneteket. A 10-15 kdlista szemllteti a StartAdding metdus megvalstst, amelyben t zenetet tltnk fel egy zenetsorba. 10-15 kdlista: zenet kldse az zenetsorba
static void StartAdding(CloudQueue queue) { Random r = new Random(); for (int i = 0; i < 5; i++) { CloudQueueMessage msg = new CloudQueueMessage(i + ". feladat."); queue.AddMessage(msg, TimeSpan.FromDays(1), TimeSpan.FromSeconds(2)); Console.WriteLine(i + ". feladat hozzadva."); Task.Delay(r.Next(500, 2000)).Wait(); } endProcessing = true; }

Az zenetsor elemei CloudQueueMessage tpus objektumok. Ltrehozsukkor ktfle tpus adatot helyezhetnk el bennk: a legegyszerbb megoldsknt egy stringet kldhetnk el, de lehetsgnk van tadni egy byte tmbt, mely gyakorlatilag brmit tartalmazhat, pldul egy sorostott, XML -l alaktott objektumot. A ltrejtte utn az zenetet az AddMessage metdus segtsgvel helyezhetjk el az zenetsorban. Ennek a metdusnak egyetlen ktelez argumentuma maga az zenet, de ezen kvl mg rengeteg dolgot bellthatunk. A 10-15 kdlistban pldul a TTL-t, vagyis azt az idt, amg az zenet elrhet a sorban egy napra cskkentjk (az alapbellts ht nap), valamint adunk kt msodperc ksleltetst az zenet megjelenshez az zenetsoron. Ez azt jelenti, hogy hiba van mr a felhben az zenet, mg nem lthat egyszer megolds olyan esetekre, amikor tudjuk, hogy az zenet feldolgozsa mg vrhat, mert pldul egy msik, fontosabb zenetnek kell elre kerlnie a sorban. (Ugyanakkor ezt a problmt tbb zenetsor prhuzamos hasznlatval is megoldhatjuk.) A klds vgn vletlenszeren fl-kt msodpercet vrakozunk, mieltt a kvetkez zenetet elkldennk, a metdus legvgn pedig belltunk egy bool rtket, amely majd jelzi a feldolgoz metdusnak, hogy nem lesz tbb zenet, lellhat. Az zenetsorokban lv zenetek feldolgozsra szintn a CloudQueue s a CloudQueueMessage osztlyokat hasznlhatjuk fel. A sor elejn lv zenetet a CloudQueue GetMessage metdusval krhetjk le. A GetMessages metdussal egyszerre tbb zenetet is legfeljebb 32-t lekrdezhetnk egyidejleg. Ahhoz, hogy tudjuk, mennyi zenet van ppen a sorban, az ApproximateMessageCount tulajdonsgot hasznlhatjuk fel, amely, ahogy neve is mutatja, csak kzelt rtket ad, hiszen egy masszvan prhuzamos krnyezetben elfordulhat, hogy mire egy klienshez megrkezik ez a szm a felhbl, ms kliensek mr leemeltek, vagy pp feltltttek zeneteket. A 10-16 kdlista a korbban felhasznlt StartProcessing metdus mkdst s megvalstst mutatja be. 185

10. PaaS Storage 10-16 kdlista: zenet lekrdezse s feldolgozsa


static void StartProcessing(CloudQueue queue) { queue.FetchAttributes(); while (queue.ApproximateMessageCount > 0 || !endProcessing) { if (queue.ApproximateMessageCount == 0) Task.Delay(300).Wait(); else { CloudQueueMessage msg = queue.GetMessage(); if (msg != null) { Console.WriteLine("FELDOLGOZS - " + msg.AsString); queue.DeleteMessage(msg); } } queue.FetchAttributes(); } Console.WriteLine("Feldolgozs vge."); }

Az ApproximateMessageCount tulajdonsg valjban egy loklis rtket mutat; ahhoz, hogy ezt frisstsk, a CloudQueue objektum FetchAttributes metdust kell felhasznlnunk. A ciklus addig halad, amg az endProcessing mezt a msik komponensben fut metdus true rtkre nem lltja, illetve amg van elem az zenetsorban. Ha ppen nincs zenet, akkor vrakozik 300 ezredmsodpercet, majd a FetchAttributes mvelettel frissti az ApproximateMessageCount szmllt, s ismt ellenrzi, hogy van-e mr zenet, illetve hogy kell-e mg egyltaln futnia. Ha tall zenetet, azt a CloudQueue GetMessage metdusval leveszi a sor elejrl, s feldolgozza, ami jelen esetben annyit jelent, hogy kirja a kpernyre a tartalmt. Mivel az zenet valjban mg ott van a sorban, csak tmenetileg lthatatlan, a feldolgozs vgeztvel trlni is kell a sorbl, hogy ne bukkanjon fel jra. Erre szolgl az zenetsor DeleteMessage metdusa. Ha lefuttatjuk a kdlistkon bemutatott programot, a 10-9 brn lthathoz hasonl eredmnyre szmthatunk. A feladatok hozzadsnak s feldolgozsnak sorrendje nmileg eltrhet, ami egyrszt a felhvel val kommunikcibl add ksleltetssel magyarzhat, msrszt pedig azzal, hogy az egyes zenetek hozzadsa kztt vletlenszer idtartamokat vrakozik a program (lsd a 10 -15 kdlistt).

10-9 bra: Az AzureQueueStorageDemo futtatsa

186

10. PaaS Storage Lthat teht, hogy az Azure Cloud Queue Service-nek felgyelt API-ja is kellemes, ttekinthet felletet nyjt a felh elrsre a Table Storage interfszhez hasonlan.

A Storage Analytics bemutatsa


A Windows Azure a felhasznlt erforrsok alapjn szmlz a szolgltatsait ignybe vevk fel. Ez azt is jelenti, hogy egy a felh szempontjbl mretesebb vagyis sok trhelyet vagy processzoridt fogyaszt alkalmazsnl mr nem engedhetjk meg magunknak, hogy az alkalmazst szabadon eresztv e gondolkods nlkl kiszolgljuk minden erforrsignyt, hiszen ez tetemes sszegekbe kerlhet. Felhben fut vagy felht felhasznl rendszereink erforrshsgnek figyelemmel ksrsre s megzabolzsra szolgl a Windows Azure Storage Analytics szolgltatsa. Az Analytics rendszer kt rszre oszthat. Egyrszt az Azure ha engedlyezzk kpes naplzni a szolgltatsi vgpontjainkhoz berkez krseket, s termszetesen rszletes informcikat szolgltat ezekrl, ha ignyeljk. Msrszt sszestett adatokat, metrikkat bocst rendelkezsnkre, melyekkel kvethetjk a trhelynkhz val akr tbb millird hozzfrsbl kialakult trendeket. A Storage Analytics a Storage Accountunkhoz tartoz 100 TB helybl legfeljebb 20 TB trhelyet foglalhat le. Ezeket a naplkat brmilyen Azure-ban fut szolgltats elri, illetve brmilyen alkalmazs, amely kpes HTTP zeneteket kldeni norml vagy biztonsgos csatornn gy .NET-es alkalmazsaink is. A naplfjlok szabvnyos Azure trolkba kerlnek, teht az Azure Storage Blob s Table API-jain keresztl elrhetjk ket. A naplzsi szolgltatst (Logging Service) trszolgltatsonknt aktivlhatjuk; teht kln -kln engedlyezhetjk a blobra, a table storage-ra, illetve a Queue Service-ra. Aktivls utn a szolgltats egyarnt naplzza a sikeres s a sikertelen, a hitelestett s az anonim hozzfrsi ksrleteket s szerveroldali hibazeneteket. A naplzs az Azure Storage blob szolgltatsnak segtsgvel trtnik. A naplzs aktivlsakor megjelenik egy $logs nev trol (kontner) Blob Storage-on bell. A trolban nem tudunk j blobokat ltrehozni, s meglvket sem fogunk tudni frissteni. Csupn arra van lehetsgnk, hogy a naplzsi szolgltats ltal ltrehozott blobokat olvassuk, illetve trljk. Magt a trolt sem tudjuk trlni. Az j blob trol ltrejtte nem befolysolja mr meglv alkalmazsaink mkdst. Ha kilistzzuk az sszes trolt, a $logs nem kerl bele a listba. Csak akkor rhetjk el a benne lv adatokat, ha kzvetlenl hozz csatlakozunk, a kvetkez sma szerint:
protokoll://hozzfrs.blob.core.windows.net/$logs

Itt a hozzfrs a Storage Accountunk neve. Ezen bell a naplk a kvetkez sma szerint rhetk el:
szolgltats/YYYY/MM/DD/hhmm/szmll.log

Itt a szolgltats a trszolgltats neve (blob, queue, table), a YYYY, MM s DD rtelemszeren az adott nap dtuma, amikor a napl kszlt, a hhmm az ra (a perc rszt jelenleg nem hasznlja a szolgltats), a szmll pedig egy hat szmjegy azonost, amely csupa nullrl indul, s egyszer inkrementlssal vltozik, ahogy a szolgltats jabb naplkat hoz ltre. A naplzsi blobok tartalmnak smjrl a http://msdn.microsoft.com/en-us/library/windowsazure/hh343259.aspx cmen ad sszefoglalt a Microsoft. A hasznlati metrikkat rendelkezsnkre bocst monitoring (felgyeleti) szolgltats a naplzshoz hasonl mdon kln-kln aktivlhat a Windows Azure Storage egy-egy trszolgltatsra. Aktivls utn a szolgltats naplzza, hogy adott idintervallumban hny tranzakcit hajtottak vgre az egyes trszolgltatsokon, illetve ezen bell az egyes krsekbl (pl. tbla olvassa, zenet zenetsorrl val leemelse stb.) mennyi trtnt s hny hiba fordult el. A metrikkat rnknt frissti a Logging Service. A tranzakcik figyelsn kvl naponta eltrolja a rendszer blobtrunk mrett. Ennek keretben jelentst kapunk arrl, hogy hny bjtot fogyasztanak sszesen a blobjaink (elviekben 10 0TB a plafon, de ezt

187

10. PaaS Storage cskkenti a tblk s zenetsorok felhasznlsa), hny trolnk (kontner) van, illetve ezekben sszesen hny blob objektumunk tallhat. A trmretre vonatkoz metrikk a jvben elrhetk lesznek a Queue s a Table szolgltatsok szmra is. Az adatokat a monitoring szolgltats esetben is a WAS szabvnyos API-jn keresztl rhetjk el, illetve itt is, akrcsak a naplzsi szolgltatsnl, a Storage Accountunkhoz tartoz 100TB -bl legfeljebb 20TB-nyi hellyel gazdlkodik az Azure. Ezttal azonban nem blobokban trolja el az adatokat, hanem a Table Storage szolgltatst felhasznlva. A hrom trszolgltatshoz egy-egy $MetricsTransactionSzolgltatsnv nev tblt hoz ltre, ahol a Szolgltatsnv az adott trszolgltats neve, nagybetvel kezdve (Blob, Queue, Table). A blob szolgltatshoz hasznlhatjuk mg a $MetricsCapacityBlob nev tblt is, mely a mretre s kihasznltsgra vonatkoz adatokat trolja el. A Windows Azure egy ksbbi verzijban hasznlhatjuk majd a $MetricsCapacityQueue s $MetricsCapacityTable tblkat is a kt msik trszolgltatshoz. Ezek a specilis tblk a tblk listzsa sorn nem jelennek meg, csak azokat kzvetlenl lekrdezve frhetnk hozzjuk. A tblk a Table Storage-nl szoksos sma szerint rhetk el:
protokoll://hozzfrs.table.core.windows.net/Tables("tblanv")

Itt a hozzfrs a Storage Accountunk neve, a tblanv pedig az ezttal metrikai adatokat tartalmaz tbl. Ne feledjk, hogy ezek mind egy $ jellel kezddnek! Ezeknek a tblknak a smjt a http://msdn.microsoft.com/en-us/library/windowsazure/hh343264.aspx cmen rja le az MSDN.
Fontos tudnival, hogy a Storage Analytics szolgltats nem ingyenes. ppen ezrt van arra szksg, hogy kln aktivljuk. Ahogy az elbbiekben megismerhettk, a Storage Analytics szolgltats a WAS kpessgeit felhasznlva mkdik, gy azzal egyetemben tranzakcinknti, illetve trhelyhasznlat utni djat szmolhatnak fel, ha bekapcsoljuk.

A Storage Analytics szolgltats aktivlsa


A Storage Analytics szolgltatst a Windows Azure Management Portalon aktivlhatjuk. A bal oldali listn vlasszuk a Storage ikonjt, majd ezen bell a trolt, amelyben szeretnnk ignybe venni a naplzst ! A troln bell vlasszuk a Configure menpontot az oldal tetejn ! Ezen az oldalon amint az a 10-10 brn is lthat szablyozhatjuk tbbek kztt az emltett naplzst s a metrika ksztst, illetve trolst. A monitoring csoportban llthatjuk be, hogy a Blob, Table s Queue szolgltatsok kzl melyeken szeretnnk aktivlni a metrikk elksztst, illetve hogy mennyire rszletes informcikra tartunk ignyt. A logging csoportban kapcsolhatjuk be (vagy ki) az egyszer naplzst a hrom trolra kln -kln. (A 10-10 brn csak a Blob Storage-re vonatkoz belltsok ltszanak; a lehetsgek megegyeznek a Table s Queue naplzsnak lehetsgeivel.) Kln szablyozhatjuk azt is, hogy a trolkhoz rkez krdsek kzl melyeket szeretnnk naplzni: olvassi, rsi s trlsi krsek rkezst rgzttethetjk.

A Storage Analytics adatok elrse


A 10-17 kdlistn lthat program, amelyet a kvetkez kt kdlistn egsztnk ki, ltrehoz egy zenetsort (Cloud Queue) az Azure Storage-ban, feltlt r egy tesztzenetet, azutn kilistzza a naplfjlokat tartalmaz blobokat s a naplfjlok tartalmt. Ahhoz, hogy tnylegesen lssunk is naplkat, kt dologra lesz szksg: 1. 2. Aktivljuk Storage Accountunkon a Storage Analyticset az zenetsorokra (legalbb az rsi krsekre)! Miutn feltltttnk egy zenetet, vrjunk egy rt, s futtassuk jra a programot! Addigra mr meg kellett jelennie a naplfjlnak a trhelyen.

188

10. PaaS Storage

10-10 bra: A Storage Analytics mkdst szablyoz oldal a Windows Azure Management Portalon

10-17 kdlista: A Storage Analytics elrse alapkd


using using using using using using using Microsoft.WindowsAzure.Storage; Microsoft.WindowsAzure.Storage.Blob; Microsoft.WindowsAzure.Storage.Queue; System; System.Configuration; System.IO; System.Text;

namespace AzureAnalyticsDemo { class Program { static void Main(string[] args) { CloudStorageAccount csa = CloudStorageAccount.Parse(ConfigurationManager .ConnectionStrings["AzureStorage"].ConnectionString); SendMessageToQueue(csa); ProcessLogs(csa); Console.Read(); } } }

189

10. PaaS Storage A konzolalkalmazs elksztse sorn add hozz azokhoz a Microsoft.WindowsAzure.Storage s a System.Configuration szerelvnyeket! Az zenetklds mkdst mr megismerhetted a fejezet korbbi rszben. A 10-18 kdlistn lthat a SendMessageToQueue metdus implementcija. 10-18 kdlista: zenet kldse a testqueue zenetsorba
static void SendMessageToQueue(CloudStorageAccount csa) { CloudQueueClient cqc = csa.CreateCloudQueueClient(); CloudQueue cq = cqc.GetQueueReference("testqueue"); cq.CreateIfNotExists(); cq.AddMessage(new CloudQueueMessage("Teszt.")); Console.WriteLine("j zenet feltltve."); }

Ahogy lthat, mindssze annyit tesznk, hogy a ktelez krk lefutsa (a CloudQueueClient s a CloudQueue referencia ltrehozsa) utn, ha mg nincs zenetsor, ltrehozzuk azt, majd az AddMessage metdussal feltltnk egy egyszer, szveges zenetet. A ProcessLogs metdus, melynek kdja a 10-19 kdlistn lthat, lekrdezi, milyen blobtrolk rhetk el Storage Accountunkon, majd listzza a $logs trol tartalmt. 10-19 kdlista: Naplk lekrdezse a $logs blobtrolbl
static void ProcessLogs(CloudStorageAccount csa) { CloudBlobClient cbc = csa.CreateCloudBlobClient(); Console.WriteLine("Lthat blobtrolk:"); foreach (var cont in cbc.ListContainers()) Console.WriteLine(cont.Name); CloudBlobContainer cLogs = cbc.GetContainerReference("$logs"); foreach (CloudBlockBlob item in cLogs.ListBlobs(null, true)) { Console.WriteLine(item.Uri); using (var ms = new MemoryStream()) { item.DownloadToStream(ms); Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray())); } Console.WriteLine("---\n"); } }

A metdus els sorban ltrehozzuk a CloudBlobClient objektumot, mellyel csatlakozhatunk a trszolgltatshoz. A metdus msodik s harmadik sora a feladat szempontjbl nem relevns, mind ssze annyi a lnyege, hogy kilistztassuk a kpernyre az sszes elrhet kontnert. Ennek rdekessge az, hogy itt a naplkat tartalmaz blob kontner nem jelenik meg, azaz ha egybknt mg nem hoztunk ltre blobokat, akkor a lista res lesz, br a naplzst mr bekapcsoltuk. A mvelet lnyeges rsze akkor kezddik, amikor a $logs nev blobtrolra krnk egy referencit az Azure-tl. Annak ellenre, hogy az elz listzsnl nem jelent meg, kiderl, hogy mgiscsak van ilyen nev blob. A msodik foreach ciklus vgigmegy a trolban tallhat blobokon, mindegyiknek kirja az elrsi tjt, majd ennek segtsgvel letlti a blob tartalmt, s szvegg alaktva kirja azt a kpernyre. A naplzs mkdsnek sajtossgai miatt rdemes a programbl tmenetileg trlni a ProcessLogs metdus hvst, s gy futtatni a programot, majd egy rval ksbb lefuttatni gy, hogy csak a ProcessLogs metdust hvjuk, a SendMessageToQueue-t nem! gy elszr ltrehozza az zenetsort, feltlt egy zenetet, msodszor pedig mr nem tlt fel semmit, csak a naplt vizsglja.

190

10. PaaS Storage Ha lefuttatjuk az elbbi hrom kdlistn sszerakott alkalmazst, a 10 -11 brn lthathoz hasonl eredmnyt kaphatunk (az elmosott helyeken a naplzott krs forrsnak IP-cme tallhat).

10-11 bra: Naplfjlok s tartalmuk listzsa

Mint lthat, norml listzsnl nem ltszanak blobtrolk (ha a Storage Accounton mg nem hoztunk ltre egyet sem), utna viszont ki tudjuk listzni a $logs trol tartalmt, amely a parancssoros ablak harmadik sorban lthat blobbal kezddik.

sszegzs
Ebben a fejezetben megismerhettk, hogy a korbban mr bemutatott Blob Storage -en kvl milyen ms perzisztens trolsi megoldsokat knl a Windows Azure Storage. Azontl, hogy ttekintettk a Table Storage s a Queue Service lehetsgeit, valamint az ezekbl add lehetsges alkalmazsi helyzeteket, gyakorlatban is felhasznltuk ket egy-egy programban. Vgl pedig betekinthettnk a WAS naplzst s metrikk elrst biztost szolgltatsba, a Storage Analyticsbe is.

191

11. PaaS SQL szolgltatsok

11. PaaS SQL szolgltatsok


Ebben a fejezetben az albbi tmkat ismerheted meg: A Windows Azure SQL adatbzisainak bemutatsa s razsa Adatbzis-szerver ksztse Adatbzisok ltrehozsa s elrse SQL adatbzis elrse kliens alkalmazsbl SQL adatbzisok exportlsa s importlsa Adatszinkronizci a loklis s a felhben lv adatbzis kztt Biztonsgi ments ksztsnek lehetsgei Ebben a fejezetben az SQL adatbzisokat nzzk meg kzelebbrl. Minden egyes bemutatott funkcit egyegy gyakorlaton keresztl ismerhetsz meg, gy nemcsak elmleti tudst, hanem gyakorlati tapasztalatot is szerezhetsz az SQL adatbzisokhoz kapcsoldan.

Az SQL adatbzis a felhben


A Windows Azure SQL adatbzisa (SQL Database) egy felh alap relcis adatbzis-kezel rendszer. Ez egy magas rendelkezsre lls, sklzhat, tbb-brls (multi-tenant) szolgltats, amit a Microsoft biztost szmunkra a felhben. A fejlesztknek s az zemeltetknek nem kell gondoskodniuk az adatbzis kiszolgljnak teleptsrl, a belltsokrl, a javtcsomagokrl s a menedzselsrl, gy a fizikai adminisztrci megsznik, s kizrlag a logikai adminisztrci hrul az adatbzis adminisztrtoraira. Ha mr van egy meglv adatbzisunk, s azt fel szeretnnk tenni a felhbe, akkor mirt ne hasznlnnk a meglv technolgikat s a tudsunkat? Az SQL Database (korbbi nevn SQL Azure) ebben segt neknk: fejlesztsi szempontbl minimlis j tudsra kell csak szert tennnk ahhoz, hogy a hagyomnyos SQL Serveres (on-premises) megolds helyett SQL adatbzist hasznljunk a felhben. Az internet alap szolgltatst biztost cgeknek sokfle kihvssal kell szembenznik. A felhasznlk ugyanis az adataikat akr tbbfle kszlkrl vagy platformrl is el szeretnk rni. Az adatbzis mrete s rendelkezsre llsa kapcsn meglehetsen sokfle problmt kell lekzdennk. Ha a hagyomnyos modellt vesszk alapul, vagyis azt, hogy a fizikai szerver s vele egytt az SQL Server is a mi felgyeletnk alatt van, akkor tbb problmra is figyelnnk kell! Szksgnk van egy vagy tbb szerverre, opercis rendszerre, az adott SQL vltozat licenszre, trhelyre, hlzatra stb. A rendszergazdknak figyelnik kell a rendszer llapott, teljestmnyt, rendelkezsre llst, s ha valami problma van, akkor be kell avatkozniuk. A rendszernknek termszetesen problmk esetn is vlaszkpesnek kell lennie. Nem engedhetjk meg, hogy egy-egy karbantarts idejn a felhasznlk ne rjk el a szolgltatsokat! Ha belegondolunk abba, hogy egy ilyen tpus rendszer megptse s zemeltetse mennyi munkarba s pnzbe kerl, rjvnk, hogy ez gy nem kltsghatkony megolds. Akkor hogyan is lehetne megoldani ezt a problmt kltsghatkony mdon? Gondoljunk csak bele, mennyibe kerl egy szerver beszerzse, s ha hibatr rendszert akarunk, akkor nem elg egy, tbb szervert kell vsrolnunk. A licenszek sem olcsk, s mg nem beszltnk a rendszergazdk brezsrl s a bevezets kltsgeirl. Ez gy nagyon soknak tnik! Viszont ha mr van egy meglv hibatr infrastruktra, akkor mirt ne vsrolhatnnk erforrst anlkl, hogy pnzhegyeket pazarolnnk el egy sajt megolds kivitelezsre ? Ha kltsghatkonyabbak szeretnnk lenni ilyen tren, akkor az Azure-ban tallhat SQL Database erre kitn megolds! Radsul ugyanazokkal az eszkzkkel dolgozhatunk, mint eddig, hisz a felhben lv SQL Database szolgltatst az eszkzeink nagy rsze tmogatja. Fejlesztsi szempontbl pedig az adatok kezelsre hasznlt nyelv, a T-

193

11. PaaS SQL szolgltatsok SQL ugyanaz, mint a telephelynkn hasznlt SQL Server esetn, mindssze nhny aprbb klnbsg van a kt vltozat kztt. Az SQL Database tulajdonkppen egy mdostott SQL Server motor, amely kiemelkeden magas rendelkezsre llst s hibatrst biztost a felhasznlknak. Nzzk meg, milyen elnyei vannak annak, hogy az adatbzisunk a felhben van: Nincs szksg hardverre Nincs szksg a fizikai telepts elvgzsre Nem kell a licenszeket beszereznnk vagy megvsrolnunk A javtcsomagok s frisstsek teleptse automatikusan trtnik Magas rendelkezsre lls s hibatr a rendszer Az adatbzisok mrete rugalmas, egyszeren cskkenthet vagy nvelhet az zleti ignyeknek megfelelen A meglv SQL Server-es eszkzkkel kezelhet (pldul SSMS-sel) T-SQL tmogatssal br Annyit fizetnk rte, amennyit hasznljuk Knny a kltsgek elszmolsa Fontos megjegyeznnk, hogy az SQL Database szolgltatsban kezelt adatbzisokat nemcsak Windows Azure-ban hosztolt alkalmazsbl tudjuk elrni! Akr a vilg tvoli pontjrl is hasznlni tudjuk az adatbzist, ugyangy, mintha az sajt gptermnkben lenne! Viszont azzal tisztban kell lennnk, hogy az SQL Database funkcionalitsa nhny terleten elmarad a hagyomnyos SQL Servertl. Pldul az Analysis Services vagy Online Analytical Processing (OLAP) mg nem rhet el az SQL Database jelenlegi vltozatban. Mr korbban is voltak olyan funkcik, amik az els vltozatba mg nem kerltek bele, ksbb viszont elrhetv vltak. Ilyen pldul az SQL Database Reporting. Ma mr ez a funkci is elrhet, s mivel ez online platform, ezrt a frissts is egyszeren trtnik. Az albbi lista az SQL Database funkcionalitsbl hinyz fontosabb kpessgeket sorolja fel. Abban az esetben, ha szmodra ezek nlklzhetetlen funkcik, ne vlaszd az SQL Database szolgltatst! Elosztott tranzakcik Elosztott lekrdezsek FILESTREAM Data Beptett szabadszveges keress (Full-Text Search) CLR Service Broker Fizikai szerver s katalgus Adatbzis-tkrzs Extended Stored Procedures Tbla particionls Az SQL Database rugalmas, sklzhat s biztonsgos rendszer. Mit is jelent ez? Az egyrtelm, hogy rugalmas s sklzhat, hiszen az ignyeinknek megfelelen vltoztathatjuk az adatbzisaink mrett, s a felhasznlt adatbzis mrete utn fizetnk. De mitl biztonsgos a rendszer? Az SQL Database-ben minden adatbzisrl egy les pldny s kt replika is kszl. Abban az esetben, ha az egyik kiesik, annak szerept a kvetkez tveszi. Ekkor ismt kszl egy replika, hogy mindenkppen hrom pldny legyen az adott adatbzisbl. gy hiba esetn az adataink mindig rendelkezsre llnak. Nagyon fontos termszetesen az a krds is, hogy adatbzisainkrl hogyan kszthetnk biztonsgi mentst. A SQL Database esetn ennek megoldsa kicsit eltr a helyben megszokottl. Tbb opci kzl is vlaszthatsz: Hasznlhatod a beptett Import/Export funkcionalitst. E segtsgvel adatbzisodrl teljes kr biztonsgi mentst kszthetsz, m a helyben megszokott .bak fjl helyett .bacpac fjl lesz a kimenet, ami egy j formtum.

194

11. PaaS SQL szolgltatsok Tbb mdon is mozgathatsz adatot felhs s helyi adatbzis kztt: hasznlhatod a SQL Azure Migration Wizard nev segdeszkzt, generltathatsz szkripteket SQL Management Studibl vagy Visual Studibl, vagy bevetheted a Data Sync funkcionalitst. Ezek segtsgvel a felhs adatokat lehozhatod egy fldi adatbzisba (s fordtva), ahol eltrolhatod ket, vagy kszthetsz bellk backupot. Hagyomnyos .bak fjl ksztsre maga az SQL Database nem ad lehetsget, harmadik fl (Red Gate) ltal gyrtott megolds azonban ltezik r. A fenti lehetsgekrl mg lesz sz a fejezetben.

SQL Database szerver ltrehozsa


Nzzk meg, hogy hogyan hozhatsz ltre egy SQL Database kiszolglt s adatbzist! Mieltt belekezdenl, rendelkezned kell egy Windows Azure fikkal. Ha mg nincs ilyen felhasznli fikod, akkor krhetsz egy ingyenes trial fikot is. Ha mr van Windows Azure fikod, akkor az SQL adatbzis ltrehozshoz kvesd az albbi lpseket: 1. Jelentkezz be a Windows Azure azonostddal (Microsoft Account, rgebbi nevn Live ID) a Windows Azure Management Portlra (http://azure.com)!

Jelenleg ktfle management portl rhet el. A korbbi a Silverlight alap, az jabb pedig HTML5 alap portl. A HTML5 alap portl jelenleg Preview vltozatban rhet el, de mivel ez fogja levltani rvidesen a Silverlight alap portlt, ezrt most ezt mutatjuk be.

2.

A bal oldalon tallhat navigcis svon kattints az SQL DATABASES menpontra, ahogyan azt a 11-1 bra is mutatja!

11-1 bra: Navigcis sv

3.

Ezutn kattints az oldal aljn tallhat Add gombra! Ekkor felugrik a New SQL Database ablak, amint az a 11-2 brn is lthat.

195

11. PaaS SQL szolgltatsok

11-2 bra: Adatbzis ltrehozsa New SQL Database

4.

A megjelen ablakban add meg az adatbzis nevt (Name)! Ezt kveten vlaszd ki, hogy mekkora legyen az adatbzis mrete! Ktfle vltozat ltezik, ezek csak a kivlaszthat adatbzis mretben klnbznek. Ltezik egy Web Edition a kis adatbzisok szmra, valamint egy Business Edition a nagyobbaknak. A Web Edition 1 gigabjtos s 5 gigabjtos adatbzisokat knl. (Ne feledjk, ha 100 megabjtnl kevesebbet hasznlunk, akkor csak 5$-t kell fizetnnk!) A Business Edition jelenleg 10 150 gigabjtos adatbzisok hasznlatt teszi lehetv. A Collation tulajdonsgban bellthatod, hogy milyen karakterkdolst hasznlsz az adatbzisnl. Mivel most magyar nyelvterleten vagyunk, az alaprtelmezett bellts valsznleg j lesz szmodra. Ezt kveten kivlaszthatod, hogy melyik elfizetshez szeretnd hozzrendelni az adatbzist. Ha tbb elfizetsed is van, kivlaszthatod a megfelelt. A Server menpont alatt adhatod meg, hogy egy j szerveren szeretnd ezt az adatbzist ltrehozni, vagy egy mr meglv szerverhez szeretn d azt hozzadni. Mivel most j adatbzist szeretnl kszteni, gy vlaszd ki a New SQL Database Servert a lenyl listbl, majd kattints a tovbb gombra (balra mutat nyl)! Megjelenik a Database server settings ablak, amint az a 11-3 brn is lthat. Itt elszr meg kell adnod az adminisztrtori felhasznlnevet s jelszt.

5.

Fontos: nem lehet a felhasznlnv: sa, admin, administrator, root, guest, dbmanager s loginmanager! Figyelj arra is, hogy ers jelszt hatrozz meg!

6.

Vlaszd ki a szmodra megfelel rgit! ltalban a hozznk kzelebb es rgit clszer vlasztanod. A kivlasztst jl fontold meg, ugyanis ezt ksbb megvltoztatni mr nem lehet!

196

11. PaaS SQL szolgltatsok

11-3 bra: Database server settings A rgi kivlasztsa a dtumot is befolysolja! Pldul ha van egy adatbzisod a West Europe adatkzpontban, s meghvod a GETDATE() fggvnyt, akkor az adatkzpont helyi idejt adja meg, ami 2 ra eltrst eredmnyez szmunka, akik Magyarorszgrl hasznljuk az adatbzist. A dtumokat clszer UTC-ben trolni!

7.

Az utols mez egy opci, amely alaprtelmezett mdon be van kapcsolva. Itt befolysolhatod, hogy az ltalad ltrehozott adatbzist el lehessen rni egy tetszleges Azure szolgltatsbl, belertve a sajt szolgltatsaidat is. Ha ezekkel a lpsekkel kszen vagy, kattints a Finish (pipa) gombra! Az itt konfigurlt adatbzis szerver s adatbzis nhny msodpercen bell el fog kszlni , amint azt a 11-4 bra is mutatja.

8.

11-4 bra: Adatbzisok listja

9.

Ezt kveten a Management Portlon lthatod az j SQL Database szervert. Az egy vletlenszer nevet kap, ami ebben az esetben (11-5 bra) az e7m4zvqafx. Ezt az adatbzis szervert majd az e7m4zvqafx.database.windows.net cmen rheted el.

10. Egy adatbzis szerveren 149 darab adatbzis hozhat ltre. r szempontjbl mindegy, hogy egy j adatbzis szerveren hozunk ltre egy j adatbzist, vagy egy szerveren tbb adatbzist trolunk. Mindig csak az adatbzisokrt fizetnk, nem pedig az adatbzis szerverekrt. Fontos megjegyezni azt is, hogy csak az ltalunk ltrehozott adatbzisrt kell fizetnnk, a master adatbzisrt, valamint a naplfjlokrt nem.

Tzfalszablyok
Az elksztett adatbzist jelenleg mg nem tudnd elrni. Ahhoz, hogy azt hasznlhasd, meg kell mondanod, hogy az SQL Database szervert milyen IP cm tartomnybl rhetik majd el. Megadhatsz egy IP cmet vagy akr IP cm tartomnyt is. Nzzk meg, hogyan! 1. 2. 3. A bal oldalon tallhat navigcis svon kattints az SQL DATABASES menpontra! Az SQL Databases ablakban megjelennek az adatbzisaid. A Server oszlop alatt lthatod, hogy az adott adatbzis melyik szerverhez tartozik. Ahhoz, hogy tzfalszablyt hatrozhass meg, kattints a kivlasztott szerver linkjre, amint azt a 115 bra is mutatja!

197

11. PaaS SQL szolgltatsok

11-5 bra: Az adatbzisok listja

4. 5.

A megjelen oldalon vlasz d ki a CONFIGURE menpontot! Ekkor megjelenik a tzfalszablyokat konfigurl oldal, amint azt a 11-6 bra mutatja. Az oldalon meg kell adnod a tzfalszably nevt, ez a nv tetszleges lehet. Az brn a DevOffice nevet adtuk meg. Ezenkvl azt az IP tartomnyt is meg kell adnunk, amelybl az adatbzist elrhetjk. Ez lehet egy valdi tartomny, de akr egyetlen IP cm is. Ebben az esetben a tartomny kezdete (start IP address) megegyezik a vgvel (end IP address). Ha azt akarod, hogy a vilg brmely pontjrl elrhet legyen az adatbzis, akkor a kezd cmnek a 0.0.0.0, a tartomny vgnek pedig a 255.255.255.255 IP cmet kell megadnod. Termszetesen tbb szablyt is ltre tudsz hozni.

11-6 bra: Tzfalszablyok szerkesztse

6.

Ha megadtad a szablyokat, kattints a Save gombra az oldal aljn (11-7 bra)!

11-7 bra: Tzfalszablyok mentse

7.

Az, hogy megadtad az IP cm tartomnyt, ahonnan az adatbzist el lehet rni, mg nem jelenti azt, hogy az Azure alkalmazsokbl is hozz tudsz frni. Ahhoz, hogy az Azure alkalmazs is elrje ezt az adatbzist, az Allow services menpontnak engedlyezve kell lennie, ahogyan azt a 11-8 bra is mutatja. Ezt az adatbzis ltrehozsnl is megadhatjuk.

11-8 bra: Azure szolgltatsok elrhetsge

A tzfalszablyokat a ksbbiek folyamn brmikor mdosthatod vagy trlheted. Nemcsak a Management Portlrl lehet a tzfalszablyokat mdostani, lehetsg van akr PowerShellbl is j szablyok meghatrozsra vagy a meglvk szerkesztsre, trlsre. Ehhez le kell tltened a Windows Azure PowerShell Cmdlets szkriptet a http://wappowershell.codeplex.com oldalrl.

198

11. PaaS SQL szolgltatsok

Az adatbzis sklzsa
Hasznlat kzben brmikor elfordulhat, hogy a meglv adatbzisod mrett kinvd, s azt szeretnd megnvelni. Termszetesen erre is van lehetsged! 1. 2. A bal oldalon tallhat navigcis svon kattints az SQL DATABASES menpontra! Ahhoz, hogy az adatbzis mrett megvltoztasd, kattints a kivlasztott adatbzis nevre, ahogy azt a 11-9 bra is mutatja!

11-9 bra: Az adatbzisok listja

3. 4. 5.

A megjelen oldalon a kivlasztott adatbzis Dashboardjt lthatod, ahol a felhasznlt trterletet, valamint az ehhez kapcsold rszletes adatokat vehet ed szemgyre. Ezen az oldalon kattints a Scale menpontra! Itt lltsuk be, hogy mi legyen az adatbzis j mrete, amint azt a 11-10 bra is mutatja!

11-10: bra: Az adatbzis mretnek megvltoztatsa

6.

Ha kivlasztottad a megfelel mretet, kattints a Save gombra! A mret megvltoztatsa nhny msodpercet vesz ignybe. Ha ezutn visszatrsz a Dashboardra, lthatod az adatbzis kihasznltsgnl, hogy mr nem 1 gigabjt, hanem 10 gigabjt trterlet ll a rendelkezsnkre (11-11 bra).

11-11 bra: j mret adatbzis Az adatbzisok mrete nemcsak felfel, hanem akr lefel is mdosthat!

199

11. PaaS SQL szolgltatsok

Az adatbzis elrse s kezelse


Ksz az adatbzisunk, gy ht itt az ideje elrni s hasznlatba venni! Ehhez a mr megszokott eszkzket is alkalmazhatjuk, pldul az adatbzis szervernket elrhetjk az SQL Server Management Studio 2008 R2vel is. Napjainkban azonban mr clszer az SQL Server Management Studio 2012 -t hasznlni! 1. Indtsd el az SQL Server Management Studio 2008 R2/2012 alkalmazst!
Amennyiben nincs teleptve, legegyszerbben a Web Platform Installerrel telepthet ed azt:

http://www.microsoft.com/web/downloads/platform.aspx

2.

Az alkalmazs indulsakor megjelenik a Connect to Server dialgus. Itt a Server name mezben meg kell adnod az SQL szervered cmt. Ez mindig a <servername>.database.windows.net cmen rhet el. A <servername> a szervered egyedi nevt jelli, ami ebben a pldban az ykwvgsiq2h, amint az a 11-12 brn is lthat. Az Authentication mezt lltsd t SQL Server Authentication rtkre, majd add meg a szerver ltrehozsnl bert felhasznlnevet s jelszt! Az Azure-ban fut SQL Database nem tmogatja a Windows Authentication mdot!

3.

11-12 bra: Kapcsolds az SQL Database-hez SSMS-bl

Fontos, hogy mindig figyelj oda a tzfalszablyokra! Abban az esetben, ha azok helytelenl vannak belltva, az SQL Database szerveredet nem tudod elrni! Ebben az esetben a 40615 kd hibazenetet fogod kapni (11-13 bra).

11-13 bra: Errl az IP cmrl az SQL Database-t nem lehet elrni

4.

Ha kszen vagy, kattints a Connect gombra! Ha sikerlt a kapcsolds, akkor az Object Explorerben az elzleg elksztett adatbzis fogad, mint ahogyan az a 11 -14 brn is lthat.

200

11. PaaS SQL szolgltatsok

11-14 bra: Object Explorer Sikeres kapcsolds

Az Object Explorerbl ahhoz hasonlan kezelheted az adataidat, mint ahogyan azt az SQL Servernl megszoktad. Arra viszont figyelj, hogy az SQL Server Management Studio csak cskkentett funkcionalitssal br! Pldul ha egy tblt szeretnl ltrehozni, azt jelenleg csak szkriptbl tehet ed meg. Nincsenek csillog varzslk, mint a gpteremben tallhat SQL Servernl!

Egy adatbzis ltrehozsa s menedzselse


Ha sikeresen kapcsoldtl a szerver master adatbzishoz, lehetsged nylik j adatbzis ltrehozsra vagy a mr meglvk mdostsra, trlsre. Az albbiakban megnzzk, hogy a leggyakrabban hasznlt mveleteket miknt rheted el a Management Studibl.
Figyelj arra, hogy valban a master adatbzishoz csatlakoztl-e!

Az Object Explorerben kattints a Databases elemen bell a System Databasesre, majd a jobb egrgombbal a masterre, s a helyi menbl vlaszd ki a New Query parancsot! A megjelen Query Window ablakba rhatod be az adatbzison vgrehajtand szkripteket. Adatbzist a Management Studibl is ltrehozhatsz, nem fontos ehhez a Management Portlra ltogatnod. Csakgy, mint a helyi SQL Serverek esetn, itt is a CREATE DATABASE parancs lesz a segtsgedre. Meg kell adnod az adatbzis mrett s vltozatt (edition) is. Pldul, ha egy 1 gigabjtos Web Edition adatbzist szeretnl ltrehozni, akkor az albbi szkriptet kell lernod:
CREATE DATABASE DevTest (MAXSIZE=1GB, EDITION='web');

Abban az esetben, ha nem megfelel mrettel futtatod a szkriptet, hibt kapsz. Pldul, ha 1 gigabjt helyett 2 gigabjtot rsz, ami a Web Editionben nem tallhat, az albbi hibazenetet kapnnk:
The edition 'web' does not support the database max size '2 GB'.

Ha pedig az edition rtkt rontod el, akkor az albbi hibazenetet kapod:


Invalid value given for parameter EDITION. Specify a valid parameter value.

Viszont ha nem adsz meg paramtereket, akkor alaprtelmezetten a Web Editionnel 1 gigabjtos adatbzist hozhatsz ltre.
CREATE DATABASE DevTest

Ha mdostani szeretnd az adatbzis mrett vagy tpust, az ALTER DATABASE parancsot hasznlhatod. Az albbi pldban a mr korbban ltrehozott DevTest adatbzis mrett mdosthatod 1 gigabjtrl 5 gigabjtra:

201

11. PaaS SQL szolgltatsok

ALTER DATABASE DevTest MODIFY (MAXSIZE=5GB, EDITION='web')

Abban az esetben, ha mr nincs szksged tovbb egy adatbzisra, a DROP DATABASE paranccsal trlheted azt. Az albbi pldakd a DevTest adatbzist trli (csak a dbmanager szerepkrrel rendelkezk trlhetik az adatbzist):
DROP DATABASE DevTest;

Ha meg szeretnd nzni a rendelkezsre ll adatbzisaidat, akkor a master adatbzis sys.databases nzett kell lekrdezned, ennek eredmnyt a 11-15 brn lthatod:
SELECT * FROM sys.databases;

11-15 bra: A sys.database nzet jelenlegi adatbzisok

Mint lthatod, az adatbzisok kezelsben nem sok jdonsg van a gptermi megoldsokhoz kpest. Nhny aprsggal rdemes tisztban lenni, de aki mr otthonosan mozog az SQL Server vilgban, annak az SQL Database hasznlata nem jelenthet jabb nehzsgeket.

A hozzfrsek kezelse
Hozzfrsi jogosultsgokat is rendelhetnk adatbzisainkhoz. Az SQL Server ismers CREATE LOGIN, ALTER LOGIN s DROP LOGIN parancsainak hasznlatval menedzselheted a szerverhez val hozzfrst. Fontos megjegyezni, hogy ezeknek a mveleteknek a vgrehajtshoz a master adatbzishoz kell csatlakoznod. A CREATE LOGIN paranccsal hozhatsz ltre egy j szerver szint hozzfrst. Az albbiakban egy Attila nev felhasznlt hozunk ltre, akinek a jelszava a Password1 lesz:
CREATE LOGIN Attila WITH password='Password1';

Ezzel egy szerver szint felhasznlt hoztl ltre. Ha viszont adatbzis szint felhasznlt szeretnl ltrehozni, akkor a CREATE USER parancs lesz a segtsgedre. Minden hozzfrsi fikot a master adatbzisban kell elksztened, de ahhoz, hogy csatlakozni tudj egy meghatrozott adatbzishoz, az adatbzis szintjn is ltre kell hoznod egy felhasznlt! Figyelj arra, hogy a DevTest adatbzison futtasd le az albbi parancsot:
CREATE USER DevUser FROM LOGIN Attila

Ezt kveten az Attila nev felhasznl csatlakozhat a DevTest adatbzishoz (s csakis ahhoz). Meghatrozhatod, hogy az adott felhasznli fik milyen elemekhez frhet hozz. Ebben az sp_addrolemember trolt eljrs segt. Az albbi kd a DevUser felhasznlt hozzadja a db_datareader szerepkrhz.
exec sp_addrolemember 'db_datareader', 'DevUser';

Az ALTER LOGIN paranccsal mdosthatsz egy mr meglv logint, ezt a parancsot szintn a master adatbzison kell lefuttatnod. Az albbiakban az Attila nev felhasznl jelszavt cserl ed le:
ALTER LOGIN Attila WITH PASSWORD = 'newPassword1'

202

11. PaaS SQL szolgltatsok

OLD_PASSWORD = 'Password1';

Egy logint a DROP LOGIN paranccsal trlhetsz (a masteren futtatva). Ha szerver szinten trlsz, akkor a hozzrendelt adatbzis szint felhasznli fikok is trldnek.
DROP LOGIN Attila

A sys.sql_logins nzet segtsgvel lekrdezheted a rendszerben lv sszes logint:


SELECT * FROM sys.sql_logins

A fenti mveletek elvgzse utn az ltalam ltrehozott szerveren ez a lekrdezs a 11 -16 brn lthat albbi eredmnyt adja.

11-16 bra: A sys.sql_logins nzet Jelenlegi felhasznlink

Tblk ltrehozsa s lekrdezse


Lthattad, hogyan kszthetsz adatbzist, hogyan hozhatsz ltre felhasznl fikot, de mg egyetlen tbla sincs az adatbzisban! Kattints a DevTest adatbzisra az Object Explorerben a jobb egrgombbal, s vlaszd ki a New Query parancsot! (Az SQL Database esetben nem hasznlhatod a USE parancsot!) A megjelen szerkeszt felletre rd be a kvetkez parancsot:
CREATE TABLE Developers(ID INT, Name VARCHAR(20)) INSERT INTO Developers VALUES(1, 'Attila')

Ezzel a szkripttel egy baj van: nem mkdik! Ltszlag minden rendben van vele, de mgsem. A Developers tblt ugyan ltrehozta a szkript, de az INSERT mveletnl elhasal az albbi hibval:
Msg 40054, Level 16, State 1, Line 2 Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again.

Ez azrt van, mert az SQL Database mkdshez a tblknak mindenkpp szksgk van egy clustered indexre. rdemes kihasznlnod, hogy az SQL Database (akrcsak az SQL Server) alaprtelmezetten ltrehoz egy clustered indexet az elsdleges kulcsra. Mdostsd a szkriptet az albbiak szerint:
CREATE TABLE Developers(ID INT PRIMARY KEY, Name VARCHAR(20)) INSERT INTO Developers VALUES(1, 'Attila')

Ebben az esetben a tbla szintn elkszl, s az INSERT is le fog futni. A SELECT, INSERT s UPDATE mveletekben nincs nagy vltozs. A lekrdezsek s az adatmdostsok a mr megszokott mdon trtnnek. Az albbi lekrdezs eredmnyre mutat pldt a 11-17 bra:
SELECT * FROM Developers;

203

11. PaaS SQL szolgltatsok

11-17 bra: Egy SELECT mvelet eredmnye

Az SQL Database Management Portl


Az SQL Database adatbzist nemcsak SQL Server Management Studival kezelheted, hanem akr egy webes portl segtsgvel is. 1. A Management Portlon naviglj az elfizetsnkhz tartoz adatbzishoz, majd kattints a Manage gombra!

A webes menedzsment felletet kzvetlen mdon is elrhet ed. Ennek a cme https://*.database.windows.net, ahol a * az adatbzis nevt jelli. Teht ebben az esetben az e7m4zvqafx adatbzis elrshez a teljes cm https://e7m4zvqafx.database.windows.net.

2.

Amikor az adott cmre naviglsz, egy Silverlightos alkalmazs indul el. Itt meg kell adnod a felhasznlneved, valamint jelszavad, ahogyan azt a 11-18 brn ltod. Opcionlisan megadhatod az adatbzis nevt is. Kattints a Log On gombra!

11-18 bra: Bejelentkezs az SQL Database Management Portlra

Ne felejtsd el engedlyezni azt, hogy az adatbzist Azure szolgltatsok is elrhessk! 3. Egy modern megjelens webes adatbziskezel fogad. Ez az SQL Server Management Studio kistestvre, amit brmikor, brhonnan elrhetsz a tzfalszablyoknak megfelelen. Termszetesen a fontosabb funkcikat errl a felletrl is hasznlhatod. Nzzk meg, mire j ez a fellet! Ha a kapcsoldsnl nem hatroztl meg adatbzist, s rendszer szint felhasznl vagy, akkor a bal fels sarokban kivlaszthatod, hogy melyik adatbzissal szeretnl dolgozni (11-19 bra): legyen az mondjuk a Northwind!

4.

204

11. PaaS SQL szolgltatsok

11-19 bra: A Select a Database dialgus

Lthat az is, hogy egy keress mez is rendelkezs edre ll, hogy gyorsabban megtalld a keresett adatbzist. Ez akkor jhet jl, ha mr sok adatbzisod van. 5. Amint kivlasztottad az adatbzist, egy sszegz nzet jelenik meg (11-20 bra).

11-20 bra: Adatbzis tulajdonsgok

Itt minden fontosabb informcit lthatsz az adatbzisrl. Pldul azt, hogy mikor ksztetted azt, mi a Collation belltsa, hny aktv kapcsolat van, mekkora az adatbzis maximlis s felhasznlt mrete s gy tovbb. 6. A fels mensorban a legfontosabb funkcikat tallod, ezt szemllteti a 11-21 bra. rhatsz j lekrdezseket, betlthetsz SQL szkripteket, vagy akr j adatbzist is kszthetsz.

11-21 bra: Toolbar

7.

A New Query gombra kattintva betltdik a szkriptszerkeszt. Ide rhatod sajt lekrdezseidet, termszetesen ez a fellet is rendelkezik kdkiemelssel. Az 11-22 brn a Northwind adatbzis customer tbljnak tartalma lthat.

11-22 bra: Egy lekrdezs eredmnye

8.

Lekrdezseid vgrehajtsi tervt (query plan) is megtekintheted az Actual plan funkcival (11-23 bra).

205

11. PaaS SQL szolgltatsok

11-23 bra: Actual Plan

Nemcsak lekrdezseket fogalmazhatsz meg az SQL Database Management felletn, hanem akr j adatbzist is kszthetsz, tblkat is kezelhetsz, st akr Data-Tier alkalmazsokat is feltlthetsz! 1. 2. Kattints a bal als sarokban az Administration menpontra, majd a megjelen oldalon a Create gombra! A megjelen dialgusban meg kell adnod az adatbzis nevt, mrett s collation belltst. Ha ezt megtetted, kattints a Submit gombra (11-24 bra)!

11-24 bra: Adatbzis ltrehozsa

3.

Nhny msodperc alatt elkszl az adatbzis. Itt nemcsak elksztheted, de akr annak tblit is szerkesztheted. Kattints a bal als sarokban a Design menpontra (11-25 bra)!

11-25 bra: Adatbzis tervezse

4. 5.

Ugyanitt tblt, nzetet, valamint trolt eljrst is ltrehozhatsz. Most egy egyszer tblt fogunk sszelltani, ehhez kattints a New table menpontra! A megjelen ablakban (11-26 bra) adhatod meg a tbla nevt, legyen ez most Administrators! A tbla hrom mezt tartalmaz: egy azonostt (ID), ami egyben az elsdleges kulcs, s ennek megfelelen az Is Identity kapcsolja true rtk, valamint a Name s City mezket, amelyek nvarchar tpusak. Kattints a Save gombra! A tblt ltrehoztad, de az mg res. Ha mdostani szeretnd, vagy j adatot adnl hozz, kattints a Data menpontra! Az Add row gomb megnyomsval j rekordokat illeszthetsz a tblba. Adj hozz nhny rekordot, ahogyan az a 11-27 brn is ltszik! Az adatok mentse tnyleges beszrsa a tblba csak akkor kvetkezik be, ha a Save gombra kattintasz, a rendszer nem ment automatikusan!

6. 7.

206

11. PaaS SQL szolgltatsok

11-26 bra: Tbla ltrehozsa

11-27 bra: A tbla adatainak kitltse

Lthatod, hogy a fontosabb mveletek webrl is elrhetk, nem kell ehhez kln kliensalkalmazst telepteni. A fellet hasznlata knny s gyors. Ez j s szp eszkz, de sszetettebb feladatokra az SQL Server Management Studit clszer hasznlni.

SQL adatbzisok exportlsa s importlsa


Adatbzisainkat olykor mozgatni kell a szerverek kztt, legyen sz akr helyi, akr felhben fut adatbziskezel rendszerekrl. Erre tbbfle mdszer is ltezik. Kzeltsk meg elszr hagyomnyos mdon az adatbzis temelsnek problmjt! Ahhoz, hogy egy adatbzist tmozgassunk egyik szerverrl a msikra, szksgnk van egy olyan SQL szkriptre, amely az adatbzis smjt s annak adattartalmt egyarnt lerja. Ezt a szkriptet az SQL Management Studio le tudja generlni, a szkript ellltsa sorn mg azt is megmondhatjuk, hogy csak a smt, csak az adatot, esetleg mindkettt szeretnnk megkapni. A nehzsget az jelenti, amikor a helyi SQL Serverrl az felhben fut SQL Database-re szeretnnk adatainkat tmozgatni. Ekkor ugyanis szembe kell nznnk azzal, hogy a kt SQL Server kztt mg ha csak minimlisak is vannak klnbsgek. Szerencsre erre az SQL Server Management Studio figyel, s segt neknk. Nzznk erre is egy pldt! 1. 2. Indtsd el az SQL Server Management Studit, s jelentkezz be a helyi gp SQL Serverre (akr SQL Express is lehet)! Az Object Explorerben vlaszd ki azt az adatbzist, aminek T-SQL szkriptjt le szeretnd generlni a mozgatshoz! Kattints a jobb egrgombbal az adatbzisra! A megjelen helyi menben vlaszd ki a Task menpont alatt a Generate Scripts parancsot! A megjelen ablakban a Nextre kattintva kivlaszthatjuk, hogy melyik tblkat szeretnnk szkriptben ltni, alaprtelmezett mdon az sszes tblt tartsd meg ezt a belltst! A Next gombra kattints utn megjelen Set Scripting Options ablakban a szkript ellltst konfigurlhatjuk. Kattints az Advanced menpontra! A megjelen Advanced Scripting Options (11-28 bra) dialgusban a Script for the database engine type opcit lltsd t SQL Azure Database-re. Figyeld meg, hogy bizonyos elemek a tulajdonsgok listjban elhalvnyodnak, s nem lesznek szerkeszthetk! Ezek azok a belltsok,

3. 4. 5.

207

11. PaaS SQL szolgltatsok amelyek a Windows Azure-ban mkd SQL adatbzisok esetn nem rhetk el. Kattints az OK gombra!

11-28 bra: Advanced Scripting Options

6. 7.

Az SQL Server Management Studio legenerlja a megfelel szkriptet. Ha valamit nem sikerlt, akkor jelzi a problmt. A szkript elksztse utn bejelentkezhetsz a felhben lv adatbzisba, s gy egyszeren lefuttathatod a szkriptet.

Br ezeket a lpseket elvgezni nem tl bonyolult, de hossz tvon ez elg macers lehet. Nagymret adatbzis mozgatsa esetn kln problmt jelenthet a mretbl add idigny.
A bemutatott pldt egyszerbben is meg tudjuk oldani az SQL Azure Migration Wizard segtsgvel. Az SQL Azure Migration Wizarddal (SQLAzureMW) egyszeren migrlhatunk adatokat SQL Server 2005/2008/2008R2/2012 vltozatokbl SQL Azure-ba. Az SQLAzureMW elemzi az adatbzist, s ha valamilyen kompatibilitsi problmt tall, akkor szl, illetve amennyiben tudja, akkor javtja azt. gy az SQL Serverbl az adatbzist knnyedn temelhetjk az SQL Azure krnyezetbe. A migrcira a kvetkez lehetsgeink vannak: migrlhatunk SQL Server bl SQL Azure-ba, SQL Azure-bl helyi SQL Serverre, illetve SQL Azure-ban lv adatbzisok kztt is trtnhet a migrci. Az SQL Server Management Studio ltal generlt T-SQL szkriptek helyett az SQL Azure Migration Wizard a bcp parancsot hasznlja, amivel nagyobb sebessg migrci rhet el, s nagy mennyisg adat (tbbmilli soros tblkbl ll adattmeg) is gyorsan s megbzhatan mozgathat. Az SQL Azure Migration Wizardot a http://sqlazuremw.codeplex.com oldalrl tltheted le. Az oldalrl nemcsak a termk, hanem annak a forrskdja is elrhet.

Az adatbzisok mozgatsra van egy egyszer beptett mdszer is. A kvetkez pldban az Import/Export funkcit fogjuk megnzni. Elszr tekintsk t az adatok exportlst s importlst kln lpsekben, ezutn pedig egy ennl is egyszerbb mdszert fogunk megvizsglni! 1. 2. Indtsd el az SQL Server Management Studit, s jelentkezz be a helyi gp SQL Serverre! Az Object Explorerben vlaszd ki azt az adatbzist, aminek T-SQL szkriptjt el szeretnd lltani! Kattints a jobb egrgombbal az adatbzisra! A megjelen helyi menben vlaszd ki a Task menpont alatt tallhat Export Data-Tier Application menpontot! A megjelen dialgus ismerteti, hogy a funkci segtsgvel az adatbzis smjt s adatait tudod egy .BACPAC fjlba exportlni (ezt pedig majd a felhben lv SQL Database tudja importlni). Kattints a Next gombra!

3.

208

11. PaaS SQL szolgltatsok 4. A kvetkez lap mr sokkal fontosabb. Itt megadhatod, hova mentse a .BACPAC fjlt a varzsl. Br menthetnd helyi lemezre is, ez most nem clszer, hiszen ezt kveten a fjlt a felhben lv Blob storage-ra kell felmsolnod ahhoz, hogy importlhat legyen. Ezrt clszer rgtn a Storage -ra felmsolnod, ezt pedig a varzslbl is megteheted (11-29 bra). A Connect gombra rkattintva meg kell adnod a Storage accountod nevt s kulcst. Ha ez rendben megtrtnt, akkor ki kell vlasztanod azt a kontnert, amibe el szeretnd helyezni a .BACPAC fjlt (felttelezve, hogy mind a Blob storage-ot, mind a Containert mr korbban elksztetted).

11-29 bra: Export Data-tier Application

5. 6. 7.

Kattints a Next, majd a Finish gombra! Nhny msodperc alatt a fjl ltrejn, s a Storage -ba kerl. Jelentkezz be az Azure Management Portlra, s a bal oldali mensvban vlaszd ki az SQL Database menpontot! A kperny aljn megjelenik egy mensv, amint a 11-30 brn lthatod. Kattints ezen az Import menpontra! (Felhvom a figyelmet, hogy van Export menpont is!)

11-30: Az Import menpont

8.

A megjelen ablakban keresd ki a .BACPAC fjlt, s add meg az j adatbzis nevt, ahogyan az a 11-31 brn is lthat! Csakgy, mint az adatbzis ltrehozsnl, itt is meg kell hatroznod, hogy ezt az adatbzist melyik elfizetshez kapcsolod, valamint az adatbzis szerver cmt s hitelestsi adatait is meg kell adnod. Tovbbi finomtsok elvgzsre is lehetsged van, ehhez jelld be a Configure Advanced Database Settings menpontot! Ekkor az adatbzis mrett is meghatrozhatod. Ha a Finish (pipa) gombra rkattintasz, nhny msodperc alatt legenerldik az adatbzis, s mr hasznlatba is veheted.

9.

209

11. PaaS SQL szolgltatsok

11-31: Import Database

Ez a mdszer sokkal rugalmasabb, mint a korbban bemutatott, viszont mg mindig tbb munkt ignyel, mint azt esetleg szeretnnk. Szksg van Storage-ra a .BACPAC fjl felmsolshoz, majd a fjlt kln importlnunk kell. Ezeket a lpseket akr nhny kattintssal is elvgezhetjk, nem kell az exportlssal s az importlssal szenvedni. Az SQL Server Management Studibl mg ennl is egyszerbben tudjuk mozgatni az adatainkat! Nzznk erre is egy pldt! 1. 2. Indtsd el az SQL Server Management Studio 2012-t, s jelentkezz be a helyi gp SQL Serverre! Az Object Explorerben vlaszd ki az tmozgatand adatbzist, s kattints jobb egrgombbal arra! A megjelen helyi menben vlaszd ki a Task menpont alatt tallhat Deploy database to SQL Azure menpontot! Kattints a Next gombra! A megjelen lapon meg kell hatroznod a felhben fut SQL Database elrsi paramtereit (11 -32 bra). Ehhez kattints a Connect gombra, majd tltsd ki a paramtereket ugyangy, mint ahogy azt az Adatbzis elrse cm fejezetrsznl tetted! Add meg az adatbzis nevt, valamint mrett, majd kattints a Next gombra! A dialgus sszegzi a forrs- s clszmtgpek konfigurcijt. Ha ezek helyesen vannak megadva, kattints a Finish gombra! Ez a folyamat az adatbzis mrettl fggen nhny msodperc alatt lezajlik, de akr perceket, esetleg rkat is ignybe vehet. Amint ksz, mris hasznlatba veheted az adatbzist, ami most mr a felhben van (11-33 bra).

3.

4. 5.

Fontos azt is ltni, hogy ugyanez visszafel is mkdik: a portlon az imnt ltot t Export gomb megnyomsval az adatbzis kiexportlhat BACPAC fjlba, vagyis gyakorlatilag biztonsgi ments kszthet belle. Az exportlt biztonsgi ments alaprtelmezsknt Blob Storage -ba kerl (ahol a sokszoros redundancinak ksznheten akr j helye is lehet), de onnan termszetesen le is tlthet helybe.

Lthattad, hogy tbb lehetsgnk van az adatok mozgatsra a helyi (on -premises) s a felhben fut SQL Database kztt. Ezek a biztonsgi mentsek ksztsnek s visszalltsnak munkjban is hasznosak lehetnek. Hogy melyiket hasznld? Vlaszd az, amelyik szimpatikusabb, s ami jobban illeszkedik munkafolyamataidhoz!

210

11. PaaS SQL szolgltatsok

11-32 bra: Deploy Database

11-33 bra: Az importls eredmnye

BAK formtum biztonsgi ments ksztse


A helyi SQL Servertl megszokhattuk, hogy BAK formtumban kszthet belle backup, ami az SQL Agent segtsgvel knnyszerrel automatizlhat is. Ahogy korbban volt rla sz, a SQL Database backup megoldsa ettl kicsit eltr. Egyrszt nem BAK formtum fjlt kszt, hanem BACPAC formtumt (br ez is teljes rtk). Msrszt nincs benne SQL Agent, ezrt a backup ksztse idzthet ugyan, de ehhez pl. egy sajt szerverrl kell idztett feladatknt elvgezni az exportlst, maga a SQL Database nem nyj t ilyen szolgltatst. Ha valamilyen okbl a SQL Database gyri backup-tudsa nem elegend, akkor van arra is lehetsg, hogy a backup-lmnyt kzeltsd a SQL Servernl megszokotthoz. Erre val a Red Gate ltal fejlesztett megolds. k megvalstottk az SQL Database mentst s visszatltst elsegt web es alkalmazst. Ezt a szolgltatst a http://cloudservices.red-gate.com/ cmen lehet elrni. Fizetni kell rte, viszont 10 napig ingyenesen hasznlhatjuk, s kiprblhatjuk, hogy miknt is mkdik. Az ra viszonylag olcs, hisz havi 10$-rt (~2300 Ft) 31 (napi eggyel szmolva egy teljes havi) mentst kapunk. Ebben a fejezetrszben ennek a szolgltatsnak a hasznlatt nzzk meg: 1. 2. Ltogass el a http://cloudservices.red-gate.com/ oldalra, s regisztrld magad! A szolgltatst a regisztrcit kveten ignybe veheted, de ne feledd el, csak 10 napig hasznlhatod ingyen! A bejelentkezst kveten kivlaszthatod, hogy mit is szeretnl csinlni. Jelenleg az albbi lehetsgek llnak a rendelkezsedre (11-34 bra):

Ments SQL Database-bl Blob Storage-ba Adatok visszatltse Blob Storage-bl SQL Database-be Ments SQL Database-bl Amazon S3-ra Adatok visszatltse Amazon S3-bl SQL Database-be

211

11. PaaS SQL szolgltatsok

11-34 bra: Adatbzis mentsi lehetsgek

Megjegyeznm, hogy a Red-Gate termke ezenkvl szinkronizcis feladatokra is hasznlhat. 3. 4. Adataid SQL Database-bl Blob Storage-ba mentshez kattints a Back up SQL Database to Azure blob storage menpontra! A megjelen oldalon a Source elemnl meg kell adnod az elmentend SQL Database szervernek cmt, a felhasznlnevet s jelszt, amivel a szolgltats elrheti az adatbzis szervert. A Database lenyl listbl ki kell vlasztanod az elmentend adatbzist. Abban az esetben, ha nem tudja a szolgltats elrni az adatbzist, ellenrizd, hogy minden adatot helyesen adtl-e meg, s azt is, hogy az adatbzis szerver tzfalszablyainl engedlyezted-e, hogy ms felh alap szolgltats is elrhesse azt! Mivel a Blog Storage-ba mented az adatbzist, felttelezheten mr rendelkezel egy Storage fikkal. A Destinationnl meg kell adnod ennek a fiknak a nevt, a hozzfrshez szksges kulcsot, valamint a kontner nevt. Ne felejts el egy kontnert is kszteni! Utols lpsknt meg kell adnod a fjl nevt. Ebben az esetben ez a backup.bak lesz. Tovbbi opciknt bellthatjuk, hogy a szolgltats trlje a meghatrozott napnl rgebbi mentseket (11-35 bra).

5.

11-35 bra: Mentsi belltsok

6. 7.

Kattints a Continue gombra! A megjelen felleten (11-36 bra) bellthatod a biztonsgi ments temezst. Ha ppen most szeretnd a mentst elvgezni, akkor kattints a Run Now gombra!

212

11. PaaS SQL szolgltatsok

11-36 bra: Idzts

8.

A ments az adatbzis mrettl fggen nhny perc alatt elkszl (11-37 bra). Ezt kveten a Storage-ban elrhet lesz a biztonsgi ments (backup.bak).

11-37 bra: A mentsi folyamat

9.

A visszatlts gyakorlatilag ugyanezen az elven mkdik. A Source s Destination mezkben megadott belltsokat kell megadnod, csak visszatltsnl a Source a Blob Storage (vagy Amazon S3) lesz, mg a Destination az SQL Database. Ezt lthatod a 11-38 brn is.

11-38 bra: Visszallts

Mint lthat, a Red-Gate ltal fejlesztett adatbzisments s -visszallts szolgltats nagyon egyszer s jl hasznlhat. A 10$ r havi 31 tranzakcit takar, ennyit megrhet a szmunkra az adatbzisunk mentse. Felhvnm tovbb a figyelmet arra is, hogy az adatbzis mrete a mentsi rat nem befolysolja!

213

11. PaaS SQL szolgltatsok

Az SQL Database adatbzisok elrse kliens alkalmazsokbl


Ahhoz, hogy az SQL Database adatbzisaiban trolt adatainkat elrjk egy kliens alkalmazsbl, az alkalmazs zleti logikjn semmit sem kell mdostanunk. Tulajdonkppen csak a csatlakozsi belltst (connection string) kell megvltoztatnunk. Egy helyesen megrt .NET alkalmazsnl ez az informci ltalban az alkalmazs konfigurcis llomnyban (app.config, web.config) xml formtumban van letrolva. gy az alkalmazsunkat nem kell jrafordtanunk ahhoz, hogy az adatbzis az SQL Database-ben fusson helyi SQL szerver pldny helyett, elegend a konfigurcis llomnyt megvltoztatni. Az adatok feldolgozshoz ugyanazokat az ADO.NET objektumokat hasznlhatjuk, mint eddig ( SqlCommand, SqlDataReader, SqlConnection stb). St, ha Linq To SQL objektumokat vagy Entity Frameworkt hasznlunk, ott sincs szksg extra munkra, szintn csak a connection stringet kell trnunk. Nzznk erre egy egyszer pldt! Ebben egyszer konzol alkalmazssal rnk el egy adatbzist.
using System; using System.Data.SqlClient; namespace SqlAzureDemo { class Program { static void Main(string[] args) { try { using (SqlConnection conn = new SqlConnection()) { conn.ConnectionString = "ConnectionString"; using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandText = "SELECT CustomerID FROM Customers"; conn.Open(); using (SqlDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection)) { while (dr.Read()) { //Csinljon valamit. Console.WriteLine(dr[0]); } dr.Close(); } } } } catch (SqlException ex) { Console.WriteLine(ex.Message); //Valami baj trtnt } } } }

A pldban az egyszersg s az tlthatsg kedvrt a connection stringet begetjk a forrskdba. Ezt egy les alkalmazsnl termszetesen a kls konfigurcis fjlban helyezzk el. Ha a helyi SQL Server Express pldnyt szeretnnk elrni, akkor a Connection String az albbi:

214

11. PaaS SQL szolgltatsok

Server=.\SQLEXPRESS;Database=Northwind;Trusted_Connection=Yes

Lthat, hogy ez klasszikus connection string, ahol megadjuk az adatbzis szerver elrhetsgt, az adatbzis nevt, valamint a hitelest adatokat, amik ebben az esetben megegyeznek a Windows rendszerbe bejelentkezett felhasznlval. SQL Database esetn nem lehet trusted connectiont hasznlni, kizrlag felhasznlnv jelsz prossal tudjuk hitelesteni magunkat. Ha ezt a connection stringet lecserljk az albbira, akkor az alkalmazs mr nem a helyi SQL szerverbl fogja lekrdezni az adatokat, hanem az SQL Database adatbzisunkbl. Ebben az esetben a connection string az albbiak szerint mdosul:
Server=e7m4zvqafx.database.windows.net;Database=Northwind;User ID=TuroczyX;Password=myPassword1

Figyeljk meg, hogy ebben az esetben megadtuk az SQL Database szervernk teljes elrsi tvonalt, ami jelenleg az e7m4zvqafx.database.windows.net! A Database tulajdonsg rtke ugyanaz, mint a helyi pldny esetn. Itt hatrozzuk meg, hogy az adott adatbzis szerveren melyik adatbzist szeretnnk elrni, jelen esetben ez a Northwind. Az autentikci ebben az esetben csak felhasznlnv s jelsz birtokban trtnhet, Windows autentikcira nincs lehetsg. A felhasznl azonossgnak ellenrzse ugyangy trtnik, mint a helyi SQL Server esetben. Mindebbl teht azt kell ltnunk, hogy csak az adatbzis cmt, valamint a hitelestsi adatainkat kell mdostani ahhoz, hogy a helyi SQL Server helyett egy, a Windows Azure-ban lv adatbzist hasznlhassunk. A Windows Azure korbbi llapotban a connection string valamivel sszetettebb volt. Pldul a Server neve eltt egy tcp: prefixet kellett definilni, valamint a felhasznlnevet is csak gy adhattuk meg, hogy kiegsztjk a szerver nevvel az albbi mdon: TuroczyX@e7m4zvqafx. Ma ez mr egyszersdtt, de nzzk meg ugyanezt a pldt a rgebbi stlus connection string megadsval:
"Server=tcp:e7m4zvqafx.database.windows.net;Database=Northwind;User ID=TuroczyX@e7m4zvqafx;Password=myPassword1";

Mind a ktfle megadsi mdszert alkalmazhatjuk, az SQL Database elfogadja mg a rgi stlus belltst is. Ha Entity Frameworkt hasznlunk, akkor a connection string az albbiak szerint mdosul:
metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;prov ider connection string="data source=e7m4zvqafx.database.windows.net;initial catalog=Northwind;user id=TuroczyX;password=myPassword1;"

Mint lthatjuk, csak a szerver cme klnleges, minden ms megegyezik a korbbi connection stringgel. Figyeljnk arra, hogy ebben az esetben az adatbzisunkhoz tartoz connection string egy XML fjlban lesz letrolva! Mivel csak SQL autentikcit tmogat az SQL Database, ezrt ebben a fjlban szabadon olvashat mdon benne lesz a felhasznlnevnk s jelszavunk. Ezt termszetesen titkosthatjuk. Az albbi oldalon tovbbi informcikat tallhatsz errl: http://msdn.microsoft.com/enus/library/89211k9b(v=vs.80).aspx.

SQL Database Data Sync


Az SQL Database Data Sync segtsgvel a sajt helyi SQL Servernk s az SQL Database kztt szinkronizlhatjuk az adatainkat. St, akr tbb SQL Database pldny kztt is trtnhet szinkronizci. Ez a technolgia a Microsoft Sync Frameworkn alapul. A szinkronizci ktirny is lehet, s akr az SQL Server Express vltozatval is szinkronizlhatunk. Nzzk meg, hogy hogyan lehet ezt a mechanizmust ltrehozni!

215

11. PaaS SQL szolgltatsok

Ezt a funkcit a rgi Silverlightos portlon mutatom be, ugyanis ez a funkci az j HTML5 -s portlon a knyv rsnak pillanatban mg nem rhet el.

1. 2. 3. 4. 5.

Lpj be az Azure Management Portlra! A feladat elvgzshez mr rendelkezned kell egy adatbzissal az SQL Database szolgltatsban. Kattints a jobb oldali navigcis svon a Data Sync menpontra! A jobb oldalon megjelen elfizetsek kztt vlaszd ki azt, amelyikhez a szinkronizcit ktni szeretnd (amelyikhez az SQL Database adatbzisod tartozik), majd kattints a Provision gombra! Megjelennek a szerzdsi felttelek. Olvasd el, majd fogadd el azokat! A megjelen ablakban vlaszd ki a szmodra megfelel rgit! Fontos, hogy a Sync rgijnak meg kell egyeznie az adatbzis rgijval. Teht ha az adatbzisod a North Europe rgiban van, akkor a Sync rgis belltsnak ezzel meg kell egyeznie. Kattints a Finish gombra! Ezzel ltrehoztl egy Sync Groupot a kivlasztott rgiban! Itt kell belltanod, hogy helyi SQL Server s SQL Database kztt szeretnnk szinkronizlni vagy SQL Database adatbzisok kztt. Kattints a Sync between On-Premise and SQL Database Databases menpontra (11-39 bra)!

6.

11-39 bra: Szinkronizci a telephelyi s a felhben lv SQL adatbzisok kztt

7.

A megjelen ablakban add meg a Sync Group nevt, ahogyan azt a 11-40 brn ltod! Ennek a nvnek egyedinek kell lennie, az brn ez a SyncDemo nevet kapja.

11-40 bra: A Sync group elnevezse

8.

A jobb oldalon megjelen Configuration terleten (11-41 bra) bellthatod, hogy a szinkronizci milyen idkznknt trtnjen meg. Ez az brn 10 perc. A legkisebb bellthat szinkronizcis id 5 perc, a legnagyobb 1 hnap lehet. Itt adhatod meg azt is, hogy konfliktus esetn a kliens (helyi SQL Sever) vagy a hub (SQL Database) nyerjen. Ez a bellts projektfgg, de ennl a pldnl a hub rszesl elnyben.

11-41 bra: A szinronizci belltsa

216

11. PaaS SQL szolgltatsok 9. Kattints a Next gombra! Msodik lpsknt meg kell adnod a helyi SQL Server belltsait, amellyel szinkronizlni szeretnl (11-42 bra). Kattints a Click to add a SQL Server database menpontra!

11-42 bra: Loklis SQL adatbzis konfigurlsa

10. Megjelenik az Add Database to Sync Group ablak (11-43 bra). Az ablak als rszben tallod a Sync Direction belltst. Itt adhatod meg a szinkronizci irnyt. Definilhatod, hogy csak a hubra szinkronizlsz (Sync to the Hub) vagy csak a Hubrl a kliens fel (Sync fro m the Hub), esetleg azt, hogy a szinkronizci ktirny legyen (Bi-directional). A plda ktirny szinkronizcit hasznl. Konfliktus esetn a 8. lpsben, a konfigurcinl megadott szablyok rvnyeslnek. 11. A Database elemen bell vlaszd ki az Add a new SQL Server database to the sync group menpontot! Ezt akkor kell hasznlnod, ha korbban mg nem adtl hozz ilyen csoportot a Sync Grouphoz. Ha mr igen, akr ki is vlaszthatod azt a felajnlott listbl (Select from the existing sync member databases). Kattints a Next gombra!

11-43 bra: Sync Group belltsok

12. A kvetkez ablakban (11-44 bra) meg kell hatroznod, hogy a szikronizcit egy mr ltez Client Sync Agenttel vgzed vagy egy jjal. Amennyiben elszr hasznlod ezt a Sync Groupot, mg nincs Agented. Kattints az Install a new Agent opcira, majd a Next gombra!

11-44 bra: Agent teleptse

217

11. PaaS SQL szolgltatsok

Ez az Agent egy kis alkalmazs, ami a szinkronizcit vgzi a helyi SQL Server s az Azure kztt. Ez az alkalmazs HTTP protokollon keresztl kommunikl a felhvel. gy nincs szksged semmilyen tzfalbellts mdostsra. Ha a bngszbl elred ezt az oldalt, akkor az Agentnek is mkdnie kell.

13. A megjelen ablakban els lpsknt tltsd le az SQL Database Data Sync Agentet!
Jelenleg az Agent preview vltozata rhet el. Ezt az albbi cmrl tltheted le: http://go.microsoft.com/fwlink/?LinkID=226849.

14. A letlts utn teleptsd az alkalmazst! Ez egyszer, a teleptcsomag egyetlen fontos krdst tesz fel, azt, hogy mi annak a felhasznlnak a neve s jelszava, akinek a nevben a szinkronizcis szolgltats mkdni fog (11-45 bra). Itt olyan felhasznli fikot kell megadnod, amelyik elri az SQL Servert is!

11-45 bra: A Data Sync Agent futtatshoz szksges felhasznlnv s jelsz megadsa

15. A sikeres telepts utn indtsd el a Microsoft SQL Database Data Sync Agent programot! Ehhez rendszergazdai jogosultsgokkal kell rendelkezned. 16. Az alkalmazs elindulsa utn kattints a Submit Agent Key menpontra (11-46 bra)! A megjelen ablakban azt az Agent Key rtket kell megadnod, amelyet a Windows Azure Management portlon tallsz.

11-46 bra: Agent key megadsnak helye

17. Trj vissza a portlra, s az Install a New Agent ablakban (a msodik lpsnl) hatrozd meg az Agent nevt (11-47 bra)! Ez ltalban a gp hosztneve szokott lenni, de termszetesen vlaszthatsz ms nevet is. Kattintsunk a Generate Agent Key menpontra! Msold ki a kulcsot, s illeszd be azt a Microsoft SQL Database Data Sync Agent dialgusba, majd kattints a dialgusban az OK gombra!

218

11. PaaS SQL szolgltatsok

11-47 bra: Agent key megadsa

18. Kattints a program Register menpontjra! Megjelenik az SQL Server Configuration ablak (11-48 bra), itt adhatod meg az SQL Server elrhetsgt. A Server mezben az SQL Szerver cmt (pldnynevt) kell megadnod. Ez az brn a .\SQLEXPRESS, azaz a loklis gp SQLEXPRESS pldnya. A Database-nl azt az adatbzist kell megnevezned, amit szinkronizlni szeretnl. Ebben a pldban ez a Northwind. Ha a Windows Authenticationt vlasztod, nem kell hitelestsi informcikat megadni. SQL Autentikcinl az adott SQL Serverhez vagy adatbzishoz tartoz hitelestsi adatokat kell megadnod.

11-48 bra: Helyi SQL Server elrsi paramterek

19. Kattints a Test Connection menpontra! Ha sikeres a kapcsolds, klikkelj a Save gombra! Ekkor a felhasznli felleten megjelenik a belltott adatbzis (11-49 bra).

219

11. PaaS SQL szolgltatsok

11-49 bra: A hozzadott SQL Server

20. Trj vissza a Management Portlra, s az Install a New Agent ablakban kattints a Next gombra! 21. Az Add Database to Sync Group ablakban kattints a Get Database List gombra! A rendszer letlti a kliensben hozzadott adatbzisok listjt. Jelen esetben csak a Northwind adatbzis jelenik meg a lenyl listban. 22. Vlaszd ki a megfelel adatbzist jelenleg csak a Northwind vlaszthat ki (11-50 bra)!

11-50 bra: Sync Group

23. Kattints a Finish gombra! 24. Meghatroztad a kliens gp belltsait. Most mr csak a cl SQL Database szerver belltsait kell megadnod (11-51 bra). Kattints a Click to add a Windows Azure SQL databases as the Sync Hub gombra!

220

11. PaaS SQL szolgltatsok

11-51 bra: SQl Database (SQL Azure) konfigurci

25. A megjelen ablakban (11-52 bra) meg kell adnod az SQL Database szerver elrsi adatait. Ezt kveten kattints az Add gombra!

11-52 bra: Elrsi s hitelestsi belltsok

26. A varzsl ekkor ismt rkrdez a konfliktuskezels mdjra. Ha ezen nem akarsz vltoztatni, kattints a tovbb szimblumra! 27. Elrkeztnk az egyik legrdekesebb rszhez, a szinkronizland adattartalom definilshoz. A megjelen ablakban kattints az Edit Dataset gombra! 28. Felugrik a Define Dataset for Syncronization ablak (11-53 bra). Itt hatrozhatod meg, hogy mely tblkat szeretnd szinkronizlni. Vlaszd ki a Customers tblt! Azt is meghatrozhatod, hogy melyik oszlopokat szinkronizlod. Kattints az OK gombra!

11-53 bra: Szinkronizlni kvnt tblk s oszlopok

221

11. PaaS SQL szolgltatsok 29. A foldalra visszatrve lthatod a szinkronizcis belltsok sszegzst, amint azt a 11 -54 bra is mutatja. Kattints a Deploy gombra!

11-54 bra: A ksz szinkronizcis csoport

Ezzel minden szksges lpst elvgeztl a szinkronizcihoz. Ha ezutn a Customers tblban brmilyen adatot vltoztatsz a helyi SQL Serveren, akkor a mdosts a kvetkez frissts utn mr a felhben lv SQL adatbzisban is lthat lesz. Abban az esetben, ha a felhben trtnik vltozs, azt a loklis szerver is megkapja a kvetkez frisstskor. Ez azrt van gy, mert a frissts ktirny (bi-directional)! Ha pedig tkzs van, a belltsok alapjn a hub, azaz a felhben lv SQL adatbzis fog nyerni.

sszegzs
Ebben a fejezetben a felhben fut SQL Database szolgltatssal ismerkedhettnk meg kzelebbrl. Lthattuk, hogy hasznlata nagyon egyszer s knyelmes. Az SQL Database nagyon j r -rtk arnnyal rendelkezik, hisz minimlis sszegrt cserbe egy rendkvl magas rendelkezsre lls krnyezetet kapunk. Ennek a krnyezetnek a funkciit, a helyi adatbziskezelstl val eltrseit vizsgltuk meg ebben a fejezetben. Mindenkinek csak ajnlani tudom az SQL Database szolgltatst, hiszen egy ilyen rendelkezsre llssal br s jl hasznlhat krnyezetet a sajt projektjeink kapcsn bizony elg kltsges kialaktani. A felhben fut SQL Database-tl pedig egy azonnal hasznlatba vehet s olcs krnyezetet kapunk.

222

12. PaaS ptkocka-szolgltatsok

12. PaaS ptkocka-szolgltatsok


Ebben a fejezetben az albbi tmkat ismerheted meg: A federlt autentikci ltalnos modellje, alkalmazsi terletei, elnyei Hogyan integrlhatod az ACS-t egy meglv ASP.NET webalkalmazsoddal Az Azure Caching szolgltatsai, Caching alap ASP.NET Session State Provider Virtulis hlzati kapcsolatok kialaktsa a telephelyen s a felhben fut gpek kztt Azure Connect hasznlatval A Windows Azure fejleszti szolgltatsait eddig bemutat fejezetekben a platform kt jl krlhatrolt, egysges funkcionalitst nyjt komponensvel, a klasszikus felhszolgltatsokat biztost Cloud Serviceszel s a felhben trtn adattrolst megvalst Data Serviceszel ismerkedhettl meg. E kt, logikailag szorosan sszetartoz funkcit sszefog komponens mellett az Azure nyjtotta szolgltatsok harmadik f pillre az App Services. Az elzekkel szemben az App Services szmos, lnyegesen klnbz clterleten felhasznlhat szolgltatst ad a fejlesztk kezbe. Ezek ptkocka-szeren llnak rendelkezsre, s fontos jellemzjk, hogy egyszer eszkzk hasznlatval, szles kr testreszabhatsggal integrlhatk a meglv rendszerekbe. Ha pldul egy webalkalmazsban szksg van a nagy gyakorisggal elkrt HTML oldalak gyorsttrazsra, akkor semmi szksg az Azure-ban fut virtulis szerverek sajtossgai ltal tmasztott kvetelmnyeket kielgt sajt cache-elsi mechanizmus megvalstsra egyszeren bepthet a Caching szolgltats. Ha kulcsraksz megoldsra van szksg videofjlok trolsra, kdolsra s streamelsre, akkor a Media Services szolgltats hasznlhat fel. Az App Services kiterjedt szolgltatskszlete kzl ez a fejezet a felh alap federlt hitelestst megvalst Access Control Service-zel (ACS) s az alkalmazsok adatainak gyorsttrazst lehetv tev Caching szolgltatssal foglalkozik. A fejezet vgn egy rvid kitrt tesznk, s megismerkednk egy, az App Services -tl fggetlen Azure szolgltatssal, az Azure Connecttel, mellyel virtulis hlzatokba szervezhetjk a felhben s a telephelyen fut gpeinket.

A federlt hitelests modellje


Napjaink internetes alkalmazsai szinte kivtel nlkl ignylik a felhasznlk valamilyen formj azonostsnak megoldst. Legyen sz akr bngszbl, akr valamilyen mobil gensbl elrt alkalmazsrl, az informcihoz val hozzfrst szablyozni kell. Ha egy felhasznl szeretn megtekinteni a program ltal szolgltatott rtkes s bizalmas adatok egy halmazt, vagy ignybe kvn venni egyes vdett funkcikat, akkor igazolnia kell tudni az identitst, fel kell tudnia mutatni valamilyen bizonytkot (legtbbszr egy jelsz formjban), hogy valban -e az a szemly, akinek lltja magt. Ez a folyamat az autentikci. Jellemzen ezt egy authorizcis lps kveti, amely sorn a felhasznl jogosultsgait hatrozza meg a rendszer. Elkerlhetetlen mivolta miatt a felhasznlk azonostsval s a jogosultsgok kezelsvel minden fejleszt tallkozott mr. Ugyanakkor ltalnosan elmondhat, hogy a fejlesztk ezeket a tallkozsokat szeretnk minl rvidebbre fogni. Egy fejleszt sem r szvesen sajt autentikcis mechanizmust, ha olyan bevlt, a fejleszti munkafolyamatba jl integrld megoldsok kzl vlaszthat, mint a Forms Authentication esetn az ASP.NET Membership Provider, illetve Windows Authentication esetn az Active Directory. A legtbb .NET fejleszt jl ismeri ezeket a megoldsokat. Nzzk meg, milyen esetekben lehet szksg a mr sokat bizonytott azonostsi modellek mdostsra, kiterjesztsre!

223

12. PaaS ptkocka-szolgltatsok

Az autentikci feladatnak kiszervezse


A kvetkezkben kt olyan gyakori esetrl olvashatsz, ami a hagyomnyos autentikcis megoldsok tovbbgondolst ignyli. A kt bemutatott eset kzt az a hasonlsg, hogy a felhasznli ignyek miatt az autentikci feladatt kiszervezzk az ltalunk fejlesztett alkalmazs keretei kzl. Az els megvizsglt eset jellemzen zleti alkalmazsok fejlesztse sorn szokott elfordulni. Tegyk fel, hogy fejlesztnk egy webalkalmazst, aminek a szolgltatsait tbb zleti partnernk szmra is elrhetv szeretnnk tenni. Ha az gyfeleink nagyvllalati krnyezetbl rkeznek, akkor a sajt alkalmazottaik szmra mr van egy mkd, napi szinten hasznlt felhasznli adatbzisuk, ami biztostja szmukra a szoksos bejelentkezssel s jogosultsgkezelssel kapcsolatos funkcikat. A partnernk rszrl ebben az esetben jogos az az elvrs, hogy az ltalunk fejlesztett alkalmazshoz az alkalmazottai a mr meglv (pl. Active Directory) felhasznli fikjukkal tudjanak hozzfrni. Ennek elnye, hogy gy nem kell j felhasznli adatbzist ltrehozni (majd ksbb ennek a szinkronban tartsrl gondoskodni), s az alkalmazsunk szorosabban integrldik a partnernk meglv IT infrastruktrjval. A nagyvllalati partnerek azonban gondosan gyelnek a sajt felhasznli adataik biztonsgra s menedzselhetsgre, ezrt a felhasznli adatbzisukat rendszerint a telephelykn tartjk, az Internet fel nem teszik azt elrhetv. Hogyan tudja ht az alkalmazsunk az zleti partnernk adatbzisa alapjn elvgezni a felhasznlk azonostst? A problma egy lehetsges megoldsa az, hogy ha egy nem autentiklt felhasznl az ltalunk fejlesztett alkalmazsban valamilyen azonostst ignyl mveletet kvn vgrehajtani, akkor a krst tirnytjuk a partnernk sajt autentikcis oldalra. Ott be fog tudni jelentkezni a mr meglv fikjval, majd sikeres bejelentkezst kveten visszatr az alkalmazsunkhoz, s ignybe tudja venni annak vdett funkciit. Az ilyen kihelyezett autentikci modelljnek megalkotsa sorn tbb krds merl fel: Hogyan ptsk fel a szenzitv felhasznli adatok tovbbtsa sorn megkvetelt biztonsgos kapcsolatot a partnerek s az alkalmazsunk kztt? Tbb zleti partner esetn hogyan vlasszuk ki, hogy melyiknl kell azonostania magt a felhasznlnak? Hogyan jelzi a partnernk, hogy a felhasznl sikeresen autentiklt? Hogyan kell gondoskodnunk az alkalmazsunkban a partnertl rkez, felhasznli azonosts eredmnyt hordoz zenet feldolgozsrl? Mindezekre a krdsekre a fejezet tovbbi rszeiben rszletes, gyakorlatorientlt vlaszokat fogsz tallni. Nemcsak az ersen szablyozott vllalati krnyezetre fejlesztett alkalmazsok esetben merlhet fel az autentikci kiszervezsnek gondolata. Ha publikus, Internet fel nyitott alkalmazst fejlesztnk, akkor nagy felhasznli bzis mellett szintn rdemes lehet fontolra venni az autentikci kiszervezst. Az internetes felhasznli viselkedsnek jl ismert jellemzje, hogy a felhasznlk alapveten nem szvesen tltik az idejket regisztrcis rlapok kitltsvel. Hasonlan nem szvesen adjk meg szemlyes adataikat egy jabb internetes oldalon, hiszen van mr j nhny regisztrcijuk e-mailszolgltatknl, kzssgi oldalakon stb. Kzenfekv teht az tlet, hogy tegyk knyelmesebb a belps folyamatt a felhasznl szmra azzal, hogy az ltalunk nyjtott szolgltatsokat ne egy szolgltatsspecifikus azonostval tudja ignybe venni, hanem pldul a mr rgta meglv s hasznlt Microsoft Accountjval vagy a Facebook fikjval. Szerencsre sok npszer internetes szolgltats nyjt lehetsget arra (az elbb emltettek mellett a Google s a Yahoo! is), hogy a nluk beregisztrlt fikjnak adatai alapjn hitelestsen egy felhasznlt. Hasonlan az elz esethez ezzel a megoldssal is az alkalmazsunk hatrain kvlre szervezzk az autentikcit. A klnbsg csupn annyi, hogy most nem egy zleti partnernk AD -jben trolt adatokra hagyatkozunk az azonostskor, hanem a Facebookra, Goog le-re stb. bzzuk ezt a feladatot. A bejelentkezs sorn a felhasznli lmny hasonl az elz esethez. Els lpsknt a felhasznl elltogat a weboldalunkra, ahov be szeretne lpni. Ltja, hogy be tud lpni a kedvenc kzssgi oldalnak fikjval is. A bejelentkezs gombra kattintva egy biztonsgos, ltala jl ismert login kpernyre kerl, ahol megadja az adatait, s ezt kveten visszakerl a megltogatni kvnt weboldalra. Ezzel a megkzeltssel nemcsak felhasznlbartabb tesszk a bejelentkezs folyamatt, hanem azzal, hogy az autentikcit kiszervezzk a sajt alkalmazsunk hatskre all, alkalmazsfejleszti feladataink is egyszersdnek.

224

12. PaaS ptkocka-szolgltatsok Az autentikci kiszervezsnek alapgondolata teht az, hogy az alkalmazsunk nem sajt szervereinken lv adatbzisra tmaszkodva vgzi el az azonostst, hanem meghatrozza szolgltatk egy krt, akikben megbzik. Ha egy felhasznl olyan szolgltatst kvn ignybe venni az alkalmazsunkban, amihez azonostania kell magt, akkor tirnytjuk az egyik ilyen megbzhat szolgltathoz, s az vlasztl fggen adunk jogot a felhasznlnak az alkalmazsunk elrshez, vagy utastjuk el a krst. Az elbb bemutatott kt gyakorlati esetben ilyen megbzhat azonostst vgz szolgltat k a vllalati Active Directory rendszerek, illetve a Microsoft Account s a Facebook. Eddig csak egy nagyon ltalnos, sok rszletet elfed, inkbb a felhasznli lmnyt a kzppont ba helyez kpet kaphattl a hitelests kiszervezsnek folyamatrl. Ahhoz, hogy a felhasznli identits kezelsrl rszletesen s pontosan lehessen trgyalni, fel kell ptennk egy fokkal ersebben formalizlt modellt az autentikci folyamatrl. El kell helyeznnk ebben a modellben a folyamat szereplit, s definilnunk kell felelssgeiket.

Szereplk az autentikcis folyamat forgatknyvben


A felhasznlk azonostst vgz, ltalunk megbzhatnak elismert szolgltat angol neve Identity Provider (IDP). Az IDP feladata, hogy egy nla bejelentkezett felhasznlrl killtson egy security tokennek nevezett adatstruktrt, ami a belpett felhasznl adatait tartalmazza. Ha mg nem foglalkoztl az identitskezels krdskrvel, akkor a legjobb analgia a token szerepnek elkpzelshez a szemlyi igazolvny pldja. A szemlyi igazolvnyt egy olyan hitelest szerv az llam lltja ki, amiben minden szemlyi azonostst ignyl folyamat (pldul egy szerzds megktse) sorn megbznak a felek. gy nem szksges minden szerzdsktskor elltogatni egy llami szervhez, hogy a felek megbizonyosodjanak egyms szemlyi azonossgrl, az azonostshoz elg az igazolvny birtoklsa. Ha ismered a claims-based identity fogalmt, akkor az elz illusztratv pldhoz kpest pontosabb kpet kapsz a security tokenekrl, ha gy tekintesz rjuk, mint olyan adatstruktrkra, melyek a bejel entkezett felhasznlrl claimek egy gyjtemnyt hordozzk. A tokenekben kritikus fontossg felhasznli informcik kzlekednek, ezrt gondoskodni kell rla, hogy ne lehessen ket szrevtlenl mdostani, s a killtjuk egyrtelmen azonosthat legyen. A biztonsgos kommunikci rdekben a tokenek tovbbtsa kivtel nlkl SSL -lel titkostott csatornkon trtnik. A legjellemzbb hitelestsi protokollok a WS -Federation, az OAuth 2.0 s a WS-Trust. Ezeket a protokollokat az Azure is tmogatja. A biztonsgos mkds rdekben a titkostott csatorna hasznlatn kvl a tokent a kibocstja digitlis alrsval ltja el, mely alapjn a kibocst szolgltats egyrtelmen meghatrozhat. A tokenek ellltsa a Security Token Service (STS) szolgltats segtsgvel trtnik. Fontos hangslyozni, hogy a tokenek kibocstst vgz STS a konkrt autentikcis logikt megvalst rteg eltt homlokzati rtegknt helyezkedik el. Amg az STS ltal rgztett protokoll s token formtum vltozatlan, addig a mgtte lv adatbzis s az azon dolgoz autentikcis logika nyugodtan vltozhat: az STS elfedi az autentikci pontos menett az IDP-t megszlt szereplk eltt. Fontos szerepl mg termszetesen a sajt alkalmazsunk. Ez az alkalmazs szeretn kihely ezni az azonostssal kapcsolatos feladatokat valamely megbzhat IDP -hez. Az angol nyelv szakirodalom ezt az alkalmazst Relying party (RP) applicationnek nevezi. Egyidejleg tbb IDP-ben is megbzhat az alkalmazsunk. Ha a felhasznl olyan tartalmat kr el, amihez autentikci szksges, akkor lehetsge van megadni, melyik IDP-nl szeretn azonostani magt. Az alkalmazsunkat vagy szolgltatsunkat a felhasznl jellemzen valamilyen bngszbl vagy mobil kszlkrl ri el. A modellnk szempontjbl ez a bngsz szmt a kliensnek.

Nvekv komplexits, redundancia, fggsgek


A fent definilt szereplk s felelssgeik ltal meghatrozott azonostsi modell remekl mkdik. Van egy RP alkalmazsunk, az azt ignybe vev krseket tirnytjuk az IDP-hez, ha autentikci szksges. Az IDP elvgzi a felhasznl azonostst, s annak sikeressge esetn killt egy security tokent, aminek birtokban a kliens kpes magt azonostani az RP alkalmazsunknl. Az autentikci kiszervezsnek folyamata eddig a pontig nagyon egyszeren zajlott. A modellnk akkor kezd bonyolultt vlni, amikor az alkalmazsunknak nemcsak egy vagy nhny, hanem tzes, st esetleg szzas nagysgrend gyflszm

225

12. PaaS ptkocka-szolgltatsok miatt tbb tz, ill. tbb szz IDP-vel kell kapcsolatot felptenie. Ezt az esetet az 12-1 bra szemllteti. A T1, T2, T3 tokenek klnbz formtumak lehetnek, tovbbtsuk klnbz protokollal trtnhet.

12-1 bra: Az RP alkalmazsnak minden IDP fel ismernie kell a protokollt s a token formtumot

A komplexits tovbb nvekszik, ha amellett, hogy sok gyfl IDP -jben kell megbznunk, tbb alkalmazst is fejlesztnk. Kpzeljnk el egy olyan komplex vllalatirnytsi szoftvercsomagot, ami szmos nll alkalmazsbl ll, s minden alkalmazsnak meg kell oldania az autentikci feladatt tbb tucatnyi gyfl irnyban! A 12-2 brn els rnzsre ltszik, hogy ha ilyen eset merl fel, az problmkat szl.

12-2 bra: Egy redundns architektra: minden RP alkalmazs fgg a felhasznlt IDP -ktl

Ez nem kvnt redundancit visz a modellnkbe, mert minden alkalmazsunkban implementlni kell a megfelel autentikcis protokollokat minden gyfl IDP-je fel. Amellett, hogy a felhasznl azonostsrt felels infrastruktrnk feleslegesen bonyolultabb vlik, szoros csatolsba kerl az alkalmazsunk az IDP-kkel. Ha egy IDP token szolgltatsa (STS) megvltozik, akkor ezt a vltozst minden egyes alkalmazsunkban kvetni kell, mdostani kell azok konfigurcijt rosszabb esetben forrskdjt is. A redundancia s a sokszoros fggsgek megszntetse rdekben tegyk azt, ami a mrnki problmamegolds sorn legtbbszr sikerre vezet: vezessnk be egy j absztrakcis rteget az RP alkalmazsok s az IDP-k kz!

Federation Provider
Az j absztrakcis rteg bevezetsvel a clunk a fggsgek cskkentse az RP alkalmazsok s az IDP-k kzt. Ehhez hozzunk ltre a modellnkben egy j szereplt, melynek feladata az lesz, hogy kzvett szerepet betltve az RP alkalmazsaink ell elfedje mindazokat a rszleteket, amik az IDP-kkel trtn kommunikcihoz szksgesek. Az RP alkalmazsainknak gy nem kell minden IDP fel ismernik a token formtumot s a titkostshoz szksges protokollok pontos implementcijt. Elg egyetlen kztes szereplvel kommuniklniuk a felhasznl-hitelests megoldshoz. Az ilyen feladatkrt betlt kztes szerepl neve: Federation Provider (FP). Jelenlte lnyegesen leegyszersti az RP alkalmazsaink autentikcival kapcsolatos teendit. Ahogy a 12-3 brn megfigyelhet, az FP is hasonlan az IDP-khez biztonsgi tokeneket bocst ki, azonban nincs kzvetlen isemerete a felhasznlk adatairl. Nem ltezik olyan adatbzis az FP-ben, ami a felhasznlk adatait tartalmazza, mint pl. Facebook esetben a nv, szletsi dtum, lakhely stb. Az FP csak kzvettknt funkcionl az IDP-k s az RP alkalmazsok kztt. Feladata, hogy az IDP-tl kapott klnbz formtum tokenek (T1, T2, T3) alapjn ellenrizze azok hitelessgt, s olyan adatokkal kitlttt tokeneket (T) lltson el, amilyenekre az RP-nek szksge van.

226

12. PaaS ptkocka-szolgltatsok

12-3 bra: Felhasznl azonosts Federation Provider jelenltben

Az FP ltal bevezetett absztrakcis rteg megjelensnek elnyei: Az RP alkalmazsoknak elg egyetlen hitelestsi protokollt s egy token formtumot (T) ismerni a z FP-vel folytatott kommunikcihoz. Nincs kzvetlen kommunikci az IDP-k s az RP-k kztt. Ennek eredmnyeknt az IDP-oldali vltozsokra nem rzkenyek az RP-k, a kztk lv szoros csatols megsznt. RP oldali vltoztatsok nlkl vehet fel j szolgltat a megbzhat IDP-k listjra.

Az Access Control Service, mint Federation Provider


A Windows Azure-ban a federlt autentikcirt felels szolgltats (Federation Provider) neve Access Control Service (ACS). Az ACS amellett, hogy megvalstja az FP-ktl ltalnosan elvrt funkcikat, tovbbi hasznos kpessgekkel is br. Az Azure-on keresztli federlt autentikci szmos IDP-vel kulcsrakszen mkdik. A Microsoft Account, a Facebook, a Google s a Yahoo! mellett brmely ADFS 2.0 -t hasznl AD is egyszeren felvehet IDP-nek. Az itt felsoroltakon kvl az ACS konfigurcija sorn tetszleges SWT, illetve SAML 2.0 tokeneket kibocst szolgltat felvehet a megbzhat IDP-k listjra. Az ACS az IDP-tl kapott tokeneken nemcsak egyszer fogadd-s-tovbbtsd jelleg mveleteket kpes vgrehajtani, a beptett szablyrtelmezjnek (rule engine) ksznheten sszetettebb tokentranszformcis szablyok halmazt is megadhatjuk. Ez a kpessg akkor bizonyul hasznosnak, ha az RP alkalmazsunkban az ACS-tl kapott tokenben hordozott informcik (claim) alapjn szeretnnk authorizcis dntseket hozni. Kpzeljnk el egy olyan esetet, amikor tbb klnbz nyelv orszgbl szrmaz IDP-ket kell kezelni! Minden IDP elkldi a felhasznl csoport-informcijt egy claimben, de gyakran elfordul, hogy ezek lokalizlt formban rkeznek meg az ACS-hez. Az ACS-en bellthat, hogy az eltr nyelvi lokalizcival rkez, de azonos jelents claimek nevt azonos (leginkbb angol) nyelvre transzformlja, s az RP alkalmazs fel mr ilyen egysges formban tovbbtsa. Hasonl, az authorizcit segt szablyok llthatk be pldul akkor, ha a felhasznlnak igazolnia kell, hogy betlttt -e egy adott letkort az RP alkalmazs megltogatsakor. Ilyenkor sok esetben kvetelmnyknt merlhet fel, hogy az RP alkalmazs ne kapjon pontos informcit a felhasznl korrl, csak annyi jusson el hozz, hogy teljesti-e a felhasznl az letkori limitcit. Egy ehhez hasonl szrs is megoldhat az ACS szablyrtelmezjvel. Az IDP-ktl kapott bemen tokenekben az ACS ellenrzi az letkor claim rtkt, s ha ez nagyobb, mint egy hatrrtk, akkor a kimen tokenben egy letkor OK nev, Boolean tpus claimet igaz rtkre llt. Szmos hasonl pldt lehetne mg felhozni a tok en-transzformcis szablyok hasznossgnak rzkeltetsre. ltalnossgban elmondhat, hogy az ACS ezzel a kpessgvel az RP hez eljut claimeken egyfajta elfeldolgozst hajt vgre. gy az RP oldaln ezek kezelshez mr kevesebb tovbbi feldolgozsra van szksg. Ennek ksznheten az alkalmazsfejleszt hatkonyabban tud tnyleges feladatra koncentrlni, nem kell az ACS -tl berkez tokenek feldolgozsval foglalkoznia. Az ACS tovbbi hasznos tulajdonsga, hogy az ACS s a beptetten tmogatott IDP-k (Microsoft Account, Facebook, Google, Yahoo!) kzti hitelestsi protokollok menedzselse a Windows Azure hatskrbe esik. Ez azrt j hr az alkalmazsfejlesztk szmra, mert ha valamilyen vltozs trtnik az emltett IDP -k ltal hasznlt autentikcis eljrsban, akkor nem nekik kell gondoskodni az ltaluk fejlesztett alkalmazs

227

12. PaaS ptkocka-szolgltatsok oldaln a legfrissebb SDK teleptsrl. Az ACS ezt a feladatot leveszi a vllukrl, gondoskodik rla, hogy mindig az ppen aktulis autentikcis mechanizmust hasznlja az IDP-k fel.

A federlt autentikci folyamatnak lpsei


A szereplk megismerse utn a 12-4 bra segtsgvel kvessk nyomon, hogyan trtnik a federlt autentikci folyamata lpsrl lpsre!

12-4 bra: A federlt hitelestsi folyamat lpsei

1. 2.

A kliens, pldul egy web bngsz egy HTTP krst indt az alkalmazsunk fel, abban egy olyan oldalt kr el, aminek a megtekintshez autentikci szksges. A kliens krse ezen a ponton mg nem autentiklt, ezrt az alkalmazsunk tirnytja az ltala megbzhatknt elfogadott federlt hitelest szolgltathoz, az ACS -hez. Az ACS felknlja azon IDP-k listjt, amelyek elfogadsra konfigurlva van. Az IDP kivlasztst kveten az ACS tirnytja a klienst az IDP sajt, a felhasznl szmra jl ismert bejelentkez kpernyjre. Sikeres bejelentkezst kveten az IDP killt egy tokent, ami a felhasznl nla trolt adatait tartalmazza. A token ellltsa utn az IDP tirnytja a klienst az ACS-hez, s a kliens elkldi az IDP-tl kapott tokent az ACS-nek. Az ACS ellenrzi a kapott IDP-token hitelessgt. A konfigurcijban megadott szablyok alapjn kiveszi a kapott tokenbl a felhasznl s az IDP megfelel adatait, s kibocst egy j, ACS-tokent, amit elkld a kliensnek. Az ACS tirnytja a klienst az alkalmazsunk egy elre meghatrozott URL -jre. Az alkalmazsunk ellenrzi a kapott ACS-token hitelessgt, s ha mindent rendben tall, visszaadja a kliensnek az els lpsben indtott HTTP krs eredmnyt.

3. 4. 5. 6.

7.

Az ACS konfigurlsa Relying Party alkalmazsokhoz


Most, hogy mr ismerjk a federlt autentikci szereplit s f vonalakban a hitelestsi folyamat lpseit, nzznk meg egy hosszabb gyakorlati pldt arra, hogyan tudjuk integrlni az ACS -t meglv alkalmazsainkkal! Mieltt hozzkezdennk a pontos konfigurcis lpsek vgrehajtshoz, az ACS koncepcijnak megrtse rdekben fontos mg egyszer hangslyozni: az itt bemutatsra kerl gyakorlat csupn tredkben fedi le az Azure-alap federlt hitelestsi szolgltatsok kpessgeit, a Relying Party gyakorlatilag brmilyen alkalmazs lehet! Mindssze annyi a vele szemben tmasztott kvetelmny, hogy kpes legyen megszltani az ACS-t az ltala tmogatott protokollok valamelyikn, s fel tudja dolgozni az ACS ltal kibocstott tokeneket.

228

12. PaaS ptkocka-szolgltatsok A pldnkban a szakirodalom terminolgijval lve a Relying Party Application egy ASP.NET MVC 3 webalkalmazs lesz. Ezen a konkrt gyakorlati pldn kvl az ACS brmely olyan alkalmazssal integrlhat, ami megbzik az ACS-ben, vagyis hitelesnek tekinti az ACS ltal digitlisan alrt tokeneket, s kpes feldolgozni az azok ltal hordozott felhasznli informcikat. Az itt bemutatottakon kvl Relying Party alkalmazs lehet pldul egy WCF REST szolgltats vagy egy kztes homlokzatrteg bevezetsvel akr egy Windows Phone 7 alkalmazs is. Az ACS szolgltatsainak ilyen szles kr felhasznlhatsgnak htterben az ll, hogy a tokenek ellltst, kldst s feldolgozst vgz protokollok mind HTTPS felett mkd nylt szabvnyok. Ennek ksznheten nemcsak a .NET platform biztostotta kereteken bell tudjuk ignybe venni az ACS szolgltatsait. Szmos, a .NET vilgon kvli technolgihoz mr ltezik az ACS-hez val hozzfrst biztost szoftverfejleszti kszlet (SDK), mellyel akr iOS vagy Android alkalmazsainkbl is ignybe vehetjk az ACS szolgltatsait. Az ACS a Management Service szolgltatsn keresztl felknl egy REST-es API-t, amelynek a felhasznlsval egyszer HTTPS krsek kldsvel testre tudjuk szabni az ACS nvternk viselkedst. Ezt a REST-es API-t hasznljk a tbbsgben nylt forrskd SDK-k, melyek kzl a jelentsebbek elrhetk az albbi URL-en: https://github.com/WindowsAzure-Toolkits. Az API hasznlatval minden, a ksbbiekben bemutatott ACS Management Portlon elrhet funkci elrhet programkdbl is st, vannak olyan API funkcik, amik csak programozottan rhetk el, a portlra nincsenek kivezetve. A portl grafikus fellete csupn a gyakori konfigurcis lpsek vgrehajtst teszi grdlkenyebb. Ha olyan problmba futsz, amire nem tallsz megoldst a grafikus felleten, rdemes belenzni az ACS Management Service lersba s dokumentcijba az albbi linkek en: http://msdn.microsoft.com/en-us/library/windowsazure/gg185972.aspx http://msdn.microsoft.com/en-us/library/windowsazure/hh278947.aspx

ASP.NET MVC 3 webalkalmazs integrlsa az ACS-sel


A gyakorlati pldnkban az ACS nyjtotta hitelestsi szolgltatsokat a legegyszerbb eseten keresztl vesszk szemgyre. A cl, hogy ltrehozzunk egy j ASP.NET MVC 3 internetes webalkalmazst, amelynek megltogatsakor a felhasznlnak azonostania kell magt. Az autentikcit nem az MVC alkalmazst hosztol web szerver fogja vgezni, ezt a feladatot az ACS-re bzzuk. Ahhoz, hogy a bejelentkeztetsi folyamat mkdjn, a kvetkez teendket kell elvgeznnk: Az ACS-nek meg kell mondani, hogy az jonnan ltrehozott MVC alkalmazsunkat kezelje Relying Party alkalmazsknt, illetve hogy milyen IDP-kkel lehessen elvgezni az autentikcit. Az MVC alkalmazst gy kell konfigurlni, hogy az ACS -ben megbzzon, az ltala kibocstott tokeneket hitelesnek ismerje el. Els lpsknt ltogassunk el az Azure Management Portlra a mr jl ismert https://windows.azure.com cmen. Ha itt a belpst kveten a HTML5 fellet j Management Portal nylna meg, vlasszuk ki a rgi Silverlight-os portlt, mert a knyv rsnak idpontjban az ACS funkcii mg nem elrhetek az j portlon. A Silverlightos felleten a bal als felsorolsban vlasszuk a Service Bus, Access Control & Caching menpontot, majd a szolgltatsok kzl az Access Controlt! Ha ezt megelzen mg nem hasznltuk az Azure elfizetsnkkel az ACS szolgltatsait, akkor az ablak f paneln csak az elfizetsnk szerepel, ahogy az a 12-5 brn lthat.

229

12. PaaS ptkocka-szolgltatsok

12-5 bra: ACS belltsok elrse az Azure Management Portlon

ACS nvterek
Az ACS szolgltatsainak menedzselshez ezen a ponton meg kell ismerkednnk az ACS nvterek ( ACS namespace) fogalmval. Ha tbb olyan alkalmazst fejlesztnk, amik ignybe szeretnk venni az ACS szolgltatsait, akkor valamilyen vezrelvek mentn logikailag csoportostani kell majd ket a karbantarthatsg s az ttekinthetsg rdekben. Erre nyjtanak megoldst az ACS nvterek. Minden ACS nvtrnek globlisan egyedi neve kell hogy legyen. A nvtr nevbl az ACS automatikusan elllt egy URI-t, amin keresztl a ksbbiekben az ACS szolgltatsai elrhetek lesznek. Az URI struktrja: https://<namespace>.accesscontrol.windows.net.
A ksbbiekben ezt az URI-t mg sok helyen hasznlni fogjuk, a mostani gyakorlat kontextusban azonban elg annyit tudni az ACS nvterekrl, hogy a menedzsment hierarchia legfels szintjn ezek a nvterek llnak, s aljuk vannak besorolva a Relying Party alkalmazsok.

Hozz is ltre egy ACS nvteret! Vlassz neki egy nevet s egy rgit a nagy Azure adatkzpontok kzl! Javasolt azt az adatkzpontot vlasztanod, amely fldrajzilag a legkzelebb van a szerveredhez, illetve ha a ksbbiekben az alkalmazsodat a felhben szeretnd hosztolni, akkor az ACS nvteret a vele megegyez rgij adatkzpontban vedd fel! Az ACS nvtr ltrehozsnak menete a 12 -6 brn lthat.

12-6 bra: ACS nvtr ltrehozsa

Most, hogy ltrehoztad az ACS nvteret, a fenti vzszintes mensvban vlaszd ki a Manage Access Control gombot! rdemes megfigyelni, hogy az ACS konfigurlst a f Azure Management Portal -hoz kpest egy msik URL-en red el. n a gyakorlat sorn az azurebookdemo nvteret hasznlom, ezrt a bngsz a https://azurebookdemo.accesscontrol.windows.net/v2/mgmt/web cmre irnytott t. Itt mindent megtallsz, ami az ACS konfigurcijhoz szksges lesz a ksbbiek sorn, ezrt ezt az oldalt rdemes megnyitva tartani.

230

12. PaaS ptkocka-szolgltatsok Az ACS nvteret most mr hasznlatba veheted. Ehhez trj vissza a fejleszti gpedre, s ksztsd el a Relying Party alkalmazsknt funkcionl ASP.NET MVC 3 webalkalmazst! Ez egy htkznapi MVC alkalmazs lesz, a Visual Studio File menjben vlaszd a New Project menpontot s a webes projekttpusok kzl az ASP.NET MVC 3 Web Application sablont! A kvetkez lpsben a felknlt ASP.NET MVC sablonok kzl hasznld az Internet Applicationt! Ahhoz, hogy az ACS kommuniklni tudjon a webalkalmazsoddal, ACS oldalon szksg lesz az alkalmazs cmre. Ha a Visual Studiba beptett ASP.NET Development Servert (Cassini) hasznlod a fejlesztsek sorn, akkor meg kell hatroznod egy portot, amit a fejleszti webszerver minden indulskor hasznlni fog, s gy az alkalmazsnak fix cme lesz. A belltst a 12-7 brn lthat mdon vgezheted el. A projekt tulajdonsgainak megnyitshoz a Solution Explorerben kattints a jobb egrgombbal a projekt nevre, majd a felugr menbl vlaszd a Properties parancsot! Itt tetszleges portszm adhat meg. Ha a knyv pldjt szeretnd kvetni, vlaszd te is a 8087-es portot, ahogyan az a 12-7 brn is szerepel!

12-7 bra: Fix port belltsa ASP.NET Development Serveren

Az alkalmazs ettl kezdve mindig a 8087-es porton fogja figyelni a berkez HTTP krseket. A beptett projektsablon alapjn ltrehozott alkalmazs mr tartalmaz autentikcis logikt. Ha megnzzk a Web.config fjlt, lthatjuk, hogy az <authentication mode="Forms"> XML elem szerint Forms autentikcit hasznl. Ahhoz, hogy ezt megvltoztassuk, s az ACS-re bzzuk a felhasznlk azonostst, tudatni kell az alkalmazsunkkal, hogy hitelesnek kell tekintenie az ACS ltal kibcsotott tokeneket, s fel kell vele dolgoztatni a tokenekben hordozott informcit. Ahogy azt a federlt hitelests modelljnek bemutatsban olvashattad, az ACS beiktatsval egy j absztrakcis rteget illesztnk be az autentikcis folyamatba, gy az alkalmazsunknak csak egyetlen protokollt kell ismernie az ACS tokenek fogadsra, dekdolsra s a bennk lv tulajdonsgok kinyersre. Ez elnysebb annl, mintha minden egyes IDP-hez kln-kln protokoll implementlst kellene elvgeznnk. Azonban a legtb b alkalmazsfejlesztnek nem erssge a komplex hitelestsi protokollok ismerete s megvalstsa, rendszerint valamilyen kulcsraksz, magas absztrakcis szinten programozhat API -t hasznlnak az autentikci alacsonyabb szint mveleteinek elfedsre. Most sem lesz ez mskpp, az ACS ltal kibocstott tokenek alkalmazsoldali feldolgozst nem neknk kell megrni!

Windows Identity Foundation (WIF)


A megoldst a Windows Identity Foundation (WIF) .NET komponens szolgltatja. A WIF egy jl kiterjeszthet keretrendszer, ami teljes kr szolgltatst nyjt az autentikci s authorizci krdskreinek lefedsre. Jelen fejezet terjedelmi korltai nem engedik meg, hogy mlyebben elmerljnk a WIF pontos mkdsnek ismertetsben. A tma irnt rdekldk szmra Vittorio Bertocci Programming Windows Identity Foundation cm knyve knl minden rszletre kiterjed ismeretanyagot. Jellemzen alkalmazsfejlesztknt nem szeretnnk komolyabb kriptogrfiai, hitelestsi s alacsony szint hlzati kommunikcit implementl protokollokkal kapcsolatos feladatokkal tlteni a fejlesztsre sznt

231

12. PaaS ptkocka-szolgltatsok idnket. Szerencsre az ACS hasznlatbavtelhez erre nincs is szksgnk! A WIF teljes egszben tveszi a fejleszttl az autentikcihoz szksges alacsony szint, hitelestsi protokoll-kzeli feladatokat, gy a fejlesztnek csak az alkalmazslogika megrsra kell koncentrlnia. Az alkalmazsunk teljes, WIF -fel kiegszl architektrjt a 12-8 brn lthatod. Hasonlan ahhoz, ahogy az STS elfedi az IDP-kben lezajl konkrt autentikcis mechanizmust az IDP-nek cmzett krsek kezdemnyezje ell, a WIF az alkalmazsunk el egy j rtegknt beplve gondoskodik a felhasznl hitelestsnek kezelsrl.

12-8 bra: A teljes, WIF-fel kiegsztett architektra

A WIF-hez tartoz fejleszti kszlet nagyban segti a produktv szoftverfejlesztst, Next -Next-Finish mdszerrel egy varzsl vgigvezet minket az ACS-integrci Relying Party oldalhoz tartoz lpseken. Nzzk meg, hogyan! Legels lpsknt a WIF futtatkrnyezet (WIF Runtime) s a programozi eszkzkszlet (WIF SDK) teleptsre lesz szksgnk a fejleszti gpen. Ezt a kt komponenst az albbi URL -eken tudod letlteni: http://www.microsoft.com/en-us/download/details.aspx?id=17331 http://www.microsoft.com/en-us/download/details.aspx?id=4451 A telepts eltt javasolt a fut Visual Studio pldnyok bezrsa. Miutn a WIF Runtime, majd a WIF SDK teleplt, nyisd meg jra a Visual Studiban az ASP.NET MVC alkalmazst s kattints jobb gombbal a Solution Explorerben az MVC projektre! A felugr menben megjelenik egy j menpont, Add STS reference nvvel. Vlaszd ki ezt a menpontot! Ennek hatsra elindul a WIF Federation Utility Wizard, amely a WIF SDK rsze. Ezzel a varzslval gy fogod konfigurlni az alkalmazst, hogy kpes legyen kommuniklni az ACS-sel, az ltala kibocstott tokeneket elfogadja s hitelesnek tekintse. Az els lpsben meg kell adnod a konfigurland Relying Party alkalmazs konfigurcis fjljt, ami ebben az esetben az alkalmazshoz tartoz Web.config. Ezt a varzsl automatikusan megtallja a projekt knyvtrban. Ugyanezen a kpernyn meg kell adnod az alkalmazs cmt az Application URI szvegdobozban. Ez, ha a knyv pldjt kveted, nlad is a http://localhost:8087/ cm lesz. A varzsl els kpernyjnek a 12-9 brhoz hasonlan kell kinznie.

12-9 bra: A Web.config fjl s az alkalmazs URI megadsa a Federation Utility felletn

232

12. PaaS ptkocka-szolgltatsok A kvetkez kpernyre ugrs eltt a varzsl mg feldob egy figyelmeztetst, hogy az alkalmazs nem HTTPS protokollon keresztl kommunikl. Ezt most hagyd figyelmen kvl! Az ASP.NET Development Server egyszer fejleszti eszkz, a HTTP protokollt csak titkosts nlkl tudja hasznlni. Az les krnyezetben fut alkalmazsokban mindig hasznlj SSL titkostst, hiszen az ACS-tokenekben bizalmas, megvdend felhasznli informcik utaznak! A varzsl msodik kpernyjn ki kell vlasztanod azt a tokent kibocst szolgltatt (STS), aminek a tokenjeit az alkalmazs elfogadja. Esetnkben ez a szolgltats az ACS lesz. Vlaszd a rdigombok kzl a Use existing STS opcit! Szksged lesz egy metaadatokat tartalmaz XML -re, ami a felhasznlt ACS szolgltatsokat, a tokenek formtumt, az ACS s a webalkalmazs kztti kommunikcis protokollt s mg j pr egyb belltst deklarl. Ezt az XML fjlt termszetesen nem neked kell ellltani, az ACS automatizltan gondoskodik errl. Ltrehozza a fjlt, ami lerja a szolgltatsait felhasznl Relying Party alkalmazsok szmra, hogyan lehet elrni az ACS nvternket. Ennek a fjlnak a helyt is az Access Control Management Portal rulja el. Trj vissza a bngszhz, s vlaszd ki az ACS menedzsment felletn a bal oldali felsorolsbl az Application Integration menpontot! Az itt tallhat URI-k kzl most a WS-Federation szolgltatst ler XML-re van szksged. Msold ki a vglapra a WS-Federation metadata sorban tallhat XML-t. Nlam, mivel n az azurebookdemo ACS nvteret hasznlom, ez az XML fjl a kvetkez cmen rhet el: https://azurebookdemo.accesscontrol.windows.net/FederationMetadata/200706/FederationMetadata.xml. rtelemszeren nlad msik ACS nvtr fog szerepelni az URI elejn. Ezt az URI-t msold be a Federation Utility Wizardban az STS WS-Federation metadata document location szvegdobozba! A varzsl tbbi lpsben nincs tovbbi teendd, kattints mindegyik tovbbi lpsnl a Next, majd vgl a Finish gombra! A varzsl lefuttatsnak hatsra az alkalmazs Web.config fjljban tbb bellts is megvltozott. Ezek kzl kt dolgot rdemes megfigyelni: ltrejtt a <microsoft.identityModel> XML elem, amelynek legfontosabb rsze a <federatedAuthentication> elemen bell lthat:
<federatedAuthentication> <wsFederation passiveRedirectEnabled="true" issuer="https://azurebookdemo.accesscontrol.windows.net/v2/wsfederation" realm="http://localhost:8087/" requireHttps="false" /> <cookieHandler requireSsl="false" /> </federatedAuthentication>

Ebben az XML elemben konfigurljuk, hogy az ACS lesz az a tokenkibocst szolgltat, amiben megbzik az alkalmazsunk. Az issuer attribtum a tokenkibocst, vagyis az ACS cme, a realm attribtum pedig az az URI, amelyen bell az ACS ltal kibocstott tokenek rvnyesek. A http://localhost:8087/ realm URI azt jelenti, hogy az ACS tokenjei az alkalmazsunk teljes egszre rvnyesek lesznek. A varzsl futsnak msik eredmnye, hogy a projekten bell ltrejtt egy FederationMetadata.xml nev fjl a FederationMetadata\2007-06 knyvtrban. Erre a fjlra szksgnk lesz: ez az ACS Management Portlon kapott XML fjl prja. Ahogy a portltl kapott XML lerja a Relying Party alkalmazsunk szmra az ACS szolgltatsait, gy az itt ltrejtt XML az ACS szmra rja le, hogy hogyan tudja megszltani alkalmazsunkat. Ahhoz, hogy az ACS kommuniklni tudjon az alkalmazsunkkal, jbl el kell ltogatnunk az ACS Management Portlra, s kivlasztani a Relying Party Applications menpontot a bal oldalon tallhat menbl. Itt meghatrozhatjuk azoknak az alkalmazsoknak a listjt, amelyek szmra az ACS tokeneket bocsthat ki. A menedzselhetsg mellett azrt fontos explicit mdon megadni, hogy mely alkalmazsok szmra szolgltathat tokeneket az ACS, mert garantlnunk kell, hogy a tokenekben kldtt bizalmas felhasznli informcikat csak az arra jogosultak krseire szolgltatjuk ki! Add hozz az alkalmazst az ACS nvtrhez Relying Party alkalmazsknt! Ehhez vlaszd az Add gombot s tltsd ki a megjelen rlapot! A Name mezbe rd be az alkalmazs nevt! Ez tetszleges szveg lehet, ezen a nven fog megjelenni az alkalmazs az ACS menedzsment felletn. A Mode szekciban meg kell hatroznunk, hogy milyen cmeken keresztl tudja megszltani az ACS az alkalmazst. Ehhez manulisan is bellthatjuk a Realm, Return URL s Error URL cmeket, illetve

233

12. PaaS ptkocka-szolgltatsok lehetsgnk van a kommunikcihoz hasznlt cmeket egy metaadatokat tartalmaz XML fjl formjban megadni. A Realm, ahogyan azt mr korbban megnztk a WIF Federation Utility ltal mdostott alkalmazsszint Web.config fjlban, az az URI, amin bell rvnyesnek tekintendk az ACS ltal kibocstott tokenek. A Return URL az az URL, amire sikeres autentikcit kveten az ACS elkldi az ltala ellltott tokeneket. Ezeken kvl bellthat egy Error URL, amelyre az ACS akkor irnyt t, ha valamilyen hiba trtnt a felhasznl bejelentkezse sorn. A felhasznli lmnyt nveli, ha sikertelen autentikcis ksrlet eredmnyeknt egy testreszabott hibaoldalt tudunk mutatni. A manulis belltsok elvgzse sem bonyolult, viszont mg egyszerbb dolgod van, ha az Import WSFederation metadata opcit vlasztod. lltsd a rdigombokat erre a lehetsgre, s a Choose file gombbal vlaszd ki a Federation Utility ltal ellltott FederationMetadata.xml fjlt a projekt FederationMetadata\2006-07 knyvtrbl! Mivel az alkalmazs HTTP-n keresztl fog kommuniklni az ACS-sel, trld a Require URLs in metadata to use HTTPS opcit! A Token format listbl vlaszd ki a SAML 2.0-t! Ha az rlap a 12-10 brhoz hasonlan nz ki, elkszltl a Relying Party alkalmazs hozzadsval, kattints a Save gombra!

12-10 bra: Relying Party alkalmazs hozzadsa ACS nvtrhez

Innen mr csak egy lpsre vagy a cltl! Az ACS s a webalkalmazs kztti kapcsolatot kiptetted, de mg nem hatroztad meg, hogy milyen informcikat szolgltasson az ACS az alkalmazs fel. A federlt hitelests forgatknyvnek 6. lpsben olvashattad, hogy az ACS vgrehajt egy transzformcis lpst az IDP-tl kapott biztonsgi tokeneken. Az ACS ltal ellltott tokenek ahogy az elz kpernyn bekonfigurltad SAML 2.0 formtumban jutnak el az alkalmazsunkhoz. Ez egy bonyolult smra illeszked XML, a token pontos formtuma webalkalmazs-programozi szemmel nzve az esetek nagy tbbsgben nem fontos. Az XML feldolgozsrt a WIF felel, nek ed elg rla annyit tudni, hogy ebben a tokenben kapja meg a webalkalmazs az ACS ltal kibocstott felhasznli claimeket. Az ACS kimeneti token formtumnak rgztsn kvl mg azt is szksges meghatrozni, hogy az IDPktl kapott tokenekben rkez claimeken milyen transzformcit hajtson vgre az ACS azaz milyen tulajdonsgok szerepeljenek az ACS kimeneti tokenjeiben. Ezt a transzformcit az ACS-be beptett szablyrtelmez (rule engine) vgzi. A transzformci sorn felhasznlt szablyokat az ACS Management Portlon lehet belltani a bal fels menben a Rule groups menpont kivlasztsval. A Relying Party alkalmazsunk felvtelnek hatsra itt mr ltrejtt egy szablyhalmaz, ami az alkalmazsunkra vonatkoz transzformcis szablyokat tartalmazza. Ennek neve automatikusan lett generlva: Default Rule group for <alkalmazsnv>. Vlaszd ki ezt a szablyhalmazt! A rszletez kpernyn lthatod, hogy egyetlen szably sincs mg felvve ebbe a halmazba. A tulajdonsgok transzformcis szablyait egyesvel, manulisan is fel lehet venni az Add linkre kattintva, de egyszerbb dolgod van, ha a Generate gombot vlasztod. Ezzel automatikusan ltrehozhatod az alkalmazshoz hozzrendelt IDP-k transzformcis szablyait. Kattints a Generate linkre, s hozd gy ltre a jelenleg egyedli IDP-knt meglv (mg Live ID nven szerepl) Microsoft Accounthoz a transzformcis szablyokat! Ennek eredmnyeknt egy szably jtt ltre: a Microsoft Accounttl kapott nameidentifier nev tulajdonsgot az ACS hasonlan

234

12. PaaS ptkocka-szolgltatsok


nameidentifier nven tovbbtja az ltala kibocstott tokenben, vltoztats nlkl. A nameidentifier egy

minden felhasznlra nzve egyedi tulajdonsg, felfoghat a felhasznl azonostjaknt. Ha idig eljutottl, sikeresen integrltad az ACS-t az alkalmazssal. Arasd is le a munka gymlcst! Ltogass el a http://localhost:8087 cmre, ahol az alkalmazst az ASP.NET Development Server hosztolja (a port szm termszetesen vltozhat, ha nem a knyv pldjt kvetted a vlasztskor) ! Mieltt a cm begpelse utn letnd az Entert, hozd be a bngsz Developer tools ablakt (F12), s vlts a Network flre, valamint helyezz el egy trspontot a HomeController osztly Index metdusnak els sorban! Nzd meg, hogy a federlt hitelests lpsei tnyleg olyan sorrendben trtnnek, ahogy az a fejezetben le van rva! A localhost:8087 cmre rkezve az RP alkalmazs azt ltja, hogy a krs nem autentiklt. Az ASP.NET pipeline-ba bepl WIF modulok ezrt nem engedik, hogy a vgrehajts elrjen a Controller metdushoz. Az autentiklatlan krst a WS-Federation Authentication Module (WSFAM) tirnytja az ACS-hez, a https://<ACS_nvtered>.accesscontrol.windows.net/v2/wsfederation?wa=wsignin1.0&... cmre. Ennek a HTTP krsnek a query string paramtereibl tudja az ACS eldnteni, hogy a http://localhost:8087/ realmrl kezdemnyeztek egy federlt bejelentkeztetst ( wa=wsignin1.0 ). A realm alapjn az ACS megllaptja, hogy melyik RP alkalmazstl rkezett a krs, s tovbbirnytja a bngszt az ehhez az RP-hez konfigurlt egyetlen Identity Providerhez, a Microsoft Accounthoz. Ha megadod az adataidat a Live ID bejelentkez kpernyjn, akkor a Live ID visszairnytja a bngszt az ACS-hez. Figyeld meg, hogy a Live ID-tl az ACS fel kldtt HTTP POST zenet Form Data mezjben egy <RequestSecurityTokenResponse> XML elemben utazik az IDP ltal kibocstott token! A tokent megkapva s a szksges transzformcis szablyokat alkalmazva az ACS elllt egy kimeneti tokent, s ahogy a Developer toolban is megfigyelhet, tovbbirnytja a bngszt a Return URL-ben megadott cmre, ami esetnkben a http://localhost:8087. Hasonlan az IDP-tl az ACS-nek kldtt tokenhez, ebben a POST zenetben is a Form Data mezben utazik a token.

Tovbbi Identity Providerek hozzadsa


Az RP alkalmazsunk most mr minden autentikcit ignyl esetben tirnytja a kliens bngszt a Microsoft Accounthoz, mint megbzhat IDP-hez. Ha szeretnnk, hogy a felhasznl tovbbi IDP-knl is elvgezhesse a bejelentkezst, akkor csak az ACS konfigurcijban kell mdostsokat elvgezni. Itt vlik szemmel lthatv a federlt hitelests modelljnek elnye. Az j IDP felvtelhez az RP alkalmazsunkban egyetlen kdsor vagy konfigurcis llomny mdostsa sem szksges. Minden teendt az ACS management felletn tudunk elvgezni. Google Vedd fel a megbzhat IDP-k kz a Google-t! Ehhez kattints az ACS Management Portal bal oldali menjben az Identity providers menpontra! Az IDP -k listjban mg csak a Microsoft Account szerepel (a knyv rsnak idejben mg Windows Live ID nven). Az Add linkre kattintva vlaszd ki a lehetsges IDP -k listjbl a Google-t, majd kattints a Next gombra! A kvetkez kpernyn ki tudod vlasztani, hogy melyik Relying Party alkalmazshoz szeretnd felvenni a Google-t mint megbzhat IDP-t. Vlaszd ki az elzleg felvett RP alkalmazst, s kattints a Save gombra! Ahogy a Microsoft Account esetben is tetted, generltasd le az ACS rule engine-nel a token transzformcis szablyokat a Google-tl rkez tokenekhez is. Ezt, ahogy az elbb is, a Rule groups menpontot vlasztva tudod megtenni. Vlaszd ki a mr meglv Default Rule Group for <RP alkalmazs neve> szablyhalmazt, s kattints a Generate linkre! A jellngyzetek kzl automatikusan ki lesz vlasztva a Google. Ez gy pp megfelel, a szablyok ltrehozshoz kattints a Generate gombra! Ezt kveten a szablyhalmaz oldaln lthatod, hogy a Google alaprtelmezetten tbb informcit kzl a bejelentkezett felhasznlrl , mint a Microsoft Account. Hasonlan, a Google is elkldi a nameidentifier nev claimben a felhasznl egyedi azonostjt. Ezenkvl elkldi mg a bejelentkezett felhasznl nevt s e-mail cmt is. Ezzel sikeresen felvetted a Google-t az IDP-k kz. Nzd meg egy bngszbl a munka eredmnyt naviglj a http://localhost:8087 oldalra!

235

12. PaaS ptkocka-szolgltatsok

Ha a jobb fels sarokban azt ltod, hogy be vagy jelentkezve, akkor trld a bngsz cache -t! Erre azrt van szksg, mert az RP alkalmazs mg nem implementlja a federlt felhasznlk kijelentkeztetst. A tmrl rszletesebben is olvashatsz a fejezet egy ksbbi rszben. Egyelre, a mostani tesztels idejre folyamodj a bngsz cache trlshez!

Cache trls utn, ha jbl megltogatod a http://localhost:8087 oldalt, akkor a bngsz krse nem autentiklt az RP alkalmazs fel, ezrt a WIF tirnytja az ACS-hez. Az ACS kt IDP-ben is megbzik, ezrt felknl egy alaprtelmezett oldalt, ahol a felhasznl ki tudja vlasztani, melyik IDP-nl szeretn autentiklni magt. IDP vlasztst kveten a bejelentkezsi folyamat vltozatlan: az IDP killt egy tokent az ACS szmra, majd az ACS tovbbirnytja a bngszt az RP alkalmazs fel az ltala kibocstott tokennel. Facebook A Facebook felvtele a megbzhat IDP-k kz hasonlan trtnik, mint a Google esetben. Az ACS oldali konfigurci semmiben sem vltozik az elz esethez kpest az ACS szmra engedlyeznnk kell, hogy megbzzon a Facebookban mint IDP-ben. A klnbsg az, hogy a Facebooknl is be kell lltanunk, hogy kpes legyen tokeneket szolgltatni az ACS szmra. Ennek elrshez ltre kell hoznunk egy Facebook alkalmazst, amin nhny tovbbi konfigurcis lpst kell vgrehajtanunk . Jelentkezz be a Facebook fikoddal, s naviglj a facebook.com/developers cmre! Itt hozz ltre egy j alkalmazst! Az alkalmazs tulajdonsglapjn vlaszd ki, hogyan integrldik az alkalmazs a Facebookkal! Mivel a Facebookot IDP-knt szeretnd hasznlni, vlaszd ki a Website with Facebook Login opcit! Itt a Site URL mezben meg kell adnod annak az alkalmazsnak a cmt, amely szmra a Facebook tokeneket bocst ki. Ha felidzed a federlt hitelests modelljt, lthatod, hogy a Facebook mint IDP ltal kibocstott tokeneket az ACS fogja felhasznlni. Ezrt itt nem kzvetlenl az RP alkalmazs cmt, hanem az ACS nvtr URL-jt kell megadni. A knyv pldjban ez a https://azurebookdemo.accesscontrol.windows.net/ URL. Termszetesen neked a sajt ACS nvterednek megfelel URL -t kell itt megadnod! Ezzel elrted, hogy a Facebook kpes legyen security tokeneket ellltani az ACS szmra. Ezutn azt kell konfigurlnod az ACS oldaln, hogy az hitelesnek tekintse a Facebook ltal szolgltatott tokeneket. A Facebook alkalmazs tulajdonsglapjt hagyd megnyitva, az ACS -nek szksge lesz az App ID s az App Secret mezk tartalmra! Az ACS oldaln az j IDP hozzadsa pp gy trtnik, mint ahogy azt a Google pldjn megnztk. Az Identity providers menben vlaszd ki az j IDP hozzadst, majd a listbl a Facebookot! A Next gombra kattintsra betltd belltsokat tartalmaz rlapon add meg a Facebook fejleszti oldaln kapott App ID-t s App Secretet! Mentsd el a vltoztatsokat, majd generltasd le a claimeket egyszeren tovbbt transzformcis szablyokat az ACS Management Portlon a mr ismert Rule Groups menpont Generate parancsval! Ezzel elrted, hogy az ACS megbzzon a Facebook tokenjeiben. Ha megltogatod az alkalmazs oldalt, lthatod, hogy a Facebook is szerepelni fog a vlaszthat IDP -k listjn. ADFS v2.0 A Microsoft Account, a Google s a Facebook, br szles krben elterjedt szolgltatsok, leginkbb a publikus Internet fell rkez felhasznlk autentikcis ignyeit fedik le megoldsaikkal. Ha nagyvllalati gyfl szmra fejlesztnk alkalmazsokat, akkor az autentikcit jellemzen a partnernk Active Directoryjra szeretnnk bzni. Az RP alkalmazsunk szmra ebben az esetben a vllalati AD IDP-knt fog funkcionlni. Az elz kt pldban nem sok mindent lehetett konfigurlni az IDP -k oldaln. A Microsoft Accountnl s a Google-nl gyakorlatilag semmit nem kellett konfigurlnunk IDP oldalon, a Facebooknl is csak pr konfigurcis belltst kellett megtennnk. Egy vllalati AD konfigurlsa esetben mr nagyobb felelssg hrul az zemeltetre. Maga az AD ltalban egy Windows Server-en fut, s KERBEROS autentikcit hasznl. A KERBEROS egy szigor hlzati kvetelmnyeket megfogalmaz, a szmtsi felh platformok sajtossgait nem jl kezel hitelestsi szabvny. Ezrt ahhoz, hogy az AD szolgltatsait elrhetv tudjuk tenni a felhben fut ACS fel, a szerverre fel kell telepteni az Active Directory Federation Services (ADFS) 2.0 komponenst. Az ADFS 2.0 feladata lesz az, hogy a meglv AD felhasznli adatai alapjn megfelel formtum tokeneket lltson

236

12. PaaS ptkocka-szolgltatsok ki az autentikcit kezdemnyez fl szmra. Az ADFS 2.0 is jl hasznlhat grafikus felletet nyjt a tokenkibocstsi szablyok felvtelre. A komponens teleptst kveten egy varzsl lpseit kvetve llthatjuk be, milyen claimek szerepeljenek az ADFS ltal kibocstott tokenekben. Az ADFS konfigurcijnak elvgzse utn szksg lesz egy, a tokenszolgltatst ler XML-re, amit szintn az ADFS konfigurcis felletn tallunk meg. Az XML egy fix URL-en keresztl rhet el: https://example.com/adfs/FederationMetadata/2007-06/FederationMetadata.xml. Az ADFS hasznlatnl megkts, hogy a szervernkre domain nvvel lehessen hivatkozni, az IP cm nmagban nem elegend. A pldban szerepl example.com helyn termszetesen a sajt ADFS-t futtat szervered cme fog szerepelni. Az ACS management portlon, ahogy az elz pldkban is, fel kell venned az ADFS-t a megbzhat IDP-k kz. Ezt a mr korbban is hasznlt Identity providers men Add linkjvel tehet ed meg. Itt vlaszd a WSFederation identity provider opcit, majd kattints a Next gombra! Vlassz egy Display name-et az ADFSnek, amivel az ACS Management Portlon fog szerepelni, illetve tltsd ki a Login link text tulajdonsgot! Az ADFS ezzel a nvvel fog szerepelni a vlaszthat IDP-k listjban. Vgl, legfontosabb lpsknt add meg az ADFS ltal generlt szolgltatsler XML fjl URL-jt a WS-Federation metadata szekci URL szvegdobozban! A belltsok mentse utn generltasd le a tokentranszformcis szablyokat a Rule groups menpont Generate parancsval, s ezzel el is kszltl az ADFS integrlsval. Az ADFS pldjhoz hasonlan, a tokenkibocst szolgltats metaadatait tartalmaz XML megadsval brmilyen WS-Federation protokollt megvalst IDP-t felvehetsz a megbzhat IDP-k listjra.

Alkalmazs integrci
Gyakori eset az, hogy az RP alkalmazsunk felhasznlja szmra tbb IDP fel is lehetv kell tenni a bejelentkezs lehetsgt. Egysges kinzet, eszttikus dizjnnal felptett alkalmazsban nagyon rontja a felhasznli lmnyt, ha bejelentkezsnl az IDP vlasztshoz t kell naviglni az ACS sajt, automatikusan generlt szrke oldalra. Szerencsre van lehetsg arra, hogy az ACS -tl elkrjk a megbzhat IDP-k listjt s azokat az URL-eket, amelyekre ha a felhasznl elltogat, akkor sikeres autentikcit kveten az IDP az ACS fel irnytja a bngszjt az ltala kibocstott tokennel. Ebben az egyszer pldban a clunk az lesz, hogy a webalkalmazsunk Home/Index s Home/About oldalt vdett tegyk azokat csak bejelentkezett felhasznlk vehessk ignybe. Tovbbi clunk, hogy az IDP vlaszts lehetsge a mr meglv Account/LogOn oldalon trtnhessen meg, s ne kelljen ehhez a mvelethez tirnytani a klienst az ACS-hez. Az integrcihoz ngy f lps vgrehajtsra van szksg: Meghatrozzuk, melyik oldalak ignyeljenek autentikcit. Ltrehozunk az AccountControllerben egy action methodot, ami az IDP-k adatait egy JSON adatstruktra formjban letlti az ACS-tl. A felhasznlk bejelentkeztetst vgz View-ban , a LogOn.cshtml-ben elkrjk az IDP-k listjt. A kapott JSON alapjn tetszleges, az oldalunk dizjnjval harmonizl HTML -t lltunk el. Jelen llapotban az alkalmazsunk minden krsnl azonostani szeretn a felhasznlt. Ez a viselkeds a WIF Federation Utility futtatsnak eredmnye a varzsl gy mdostja a web.config fjlt. Ez az llapot neknk nem megfelel, mert az Account/LogOn oldal megltogatsakor nem jelenik meg a felhasznl szmra a bejelentkezsi fellet, rgtn tovbbtdik az ACS-hez. Az RP alkalmazs autentikcis ignyeinek testreszabshoz kt dolgot kell megtenned. Elszr nyisd meg az alkalmazsszint web.config fjlt, s keresd meg benne a <system.web> elemet! Ezen bell tvoltsd el az <authorization> elemen bell lv <deny users=?/> sort! Ezzel elrted, hogy az oldal ne irnytson t automatikusan egyetlen krst sem az ACS-hez a web.config alapjn. Az autentikcis ignyek pontos testreszabshoz lsd el a vdett oldalaidat elllt Controller metdusokat az [Authorize] attribtummal! A mostani pldban ezek a HomeController osztly Index s About metdusai.

237

12. PaaS ptkocka-szolgltatsok

[Authorize] public ActionResult Index() {}

Hasonlan lsd el az About metdust is az [Authorize] attribtummal! Az autentikci kvetelmnyeinek kialaktsa mellett a msik teendd, hogy a web.config fjlban megadod azt az URL-t, ahov a nem autentiklt krseket t szeretnd irnytani. Ez az Account/LogOn oldal lesz. Ehhez trld ki az <authentication mode="None" /> sort, s kommentezd vissza a Federation Utility ltal kikommentezett <authentication mode="Forms".../> sort! A <forms> elemen bell a loginUrl attribtumot rd t ~/Account/LogOn-ra, hogy az alkalmazs ide irnytsa t az azonostst ignyl krseket! Az <authentication> elemnek a vltoztatsok utn gy kell kinznie:
<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" /> </authentication>

Ha ezzel megvagy, hozz ltre az AccountControllerben egy IdentityProviders nev metdust! Ez fogja elvgezni az IDP-k adatainak letltst.
public ActionResult IdentityProviders() { string idpsJsonEndpoint = ""; var client = new WebClient(); var data = client.DownloadData(idpsJsonEndpoint); return Content(Encoding.UTF8.GetString(data), "application/json"); }

Az idpsJsonEndpoint vltoznak kell rtkl adnod azt az URL-t, ahonnan a szksges IDP informcik letlthetk. Ezt az URL-t az ACS Management Portlon tallod meg. A bal oldali mensvbl vlaszd ki az Application integration menpontot, majd kattints a Login Pages linkre, s az itt megjelentett listbl vlaszd ki a Relying Party alkalmazst! A Login Page Integration oldalon kt lehetsg kzl vlaszthatsz. Az els, Link to an ACS-hosted login page opcit vlasztva egy URL-t kapsz, ami az ACS sajt bejelentkeztet oldalra mutat. Ezt az URL-t az alkalmazs realmjn bell brhov elhelyezheted. Ha a felhasznl rkattint, akkor az ACS sajt login oldalra navigl. Szmodra most a msodik, Host the login page as part of your application opci az rdekesebb. Nzd meg az itt tallhat URL-t! A query string paramterekbl az ACS kpes megllaptani, hogy melyik RP alkalmazs szmra kell visszaadnia a megbzhat IDP-k listjt. A callback fggvnyben megadhat mg egy JavaScript fggvny, ami az ACS vlasznak megrkezsekor lefut. Add rtkl az idpsJsonEndpoint vltoznak ezt az URL-t! Az ltalad hasznlt URL termszetesen klnbzni fog a knyv pldjtl. A sajt ACS nvtered fog benne szerepelni, illetve ha nem a http://localhost:8087 cmen hosztolod az RP alkalmazsodat, akkor a realm s reply_to query string paramterek is eltrek lesznek.
string idpsJsonEndpoint = "https://azurebookdemo.accesscontrol.windows.net:443/v2/metadata/IdentityProviders.js?protocol=wsfedera tion&realm=http%3a%2f%2flocalhost%3a8087%2f&reply_to=http%3a%2f%2flocalhost%3a8087%2f&context=&request_ id=&version=1.0";

Az URL ltal szolgltatott JSON-re mg szksged lesz, ezrt ismerkedj meg a tartalmval a 12 -11 brt szemgyre vve!

238

12. PaaS ptkocka-szolgltatsok

12-11 bra: Az Identity providerek listja

Minden IDP-rl kapsz a bejelentkez kperny testreszabshoz szksges tulajdonsgokat. Ezek a Name, a LoginUrl s az ImageUrl. Ezt az informcit az egyszersg kedvrt most jelentsd meg egy HTML <div> elemben, melynek az id attribtuma legyen divFedLogin! Hogy minl egyszerbb legyen a plda, s csak az alkalmazs integrci krdsre koncentrljunk, most ne foglalkozz a kliensoldali szkriptek kln fjlokba szervezsvel, egyszeren tegyl be egy <script> elemet a Views/Account/LogOn.cshtml fjlba, ami fetlti a <div> elemet a szksges HTML-lel!
<script type="text/javascript"> var actionURL = '@Url.Action("IdentityProviders", "Account")'; $.ajax({ url: actionURL, success: function (data) { idpsHtml = 'Log on with: <br /><br />'; for (i = 0; i < data.length; i++) { if (data[i].ImageUrl == '') { idpsHtml += '<a href="javascript:void(0)" name="Login" onclick="parent.location=\'' + data[i].LoginUrl + '\'">' + data[i].Name + '</a><br />'; } else { idpsHtml += '<a href="javascript:void(0)" name="Login" onclick="parent.location=\'' + data[i].LoginUrl + '\'"><img style="width: 135px; border: 0px;" src="' + data[i].ImageUrl + '" alt="' + data[i].Name + '" /></a><br />'; } //end else } //end for $("#divFedLogin").append(idpsHtml); }}); </script>

Az Account/IdentityProviders ltal visszaadott data vltozban a data[i].ImageUrl mindig res string lesz, ezrt csak az IDP-k neveit fogod ltni. Hogy eszttikusabb tedd a bejelentkezsi kpernyt, szksged lesz ezekre az IDP-ket szimbolizl ImageUrl-ekre. Az ACS Management Portlon van lehetsged a megadsukra. Ltogass el ide, nyisd meg az Identity providers ment, s vlaszd ki pldul a Microsoft Accountot! A betltd szerkesztoldal Login Page Settings szekcijban van egy Image URL (optional) nev mez. Itt tudod meghatrozni azt az URL-t, ami a fenti JSON adatstruktrban a Microsoft Accounthoz tartoz ImageUrl tulajdonsg rtke lesz. Itt brmilyen URL bellthat, azonban les krnyezetben javasolt a sajt alkalmazsunkban hosztolni ezeket a kpeket. A plda elksztse sorn n ltrehoztam a solution Content knyvtrban egy Images alknyvtrat, amiben a kpeket trolom. gy nlam a Microsoft Accounthoz tartoz Image URL http://localhost:8087/Content/Images/logomsaccount.png. llts be te is minden Identity Providerhez valamilyen kpet, s mentsd el a vltoztatsokat! Ha gyorsabban szeretnl haladni, nyugodtan vlassz az Interneten publikusan elrhet kpeket a plda kiprblsnak idejre! Ha ezutn frissted a bngszben a bejelentkez kpernyt, ak kor

239

12. PaaS ptkocka-szolgltatsok mr lthatod a frissen felvett kpeket. Ha minden sikeresen ment, a bejelentkez kpernynek a 12 -12 brhoz hasonlan kell kinznie. Prbld ki a bejelentkezst valamelyik federlt IDP -vel! Ebben a pldban az alkalmazs integrci eredmnyeknt elll login oldal, ha lehet, taln mg csnybb is, mint az ACS beptett IDP vlaszt oldala, de lthat, hogy a JSON feed ltal szolgltatott adatok alapjn egy j frontend fejleszt igazn ltvnyos login kpernyket is kszthet.

12-12 bra: Az elkszlt bejelentkez kperny

Federlt felhasznlk kijelentkeztetse


Ennl a pontnl a federlt bejelentkezs feladatt megfelelen tudja teljesteni az RP alkalmazsunk. Ha azonban megprblunk kijelentkezni a jobb fels sarokban lv Log Off linkkel, egy tirnytst kveten ismt bejelentkezve talljuk magunkat. Ha a Log Off linkre kattintunk, akkor ugyan az RP alkalmazsbl kijelentkeznk, s visszatrnk a http://localhost:8087 cmre, de itt rgtn tudunk autentiklni is az RP alkalmazsunk fel! Ennek az az oka, hogy a WIF sikeres autentikcit kveten eltrol egy FedAuth nev session cookie-t a bngszben. A cookie jelenlte az IDP fel lezajlott sikeres autentikci tnyt reprezentlja, ezrt ennek birtokban nem kell a HTTP protokoll llapotmentessge miatt a mr egyszer autentiklt kliens minden egyes jabb krsnek bejrni az RPACSIDPACSRP tirnytsi utat. A kliens a cookie-t felmutatva kzvetlenl azonostani tudja magt az RP fel. A federlt felhasznlk kijelentkeztetsrl s a session cookie trlsrl teht az RP alkalmazs fejlesztjnek kell gondoskodni. Az erre alkalmas pont az AccountController osztly LogOff metdusa. Helyezzk el a kvetkez kdot az emltett metdusban!
public ActionResult LogOff() { var wsfam = FederatedAuthentication.WSFederationAuthenticationModule; wsfam.SignOut(true); FormsAuthentication.SignOut(); // Write your code to Redirect to home page after Log Out return RedirectToAction("Index", "Home"); }

Ha a projekt jrafordtsa utn megprblunk kijelentkezni a federlt felhasznlnkkal, akkor a kijelentkezs sikeres, az Account/LogOn oldalra kerlnk. A hozzadott kd hatsra a felhasznl kilpett az RP alkalmazsbl, s trldtt a bngszjbl a FedAuth cookie. Ha ezt kveten jra be szeretne jelentkezni azzal az IDP-vel, aminl mr autentiklva van, akkor nem kell jra megadnia az adatait, a bejelentkezs sikeres lesz. Ez azrt lehetsges, mert az RP alkalmazsbl val kijelentkezs hatsra nem sznt meg a kliens s az IDP kzt felptett session.

240

12. PaaS ptkocka-szolgltatsok Bizonyos keretek kzt van r lehetsg, hogy ha egy federlt felhasznl kijelentkezik az RP alkalmazsunkbl, akkor egyttal az IDP-vel felptett sessionje is trldjn az RP kezdemnyezsre. Ezzel elrjk, hogy egy adott RP-ben kezdemnyezett kijelentkezs mvelet hatsra a felhasznl az sszes olyan alkalmazsbl kijelentkezzen, amihez az adott IDP-n keresztl autentiklt. Ennek a kijelentkeztetsi mechanizmusnak a neve Single Sign-Out (SSOut). Az SSOut prja a bejelentkezskor a Single Sign-On (SSO), ami mindenki szmra ismert, aki hasznlta mr a Microsoft Account szolgltatsait. Ha bejelentkeznk az outlook.com oldalon az MS Account-unkkal, akkor ezzel azonostjuk magunkat az MS Account fel, s a tovbbi szolgltatsok (pl. SkyDrive) ignybevtelhez nem kell jra megadnunk a felhasznli adatainkat. Az SSO s SSOut megvalstshoz ezeket a funkcikat az IDP-nek is tmogatnia kell. Sajnos jelenleg az OpenID-t hasznl IDP-k, mint a Google s a Yahoo! nem tmogatjk az SSO s SSOut mechanizmusokat. A Single Sign-Out mveletet kezdemnyez URL a fenti, IDP tulajdonsgokat hordoz JSON -ben a LogoutUrl tulajdonsgokon keresztl rhet el. A 12-11 brn lthat, hogy a Google mellett a Facebook sem tmogatja a SSOut-ot alaprtelmezetten. Az SSO s SSOut sorn lezajl pontos zenetvltsok, valamint az RP oldalon trtn konfigurci s kd hozzadsnak ismertetse terjedelmi korltok miatt nem fr bele ebbe a fejezetbe. Az SSO azonban az identitskezels egyik legnpszerbb krdskre, gy bsges irodalma van az Interneten a konkrt ACS-es megvalstsoknak is. Ha a pldakdokat felsorakoztat recepteken tl kzelebbrl is meg szeretnl ismerkedni ezzel a tmakrrel, hasznos olvasmny lehet Vittorio Bertocci mr emltett, Programming Windows Identity Foundation cm knyve.

Authorizci az RP alkalmazsban felhasznli claimek segtsgvel


A federlt hitelests hasznlatval az RP alkalmazs kihelyezi az autentikci feladatt az IDP-khez, a felhasznlk authorizcijval, azaz a jogosultsgok kezelsvel azonban tovbbra is foglalkoznia kell. Az ACS-tl rkez tokenekben hordozott felhasznli informcik alapjn tudjuk az authorizcis logiknkat testre szabni az RP alkalmazsban. A tokenben hordozott informcik kinyersre a WIF osztlyknyvtra biztost lehetsget. A .NET-bl ismert IPrincipal s IIdentity interfszek leszrmazottai a WIF nvtereiben az IClaimsPrincipal s az IClaimsIdentity. Az authorizcihoz szksges claimek kinyerhetk ezeken az interfszeken keresztl. A mostani pldban nem szeretnnk mlyebb rszleteiben megismerni a WIF mkdst, ezrt az SDK helyett egy kls segdosztlyt fogunk ignybe venni. A felhasznlt segdosztly sok ms hasznos pldakddal egytt a Claims-based Identity tmakr szmra ltrehozott Codeplex oldalon rhet el: http://claimsid.codeplex.com/. Tltsd le errl az oldalrl a Downloads szekcibl a 2011. jnius 3 -n megjelent Release Candidate vltozatot! A letlttt ZIP fjlt csomagold ki, s keresd meg a Shared Code\Samples.Web.ClaimsUtilities knyvtron bell a ClaimHelper.cs fjlt! Ezt a fjlt add hozz az MVC projekthez! A ClaimHelper osztly a Samples.Web.ClaimsUtilities nvtrben van erre a nvtrre kell majd hivatkoznod azon a helyen, ahol a claimek feldolgozst el szeretnd vgezni. Az ACS jelenlegi konfigurcija szerint az ACS a http://localhost:8087/ cmre kldi a tokeneket. Teht a projektsablon kivlasztsakor a Global.asax-ban ltrejv MVC routing belltsok mellett az alkalmazs ennek az URL-nek a hatsra a HomeController osztly Index metdust fogja meghvni. A kvetkez pldban ebben a metdusban fogsz egy nagyon egyszer authorizcis logikt megvalstani. les fejlesztseknl clszer egy olyan Return URL -t megadni az ACS-nek, aminek a kdjban csak az authorizcis logikra fkuszlunk. gy nem keveredik az oldalak View -jt sszellt controllerek kdja az authorizcis logikval. A pldban helyezd el az albbi kdot a HomeController Index metdusban:
string identityProvider = ClaimHelper.GetCurrentUserClaimValue(@"http://schemas.microsoft.com/accesscontrolservice/2010/07/claims /identityprovider"); string originalIssuer = ClaimHelper.GetCurrentUserClaim(ClaimTypes.Name) == null ? "" : ClaimHelper.GetCurrentUserClaim(ClaimTypes.Name).OriginalIssuer; var nameIdentifier = ClaimHelper.GetCurrentUserClaim(ClaimTypes.NameIdentifier).Value;

241

12. PaaS ptkocka-szolgltatsok

string userName = ClaimHelper.GetCurrentUserClaim(ClaimTypes.Name) == null ? "" : ClaimHelper.GetCurrentUserClaim(ClaimTypes.Name).Value; string email = ClaimHelper.GetCurrentUserClaim(ClaimTypes.Email) == null ? "" : ClaimHelper.GetCurrentUserClaim(ClaimTypes.Email).Value; //TODO: a claim-ek ismeretben itt valsthat meg az authorizcis logika ViewBag.Message = "Welcome to ASP.NET MVC!"; ViewBag.IdentityProvider = identityProvider; ViewBag.OriginalIssuer = originalIssuer; ViewBag.NameIdentifier = nameIdentifier; ViewBag.UserName = userName; ViewBag.Email = email; return View();

A metdushoz tartoz View-ban (Views/Home/Index.cshtml) rd bele a HTML kimenetbe a dinamikus ViewBag vltozbl a felhasznli informcikat!
Identity provider: @ViewBag.IdentityProvider<br /> Original Issuer: @ViewBag.OriginalIssuer<br /> Name Identifier: @ViewBag.NameIdentifier <br /> User Name: @ViewBag.UserName<br /> E-mail: @ViewBag.Email<br />

A fenti kd hatsra, ha bejelentkezel valamelyik IDP-nl, az RP alkalmazshoz visszatrve megtekintheted az ACS ltal kibocstott tokenben kapott informcikat, ahogy az a 12-13 brn lthat.

12-13 bra: az ACS-tl rkez tokenben hordozott felhasznli adatok

WIF Runtime teleptse Azure-ban fut virtulis gpekre


Ha az ACS-t hasznl webalkalmazsodat a felhbe szeretnd telepteni, akkor gondoskodnod kell rla, hogy az Azure-os virtulis gpeken a WIF futtatkrnyezet teleptve legyen. Ha ezt elmulasztod, azzal a zavarba ejt hibval tallod magad szembe, hogy br kimsoltad a felhbe a WIF nvtereit egysgbe zr Microsoft.IdentityModel.dll-t, mgis egy srga hall kperny azt jelzi, hogy az emltett binris fjl nem tallhat meg. Ez azrt van, mert nem elg a projektben hivatkozott Microsoft.IdentityModel.dll Copy Local tulajdonsgt true rtkre lltani, a DLL jelenltn tl kln kezdemnyezned kell a WIF teleptst is. Ennek elrshez add hozz a Web Role-knt teleptend webalkalmazs projektjhez a WIF Runtime installert. Ha nem lenne meg a gpeden a szksges fjl, a http://www.microsoft.com/enus/download/details.aspx?id=17331 linkrl tltheted le. Azure-ba teleptshez a 6.1-es verzit vlaszd, ugyanis a Windows Server 2008 R2 pldnyokra a 6.0-s nem installlhat. Miutn a projekthez hozzadtad az MSU fjlt, ne felejtsd el a Properties ablakban a Copy to Output Directory tulajdonsgot Copy Always rtkre lltani! Ezzel gondoskodsz arrl, hogy az MSU fjl mindig jelen legyen a Web Role-on. Ahhoz, hogy a telept el is induljon a Role indulsakor, ksztened kell mg egy parancsfjlt, ami automatikusan futtatni fogja a teleptt. Adj hozz a Web Role projekthez egy InstallWif.cmd nev fjlt (a Copy to Output Directory tulajdonsgot itt se felejtsd Copy Always-re lltani)! A fjl tartalma az albbi legyen:

242

12. PaaS ptkocka-szolgltatsok

@echo off sc config wuauserv start= demand wusa.exe "%~dp0Windows6.1-KB974405-x64.msu" /quiet /norestart sc config wuauserv start= disabled exit /b 0

Utols lpsknt el kell rned, hogy a Web Role minden indulsakor lefusson az InstallWif.cmd fjl. Ehhez nyisd meg az Azure-os projekt ServiceDefinition.csdef fjljt, s kzvetlenl a <WebRole> nyit tag utn, a <Sites> tag el helyezd el az albbi XML elemet:
<Startup> <Task commandLine="InstallWif.cmd" executionContext="elevated" taskType="simple" /> </Startup>

A gyakorlat sszefoglalsa
Az eddigi lpsek vgrehajtsval ltrehoztunk egy ASP.NET MVC 3 webalkalmazst, amely az autentikci feladatt kiszervezi sajt felelssgkrbl. Az ACS-en mint Federation Provideren keresztl megbzhat IDP szolgltatnak fogadja el a Microsoft Accountot, a Google-t s a Facebookot. A megbzhat IDP-k listja knnyen bvthet vllalati ADFS-ek, st brmilyen WS-Federation protokollt hasznl tokenkibocst szolgltats (STS) felvtelvel. Az alkalmazsunk nem kerl szoros csatolsba az IDP -kkel, ha valami vltozik az IDP-k oldaln, akkor nem neknk mint alkalmazsfejlesztnek kell ezt a vltozst lekvetni, az ACS elrejti ellnk az IDP-kkel folytatott kommunikci specialitsait. Megnztk, hogyan tudjuk a bejelentkezs sorn az IDP kivlasztst vgz fellett integrlni az alkalmazsunkkal, illetve hogy hogyan tudjuk majd a federlt hitelestssel bejelentkez felhasznlkat kijelentkeztetni az alkalmazsunkbl. Rviden rintettk a Single Sign -On s Single Sign-Out tmakrket, s lttunk egy pldt arra is, hogyan tudjuk elvgezni az IDP-ktl kapott tokenekben hordozott informcik alapjn a felhasznlk authorizcijt. Vgezetl nyomatkostst rdemel, hogy a federlt hitelests (s ezzel az ACS) legnagyobb elnye a letisztult alkalmazs-infrastruktra kialaktsa mellett az, hogy az ACS-sel, az ADFS-sel s a WIF-fel egyttmkdve egy jl hasznlhat, produktv eszkzkszletet kapunk a felhasznli autentikci megoldsra. Ha visszagondolunk a fejezet pldira, lthatjuk, hogy csak varzslk futtatsval s konfigurci mdostsval szinte minden problmt meg lehet oldani, ami egyszer federlt hitelestst hasznl architektra ltrehozshoz szksges. Ha kdot kell rnunk, akkor is a WIF nvtereinek ksznheten mindig csak magas absztrakcis szinten kell programoznunk, s kevs kd megrsval hozzfrhettnk a szksges mveletekhez, adatokhoz. A produktivits kulcsa pedig elssorban az, hogy a fejleszt a konkrtan elvgzend feladatra tudjon sszpontostani. Ebben a programozsi modellben ez maradktalanul teljesl is a fejleszti eszkzkszletnek hla vgig a konkrt alkalmazslogika kialaktsra fkuszlhatunk anlkl, hogy a WS-Federation protokollal, a tokenek formtumval vagy kriptogrfiai eljrsokkal kellene foglalkoznunk.

Azure Caching
Az Azure Cachinggel olyan szolgltatst kapunk kzhez, amivel lehetsgnk nylik a felhben fut alkalmazsaink adatainak memriabeli gyorsttrazsra. A szmtsi felh tmasztotta architekturlis kvetelmnyek a cache-els terletn is j megoldsok bevezetst ignylik a hagyomnyos, telephelyen hosztolt alkalmazsokhoz kpest. Az elosztott infrastruktra s az emiatt fellp konkurencia problmk, a gyorsttrazott adatok hatkony, kis ksleltetssel s magas rendelkezsre llssal trtn elrse mind olyan kvetelmnyek, ami a felhbeli cache-elst sszetett feladatt teszik. Az App Services szolgltatsok felfogshoz hven az Azure Caching is egy olyan eszkzkszletet bocst rendelkezsre, ami ezt a komplexitst drasztikusan leegyszersti a fejleszt szmra. Az Azure Caching szolgltatsok kiemelkeden magas szintet rtek el a cache-elsi feladatok absztrahlsban. Ltni fogjuk, hogy a megfelel gyorsttrazsi mechanizmus kivlasztst s konfigurlst kveten a Caching API

243

12. PaaS ptkocka-szolgltatsok letisztultsga miatt gyakorlatilag gy tekinthetnk az Azure cache-re, mint egy brmely szerepkrbl elrhet globlis trhelyre, amiben tetszleges sorosthat CLR objektumokat helyezhetnk el. A programozi interfsz egyszer szinten tartsa mellett ugyanakkor az Azure cache konfigurcibl rszletesen testreszabhat, a mkdse pontosan az alkalmazsunk ignyeihez igazthat, h ogy a cacheels eredeti cljt szem eltt tartva a lehet legnagyobb teljestmnynvekedst rjk el.

Mikor, milyen adatokat s milyen stratgik szerint cache-eljnk?


Mieltt belekezdennk az Azure-specifikus rszletek trgyalsba, tekintsk t rviden, hogy milyen elvek mentn alaktjuk ki ltalban a cache-elst az zleti alkalmazsok fejlesztse sorn! Ha van mr tbbrteg alkalmazsok fejlesztsben gyakorlati tapasztalatod, akkor ezt a bekezdst nyugodtan ugord t, szmodra nem fog j informcit tartogatni. A cache-els elsdleges clja, hogy az alkalmazs teljestmnynek javtsa, a felhasznli lmny nvelse s az adatbzist r terhels cskkentse rdekben a gyakran elrt adatokat a memriban tartsuk. Egy tipikus N-rteg alkalmazs esetben a felhasznlszm nvekedsvel egyre tbb felhasznl fogja a krseivel egyidejleg bombzni a szervereinket. Amikor az ilyen nvekv konkurens terhelsre kell felkszlnnk, akkor tbb stratgia kzl is vlaszthatunk. Az Azure-ban futtatott alkalmazsok esetben a legegyszerbb megolds az alkalmazs frontendjt jelent webes szerepkrk sklzsa. Teljesen rugalmasan tudunk ersebb virtulis gpeket belltani, illetve nvelni a szerepkrben fut pldnyok szmt. Ha a felhasznlszm s ezzel az alkalmazst r konkurens krsek szma tovbb nvekedne, akkor ugyanezt a horizontlis s vertiklis sklzst megtehetjk az alsbb rtegekben is, nvelhetjk az zleti logikt megvalst rtegnkben a virtulis gpek szmt, illetve teljestmnyt. Ha ilyen stratgia szerint jrunk el, akkor idvel az adatelrsi rteg lesz az alkalmazs szk keresztmetszete. A nagy felhasznlszm miatt egyre tbb adatot kell trolnunk, s sklznunk kell az SQL Azure adatbzisainkat is. Az j szmtsi s adatbzis erforrsok bevonsa mellett egy msik, a legtbb esetben hatkonyabb megolds a cache hasznlata. A cache az adatelrsi rteg fltt helyezkedik el. Az Azure Caching programozsa sorn is kvetend cache-aside programozsi modellt hasznlva, ha egy felhasznli krs kiszolglshoz adatot kell biztostanunk, akkor elszr megnzzk, hogy elrhet -e a krt adat a cachebl. Ha igen, akkor ezzel az adattal szolgljuk ki a krst. Ha nem, akkor az adatbzishoz fordulunk, s a felhasznlnak visszajuttatott adatot egyttal eltroljuk a cache-ben. Ezzel a megoldssal ha van tallat a cache-ben cskkentjk a vlaszidt, mert a memriabeli cache elrse lnyegesen gyorsabb, mint egy adatbzis-mvelet. Ezzel prhuzamosan cskkentjk az adatbzist r terhelst. Fontos teend mg meghatrozni azoknak az adatoknak a krt, amiket rdemes cache -elni. Ezek az adatok hrom f csoportba sorolhatk: Az els csoport a ritkn mdosul, sok felhasznl ltal, gyakran olvasott adatok halmaza. Ezeket a szakirodalom reference datnak nevezi. Ilyen adat jellemzen egy cg alkalmazottainak listja, egy knyvtrban a klcsnzhet knyvek listja. A msodik kategriba es adatok kzs jellemzje, hogy ezek ltalban egy felhasznli munkamenethez kapcsoldnak, rvid vagy kzepes tvon trolt adatok, sok egy felhasznltl rkez rsi mvelettel. Ezeket az adatokat activity datnak nevezzk, pldaknt legtbbszr a webes ruhzak bevsrlkosart szoktk emlteni. A harmadik csoport a resource datnak nevezett adatok halmaza. Ezek is gyakran vltoz adatok, sok rsi mvelettel, amelyek egyidejleg sok klnbz felhasznltl rkeznek. A konkurencia problmk hatkony feloldshoz szksges gyors adatelrs rdekben ezeket az adatokat klnsen hasznos cache-ben trolni. Pldk: tzsderfolyamok, online jtkok ranglisti, kszletnyilvntart rendszerek adatai. Az elmleti ttekints utn most trjnk t a gyakorlatra! A kvetkezkben megismerkedhetsz az Azure kt f cache-elsi megoldsval, a mr 2011 ta elrhet Shared Cachinggel, illetve a 2012 oktberben kiadott 1.8-as SDK-ban sznre lp j, role-based Cachinggel.

Shared Caching
A Shared Caching felhszolgltats formjban teszi elrhetv a gyorsttrazst az alkalmazsaink szmra. A megosztott trat egy szolgltats URL -en keresztl rhetjk el, mely minden megvalstssal 244

12. PaaS ptkocka-szolgltatsok kapcsolatos rszletet elfed a programoz eltt. Nem kell foglalkoznunk azzal, hogy milyen szerverek szolgljk ki, azoknak egyenknt mennyi rendszermemrijuk van stb. Ahhoz azonban, hogy hatkonyan meg tudjuk tervezni, hogy ksbb milyen teljestmnyt is vrunk a felhben elhelyezett gyorsttrtl, ismernnk kell nhny fontos dolgot. A szolgltats nevben a shared sz arra a megosztottsgra utal, hogy a cache-t egy tbbrsztvevs (multi-tenant) architektrban hosztolja az Azure. Az ltalunk hasznlt konkrt cache szerver msok shared cache-eit is hosztolja termszetesen gondoskodva a teljes izolcirl. Emiatt klnbz kvtk vonatkoznak a megosztott cache-ekre. A cache mrettl fggen limitlva van az idegysgenknt kezdemnyezhet cache mveletek, a svszlessg s a prhuzamosan kezelhet kapcsolatok szma. Br ezek els olvasatra szigor korltoknak tnnek, valjban hatkony cache-elsi stratgit alkalmazva az egszen nagy alkalmazsok kiszolglsra is elegendek. Az egyes cache mretekhez tartoz kvtk pontos rszletei az albbi linken tekinthetk meg: http://msdn.microsoft.com/en-us/library/hh697522.aspx#C_BKMK_FAQ8. Azure felhszolgltats lvn a shared cache ltrehozst a Management Portlon tudod kezdemnyezni. A Silverlight portlon a bal als menben vlaszd a Service Bus, Access Control & Caching menpontot, majd naviglj a Caching szekcihoz! Itt tudsz j nvteret felvenni vagy egy meglvhz hozzadni Caching szolgltst. Az ACS lersnl bemutatott mdon tudsz j nvteret ltrehozni a New paranccsal. A c ache elrse a ltrejv <namespace>.cache.windows.net formtum URL-en keresztl trtnik. A minl gyorsabb elrs rdekben rginak azt a nagy adatkzpontot vlaszd, amelyikben a cache -t ignybe vev alkalmazsod fut! A cache mrett ksbb ugyanitt, a Management Portlon, a fenti vzszintes menben a Change Cache Size paranccsal tudod mdostani, ahogyan azt a 12-14 bra is mutatja.

12-14 bra: Shared cache ltrehozsa az Azure Management Portlon

A ltrehozst kveten a Visual Studiban konfigurlnod kell a projektet, hogy az hozzfrjen a cache-hez. Ehhez az alkalmazs konfigurcis fjlt kell mdostani. Az XML megrshoz segtsget nyjt a Management Portal. Vlaszd a fenti menbl a View Client Configuration parancsot, s a kapott XML rszletet illeszd be a web.config vagy app.config fjlba! A beillesztett XML kt <dataCacheClient> elemet tartalmaz. Az egyik titkostatlan, a msik SSL-t hasznl titkostott csatornn teszi lehetv kdbl a cache elrst. A cache szolgltats URL-je a <host> elemen bell tallhat. Ennek az ismerete nmagban nem elegend, hiszen gy brki hozzfrhetne a cache-hez az URL birtokban. A <messageSecurity> elemen bell ezrt szerepel mg egy, a Management Portal ltal generlt kulcs, s ennek az ismerete szksges a cache elrshez. Az elbbi konfigurcis lpsek telephelyen fut alkalmazsokra is elvgezhetk, hiszen a cache szolgltats URL-je nemcsak felhbl rhet el. Azonban a cache-els eredeti clkitzse az adatelrs gyorstsa, s pont ezt az elnyt vesztjk el, ha helyben fut alkalmazsbl rnk el egy felhbeli cache-t. Ezrt a cache-t hacsak nincs klnsen indokolt oka csak felhben fut szerepkrkbl vegyk ignybe! Ezzel elkszltnk a cache ltrehozsval s konfigurlsval. A cache programozott elrse ugyanazon Caching API-n keresztl trtnik, mint a kvetkez fejezetrszben ismertetett Role-Based Caching esetben. Az egysges trgyals rdekben a Caching API-rl ksbb egy kln ennek a tmnak dediklt bekezdsben olvashatsz.

245

12. PaaS ptkocka-szolgltatsok

(Role-Based) Caching
A 2012 oktberben megjelent 1.8-as Azure SDK jelents jdonsgokat hozott a cache-els tern. Az Azure-ban a mr korbban is elrhet (a nvvltozsok sorn Cachingrl tkeresztelt) Shared Caching mellett bevezettek egy merben j megkzelts cache szolgltatst. Az 1.8-as SDK ta ez viseli az Azure Caching nevet. Alapvet klnbsge (12-15 bra) a Shared Cachinghez kpest, hogy a fejlesztnek teljes kontrollt ad a cache-els fltt. Mg az elzleg trgyalt megosztott cache-ek egy transzparens szolgltatsknt elrhetek, s a fejlesztnek nincs beleszlsa a cache -t kiszolgl szerverek mkdsbe, addig az j Caching mechanizmus thelyezi a cache-els feladatt az ltalunk teleptett Cloud Service-ekbe. Innen ered a role-based (szerepkr-alap) elnevezs: a Cloud Service-ekben kpesek vagyunk ltrehozni egy elosztott, tbb virtulis gpen hosztolt cache frtt.

12-15 bra: A Shared Caching (bal oldal) s a role-based Caching (jobb oldal) topolgija

A felhasznlt virtulis gpek hagyomnyos webes, illetve munkavgz szerepkrk pldnyai, semmilyen mdon nem kitntetettek a megszokott szerepkreinkhez kpest. A cache elosztottan, ezeknek a kivlasztott virtulis gpeknek a memrijban terl el. Egy route tbla tartja nyilvn, hog y melyik CLR objektumunk melyik gp memrijban keresend cache hozzfrskor, de ezzel a fejlesztnek nem kell foglalkoznia. Szmra a cache frt hasonlan a Shared Caching gyorsttraihoz egy egysges trterletknt kezelhet. A klnbsg annyi, hogy itt nem osztozunk ms felhasznlkkal a cache szervereken, azok csak a sajt Cloud Service-nk szmra rhetek el. Ezt a tnyt fontos szem eltt tartani az alkalmazsaink architektrjnak kialaktsakor! Ha valamirt olyan helyzet llna el, hogy a cache frtt hosztol Cloud Service-en kvlrl kell elrnnk a cache-t, akkor vlasszuk a Shared Caching szolgltatst! Tervezs sorn ezeket az eseteket amennyire csak lehet prbljuk meg elkerlni a cache-els hatkonysgnak megrzse rdekben!
A cache frtkben akrmennyi virtulis gp futhat, nincs als s fels hatr erre nzve. A Cloud Service -en belli cache-els tervezsekor egy fontos korltozst azonban szem eltt kell tartani: Cloud Service -enknt egynl tbb cache cluster ltrehozsa nem tmogatott!

Eddig csak annyit tudunk a cache frt felptsrl, hogy hagyomnyos Azure szerepkrkbl ll. Vizsgljuk meg most rszletesebben, hogy milyen klnbz topolgikba lehet szervezni a szerepkreinket a frt ltrehozsa sorn, s mik ezeknek az elnyei!

Koloklt (co-located) cache frt


Ha a koloklt topolgit vlasztjuk, akkor a cache frtt egy mr meglv Azure szerepkrnk pldnyain futtatjuk. Ha pldul van egy a felhben fut webalkalmazsunk, akkor az alkalmazs pldnyait futtat virtulis gpek mindegyikn elklnthetjk a rendszermemria egy rszt, amit a cache-els szmra tartunk fent, s gy ltrehozhatunk egy, a szerepkr pldnyain elterl cache frtt.

246

12. PaaS ptkocka-szolgltatsok Ennek a megoldsnak hatalmas elnye, hogy a gyorsttrazsrt semmilyen extra djat sem kell fizetnnk! A cache-elsre fenntartott memria mennyisgnek meghatrozsakor azonban figyelembe kell vennnk, hogy a cache s a szerepkr pldny egy adott virtulis gp fix mret memrijn osztozik. Ha a virtulis gp nagy terhelsnek van kitve, s a rendelkezsre ll memrit mg a cache mretvel is cskkentjk, akkor elfordulhat, hogy clunkkal pp ellenttes hatst vltunk ki, s romlani fog az alkalmazsunk vlaszkpessge a virtulis gpekben fellp memriahiny miatt! Ennek elkerlse rdekben kerljk a koloklt cache ltrehozst olyan szerepkr pldnyain, ami nagy konkurens terhelsnek van kitve (vrhatan tbb, mint 400 cache tranzakci msodpercenknt)! Ezenkvl ne ezt a topolgit vlasszuk, ha a cache mrete pldnyonknt nagyobb 1,5 GB-nl! Ezek az adatok termszetesen nem egzakt hatrokat fogalmaznak meg, csak egy krlbelli tmutatst nyjtanak. Ha a szerepkreinken vgezzk a cache -elst, akkor a teljestmny folytonos monitorozsa minden esetben a mi feladatunk lesz. Szerencsre a diagnosztikhoz a naplzst nem neknk kell megvalstani. Ha engedlyezzk a Caching szolgltatst, akkor a Visual Studiban a szerepkr tulajdonsglapjn a Settings fln ltrejn egy Microsoft.WindowsAzure.Plugins.Caching.DiagnosticLevel nev bellts. Ezzel kijellhetjk, milyen rszletessggel szeretnnk naplzni a cache frtn keletkez diagnosztikai informcikat.

Dediklt (dedicated) cache cluster


Ha a koloklt cache topolgia nem felel meg az alkalmazsunk kvetelmnyeinek, akkor lehetsgnk van egy kln szerepkrt ltrehozni, amelyben az ott fut virtulis gpek teljes memriakapacitsukkal a cache-els feladatt vgzik. Ezzel a topolgival az igazn sok prhuzamos kapcsolatot s cache tranzakcit ignyl eseteket is le lehet fedni. Gyakorlatilag tetszleges szm, a feladatra dediklt virtulis gpet vehetnk hasznlatba. Ez termszetesen tovbbi kltsgeket jelent a koloklt topolgihoz kpest, de ebben az esetben is csak a felhasznlt virtulis gpek szmtsi kapacitsnak kltsgt kell fedeznnk, magrt a cache-elsrt nem kell kln fizetnnk. A Cloud Service-en belli dediklt s a koloklt cache topolgikat a 12-16 bra szemllteti.

12-16 bra: Koloklt (bal) s dediklt (jobb) cache topolgik

Dediklt cache clustert kizrlag munkavgz szerepkr pldnyai fl pthetnk. A mvelet meggyorstshoz az 1.8-as SDK bevezet egy j Cache Worker Role szerepkr sablont. Ez a sablon egy hagyomnyos munkavgz szerepkrt hoz ltre, semmilyen specialitsa nincs. Az egyetlen dolog, amit elvgez, az az, hogy automatikusan engedlyezi a cache-elst, s minden felesleges kdot eltvolt a szerepkr belpsi pontjt jelent RoleEntryPoint leszrmazott osztlybl.

Cache cluster konfigurcija


A Shared Cachinggel ellenttben a szerepkrkn megvalstott cache -elst nem a Management Portlon keresztl engedlyezhetjk, hiszen most nem egy globlis Azure platform szolgltatst vesznk ignybe, hanem a felhbe teleptend konkrt szerepkreink belltsain kell mdostanunk. pp ezrt a Visual Studit kell megnyitnunk a mvelet elvgzshez. Az 1.8-as SDK-val ltrehozott szerepkrk tulajdonsglapjn megjelenik egy j fl, a Caching, ahol a 12-17 brn lthat mdon engedlyezni tudjuk

247

12. PaaS ptkocka-szolgltatsok a gyorsttrazst. Kapcsoljuk be az Enable Caching jellngyzetet, s vlasszunk a koloklt s a dediklt topolgik kzl!

12-17 bra: Caching belltsai a szerepkr tulajdonsglapjn

Koloklt topolgia vlasztsa esetn lehetsgnk van megadni a virtulis gpenknt felhasznlt memriaterlet mrett. Ennek a paramternek a hangolsnl tartsuk szem eltt a pldnyokra es terhels nagysgt, s ne feledkezznk meg arrl, hogy az opercis rendszernek is van valamekkora memriaignye! A cache futsidej llapotnak nyilvntartshoz szksg van egy Storage accountra, melynek adatait szintn ezen a felleten tudjuk megadni. Itt van lehetsgnk mg a cache frt tovbbi testreszabsra. A Named Cache Settings fln tudunk nvvel elltott, fggetlen cache-eket ltrehozni a frtn bell. Ha pldul a cache-elend adatok egy kis hnyada hossz tvon megrizend, s kvetelmny azok magas rendelkezsre llsa, akkor ltre tudunk hozni azokhoz egy klnll, sajt nvvel elltott cache-t, s nem kell minden ms adatunkat is feleslegesen hossz idre, duplikltan cache-elni. Az egyes nevestett cache-ek viselkedst szmos belltsi lehetsgen keresztl tudjuk finomhangolni. A High Availabilityt vlasztva a cache-ben trolt sszes adatot automatikusan duplikltatva troljuk kt kln virtulis gpen, melyek a rendelkezsre lls nvelse rdekben kln upgrade, ill. fault domainbe kerlnek. Ha ezt az opcit vlasztjuk, akkor klszablyknt javasolt legalbb 4 virtulis gp pldny on futtatni a cache-t. Az Eviction Policy belltssal tudjuk megszabni, hogy hasznljon -e valamilyen memriafelszabadtsi stratgit a cache. A futtatkrnyezet a mkds sorn gy prblja optimalizlni a virtulis gpek memriahasznlatt, hogy igyekszik a cache-elt adatokat egyenlen elosztani a memrijukban. A virtulis gp teljes memrija s a cache-elsre fordtand memria alapjn meghatroz egy hatrrtket, amit ha tlp a cache mrete, akkor a felszabadtsi stratgia szerint elkezdi trlni a gyorsttrazott objektumainkat. Az LRU (least recently used) stratgia a hatrrtk tlpsekor a legritkbban hasznlt elemeket trli elszr a cache-bl. Br a funkci kikapcsolhat, ehhez mgis csak a legspecilisabb esetekben folyamodjunk. Ha nem hasznlunk semmilyen memriafelszabadtst, akkor semmi nem akadlyozza meg, hogy a gp kifogyjon a szabad memribl. Ennek eredmnye a szerepkr teljestmnynek romlsa lesz, s a cache-hez nem lehet j elemeket hozzadni, mg a memriahinyt fel nem szmoljuk. Az Expiration type s TimeTo Leave (TTL) mezkkel a cache -ben trolt adatok elvlst tudjuk szablyozni. Ha a cache-ben trolt adat elvl, trlsre kerl. Az elvlst teljesen kikapcsolhatjuk, megadhatunk egy egzakt idtartamot, amg a cache-elt adatok rvnyesek, illetve hasznlhatjuk a Sliding Windows opcit, amikor az adat elvlsnek hatridejt minden hozzfrskor meghosszabbtjuk egy adott idtartammal. gy elrhetjk, hogy egy adat mindaddig, amg azt gyakran hasznljk, ne kerljn ki a cache-bl.

248

12. PaaS ptkocka-szolgltatsok

Cache kliens alkalmazsok konfigurcija


Most, hogy ttekintettk, milyen lehetsgeink vannak a cache frt, mint kiszolgl konfigurlsra, nzzk meg, hogyan tudjuk a cache-t r s olvas kliens szerepet betlt alkalmazsok konfigurcijt elvgezni! A Cache elrshez a projektnek hivatkoznia kell a Microsoft.ApplicationServer.Caching-en belli nvtereket sszegyjt szerelvnyekre. Ez ngy binris llomnyt ignyel. Az llomnyokra kzzel is felvehetjk a hivatkozsokat, de egyszerbb dolgunk van, ha a NuGet Package Managerrel teleptjk a megfelel csomagot. A NuGet indtshoz kattints jobb gombbal a szerepkrhz tartoz projekt References mappjra, s vlaszd a Manage NuGet Packages parancsot! Az online galribl teleptsd a 12-18 brn lthat mdon a Windows Azure Caching csomagot!

12-18 bra: Windows Azure Caching NuGet csomag teleptse

A csomag teleptsnek eredmnyeknt bekerlnek a projekt referencii kz a szksges szerelvnyek, s a konfigurcis llomny is mdosul. A teleptett csomag elkszti a kliens alkalmazs konfigurcijt a cache-elsre. Nzzk meg, milyen belltsok mdosulnak a konfigurciban! A cache kliens konfigurlsa a <dataCacheClients> elemen bell trtnik. Ez az elem nincs definilva, ezrt a <configSections> elemen bell neknk (azaz most a NuGet package-nek) kell ezt megtenni:
<section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />

Ha szeretnnk ignybe venni egy szerepkrn belli cache-t, fggetlenl attl, hogy koloklt vagy dediklt topolgit hasznlunk, az alkalmazs konfigurcis fjljban kell elvgeznnk a megfelel belltsokat. A Caching API homogenitsnak ksznheten hasonlan kell eljrnunk, mint a Shared Caching esetben. Az app.config, illetve web.config fjlban kell elhelyeznnk a <dataCacheClient> elemeket minden elrni kvnt nevestett cache-re egyet. Az elem name attribtuma adja meg az elrni kvnt cache nevt, a benne elhelyezett <autoDiscover> elem identifier attribtuma pedig a cache-t hosztol szerepkr nevt. Az albbi XML rszlet egy webes szerepkrn bell ltrehozott koloklt cache kliens oldali konfigurcijt mutatja be. A kliens oldalon hasznlatba vett cache neve az alaprtelmezett default, a szerepkr neve pedig amelyen bell a cache-t megprblja megtallni a futtatkrnyezet az MvcWebRole1.
<dataCacheClients> <dataCacheClient name="default"> <autoDiscover isEnabled="true" identifier="MvcWebRole1" /> <localCache isEnabled="true" sync="TimeoutBased" objectCount="1000" ttlValue="300" /> </dataCacheClient> </dataCacheClients>

A <dataCacheClient>-ben elhelyezett <localCache> elemmel tudjuk elrni, hogy a kliens alkalmazs sajt loklis msolatot ksztsen a cache-rl. Ez tovbbi teljestmnynvekedst eredmnyezhet. Ha olyan objektumhoz szeretne a kliens hozzfrni, ami a loklis cache-ben (vagyis a memrijban) mr szerepel, akkor mg azt az adatelrsi ksleltetst is el tudjuk kerlni, ami a cache-elst vgz szerepkr megszltsval jr. Ezzel a mdszerrel a loklis cache elrsi ideje tlagosan ngyszer kevesebb, mint a Shared Caching szolgltats elrse. A loklis cache mrete a ttlValue attribtum ltal meghatrozott

249

12. PaaS ptkocka-szolgltatsok elvlsi idvel s a maximlisan a loklis cache-ben trolhat objektumok szmval az objectCount attribtumon keresztl hangolhat. A loklis cache s a cache cluster kztti szinkronizci tpust a sync attribtummal tudjuk belltani (TimeoutBased ill. NotificationBased).

Caching API
Mind a Shared Caching szolgltatssal ltrehozott, mind pedig a szerepkreinken hosztolt gyorsttrak elrst a Caching API ltal sszefogott osztlyok hasznlatval tudjuk vezrelni programkdbl. A cache hozzfrst kezdemnyez kd fjlunkban fel kell vennnk egy using direktvt a Microsoft.ApplicationServer.Caching nvtrre. Maghoz a cache-hez mint transzparens adattrhoz az emltett nvtrben lv DataCache osztlyon keresztl tudunk hozzfrni. Az albbi programkd ltrehoz egy DataCache pldnyt a default nev cache elrsre, elhelyez benne myKey kulccsal egy myValue rtket, majd kiolvassa azt.
DataCache defaultCache = new DataCache("default"); defaultCache.Put("myKey", "myValue"); string strObject = (string)defaultCache.Get("myKey");

A cache-ben tetszleges szm sorosthat objektum elhelyezhet. A sorostst alaprtelmezetten a NetDataContractSerializer osztly vgzi, de a konfigurcis llomnyban megadhatunk binris sorostst is (BinaryFormatter), vagy hasznlhatunk sajt sorostst vgz osztlyt a CustomSerializeren keresztl. Az Azure-ban hasznlt Caching API termszetesen a fenti egyszer pldnl sokkal tbb funkcit knl a cache elrsre! Konkrt pldk felsorolsra a hozzjuk tartoz kd ismertetsvel terjedelmi korltok miatt ennek a fejezetnek a keretein bell nincs lehetsg, az API rszletes lerst az albbi URL -en tallod: http://msdn.microsoft.com/enus/library/windowsazure/microsoft.applicationserver.caching.aspx . Az API referencia tanulmnyozsa sorn fontos tisztban lenni azzal, hogy a hatkony felh migrci lehetsge rdekben az Azure-ban hasznlt caching s a telephelyen fut Windows Server-ekre kialaktott Microsoft AppFabric 1.1 ugyanazt az API-t hasznlja a gyorsttrazshoz. Emiatt vannak az ltalunk a felhben is hasznlt Microsoft.AppFabric.Caching nvtrnek olyan mveletei, amik a felhben nem tmogatottak. Hogy mely funkcikat tmogatja a teljes Caching API -bl az Azure, azt ezen a linken tudod ellenrizni: http://msdn.microsoft.com/en-us/library/windowsazure/gg278350.aspx.

Caching alap Session State Provider


Ebben a bekezdsben egy elosztott, a szmtsi felhben fut webalkalmazsok fejlesztse sorn gyakran felmerl esetet szeretnk ismertetni. A bemutatott plda sorn a gyakorlatban is ltni fogjuk az Azure cache-elsi szolgltatsnak hasznossgt. A cache-hez nem kzvetlen mdon a Caching API-n keresztl fogunk hozzfrni, ezt a feladatot a Microsoft webes elosztott cache -ek kezelsre ltrehozott Microsoft.Web.DistributedCache szerelvnyre bzzuk. A krljrt problma kifejezetten gyakori. Minden olyan Azure-ban hosztolt, tbb pldnyban fut webalkalmazs sorn jelentkezik, amikor a bejelentkezett felhasznlrl valamilyen session informcit szeretnnk eltrolni. Az alaprtelmezetten hasznlt DefaultSessionStateProvider az elosztott webalkalmazsok esetben nem jelent megoldst a munkamenetek kezelsre. Az ltala felptett munkamenetek egy konkrt szerver s a kliens bngszje kztt lnek. Azonban a virtulis gp pldnyaink eltt ll load balancer mindig az ppen aktulis terhels fggvnyben vl asztja ki, hogy azok kzl melyik gp szolglja ki a krsnket. Emiatt knnyen lehet, hogy a kliens bngsz bejelentkezs utn kipt egy munkamenetet az A szerverrel, s a kvetkez krst mr a B szerver szolglja ki. A B szerverhez berkez krs esetben az eltr machine key miatt az informci nem dekdolhat, s gy a munkamenet adatok nem llnak rendelkezsre szerver oldalon. Ennek eredmnyeknt a bejelentkezett felhasznl (legjobb esetben) egyszer csak azt veszi szre, hogy mr nincs is bejelentkezve.

250

12. PaaS ptkocka-szolgltatsok Ezt a problmt megoldand cserld le a DefaultSessionStateProvider-t a Microsoft.Web.DistributedCache ltal szolgltatott Azure Caching-et hasznl DistributedCacheSessionStateStoreProvider-re! A plda sorn az albbi lpseket fogod vgrehajtani: Ltrehozol egy Azure Cloud Service projektet egy webes szerepkrrel, ami hrom pldnyban fog futni. Engedlyezed rajta a szerepkrn belli koloklt topolgij cache-elst. A szerepkrhz tartoz webalkalmazsban konfigurlod a cache-t s az j munkamenet llapotot biztost komponenst (provider). Ltrehozol egy UserData osztlyt, ami a bejelentkezett felhasznl informciit tartalmazza. Bejelentkezel egy felhasznlval, s megbizonyosodsz rla, hogy a cache-ben trolt munkamenet informci tnylegesen megrzdik a klnbz pldnyokhoz becsapd krseink mellett is. Els lpsknt hozz ltre egy j Azure projektet, vegyl fel benne egy ASP.NET MVC 3 -as webes szerepkrt az Internet Application projektsablonnal, s lltsd be a szerepkr konfigurcis oldaln, hogy az hrom pldnyban fusson! Ezt kveten a cache fln engedlyezd a cache-elst, s hatrozd meg a cache mrett a virtulis gp memrijnak 20%-ban! A cache frt konfigurcijval ezzel el is kszltl. A kliens konfigurcijhoz a fent emltett mdon tltsd le a webes projekthez a Windows Azure Caching nev csomagot (ha rgebbi, 1.2-es NuGetet hasznlsz, akkor Microsoft.WindowsAzure.Caching nven tallod meg), s adj egy referencit a providert tartalmaz Microsoft.Web.DistributedCache szerelvnyre! Ez a fjl az Azure SDK 1.8-cal telepl, a pontos helye: C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-10\ref\Caching\. A NuGet csomag teleptsnek hatsra az albbi elem jn ltre a web.config fjlban:
<dataCacheClient name="default"> <autoDiscover isEnabled="true" identifier="[cache cluster role name]" /> </dataCacheClient>

Az identifier attribtumot tltsd ki a webes szerepkr nevre! Kvetkez lpsknt trld ki a meglv <sessionState> XML elemet, s illeszd be a helyre az albbit, hogy az alkalmazs a cache alap providert hasznlja:
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider"> <providers> <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" useBlobMode="false" dataCacheClientName="default" /> </providers> </sessionState>

Ezzel elvgezted a kliens alkalmazs konfigurcijnak mdostst. Hozz lte egy UserData nev sorosthat osztlyt, ami a felhasznl munkamenet informcijt tartalmazza! Ennek az osztlynak a pldnyait fogja majd az j provider a cache-ben trolni:
[Serializable] public class UserData { public string UserName; public string Email; public DateTime LastLogin; }

251

12. PaaS ptkocka-szolgltatsok A munkamenet informcit a bejelentkezskor tltsd fel a felhasznl adataival! Ezt az AccountController LogOn metdusban teheted meg a belpsi adatok sikeres ellenrzse utn az albbi kdrszlettel:
if (Membership.ValidateUser(model.UserName, model.Password)) { UserData UserData = new UserData(); UserData.UserName = model.UserName; UserData.LastLogin = DateTime.UtcNow; Session["User"] = UserData;

A munkamenet adatokat s az aktulis krst kiszolgl virtulis gp azonostjt rasd ki az alkalmazs foldalra! Naviglj a HomeController Index metdushoz, s helyezd el benne a kvetkez kdrszletet:
UserData userData = Session["User"] as UserData; ViewBag.RoleInstanceId = RoleEnvironment.CurrentRoleInstance.Id; if (null != userData) { ViewBag.LastLogin = userData.LastLogin; ViewBag.UserName = userData.UserName; } return View();

A Views/Home/Index.cshtml-ben rasd ki a ViewBag tartalmt:


Role Instance ID: @ViewBag.RoleInstanceId<br /><br /> @if (ViewBag.UserName != null && ViewBag.LastLogin != null) { <span>Name: @ViewBag.UserName </span><br /> <span>Logged in at: @ViewBag.LastLogin</span> }

Indtsd el az Azure Emulatort, lpj be egy felhasznlval, s frisstsd nhnyszor az oldalt! Ltni fogod, hogy a cache-ben trolt session informcihoz minden virtulis gp pldny hozz tud frni, ezrt fggetlenl attl, hogy melyik konkrt pldnyhoz esik be a krsnk, a belpett felhasznl munkamenete megmarad, s az adataid mindig ott lesznek benne.

Azure Connect
Az Azure Connect szolgltats segtsgvel virtulis hlzatokat pthetsz ki az Azure -ban fut role instance-ek s a telephelyen lv gpek kztt. Az gy kialaktott hlzatok leginkbb a Virtual Private Network (VPN) hlzatokhoz hasonlthatak. Az Azure Connecttel ssz ekapcsolt gpek IP-szinten valstanak meg IPSec-kel vdett, biztonsgos pont-pont hlzati kapcsolatot. Az alacsony szint kapcsolat felptsnek ksznheten nagyobb kontrollal rendelkeznk az Azure-ban fut virtulis gpeink fltt, mint pl. egy Service Busszal felptett, magasabb, alkalmazsszint kapcsolat esetben. Az IP -szint kapcsolatnak ksznheten sok jdonsggal bvl a rendszermrnkk, zemeltetk lehetsgeinek trhza az Azure-os virtulis gpek kezelsnek terletn. A felhben fut virtulis gpek bellthatk a meglv cges infrastruktrba, domainbe lptethetk, hozzfrhetnek a telephelyen fut SQL Serverekhez sszessgben az zemeltet szmra lehetv teszik, hogy a mr jl ismert, a mindennapi gyakorlatban bevlt mdszerekkel menedzselhesse azokat. A felht s a cges telephelyet sszekapcsol hibrid IT infrastruktra ptsn kvl a fejlesztknek is hasznra vlik az Azure Connect. A Visual Studio Remote Debuggerrel knnyedn nyomkvethetjk a felhben fut alkalmazsainkat. Az Azure Connecttel nemcsak rugalmasan s szles kr testreszabhatsggal, hanem nagyon gyorsan, sz szerint per cek alatt tudunk hlzatokat ltrehozni, gyakorlatilag adminisztrcis teher nlkl. Az IP-szint kapcsolat felptsnek hla az alkalmazsunk konfigurcijt s kdjt sem kell mdostanunk.

252

12. PaaS ptkocka-szolgltatsok Az Azure Connect hasznlatval kzel tkletesen el tudjuk fedni az infrastruktra-ptsben a felh s a telephely kzti hatrokat, azonban termszetesen vannak a kt krnyezet kzti tvolsg miatt olyan tnyezk, amikre figyelnnk kell hibrid rendszerek ptsekor. A felht Internet kapcsolaton keresztl rjk el, ami mindenkpp rezhet ksleltetst okoz egy helyi hlzat sebessghez kpest. Nagyon csbt lehetsg, hogy adatvezrelt vllalati alkalmazsok fejlesztsekor meghagyhatjuk az adatbziskezel rendszernket a telephelynkn, s a felhben fut alkalmazsok gy frhetnek hozz a benne trolt adatokhoz, mintha azok is a telephelynkn futnnak. De a knyelem mellett figyelni kell arra is, hogy ilyen esetben teljestmnyproblmk lphetnek fel nagy adatmennyisg mozgatsakor, illetve vlaszidre kritikus rendszerek esetben. Tovbb ha sok adatot mozgatunk az Azure adatkzponttl a telephelynk fel, az is tbbletkltsgeket eredmnyez. Ha ezekhez hasonl problmkkal talljuk szembe magunkat, megfontoland lehet az adatbzis SQL Azure -ba migrlsa. Az elmleti bevezet utn tekintsk t, milyen lpseket kell vgrehajtanunk a virtulis hlzatok ltrehozshoz! Az itt megszerzett tudst kiegsztve nzzk meg egy rvid pldn keresztl, milyen tovbbi belltsokra van szksg ahhoz, hogy egy Azure-os szerepkr egy pldnya elrhesse a telephelynkn fut SQL Servernket!

Virtulis hlzat ltrehozsa Azure Connect hasznlatval


A kialaktand virtulis hlzat minden gpn engedlyezni kell az Azure Connectet. Ez eltr lpseket ignyel a felhben illetve a telephelyen fut gpek esetben. Mindkt esetben szksg lesz azonban Azure Management Portlra. A knyv rsnak pillanatban az Azure Connect csak a rgi, Silverlight alap portlon rhet el. Vlaszd a bal als menben a Virtual Network menpontot, majd a Connectet s ezen bell az Azure elfizetsedet, ahogy az a 12-19 brn lthat!

12-19 bra: Azure Connect a Management Portlon

Azure Connect engedlyezse az Azure-ban fut virtulis gpeken


Az Azure elfizetsed kivlasztsa utn a fenti vzszintes menbl vlaszd ki a Get Activation Token parancsot! Ennek hatsra egy GUID-ot fogsz kapni, msold ezt ki a vglapra! Ezt az egyedi azonostt kell megadnod az Azure szerepkrnek. A Visual Studiban kattints dupln az Azure projekten bell a webes szerepkrre a tulajdonsglap megnyitshoz! A Virtual Network fln engedlyezd az Activate Windows Azure Connect opcit, s az itt lv szvegdobozba msold be a Management Portlon kapott azonostt a 12-20 brn lthat mdon!

253

12. PaaS ptkocka-szolgltatsok

12-20 bra: Activation token bemsolsa a Visual Studiba

Az itt vgrehajtott mdosts hatsra mdosul az Azure projektet ler konfigurcis fjl, a ServiceConfiguration.cscfg. A fjlba belekerlnek a Connecttel kapcsolatos belltsok. Ezzel sikeresen engedlyezted az Azure Connectet a webes szerepkrn. Ezen kvl nincs is tovbbi teendd, a felhbe teleptskor az Azure Connect automatikusan aktivlva lesz a virtulis gpeken.

Azure Connect engedlyezse telephelyen fut gpeken


Ahhoz, hogy a telephelyen fut gpeden engedlyezd az Azure Connectet, nincs ms dolgod, mint a Management Portlrl egy kis alkalmazst telepteni s futtatni. Kattints a fenti vzszintes menben az Install Local Endpoint gombra! Ennek hatsra letltdik az alkalmazs, s felkszti a telephelyen fut gpet arra, hogy az hlzati vgpontknt funkcionlhasson a virtulis hlzatban. Ezzel el is kszltl, az endpoint szoftver automatikusan elindul, s gy hajtja vgre a tzfal s a hlzati belltsok konfigurcijt, hogy a gp csatlakozhasson az Azure Connect szolgltatshoz. Ha brmilyen hiba jelentkezik, akkor azt az endpoint szoftver Windows rtestsi terleten lv kis ikonjra kattintva a Diagnostics menpontot vlasztva tudod megkeresni (12-21 bra).

12-21 bra: Azure Connect szoftver - diagnosztika

Virtulis hlzat ltrehozsa a Management Portlon


Miutn minden hlzatba lltand, felhben s telephelyen fut gpen engedlyezted az Azure Connectet, a virtulis hlzat ltrehozshoz trj vissza az Azure Management Portlon a Virtual Netwo rk Connect ablakhoz! Itt az Activated Endpoints ablakban tudod megnzni azoknak a gpeknek a listjt, amiken az Azure Connect engedlyezve van. A 12-22 brn pldul egy Azure-ban fut webes szerepkr egyetlen pldnyn, illetve egy loklis gpen van engedlyezve az Azure Connect.

12-22 bra: Engedlyezett Azure Connect vgpontok

254

12. PaaS ptkocka-szolgltatsok Ahhoz, hogy a kt engedlyezett vgpont kztt ltrehozz egy virtulis hlzatot, vlaszd ki a fenti menbl a Create Group parancsot! A felugr ablakban adj meg egy tetszleges nevet a hlzatba kapcsoland gpek csoportjnak elnevezshez, s add hozz a Connect from listhoz a telephelyen fut gpet, a Connect to listhoz pedig a webes szerepkrt! A ltrehozott csoporton bell a hlzati kapcsolat engedlyezshez jelld be az Allow connections between endpoints in group opcit (12-23 bra)!

12-23 bra: Azure Connect csoport ltrehozsa

A belltsokat mentsd el a Save gombra kattintva, s az Azure nhny perc alatt ltre is hozza a virtulis hlzatot! A ltrejtt hlzati kapcsolat tesztelshez szltsd meg ICMP protokollon keresztl a telephelyen lv gprl a felhben fut gpet, illetve teszteld le a kapcsolatot a msik irnyban is! Csatlakozz a felhben fut gphez RDP-n keresztl, s pingeld meg a neve alapjn a telephelyen fut gpet! A ping parancs futtatsnak eredmnye a 12-24 brn lthat.

12-24 bra: Azure-os VM megszltsa telephelyen fut gprl. A hlzati ksleltets jl rzkelhet.

Loklis SQL Server elrse a felhbl


Az Azure Connecttel ptett virtulis hlzatok egyik hasznos felhasznlsi terlete a telephelyen fut loklis adatbzis szerverek elrse a felhbl. A kvetkez nhny pontban tmren sszefoglalva vgigkvetheted, hogy milyen teendid vannak a konkrt Azure Connect konfigurcis lpseken kvl, ha egy telephelyen fut SQL Server adatbzist szeretnl elrni a felhben futtatott virtulis gprl. SQL Server belltsok Az SQL Server Management Studiban (SSMS) engedlyezd a Windows Authentication mellett az SQL Server Authenticationt is! (Object Explorerben szerver kivlasztsa Properties Security SQL Server and Windows Authentication mode!) Az SSMS-ben engedlyezd a tvoli kapcsolatokat az SQL Server fel! (Object Explorer -ben szerver kivlasztsa Properties Connections Allow remote connections to this server!)

255

12. PaaS ptkocka-szolgltatsok Az SSMS-ben gondoskodj rla, hogy legyen egy SQL Authenticationt hasznl felhasznld, amivel az Azure-ban fut alkalmazs csatlakozni tud az adatbzishoz! Az SQL Server Configuration Managerben gyzdj meg rla, hogy az SQL Server szolgltatsok kzt az SQL Server Browser le van lltva! Szintn a Configuration Managerben engedlyezd a szerver elrst TCP/IP protokollon keresztl (SQL Server Network configuration Protocols for {szerver neve} TCP/IP: lltsd Enabled rtkre)! A TCP/IP protokoll belltsai kzt vlaszd ki az IP Addresses flet, s az IPAll szekcin bell trld ki a TCP dynamic ports mezt, s TCPPort-nak add meg az 1433-at! Ha minden belltst elvgeztl, indtsd jra az SQL Servert! Azure VM belltsai A loklis SQL Serverhez hozzfr alkalmazs konfigurcis llomnyban (webes szerepkr esetn web.config) a connection stringben az adatbzis nevre Data Source="{szerver neve}\SQLEXPRESS,1433" formban hivatkozz! Az SQL Server elrshez SQL Server Authentication szksges. A connection stringben ne hasznld az Integrated Securityt, add meg az SQL Serveren ltrehozott felhasznlhoz tartoz azonostt (User ID) s jelszt (Password)! Tzfal belltsok A Windows tzfalon engedlyezd az 1433-as TCP portot!

sszegzs
A fejezetben megismerkedhettl az Azure platform ltal nyjtott federlt hitelestsi szolgltatssal, az Access Control Service-zel (ACS). ttekintetted, milyen modell szerint zajlik a federlt hitelests, s egy rszletesebb gyakorlati pldn keresztl lthattad, hogyan tudod integrlni az ACS -t egy ASP.NET MVC 3 webalkalmazsba. Az Azure Cachinggel foglalkoz fejezetrszben rviden megnzted, milyen stratgik szerint rdemes cache-elni az adataidat, s milyen klnbz lehetsgeket knl a cache-els megoldsra az Azure, illetve milyen esetekben melyik szolgltatst clszer hasznlni. Egy gyakorlati pldn keresztl megismerhetted, hogyan hasznlhatod fel az Azure Cachinget egy tbb pldnyban fut webes szerepkr felhasznli munkamenetnek kezelshez. A fejezet vgn az Azure Connect szolgltatsrl olvashattl, amivel rugalmasan s gyorsan alakthatsz ki hibrid hlzatokat a cges telephelyen s a felhben fut gpek kztt. A virtulis hlzatok ltrehozsnak konkrt lpsei mellett rviden tnzted, milyen belltsokra van szksg, hogy egy felhben fut gp hozzfrjen egy telephelyen fut loklis SQL Serverhez.

256

13. PaaS Szolgltatsbusz

13. PaaS Szolgltatsbusz


Ebben a fejezetben az albbi tmkat ismerheted meg: A Service Bus koncepcija, szolgltatsai s konfigurlsa. Hogyan kommunikljunk szolgltatsokkal fggetlenl a hlzat bonyolultsgtl? Aszinkron, lazn kapcsolt kommunikci megvalstsa. zenetszrs, feliratkozsok s korrelcik. Szolgltatsok biztonsgoss ttele s a hozzfrsek korltozsa. A modern alkalmazsok ritkn mkdnek izollt, egysges s jl menedzselhet krnyezetben. A (nagy)vllalati piacot clz megoldsaink esetn gyakran tallkozhatunk olyan alkalmazsokkal s szolgltatsokkal, amelyek nem mozdthatk el a meglv infrastruktrrl. Az intelligens telefonok s tblagpek terjedsvel ezen eszkzk nll clalkalmazssal val tmogatsa ma mr szinte elengedhetetlen. Legyen sz egyszer webruhz megoldsrl, ahol webes alkalmazsunk rszeknt a kszletadatokat egy tvoli raktralkalmazsban kell ellenrizni, vagy rendszeres vsrlink szmra okos telefonon szeretnnk a rendelseket kvetni. Btran elmondhatjuk, hogy minden alkalmazs tbb lesz attl, ha valamely msik alkalmazssal integrldik. Szolgltatsok ksztse s hasznlata ma mr egyltaln nem bonyolult, fleg olyan hatkony eszkzkkel, mint a .NET Framework s a Windows Communication Foundation. sszetartoz szolgltatsokat egyknt menedzselni, egysges cmzst kialaktani s e szolgltatsokat az internet megbzhatatlan kzegben kzztenni mr sokkal bonyolultabb krds. A fejezetben megismerkedhetsz az Azure platform Service Bus megoldsval s szolgltatsaival, megtanulhatod, hogyan hasznld azt fel szolgltatsok ignybevtelnek egyszerstsre, s hogyan ptsd be alkalmazsod architektrjba. A rvid ttekintst kveten azonnal a mly vzbe kerlsz: megismerkedsz a Relay szolgltatssal, majd pedig az aszinkron mdon kzvettett zenetekre pl kommunikcival. Vgl az interneten elengedhetetlen biztonsgi lehetsgekrl olvashatsz.

ttekints
Az alkalmazs infrastruktra egyes rtegeinek laza sszekapcsolsba, a klnbz szoftverek s platformok kztti kompatibilits megteremtsbe fektetett rengeteg energia a szoftverfejleszt trsadalom s a nagyvllalatok rszrl olyan szoftverfejlesztsi mintk megszletst eredmnyezte, mint a szolgltats orientlt architektra (SOA), illetve az Enterprise Service Bus (ESB). Az ESB olyan integrcis architekturlis tervezsi minta, ami az zleti objektumok tovbbtshoz szksges kapcsolatok, protokollok s folyamatok sszessgt rja le. m azok a megoldsok, amelyek jl mkdnek egy nagyvllalati krnyezetben, nem felttlenl adnak vlaszt az internetre s felhbe sznt megoldsok esetn. Milyen alapvet kihvsokkal szembeslhetnk internet lptk szolgltatsok esetn? A hlzatok megbzhatatlanok s lassak. sszehasonltva az ugyanazon gpen fut folyamatok kztti kommunikcival vagy a dediklt s vdett intranet hlzatokkal, az internetre tervezett kommunikci sokkal tbb problmval szembesl. Adataink akr kontinenseket szelhetnek t, mikzben azok klnbz hlzatokon s eszkzkn keresztl rnek clba. Minden egyes lps jabb hiba lehetsgt hordozza. Nincs kt egyforma alkalmazs. Klnbz problmk klnbz megoldsokat ignyelnek. Eltr programozsi nyelvek, platformok s tmogatott formtumok kztt tvel integrcis megolds szksges.

257

13. PaaS Szolgltatsbusz Az alkalmazsok folyamatosan vltoznak. A folyamatos technolgiai fejlds, s a szoftverekkel szemben exponencilisan nvekv elvrsok mind az alkalmazsok folyamatos fejldst ignylik. Szolgltatsainkat gyakran kell, hogy elrjk akr ugyanazon alkalmazs eltr verzii. A felh platform ltal nyjtott sklzhatsg s rendelkezsre lls, valamint a klnbz biztonsgi znk sszekapcsolsa vezetett az Internet Service Bus megoldsokhoz, melyek kzl az Azure felh platformban megvalstott vltozata az Azure Service Bus.

A Service Bus koncepcionlis modellje


A Microsoft Azure Service Bus sklzhat, magas rendelkezsre llssal rendelkez s jl konfigurlhat megoldst jelent a szolgltatsok kztes kapcsoldsi pontjaknt az alkalmazsok szmra. A 13 -1 brn lthatod annak koncepcionlis modelljt. Eszkzei kztt megtallhat a kapcsolatok felptsnek kezelse, tarts zenetsorok kialaktsa s a biztonsg megvalstsa az Azure Access Control Service szolgltatssal val integrcin keresztl.
Service Bus SECURITY Access Control Service Integrci Naming System Service Registry Messaging Fabric

13-1 bra: A Service Bus koncepcionlis modellje

A Service Bus az albbi f szolgltatsokat biztostja: Naming System: Definilja a szolgltatsok platformfggetlen s strukturlt cmzshez szksges egysges erforrs-azonostk (Uniform Resource Identifier, URI) felptst, ahol az sszetartozkat nvtrbe csoportostja, s az egyes vgpontokhoz hierarchikus relatv tvonalat biztost. Service Registry: Strukturlt s kereshet szolgltatslistba rendezi a regisztrlt szolgltats vgpontokat. Ez a lista szabvnyos eszkzkkel, az ltaluk biztostott formtumokban megjelenthet. Messaging Fabric: Definilja az adatok tovbbtsnak mdjt s protokolljait, valamint megvalstja a kommunikci folyamatnak vezrlst. Security: Menedzseli s biztostja a kommunikcis felek azonostst, a hozzfrs biztonsgt s az adatcsere titkostst. Mieltt rszletesen ttekintennk az egyes fogalmakat, a fejezet tovbbi rszeiben tallhat mintafeladatok kiprblshoz elszr meg kell ismerned, hogyan plnek fel a szolgltats nvterek, majd ltre kell hoznod egyet!

Szolgltats nvterek s cmzs


Alkalmazs szinten minden szolgltatsnak megvannak a sajt explicit hatrai. nllan vannak teleptve, vltozatszmmal elltva s menedzselve. Rendszerben gondolkodva, az sszetartoz szolgltatsokat egytt kell tudni kezelni. A Service Buson bell minden szolgltats egy nvtr alatt jn ltre. A nvtr definilja a cmzs s az adminisztratv menedzsment hatskrt. Minden nvtrnek van legalbb egy tulajdonosa, aki szolgltatsokat vehet fel, mdosthat vagy trlhet. A Service Bus Naming System szolgltatsa a nvtereket teljesen minstett tartomny nevekre (FQDN) kpezi. A DNS regisztrlt nvtren bell a webcmekkel megegyez mdon relatv tvonal nevesti az egyes erforrsokat. Ezltal brhonnan egysges sma szerint cmezheted meg a szolgltatsokat. A Service Bus URI smja az albbi mdon nz ki:

258

13. PaaS Szolgltatsbusz

[protocol]://[namespace].servicebus.windows.net/[resource_path]

A protocol jelenti a kapcsoldshoz hasznlt kommunikcis csatornt s protokollt. A Service Bus kt protokollt tmogat: http[s] s sb. Az elbbit hasznlhatod minden, a HTTP szabvnynak megfelel kommunikcira, ez biztostja a legnagyobb kompatibilitst szmodra a klnbz platformok kztt. Viszont ahol az lehetsges, ott az sb protokollal jellt, TCP alap, hatkony, binrisan kdolt kommunikcit hasznld! Mindkt protokoll tmogatja az SSL alap csatornatitkostst. A tartomnynv legals szintje a namespace cmke, amely a szolgltats nvtert azonostja. Ezt a cmkt te adhatod meg, de a nvteret tartalmaz tartomnynvnek a teljes Service Bus szolgltatson bell egyedinek kell lennie. Egy szolgltats nvtren bell egy vagy tbb alkalmazsod sszetartoz szolgltats vgpontjaihoz tallkozsi pontokat (rendezvous point) nevesthetsz. A resource_path hierarchikus tvonalat a webcmeknl megszokott mdon /name(/name) formtumban kell megadnod. Pldul a /warehouse/stock s a /warehouse/delivery kt kln szolgltatsvgpontot jell, melyek tetszlegesen lehetnek a felhben vagy sajt hlzaton teleptve. Fontos klnbsg viszont a webcmekhez kpest, hogy az tvonal egy adott szintjn regisztrlt szolgltatsvgpont elrejti az alatta lvket. Teht ha a /warehouse tvonalra egy szolgltatst regisztrlsz, akkor mr ilyen clra nem hasznlhatod fel a /warehouse/storage tvonalat.
Egy teljes cm maximum 450 karakter hossz lehet, s legfeljebb 32 szegmens mlysg relatv tvonalat tartalmazhat.

Szolgltats nvtr ltrehozsa


A nvtr ltrehozshoz jelentkezz be a http://manage.windowsazure.com cmen a menedzsment portlra, kattints r a Service Bus szolgltatsra, majd a Create a new namespace hivatkozsra, amint azt a 13-2 bra mutatja!

13-2 bra: j szolgltats nvtr ltrehozsa varzsl

A NAMESPACE NAME nev mezbe rd be a ltrehozni kvnt nvtered egyedi nevt! Figyeld meg a 13 -2 brn a mezben megjelen zld pipt! Fontos, hogy az azurebook12 nvteret cserld le egy ltalad vlasztott egyedire! Ha olyan nevet vlasztottl, amely rvnytelen, vagy mr ltezik, a pipa helyn 259

13. PaaS Szolgltatsbusz megjelen piros felkiltjel figyelmeztet r. A REGION mezben a hasznlni kvnt Azure adatkzpont elhelyezkedst hatrozhatod meg. A varzsl befejezse utn a szolgltats nvtere pr percen bell elkszl. A nvtrhez val hozzfrs korltozsa rdekben a szolgltatsok s kliensek a szksges biztonsgi azonostk bemutatsa utn csatlakozhatnak. Ezeket az azonostkat a ltrehozott nvteret tartalmaz sor kijellsvel s az ACCESS KEY funkcira kattintssal red el. A megjelen dialgus ablakra pldt a 13-3 brn lthatsz.

13-3 bra: Nvtr menedzsment hozzfrsi azonostk

A Service Bus az Access Control Service szolgltatst hasznlja. Minden szolgltatsnak s kliensnek a sikeres csatlakozs eltt azonostania kell magt. Az azonosts trtnhet akr kzvetlenl az ACS -ben, akr az ACS ltal megbzhatnak tlt autentikcis szolgltatn (Identity Provider) keresztl. A Service Bus jelenleg 3 mdot tmogat az azonostsra: Shared Secret, SAML token s Simple Web Token (SWT).
Szolgltatsaidat konfigurlhatod gy, hogy nem kveteled meg a kliensek azonostst. A biztonsgrl bvebben a fejezet ksbbi rszn olvashatsz.

A legegyszerbb azonostsi md a Shared Secret, ami egy felhasznli nv s jelsz prosknt is felfoghat. A 13-3 brn ezt a prost a DEFAULT ISSUER s a DEFAULT KEY mezkben tallod meg. Ezeket minden olyan alkalmazsodba be kell illesztened, amely azonostst ignyel. Szintn itt tallod meg a Cloud Services Role konfigurciba illeszthet kapcsoldsi kulcsot is.

A Service Bus programozsi modellje


Brmilyen szolgltatsrl is legyen sz, a Microsoft .NET 3.0 -s vltozata ta a Windows Communication Foundation (WCF) biztostja az egysges programozsi felletet s a futtat krnyezetet. Minden, ami zenet alap kommunikcira pl, s tvoli szolgltatsok hvsval modellezhet, az megvalsthat a WCF programozsi modelljben.

260

13. PaaS Szolgltatsbusz

Br az itt bemutatott elvek, feladatok s mintapldk kiprblshoz a Windows Communication Foundation (WCF) ismerete nem szksges, azok mlyebb megrtshez azonban elengedhetetlen. A WCF -rl minden szksges informcit megtallsz itt: http://msdn.microsoft.com/en-us/library/dd456779.aspx.

Minden egyes szolgltatshoz a kliensek a szolgltats ltal publiklt vgpontok egyikn keresztl csatlakoznak. Minden ilyen vgpontnak WCF terminolgiban endpoint-nak ngy jellemz tulajdonsga van: Address: A szolgltats vgpontjnak cme, ahol a kliensek elrhetik s csatlakozhatnak hozz. Binding: Definilja a kommunikci mdjt, a hasznlt protokollt (pl.: HTTP vagy TCP) s az adatok kdolst (pl.: XML vagy binris). Contract: Lerja a szolgltats mveleteit s mveletek hvshoz hasznlt adatok felptst. Behavior: A szolgltats implementcijnak viselkedst s tulajdonsgait ler rszletek halmaza. A Microsoft a Service Bus programozsi fellett a WCF modelljnek kiterjesztseknt valstotta meg. A Microsoft.ServiceBus nvtr tartalmazza azokat az osztlyokat s tpusokat, amelyek megvalstjk az alapvet ktsek (bindings) kiterjesztst, s definiljk a Service Bus hasznlatt segt viselkedslerkat (behaviors). Ez a megvalsts lehetv tette, hogy a legtbb vltozs a kommunikcit megvalst rtegben trtnjen, a Service Bus hasznlatt akr teljesen elfedve az implementcis rszletek ell. Teht ha a Service Bus szolgltatsait szeretnd hasznlni alkalmazsodban, a szksges Microsoft.ServiceBus.dll referencit ktflekppen adhatod hozz projektedhez: Az Azure SDK felteleptse utn a Global Assembly Cache (GAC) gyjtemnybl teleptve. Ezt a Visual Studio 2012 esetn a Project | Add Reference paranccsal indthat dialgus Assemblies gyjtemnye alatt a servicebus kulcsszra keresve teheted meg. A projekthez kzvetlen referenciaknt, nll NuGet csomagbl teleptve. A szksges csomagot a Project | Manage NuGet Packages paranccsal indtott varzslban a windowsazure official servicebus kulcsszavakra keresve tallod meg s teleptheted. Szolgltatsaid nemcsak felhben futhatnak, hanem sajt infrastruktrn zemeltetve is. Az alkalmazsok egyszerbb kihelyezse megkvnja, hogy ezeken a futtatkrnyezeteken ne legyen szksg az Azure SDK teleptsre. Ilyenkor a szksges referencik msolst neked kell megoldanod, akr egy telept alkalmazs rsval, akr a szksges szerelvnyek msolsval! Ezt az utbbi folyamatot hvjk bin deploy-nak. Ennek egyszerstsben segt szmodra a NuGet csomagkezel megoldsa.

Service Registry
Minden Service Bus vgpontknt regisztrlt szolgltats bejegyzsre kerl a Service Registry nyilvntartsba. Alaprtelmezs szerint minden szolgltats lthatsga privt, azaz kvlrl nem krdezhet le, de egyszer lpsekkel publikuss tehet. A lista tartalmt akr az RSS hrfolyamokbl ismert Atom Feed formban is lekrdezheted, feliratkozhatsz r, s rtestst krhetsz a vltozsairl. Az gy kzztett szolgltatsokat a cmzsben megismert hierachikus struktrban tallzhatod. A regisztrlt Service Bus nvtrhez tartoz Service Registry nyilvntarts publikus webcmnek formja az albbi:
https://azurebook12.servicebus.windows.net/

Ezt a cmet bngszben megnyitva a publikusan elrhet szolgltatsok listjt olvashat s naviglhat formban lthatod, ahogy azt a 13-4 bra is mutatja.

261

13. PaaS Szolgltatsbusz

13-4 bra: Publikusan elrhet szolgltatsok listja RSS hrfolyamknt

Prbld ki, hogy a pldban tallhat azurebook12 nvteret lecserled az ltalad ltrehozottra! Meglv szolgltatsaid publikuss ttelhez hozz ltre egy pldnyt a Microsoft.ServiceBus.ServiceRegistrySettings osztlybl, majd a DiscoveryMode tulajdonsgnak add rtkl a Public rtket! Ezt a pldnyt a szolgltats vgpontjainak viselkedst ler definciknl kell megadni. Legegyszerbben ezt az alkalmazs konfigurcijn keresztl, a 13-1 listban bemutatott bejegyzsek hozzadsval teheted meg. 13-1 lista: Publikus szolgltats belltsa konfigurciban
<behaviors> <endpointBehaviors> <behavior name="publicEndpointBehavior">
<serviceRegistrySettings discoveryMode="Public" displayName="RandomQuotes" /> <transportClientEndpointBehavior credentialType="SharedSecret"> <clientCredentials> <sharedSecret issuerName="owner" issuerSecret="SECRETKEY" /> </clientCredentials> </transportClientEndpointBehavior> </behavior> </endpointBehaviors> </behaviors> <services> <service name="ServiceRegistry.PublicServiceSample.RandomQuotesService"> <endpoint behaviorConfiguration="publicEndpointBehavior" address="http://azurebook12.servicebus.windows.net/Samples/RandomQuotes" binding="webHttpRelayBinding" bindingConfiguration="anonymousBinding" contract="ServiceRegistry.PublicServiceSample.IRandomQuotesService" /> </service> </services>

Lthat, hogy az endpoint elemhez tartoz behaviorConfiguration attribtum rtke mutatja meg, melyik viselkeds lerjt kell szerkesztened. Ebben az esetben a publicEndpointBehavior nev lert kell bvteni a szksges konfigurcis bejegyzssel. A serviceRegistrySettings bejegyzs discorveryMode attribtumnak rtke hatrozza meg a szolgltats vgpontjnak lthatsgt. A lehetsges rtkeket a DiscoveryType felsorols definilja. A displayName attribtum rtke a szolgltats megjelentshez hasznlt nevet tartalmazza. Ugyanezt elrheted akr programozottan is, ahogyan azt a 13-2 kdlista mutatja. Ebben az esetben termszetesen elveszted a forrskd mdostsa nlkli vltoztats lehetsgt! 13-2 lista: Publikus szolgltats belltsa programozottan
using(var host = new ServiceHost(typeof(RandomQuotesService))) { var serviceRegistrySettings = new Microsoft.ServiceBus.ServiceRegistrySettings() { DiscoveryMode = Microsoft.ServiceBus.DiscoveryType.Public,

262

13. PaaS Szolgltatsbusz

DisplayName = "RandomQuotes", }; host.Description.Endpoints[0].Behaviors.Add(serviceRegistrySettings); host.Open(); Console.WriteLine("Listening"); Console.ReadLine(); }

Ez a program elszr ltrehozza a szolgltatst futtat krnyezetet, ami a ServiceHost osztly egy pldnya. Ezutn pldnyost egy ServiceRegistrySettings objektumot, s ezt az j pldnyt a serviceRegistrySettings vltozba menti. Ennek sorn objektuminicializls is trtnik, amely belltja a DiscoveryMode s DisplayName tulajdonsgok rtkt. Vgl a szolgltats a 0 index vgpontjnak viselkedslerjt bvti az gy ltrehozott viselkeds tulajdonsggal.

Service Bus Relay


Az adatok tovbbtst megvalst Relay szolgltats a Service Bus Messaging Fabric komponensnek legfontosabb feladata. A Relay szolgltats teszi szmodra elrhetv, hogy kommuniklni tudjanak szolgltatsaid s az ket hv kliensek, fggetlenl attl, hogy milyen hlzati krnyezetben futnak. Egszen addig, amg a szolgltats vgpontjai a Service Registry nyilvntartsban regisztrlva vannak, s a Service Bus felhben fut vgpontjai elrhetek, a Messaging Fabric gondoskodik a kapcsolat felptsrl, az zenetek fogadsrl s tovbbtsrl. Mirt van szksg egy kztes megoldsra a kommunikci megvalstshoz? Mirt nem szltjk meg a kliensek kzvetlenl a szolgltatsokat? Szolgltatsok futhatnak akr felhben, akr brelt szerverparkban zemeltetve, de valahol a bels vllalati infrastruktrn elhelyezve is gyakoriak. Ezeket a gpeket gyakran vdik szigor tzfalszablyokkal, akr tvonalvlasztk s bels hlzatok mg rejtve. A gpekhez val hozzfrst s az internet kapcsolatot IT biztonsgi szablyzatok s elrsok korltozzk. Szoksos WCF megvalsts esetn a szolgltatsok vgpontjai nyitott kapcsolattal figyelnek a kliensek bejv csatlakozsra, kzvetlen kapcsolatot felptve a kommunikcihoz. Ha a szolgltats a kliens fell nem rhet el, akkor a kapcsolat megteremtse nem lehetsges. A Relay Service szolgltats egy kztes tallkozsi pontot biztost, amit mindkt oldal kimen csatlakozssal r el. A 13 -5 brn pldaknt az egyirny zenettovbbts menett lthatod.
Relay Service 4) zenet tovbbtsa

2) Kimen kapcsolat

en et

1) Kimen ktirny kapcsolat

5) t ne ze

Kliens

3)

Szolgltats

13-5 bra: Egyirny zenetek tovbbtsa a Relay Service-en keresztl

Els lpsknt a szolgltats egy ktirny kimen kapcsolatot ltest a felhben fut Relay Service publikus vgpontja fel. A szolgltats vgpontja regisztrlsra kerl a Servire Registry nyilvntartsban. A kliens szintn kimen kapcsolatot ltest a Service Bus fel, ahol a sikeres azonostst kveten kszen ll az zenetek kldsre. A kliens ltal kldtt zenetet a Relay Service tovbbtja a szolgltats fel a ltrejtt ktirny kapcsolaton keresztl. Figyeld meg, hogy mindkt fl kimen irny kapcsolatot ltestett! Egyik oldalon sincs szksged a bejv kapcsolatok engedlyezsre a tzfalon s tjrkon.

263

13. PaaS Szolgltatsbusz

A Service Bus Relay szolgltatsn keresztl vgzett kommunikcihoz szksges kimen portok listjt a http://msdn.microsoft.com/en-us/library/windowsazure/ee732535.aspx cmen tallod!

A Relay szolgltats ngy kommunikcis mdot klnbztet meg: Rendezvous: Ez a WCF beptett szabvnyos HTTP s TCP ktseinek kiterjesztse a Relay szolgltatsra. Ktirny kommunikcit biztost, a csatlakozst kvet tallkozsi pont ( rendezvous point) felptse utn. A Service Bus felel az adatok tovbbtsrt a kt pont kztt. Szabvnyos REST alap web szolgltatsok hasznlata esetn a kliens oldalon nincs szksg a Service Bus API hasznlatra. Hybrid: A kapcsolat a szolgltats s a kliens kztt az elz pontban megismert mdon indul. A Relay szolgltats felgyeletvel a kt vgpont ellenrzi, hogy kpesek -e kzvetlen kapcsolatot felpteni. Ha igen, akkor a kommunikci transzparens mdon a kzvetlen kapcsolaton keresztl folytatdik tovbb. Csak a NetTcpRelayBinding tmogatja. Oneway: Egyirny kismret zenetek kldsre alkalmas, a szolgltatsnak nincs lehetsge a kliens krseire vlaszolni. Egyarnt tmogatja a HTTP s a TCP protokoll alap kommunikcit is. Ilyen tpus kapcsolat csak a Service Bus szolgltatsban ltezik. Event: Az egyirny zeneteket esemnyknt rtelmez kts. Implementcija az egyirny zeneteken alapul, azzal a klnbsggel, hogy tbb figyel szolgltats is feliratkoztathat ugyanarra a vgpontra. Ha egy kliens zenetet kld egy ilyen cmre, minden feliratkozott szolgltats megkapja azt. A Service Bus ltal tmogatott ktsek kztt tallsz platformfggetlen, szabvnyos http kommunikcit tmogat WebHttpRelayBinding megvalstst vagy sebessgoptimalizlt binris kdolst tmogat NetTcpRelayBinding implementcit. De kpes kiszolglni a specilis, az adatok csak egyirny tovbbtst hatkonyan megvalst ignyeket is. Minden kts a Relay szolgltatsra pl, s automatikusan vgzi a kommunikl vgpontok sszekapcsolst.

Relay ktsek
A legszlesebb krben hasznlt standard WCF ktseknek ltezik a Service Bus szolgltatsra kiterjesztett vltozata. A Relay ktsek legtbb tulajdonsgukban megegyeznek a WCF megfeleljkkel, tmogatjk a klnbz biztonsgi opcikat, szolgltatst ler (metadata) publiklst s egyb standard WCF lehetsgeket. Legtbbszr nincs ms dolgod, mint a meglv ktst lecserlni a Service Bus ltal definilt prjra, s gondoskodni a szksges biztonsgi opcik megadsrl. A rendelkezsedre ll ktsek listjt a 13-1 tblzat tartalmazza. 13-1 tblzat: Standard WCF ktsek s a Service Bus megfeleljk Standard WCF kts
BasicHttpBinding

Service Bus megfelelje


BasicHttpRelayBinding

Rvid lers Egyszer, a SOAP 1.1 szabvnynak megfelel zenetkdolst s kommunikcis csatornaknt HTTP-t hasznl kts. A REST stlus modern webszolgltatsokban hasznlt kts. SOAP zenetek helyett a HTTP request/respone (krs s arra adott vlasz) mintt tmogatja, XML, JSON s base64 kdolssal. Hasonl a BasicHttpBinding ktshez, de tmogatja a modernebb SOAP 1.2 zenetkdolsi szabvnyt s a WS-* specifikci kiterjesztsek jelents rszt.

WebHttpBinding

WebHttpRelayBinding

WSHttpBinding

WSHttpRelayBinding

264

13. PaaS Szolgltatsbusz

Standard WCF kts


WS2007HttpBinding

Service Bus megfelelje


WS2007HttpRelayBinding

Rvid lers Az elz kts kiterjesztse az OASIS ltal elfogadott ReliableSession, Security s TransactionFlow protokollverzikra. A WCF sajt kommunikcis protokolljt megvalst kts. Nagy sebessg adattovbbtsra alkalmas binris kdolst alkalmaz. A WSHttp ktsekkel megegyez mdon tmogatja a WS-* specifikcikat.

NetTcpBinding

NetTcpRelayBinding

A NetTcpRelayBinding a WCF sajt binris zenetkdolst alkalmazza, gy a kliens oldalnak is WCF implementcinak kell lennie. Br az zenet kdolsa nagyon hasonl a NetTcpBinding ktshez, a httrben hasznlt TCP megvalsts eltr tle, gy kliens oldalon is a Relay vltozatot kell hasznlnod. Ha ez szmodra nem megfelel, vagy csak rugalmasabb megoldst szeretnl, akkor valamelyik HTTP ktst kell alkalmaznod. A BasicHttpRelayBinding s a WebHttpRelayBinding tmogatja a legszlesebb krben elterjedt protokollokat. Korbban a vilghln a legtbb szolgltats a HTTP protokollt s a SOAP kdolst alkalmazta, m ma mr egyre inkbb httrbe szortja a REST technolgia s az XML vagy JSON formzott kommunikci. Ha a tmogatott WS-* protokollokra van szksged, akkor a WSHttp s a WS2007Http ktst vlaszd! De attl fggetlenl, hogy melyik HTTP Relay ktst vlasztod, az egyttmkdsre kpes megvalsts eredmnyekpp minden tpus kliens tmogatott, amely ismeri a vlasztott protokollokat. A Service Bus Relay szolgltatsnak kiprblshoz egy WCF szolgltatst kell ksztened. Ehhez szksg van az adatokat s mveleteket definil kontraktusokra, ezek megvalstsra s a szolgltats vgpontjait futtat krnyezetre (host). A 13-3 lista egy egyszer, feladatokat nyilvntart szolgltats kontraktust mutatja be. 13-3 lista: Minta szolgltats kontraktus (ITaskService.cs)
[ServiceContract] public interface ITaskService { [WebInvoke(UriTemplate = "tasks", Method = "GET", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] [OperationContract] Task[] Tasks(); [WebInvoke(UriTemplate = "add", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] [OperationContract] string AddTask(Task task); [WebInvoke(UriTemplate = "settask/{id}", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] [OperationContract] void SetTask(string id, TaskState state); }

Az ITaskService interfsz a feladatok kezelshez szksges hrom alapvet mveletet deklarlja. Egy WCF szolgltats esetn a szolgltatst ler interfszt a ServiceContract attribtummal kell elltni, a hvhat mveleteket pedig az OperationContract attribtum jelli. A 13-3 listn bemutatott pldn lthat WebInvoke attribtummal kell jellni minden REST stlusban hvhat WCF mveletet. A szolgltats konfigurcijt programozottan vagy az alkalmazs konfigurcis llomnyban (pldul App.config) adhatod meg. Ha a konfigurcis llomnyt vlasztod, elszr definilnod kell a hasznlni kvnt Service Bus kiterjesztseket:

265

13. PaaS Szolgltatsbusz

<system.serviceModel> <bindingExtensions> <add name="webHttpRelayBinding" type="Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </bindingExtensions> </system.serviceModel

Ebben az esetben a webHttpRelayBinding ktst adtuk a WCF kiterjesztsei kz. Ha a Service Bus referencit NuGet csomagbl telepted, akkor a Visual Studio automatikusan elhelyezi szmodra az sszes kiterjesztst a konfigurcis llomnyban! A kvetkez lpsben a szolgltats vgpontjaihoz kell hozzadni egy WebHttpRelayBinding ktst hasznl vgpontot:
<service name="RelayServiceSample.TaskService"> <endpoint address="http://localhost:8733/samples/collector/" binding="webHttpBinding" contract="RelayServiceSample.ITaskService" behaviorConfiguration="standardEndpointBehavior"> <identity> <dns value="localhost"/> </identity> </endpoint> <endpoint address="http://azurebook12.servicebus.windows.net/samples/collector" binding="webHttpRelayBinding" contract="RelayServiceSample.ITaskService" bindingConfiguration="anonymousBinding" behaviorConfiguration="relayEndpointBehavior" /> </service>

Ebben a pldban a szolgltatshoz kt vgpont tartozik: egy loklis s egy Relay szolgltatson keresztl tovbbtott. A lnyegi klnbsg a kt vgpont kztt a hasznlt ktsben s cmben van. A helyi kapcsolathoz a webHttpBinding, a felhn keresztl tovbbtott vgponthoz pedig a webHttpRelayBinding kts van belltva. Minden Servic Bushoz csatlakoz szolgltatsnak ktelez valamilyen mdon hitelestenie magt. Erre a legegyszerbb lehetsget a sharedSecret felhasznli nv s jelsz pros adja:
<endpointBehaviors> <behavior name="relayEndpointBehavior"> <transportClientEndpointBehavior credentialType="SharedSecret"> <clientCredentials> <sharedSecret issuerName="owner" issuerSecret="yChihC4YOFsL1mRMGdf/KcozrIco3scs2jMaRYYzytg=" /> </clientCredentials> </transportClientEndpointBehavior> </behavior> </endpointBehaviors>

Az gy ltrehozott relayEndpointBehavior nev viselkedslert kell a szolgltats vgpont behaviorConfiguration attribtumnak rtkl adni. A transportClientEndpointBehavior elem clientCredentialType attribtuma definilja a hasznlt hitelestsi mdot. Minden vgpontra kln konfigurlhatod a kliensektl elvrt hitelestsi s zenettitkostsi elvrsokat:
<bindings> <webHttpRelayBinding> <binding name="anonymousBinding">

266

13. PaaS Szolgltatsbusz

<security mode="None" relayClientAuthenticationType="None" /> </binding> </webHttpRelayBinding> </bindings>

Itt a security elemnek kt fontos feladata is van. A relayClientAuthenticationType="None" belltssal engedlyezi, hogy a klienseknek ne kelljen magukat hitelesteni a Service Bus fel. A mode="None" bellts pedig azt jelenti, hogy a szolgltats sem kvetel meg hitelestst vagy zenettitkostst a hvktl. Termszetesen ezt csak publikus s rzkeny adatokat nem tovbbt szolgltats esetn szabad megtenni.
A hitelestsi s zenettitkostsi lehetsgekrl a fejezet ksbbi rszn rszletesen olvashatsz.

A szolgltats konfigurcija s implementcija utn mr csak a futtat krnyezet biztostsra van szksg. Minden WCF szolgltatst a System.ServiceModel nvtr ServiceHost osztlynak vagy leszrmazott osztlynak pldnya futtat:
var host = new WebServiceHost(typeof(TaskService));

A WebServiceHost osztly a ServiceHost leszrmazottjaknt automatikusan elvgzi a hasznlt vgpont konfigurcijt a REST stlus szolgltatsmodell tmogatshoz. A konstruktorban a szolgltatst megvalst osztly tpust veszi t, szksg esetn pldnyostva azt. A szolgltats hvshoz szksges WCF klienst a System.ServiceModel nvtr ClientBase<> generikus absztrakt osztlybl leszrmaztatva hozhatod ltre, ahogy azt az albbi plda is mutatja:
public class TaskClient : ClientBase<ITaskService>, ITaskService { public TaskClient(string endpointConfigurationName) : base(endpointConfigurationName) { } public TaskClient(Binding binding, EndpointAddress remoteAddress) : base(binding, remoteAddress) { } public Task[] Tasks() { return base.Channel.Tasks(); } public string AddTask(Task task) { return base.Channel.AddTask(task); } public void SetTask(string id, TaskState state) { base.Channel.SetTask(id, state); } }

A TaskClient osztly kt konstruktorral rendelkezik. Az endpointConfigurationName paramtert vr konstruktora az alkalmazs konfigurcis llomnyban megadott vgponttal hozza ltre az j pldnyt. A msodik konstruktor hasznlatval programozott mdon teheted meg ugyanezt, amint azt ezen a rvid pldn keresztl lthatod:

267

13. PaaS Szolgltatsbusz

var serviceNamespace = "azurebook12"; var taskServiceUri = ServiceBusEnvironment.CreateServiceUri( "http", serviceNamespace, "samples/collector"); using (var client = new TaskClient(new WebHttpBinding(), new EndpointAddress(taskServiceUri))) { client.Endpoint.EndpointBehaviors.Add(new WebHttpBehavior()); client.Open(); foreach (var task in client.Tasks()) { Console.WriteLine(task.Id); } }

A kd els lpsben a Service Bus vgpont cmt lltja ssze a CreateServiceUri metdus segtsgvel. Ez a metdus hrom bemen paramtert vr: sma, nvtr s a szolgltats relatv cme. A TaskClient osztly pldnyostshoz a konstruktor paramtereknt veszi t a hasznlni kvnt ktst s a szolgltats vgpontjnak cmt. Figyeld meg, hogy a pldban a WCF beptett WebHttpBinding ktse van hasznlva! Termszetesen lehetsged van a WebHttpRelay kts hasznlatra is. Habr a Service Bus Windows Azure krnyezetben fut, a szolgltatst hasznl alkalmazsoknak ez nem szksges, gy a pldban bemutatott kliens- s szerveralkalmazst a sajt gpeden futtatva is kiprblhatod. Termszetesen a Relay vgpontok ltrehozshoz rendelkezned kell Azure elfizetssel.

Hibrid kapcsolat
Szolgltatsok hvsra s adatok tovbbtsra nem mindig a felh a legoptimlisabb t. Utazs kzben egy tblagppel nyilvnos vezetk nlkli hlzatokhoz csatlakozva a vllalati bels infrastruktrn elhelyezett szolgltatsok elrsnek legegyszerbb gyakran egyetlen lehetsges mdja a Relay szolgltats hasznlata. Azonban az irodba megrkezve, ugyanazzal az eszkzzel a bels nagysebessg hlzathoz csatlakozva az adatkapcsolat teljestmnyt mr jelentsen rontja a publikus felh fel megtett t. A NetTcpRelayBinding kts kpes felismerni az ilyen helyzeteket, s publikus felhn keresztl felptett kapcsolatot automatikusan kzvetlen kliens-szerver kommunikcira vltoztatni. A kts ltal tmogatott kt kapcsoldsi mdot a TcpRelayConnectionMode felsorols rja le, ahogyan azt a 13-2 tblzat mutatja be. 13-2 tblzat: TcpRelayConnectionMode felsorols rtk
Relayed

Lers Minden kommunikci a Service Bus felhn keresztl trtnik. A sikeres kapcsolat kiptse utn a Relay szolgltats vgzi az adatok kt fl kztti ktirny tovbbtst. A kezdeti kommunikci a publikus felhn keresztl indul. A sikeres kapcsolat felptst kveten a kliens s a szerver a Service Bus felgyeletvel megprbl kzvetlen csatlakozst felpteni. Ha a kapcsolat ltrehozsa sikeres, a kommunikci automatikusan itt folytatdik tovbb, zenet- s adatveszts nlkl. Ha a prblkozs sikertelen, az adatok tovbbtsa a Relayed mdnak megfelelen trtnik tovbbra is.

Hybrid

A Relayed md az alaprtelmezett, a Hybrid md belltsval utastod a Relay szolgltatst a kzvetlen kapcsolat felptsnek engedlyezsre. Az engedlyezett kapcsoldsi mdot a NetTcpRelayBinding kts ConnectionMode tulajdonsgn keresztl llthatod be programozottan, illetve ahogy a kvetkez plda mutatja, konfigurcin keresztl:

268

13. PaaS Szolgltatsbusz

<bindings> <netTcpRelayBinding> <binding name="default" connectionMode="Hybrid" /> </netTcpRelayBinding> </bindings>

A Hybrid kapcsoldsi md kpes kzvetlen kapcsolatot felpteni akr eltr NAT szerverek mgtt elhelyezked felek kztt is. A kapcsolat feldertshez szintn csak kimen kapcsolatokat s gyors NAT traversal algoritmust hasznl. Ezrt annak ellenre, hogy az adott hlzati infrastruktra ezt engedn, nincs garancia a direkt kapcsolat kialaktsra.

Egyirny zenetklds s esemnyek


Az eddig megismert ktsek mellett a Service Bus API biztost egy specilis, csak itt rtelmezett kommunikcis mdot is. A NetOnewayRelayBinding s a NetEventRelayBinding ktsek az zenetek tovbbtst csak egy irnyba, a kliens fell a szolgltats fel tmogatjk. Egyirny kapcsolatok esetn a szolgltatsok nem trhetnek vissza semmilyen vlasszal a kliensek zeneteire. Mivel az egyirny kapcsolatokat kismret zenetek gyors tovbbtsra talltk ki, egy zenet maximlis mrete nem haladhatja meg a 60 Kbyte mretet.
Egyirny csatorna hasznlatakor fontos tudnod, hogy a hibk visszajelzsre sincs lehetsg, gy a kliens oldal arrl sem rtesl, ha az zenet fogadsa nem volt lehetsges!

Milyen esetekben clszer ezen megszortsok ellenre mgis hasznlnod? Ilyen kts hasznlatakor a kliens az zenet elindtst kveten folytatja a futst, nem vrakozik az zenet hlzaton val tovbbtsra s arra, hogy azt a szerver feldolgozza, gy megakads nlkl dolgozhat tovbb. Minden olyan esetben rdemes megfontolni ennek hasznlatt, amikor nem pl zletileg kritikus folyamat az zenet megrkezsre s feldolgozsra. Egy tipikus felhasznlsi eset lehet a hossz feldolgozsi folyamatokrl rkez gyakori sttuszzenetek kezelse. Ha valamely zenet nem rkezik meg a fogad oldalra, annak rtkt a kvetkez llapotjelents vagy a folyamat vgt jelz megbzhatan tovbbtott zenet gyis fellrja. Az egyirny zenetek tovbbtsra optimalizlt ktst a Microsoft.ServiceBus nvtrben definilt NetOnewayRelayBinding osztly valstja meg. Hasznlathoz a szolgltats tervezsekor be kell tartanod pr alapvet szablyt, amire a 13-4 lista mutat be egy egyszer pldt. 13-4 lista: Minta egyirny szolgltats interfszre (IStatusService.cs)
[ServiceContract] public interface IStatusService { [OperationContract(IsOneWay = true)] void TaskStatus(string id, TimeSpan estimatedTimeLeft); }

Figyeld meg, hogy a szolgltats metdusnak visszatrsi rtke void tpus, azaz nem tr vissza egyetlen rtkkel sem! A szolgltats mvelett dekorl OperationContract attribtum IsOneWay tulajdonsgt az igaz (true) rtkkel kell inicializlni! A NetEventRelayBinding az egyirny zenetklds tovbbgondolsa az esemnyek hasznlatra. Minden tulajdonsgban megegyezik a NetOnewayRelayBinding ktssel, valjban abbl rkldik. Az egyetlen klnbsg, hogy megengedi ugyanazon a vgpont cmen tbb szolgltats kapcsoldst is. gy a kliensek ltal kldtt zenetet egyszerre tbb szolgltats is fogadja, a C# nyelvben megismert esemny feliratkozsokhoz hasonlan.

269

13. PaaS Szolgltatsbusz

Rendszerkapcsoldsi md
A Service Bus Relay szolgltatsn keresztl csatlakoz szolgltatsok a Relay szolgltats felhben fut vgpontjhoz csatlakoznak. Ezt a kapcsolatot hvjuk irnyt (control) kapcsolatnak. Amikor egy kliens kezdemnyezi a csatlakozst a szolgltatshoz a Service Bus vgponton keresztl, egy irnyt zenet rtesti a szolgltatst, hogyan ltestsen kapcsolatot a vgponton vrakoz klienssel. Alaprtelmezs szerint a Relay ktsek az irnyt kapcsolat ltrehozsra folyamatosan nyitott, ktirny TCP kapcsolatot hasznlnak. Ha a szolgltatst olyan krnyezetben zemelteted, ahol ez nem megengedett, akkor egy konfigurci megvltoztatsval a HTTP/HTTPS hasznlatra is lehetsged van. A hasznlt kapcsoldsi md kivlasztsra a ConnectivityMode felsorols definilja a hrom lehetsges rtket: AutoDetect, Tcp s Http. Az AutoDetect az alaprtelmezett bellts, ilyenkor amennyiben lehetsges a szolgltats Tcp, egybknt pedig Http mdot vlaszt automatikusan. A kapcsoldsi mdot csak alkalmazs szinten vltoztathatod meg, a statikus ServiceBusEnvironment osztly SystemConnectivity tulajdonsgn keresztl, ahogy azt az itt bemutatott pldban is lthatod:
... ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Http; var host = new ServiceHost(typeof(RandomQuotesService)) host.Open(); ...

A kapcsoldsi md minden vgpont mkdst befolysolja, ezrt ha csak teheted, hasznld az alaprtelmezett AutoDetect mdot! A HTTP kommunikci nem tmogatja ugyanazon csatorna tbb clbl val folyamatos fenntartst, gy a szolgltats a TCP megoldssal ellenttben egy jval agresszvabb, folyamatos visszakrdezssel (polling) vrja az zeneteket. A Service Bus s a szolgltats kztti kommunikci szmodra legtbbszr transzparens, azzal csak hibakeressi clbl kell foglalkoznod. A hibakeressben segtsgedre lv eszkzkrl a fejezet vgn olvashatsz.

Service Bus Messaging


A Service Bus Relay szolgltatsa egy teljes rtk ISB megvalsts, ha szolgltatsok s kliensek kztti zenetek tovbbtst kell megvalstani interneten s felhn keresztl, de nem ad vlaszt a kommunikl felek ideiglenes sztkapcsolsra, zenetszrsra s terhels megosztsra. Ezrt a Service Bus 1.5 -s verzijtl elrhet a tarts zenetsorok s feliratkozsok kezelsnek megvalstsa. A tovbbtott zenetekkel (relayed messages) szemben a kzvettett zenetek (brokered messages) aszinkron, ideiglenesen sztkapcsolt kommunikcit valstanak meg. A Service Bus megbzhatan s tartsan trolja az zeneteket, amg azok feldolgozsra nem kerlnek. A szolgltatsokat zenetfogyasztknt ( message consumer), a klienseket pedig zenetgyrtknt (message producer) definilja. A kt fl kztt a Service Bus zenetkzvettknt (message broker) zenetsorokat (queues) s zenet tmkat (topics) biztost. A csatolsmentes (decoupled) kommunikcinak rengeteg elnye van, pldul a szolgltatsoknak elegend csak akkor a kvetkez zenetrt fordulniuk, ha mr kszen llnak annak feldolgozsra. Kzvetlenl tovbbtott zenetek esetn a kommunikcit a kld fl kezdemnyezi, kzvetlen nyomst helyezve a fogadra. A fogad flnek kszen kell llnia az zenet fogadsra s feldolgozsra a kontraktusok ltal elrt idtllpsi rtken bell. Kzvettett zenetek esetn a kld zenett az zenetkzvett fogadja s trolja, amg az zenet fogyasztja kszen nem ll a kvetkez zenet feldolgozsra. zenetsorokat az Azure Queue Service is biztost szmodra, de milyen esetekben rdemes mgis a Service Bus megvalstst vlasztanod? Akkor, ha az albbi fejlett szolgltatsok valamelyike szksges: Hibs s elvlt zenetek automatikus kezelse Dupliklt zenetek detektlsa

270

13. PaaS Szolgltatsbusz Biztonsgos azonosts az Access Control szolgltatson keresztl, s eltr jogosultsgi szintek biztostsa Tranzakcik kezelse, tbb zenet kldse s fogadsa egy atomi mveletben Fontos az zenetek garantlt First-In-First-Out (FIFO) sorrendben val feldolgozsa WCF s WF tmogats Abban az esetben, ha kt Windows Azure szerepkr kztti egyszer kommunikcit kell megvalstanod, s nincs szksged az itt felsorolt kpessgek valamelyikre, akkor az Azure Storage megvalsts elegend.
A kt Queue megvalsts alapos sszehasonltst megtallod a http://msdn.microsoft.com/enus/library/windowsazure/hh767287.aspx cmen.

A kzvettett zenet hasznlathoz elszr egy Service Bus szolgltats nvtr ltrehozsra lesz szksged a mr megismert mdon. A menedzsment feladatok mint pldul zenetsor ltrehozsa vagy trlse elvgzshez nevestened kell a Service Bus vgpont cmt s az azonostsi adatokat. Ezeket az informcikat tartalmaz kapcsoldsi karakterlnc felptse az albbi:
Endpoint=sb://[namespace].servicebus.windows.net/;SharedSecretIssuer=[issueed];SharedSecretValue=[key]

Ezt a kapcsoldsi karakterlncot elhelyezheted a .NET alkalmazsod konfigurcis llomnyban (*.config) vagy az Azure szerepkr konfigurcijban (*.cscfg s *.csdef). A .NET konfigurcis rendszernek hasznlatakor ezt a belltst az <appSettings> bejegyzs alatt kell elhelyezned. Brmelyik megoldst is vlasztod, a Microsoft.WindowsAzure nvtr CloudConfigurationManager statikus osztlya segtsgvel red el legegyszerbben:
var connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");

Br a Microsoft.ServiceBus NuGet csomagbl val teleptse esetn a Visual Studio a szksges mintabejegyzst automatikusan elhelyezi szmodra az alkalmazs konfigurcijban, Azure szerepkrk esetn helyesebben jrsz el, ha ezt az informcit a szerepkr konfigurcijban trolod. Az zenetsorok s tmk kezelshez szksges mveleteket a Microsoft.ServiceBus nvtr NamespaceManager osztly pldnyn keresztl rheted el. A szksges pldnyt a kapcsoldsi karakterlnc alapjn legegyszerbben az osztly statikus CreateFromConnectionString metdusval hozhatod ltre, ahogy azt a plda is mutatja:
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);

Ha halad belltsokra vagy a Shared Secret megoldstl eltr azonostsi lehetsgre van szksged, akkor az osztly valamely konstruktort hasznld!

Az zenetek felptse
A kzvettett zenetekkel megvalstott kommunikci alapja a Microsoft.ServiceBus.Messaging nvtrben deklarlt BrokeredMessage osztly. Ez az osztly definilja azokat a tulajdonsgokat s metdusokat, amelyek az zenetek lershoz s feldolgozsukhoz szksges. Minden zenet trzsbl s fejlcbl ll, ahogy azt a 13-6 bra mutatja.

271

13. PaaS Szolgltatsbusz

BrokeredMessage (256Kbyte) Fejlc (64kbyte)


MessageId ContentType Label egyb tulajdonsgok Properties Name Name ... Value Value

Trzs

13-6 bra: A BrokeredMessage zenet felptse

Az zenet trzse (message body) hordozza a cmzett szmra fontos tartalmat. Ez a tartalom br az zenetkzvett szmra nem lthat gyakran titkostott. Nem ritka viszont az olyan zenet, aminek nincs tartalma, ilyenkor maga az zenet tnye s az zenet fejlcben, tulajdonsgaiban lert adatok hordozzk a szksges informcit. A BrokeredMessage osztly konstruktorait a 13-3 tblzat foglalja ssze. 13-3 tblzat: A BrokeredMessage osztly konstruktorai Konstruktor vltozat
BrokeredMessage() BrokeredMessage(Object)

Lers zenettrzs nlkli pldnyt hoz ltre. Az zenet trzseknt a paramterben tadott objektumot sorostja. A sorostshoz a WCF szolgltatsoknl megszokott DataContractSerializer megvalstst hasznlja. Az zenet trzseknt szintn a paramterben tadott objektumot sorostja, m a sorostshoz a msodik paramterben vrt XmlObjectSerializer pldnyt hasznlja. zenettrzsknt az els paramterknt tadott binris adatfolyamot hasznlja. Ha a msodik paramternek true rtket adsz t, az zenet sorostsnak vgn lezrja az adatfolyamot.

BrokeredMessage(Object, XmlObjectSerializer)

BrokeredMessage(Stream, Boolean)

Az zenetek trzse megvltoztathatatlan az zenet ltrejtte utn. Az zenet trzsnek kiolvassra a generikus GetBody<T>() metdust hasznld, ahogy azt a plda is mutatja:
var messageReceived = receiver.Receive(); var body = messageReceived.GetBody<string>();

Minden zenet trzse csak egyszer olvashat ki, gy tbbszri felhasznlshoz az rtkt el kell mentened egy vltozba. Jelenleg a Service Bus ltal tmogatott legnagyobb zenetmret 256 Kbyte, amibe beleszmt a szabvnyos s egyedi tulajdonsgokbl sszeadd fejlc. Ha ennl nagyobb mret zeneteket kell tovbb tanod,

272

13. PaaS Szolgltatsbusz akkor az zenet tartalmt perzisztens trban (pldul Azure Storage vagy SQL Azure adatbzis) helyezd el, s az zenetben az eltrolt tartalom egyedi hivatkozst kldd t! A BrokeredMessage osztly szmos jellemzt elre definil szmodra, ilyen pldul a ContentType, a Label, vagy a MessageId tulajdonsg. Tetszleges felhasznlsi clra pedig a Dictionary<sring, object> tpus Properties tulajdonsgot hasznld! Az zenet fontosabb tulajdonsgait a 13-4 tblzat foglalja ssze. 13-4 tblzat: A BrokeredMessage osztly fontosabb tulajdonsgai Tulajdonsg neve
ContentType MessageId

Lers Szabadon felhasznlhat tulajdonsg. Az zenet tpust rja le szveges formtumban a cmzett szmra. Az zenetek egyedi beazonostsra hasznlt tulajdonsg. Alaprtelmezett mdon minden zenetben egy j GUID rtk szveges reprezentcijval lesz a MessageId tulajdonsg inicializlva, de minden alkalmazs fellrhatja azt sajt bels azonostjval. A tulajdonsg maximlis mrete 128 byte. Szabadon felhasznlhat tulajdonsg. Szabadon felhasznlhat, Dictionary<string, object> tpus sztr tulajdonsg. Az ide mentett kulcs s rtk prok alapjn szrhetnek az zenetek elfizeti. Szabadon felhasznlhat tulajdonsg, amely zenetek sszetartozst jelli. A CorrelationId tulajdonsgra a feliratkozsok gyors, hashtbla alap szrssel vizsglhatnak. sszetartoz zenetek munkamenetnek (session) azonostja. Ha az zenetsor megkveteli a munkamenetek hasznlatt, ennek a tulajdonsgnak ktelez a kitltse. Krs-vlasz alap ktirny kommunikcihoz hasznlhat. Mivel az zenetsorok nem teszik lehetv az zenetre vlaszolst, a kld itt jelezheti a fogad szmra, hogy hol vrja a vlaszzenetet. Krs-vlasz alap ktirny kommunikcihoz hasznlhat. A kld itt jelzi a feldolgoznak, hogy a vlaszzenet SessionId tulajdonsgt milyen rtkre lltsa. Az zenet lettartama TimeSpan formtumban. Alaprtelmezett rtke az zenetsor ltrehozsakor megadott DefaultMessageTimeToLive idintervallum. Egy zenet maximum ennyi ideig vrhat feldolgozsra a rendszerben. Az lettartam lejrtval az zenet trldik, vagy az elvlt zenetek kz lesz thelyezve. Az zenet kzbestseinek szmt mutatja. Ha egy zenetet kiolvasnak a sorbl, de lejr a feldolgozsra biztostott id, vagy feldolgozs nlkl visszahelyezik azt, a rendszer automatikusan meg nveli ezt az rtkt eggyel.

Label Properties

CorrelationId

SessionId

ReplyTo

ReplyToSessionId

TimeToLive

DeliveryCount

Ne feledd, hogy az zenet kldsekor ezeket az rtkeket az zenet trzshez hasonlan sorostani kell, gy erre alkalmas tpusokat hasznlj! Minden tulajdonsg az zenet fejlcben lesz sorostva, annak teljes mrete nem haladhatja meg a 64 Kbyte-ot!

273

13. PaaS Szolgltatsbusz

zenetsorok hasznlata
zenetsorok hasznlathoz elszr ltre kell hoznod egyet a mr megismert NamespaceManager osztly hasznlatval, ahogyan azt a kvetkez pldban lthatod:
var connectionString = CloudConfigurationManager.GetSetting( "Microsoft.ServiceBus.ConnectionString"); var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString); var sampleQueuePath = "samples/testqueue"; if (!namespaceManager.QueueExists(sampleQueuePath)) { namespaceManager.CreateQueue(sampleQueuePath); }

Itt a mr megismert mdon pldnyostjuk az zenetsorok kezelshez szksges NamespaceManager osztlyt. A sampleQueuePath vltozba elmentjk a ltrehozni kvnt zenetsor nevt s relatv tjt. Ez az rtk megegyezik a Service Bus nvtereknl lert relatv erforrs tvonallal. Vgl megvizsgljuk, hogy ltezik-e mr azon az tvonalon zenetsor, s ha nem, akkor a CreateQueue metdussal ltrehozzuk azt az adott tvonalon s az alaprtelmezett belltsokkal. A CreateQueue metdusnak ltezik egy msik vltozata, amelyik a Microsoft.ServiceBus.Messaging nvtr QueueDescription osztly egy pldnyt vrja. Ennek a hasznlatval definilhatod az zenetsor belltsait. A fontosabb belltsokat a 13-5 tblzatban tallod. 13-5 tblzat: zenetsor belltsi lehetsgek a QueueDescription osztlyon keresztl Tulajdonsg neve
DefaultMessageTimeToLive

Lersa Egy zenet alaprtelmezett lettartamt adja meg, ha egy zenet nem rendelkezik arrl. Egy zenet lettartama a Service Bus szolgltatshoz trtn megrkezsnek pillanatban kezddik el, s az itt megadott ideig tart. Az lettartam lejrtval az zenet elvl, s trlsre kerl. Az elvlt zenetek trlds helyett automatikusan a $DeadLetterQueue zenetsorba kerlnek tovbbi feldolgozsra. Dupliklt zenetek keressnek idkerete. A rendszer minden zenetnl ennyi idvel visszamenleg ellenrzi, hogy nem egy mr korbban megrkezett zenet ismtlsrl van-e sz. A dupliklt zenetek keressnek engedlyezse. Egy zenet maximum az itt megadott szm esetben kzbesthet feldolgozs nlkl. Ennyi kzbests utn az zenet automatikusan trldik, vagy az elvlt zenetek kz msoldik. A munkamenetek kezelst engedlyezi. Ha engedlyezve van, az zenetsort rni vagy olvasni csak a munkamenetekhez kapcsoldan lehet.

EnableDeadLetteringOnMessageExpiration

DuplicateDetectionHistoryTimeWindow

RequiresDuplicateDetection MaxDeliveryCount

RequiresSession

274

13. PaaS Szolgltatsbusz

Tulajdonsg neve
LockDuration

Lersa Az zenetek zrolsnak maximlis idejt adja meg. Egy zenet alaprtelmezett mdon 1, maximlisan 5 percig zrolhat. Csak fogadott zeneteknl elrhet, az zenet rendszer ltal biztostott bels zenetsoron belli sorszma. Ksbbre halasztott zeneteknl hasznlhat.

SequenceNumber

Ha ltrehoztuk az zenetsort, az zenetek kldshez s fogadshoz szksg van egy QueueClient pldnyra, melyet az osztly statikus CreateFromConnectionString metdusval hozhatsz ltre:
var queueClient = QueueClient.CreateFromConnectionString(connectionString, sampleQueuePath); var message = new BrokeredMessage("zenet trzs"); message.Properties["Test"] = true; queueClient.Send(message);

Els lpsben ltrehozzuk a queueClient vltozba az zenet kldshez szksges QueueClient pldnyt. Az zenetek szinkron kldshez a Send metdus hasznlhat, amelynek egy bemen paramtere egy BrokeredMessage pldnyt vr. Lehetsged van egyszerre tbb zenet egy mveletben val elkldsre a SendBatch metdussal, illetve mindkt szinkron metdusnak ltezik aszinkron vltozata. A BrokeredMessage osztly egy bels adatfolyamot (Stream) hasznl az zenet tartalmnak tovbbtsra. Ez az adatfolyam a kiolvass utn mr nem hasznlhat, ezrt minden pldny csak egyszeri zenetkldsre alkalmas. Ha egy zenetklds sikertelen, pldul tmeneti hiba vagy idtllps miatt, az ismtelt kldshez egy j BrokeredMessage pldnyt kell gyrtanod. zenetek kiolvassra a legegyszerbb lehetsg az egy lpses ReceiveAndDelete md. Ilyenkor az zenet kiolvassnak pillanatban az zenet azonnal trldik is az zenetsorbl. Ha problma van az zenet feldolgozsa sorn, pldul a feldolgoz alkalmazs jraindul, az zenet elveszik. Ezrt ezt a mdot akkor rdemes hasznlnod, ha az zenetek feldolgozsa nem fontos, vagy egyb megoldssal garantlod azt. A kvetkez plda mutatja be, hogy hasznld a ReceiveAndDelete mdot alkalmazsaidban.
var queueCleint = QueueClient.CreateFromConnectionString(connectionString, sampleQueuePath, ReceiveMode.ReceiveAndDelete); while (true) { var message = queueCleint.Receive(); if (message != null) { Process(message); } }

Az zenetek olvasshoz hasznlt QueueClient pldnyt a ReceiveMode.ReceiveAndDelete felsorols rtkvel kell ltrehozni. A queueClient.Receive() metdushvs az zenet kiolvassnak pillanatban trli az zenetet az zenetsorbl. Az zenet kiolvassa utn az zenet feldolgozsa nem halaszthat ksbbre (Defer vagy Abandon), s az nem jellhet hibs zenetknt ( DeadLetter) sem. Az zenetek fogadsnak msik, alaprtelmezett mdja a ktlpses PeekLock md. Ilyenkor az zenet kiolvasskor zrolt (Locked) llapotba kerl, s nem olvashat ki a feldolgozk szmra. Az zenet egszen addig ebben az llapotban marad, amg az zenet zrolja meg nem vltoztatja azt, vagy lejr az zenet zrolsnak ideje. A lejrat esetn az zenet jra lthatv vlik. Egy zenet llapotnak megvltoztatsra a BrokeredMessage osztly albbi metdusai hasznlhatak: Complete() Az zenet kszknt lesz megjellve, s trldik. Akkor hasznld, ha az zenet feldolgozsa sikeres volt!

275

13. PaaS Szolgltatsbusz Abandon() Az zenet zrolsnak feloldsa, ami utn az zenet ismtelten kszen ll a kiolvassra. A metdus opcionlis paramtereknt lehetsged van az zenet Properties kollekcijnak megvltoztatsra. Defer() zenet megjellse ksbbi feldolgozsra. Az zenet visszakerl a sorba, de onnan csak a bels SequenceNumber azonostja alapjn olvashat ki. Ennek az azonostnak a megjegyzse a te feladatod. Szintn lehetsged van a Properties kollekci megvltoztatsra is. DeadLetter() Az zenetet hibsknt jelli meg, s thelyezi az elvlt zenetek sorba tovbbi pldul naplz feldolgozsra. Lehetsged van a tulajdonsgok megvltoztatsra vagy az elvls megindokolsra. Az zenetek PeekLock mddal val kiolvassra a 13-5 lista mutat pldt. Lthat, hogy a listban a QueueClient pldny a ReceiveMode.PeekLock rtkkel lett ltrehozva. Ez az rtk alaprtelmezett, gy elhagyhat. A kdrszlet az zenetek kezelsre kt fontos mintt is mutat. Els lpsben megprblja kiolvasni az zenet Order tpus trzst, s ha ez nem sikerl, akkor az zenetet a DeadLetter() metdushvssal hibsnak jelli. Majd megprblja feldolgozni az zenetet. Ha az zenet feldolgozsa sorn tmeneti kivtel trtnik, az zenetet az Abandon() metdushvssal visszateszi a sorba ismtelt feldolgozsra. 13-5 lista: PeekLock zenetolvass
var queueCleint = QueueClient.CreateFromConnectionString(connectionString, sampleQueuePath, ReceiveMode.PeekLock); while (true) { var message = queueCleint.Receive(); if (message != null) { try { Request request = null; try { request = message.GetBody<Order>(); } catch (SerializationException se) { message.DeadLetter("Nem megfelel zenet", se.Message); } if (request != null) { Process(request); message.Complete(); } } catch { message.Abandon(); } } }

Minden zenet az zenetsor ltrehozsakor megadott MaxDeliveryCount szm alkalommal helyezhet vissza az Abandon() metdushvssal. Ha egy zenet elri a kzbestsek maximlis szmt, az zenet automatikusan trldik, vagy az elvlt zenetek kz msoldik. Minden zenet feldolgozsra az zenetsor ltrehozsakor megadott LockDuration idintervallum ll rendelkezsre, amely alaprtkben 60 msodperc s legfeljebb 5 perc. Ezt az rtket az zenetsor ltrehozsa utn mr nem lehet megvltoztatni! Ha egy zenetet nem sikerl feldolgozni az id lejrta eltt, az zenet visszakerl a sorba, s ismtelten kiolvashat. Ilyenkor minden tovbbi llapotvltoztats

276

13. PaaS Szolgltatsbusz (pldul Complete()) hibt fog jelezni. Fontos, hogy ezt az rtket helyesen vlaszd meg, klnben elkpzelhet, hogy egy zenetet a sikeres feldolgozs ellenre ismtelten megkapsz jabb feldolgozsra! Egy zenet zrolsnak lejrati idejt tetszleges szm alkalommal meghosszabbthatod a BrokeredMessage osztly RenewLock() metdusnak meghvsval. Minden hvs jraindtja a szerver oldali visszaszmllst. Ha az zenet feldolgozst nem tudod garantlni az zenet zrolsra biztostott idn bell, egyedi megoldst kell vlasztanod. Ha egy zenet feldolgozst ksbbre kvnod halasztani, pldul mert alacsony priorits, azt a Defer() metdus hvsval teheted meg. Ilyenkor az zenet visszakerl az zenetsorba, s o nnan csak a SequenceNumber azonostja alapjn olvashat ki. Ha az zenetet nem olvasod ki a TimeToLive tulajdonsg ltal definilt lettartama alatt, akkor az zenet automatikusan trldik, vagy az elvlt zenetek sorba msoldik. A ksbbre halasztott zenetek azonostjnak megjegyzse s trolsa az alkalmazs feladata, ahogy azt az albbi plda is mutatja:
var deferredMessages = new Queue<Int64>(); while (true) { var message = queueClient.Receive(TimeSpan.FromMinutes(1)); if (message != null) { if (message.Properties["priority"] == "low") { deferredMessages.Enqueue(message.SequenceNumber); message.Defer(); } else { Process(message); message.Complete(); } } else if (deferredMessages.Any()) { var sequenceNumber = deferredMessages.Dequeue(); message = queueClient.Receive(sequenceNumber); Process(message); message.Complete(); } }

A fenti plda az egyszersg kedvrt a loklis deferredMessages vltozban trolja az alacsony priorits zenetek bels sorszmt. A QueueClient osztly Receive(TimeSpan) metdusa paramterknt tadott ideig vr zenet rkezsre. Ha rkezett zenet, akkor "priority" tulajdonsga alapjn dnt az zenet feldolgozsrl vagy ksbbre halasztsrl. Alacsony priorits zenet esetn a bels azonostjt megjegyezve ksbbre halasztja azt, majd jabb zenetet olvas. Ha nem rkezett jabb zenet a vrakozsi idn bell, akkor az esetlegesen ksbbre halasztott zenetet ismtelten kiolvassa a sorbl, feldolgozza s lezrja.

Tmk s feliratkozsok
A Service Bus zenetei tmogatjk az zenet tmk (topics) s a feliratkozsok (subscriptions) kezelst. Amg az zenetsorok ponttl pontig (point-to-point) kommunikcit tesznek lehetv, azaz minden zenetet pontosan egy cmzett kap meg, addig az zenet tmk lehetv teszik a tbbszrs feliratkozsokat, az zenetszrst s a particionlst. A tmk s feliratkozsok koncepcionlis mkdst a 13-7 brn lthatod.

277

13. PaaS Szolgltatsbusz

zenet kldk

Service Bus Feliratkozs 1.

zenet fogadk

Kliens alkalmazs

Szolgltats

Tma 1 Feliratkozs 2. Kliens alkalmazs Szolgltats

Tma 2 Kliens alkalmazs

Feliratkozs 3. Szolgltats

13-7 bra: Tmk s feliratkozsok koncepcionlis mkdse

A modell mkdst legegyszerbben egy vals problmn keresztl rtheted meg. Kpzelj egy rtkestsi helyeken mkd alkalmazst, amely minden j rendelsrl egy zenetet kld. Ezt az zenetet a szmlzsnak, a raktrnak s esetleg a kzponti statisztikai nyilvntartsnak is fogadnia kell. A feliratkozsok modellje leveszi az rintett szolgltatsok nyilvntartsnak felelssgt a kliensalkalmazsokrl. Minden szolgltats feliratkozik az t rint tmkra, s a rendszer az eredeti zenet egy msolatt eljuttatja azokhoz. Az zenettmk az zenetsorhoz hasonlak, azzal a klnbsggel, hogy nincs mveletk az zenetek kiolvassra. Valjban minden tma mgtt egy-egy zenetsor van, amelyhez tbb feliratkozs tartozhat. A tmk mkdse megegyezik az zenetsorokval, gy az j zenetek kldse is nagyon hasonl, ahogyan az albbi plda is mutatja:
var connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString"); var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString); var ordersTopic = "samples/orders"; if (!namespaceManager.TopicExists(ordersTopic)) { namespaceManager.CreateTopic(ordersTopic); } var topicClient = TopicClient.CreateFromConnectionString(connectionString, ordersTopic); topicClient.Send(new BrokeredMessage(order));

Egy tma ltrehozsa megegyezik az zenetsorokkal, azzal a klnbsggel, hogy a halad bellts okat a TopicDescription osztly egy pldnyval adhatod meg. zenetek kldsre tmk esetn a TopicClient osztly hasznlhat. Amg a QueueClient osztly egyszerre rtelmezi az IMessageSender s IMessageReceiver interfszeket, addig a TopicClient csak az zenetek kldst ler interfszt valstja meg. Minden tmhoz nulla, egy vagy tbb feliratkozs tartozhat. Minden feliratkozst egy -egy virtulis zenetsorknt kell elkpzelni, ahol a feliratkozs szrsi feltteleinek megfelel zenetek egy -egy msolata tallhat. Feliratkozs ltrehozsra s zenetek olvassra az albbi kdrszlet mutat be egy egyszer pldt:
var allOrders = "AllOrders"; if (!namespaceManager.SubscriptionExists(ordersTopic, allOrders)) { namespaceManager.CreateSubscription(ordersTopic, allOrders); }

278

13. PaaS Szolgltatsbusz

var subscriptionClient = SubscriptionClient.CreateFromConnectionString(connectionString, ordersTopic, allOrders, ReceiveMode.PeekLock); while (true) { var orderMessage = subscriptionClient.Receive(); Process(orderMessage); orderMessage.Complete(); }

Minden feliratkozs az adott tmn bell egyedi nvvel rendelkezik. Ez a nv segt a feliratkozsok megklnbztetsben. A pldban a feliratkozs neve az allOrders vltozba van elmentve. Az zenetek olvasshoz az IMessageReceiver interfszt megvalst SubscriptionClient osztlyt kell hasznlni. A SubscriptionClient mkdse megegyezik az zenetsoroknl lertakkal. Minden feliratkozshoz lehetsged van szrs definilsra, amellyel az adott tmra rkez zenetek krt lehet tovbb szkteni. A legrugalmasabb szrst a Microsoft.ServiceBus.Messaging nvtr SqlFilter osztlya biztostja.
A feliratkozsok ltal tmogatott SQL szrsek pontos lerst megtallod a http://msdn.microsoft.com/en-

us/library/windowsazure/microsoft.servicebus.messaging.sqlfilter.sqlexpression. aspx
cmen.

A szrsi felttelt az SQL nyelvben megszokott mdon, az zenetek tulajdonsgaira fogalmazhatod meg. Ahhoz, hogy ezt megtehesd, az zenetek tulajdonsgait ki kell tltened ltrehozskor. Az alaprtelmezett tulajdonsgok mellett az ltalnos cl Properties gyjtemnyt is hasznlhatod. A kvetkez plda egy ilyen zenet sszelltst mutatja be:
var order = new Order() { Id = Guid.NewGuid(), Value = 5000, PaymentType = PaymentType.Cash, City = "Budapest" }; var orderMessage = new BrokeredMessage(order); orderMessage.Properties["Value"] = order.Value; orderMessage.Properties["PaymentType"] = order.PaymentType.ToString(); orderMessage.Properties["City"] = order.City; topicClient.Send(orderMessage);

A fenti kd a rendels adatai alapjn 3 tulajdonsgot llt be, rendre a rendels rtkt, a fizets tpust (pldul kszpnzes) s az rtkests helyt. Ezen hrom tulajdonsg alapjn ltrehozhat az a feliratkozs, amely a plda kedvrt a nagy sszeg budapesti kszpnzes vsrlsokrl szl zeneteket kapja meg:
var subscriptionName = "suspiciousOrders"; if (!namespaceManager.SubscriptionExists(ordersTopic, subscriptionName)) { var filter = new SqlFilter("Value > 1000000 AND City = 'Budapest' AND PaymentType = 'Cash'"); namespaceManager.CreateSubscription(ordersTopic, subscriptionName, filter); }

279

13. PaaS Szolgltatsbusz Az SqlFilter hasznlata mellett lehetsged van a jval egyszerbb, de ezltal hatkonyabb CorrelationFilter hasznlatra is, amely a BrokeredMessage osztly CorrelationId tulajdonsga alapjn szr. A tmk s feliratkozsok mkdsrl ltalnosan elmondhatak az albbi szablyok: Ha egy tmra kldtt zenetre egy darab feliratkozs illeszkedik, akkor a mkds megegyezik az zenetsorokval. Ha tbb feliratkozs illeszkedik egy zenetre, akkor minden feliratkozs megkapja az zenet egy msolatt. Ha egy feliratkozs sem illeszkedik, az zenet figyelmen kvl lesz hagyva, s trldik.

zenetek korrelcija
Aszinkron zenetekkel trtn kommunikci esetn gyakran merl fel problmaknt az sszetartoz zenetek kezelse. Kt zenetet sszetartoznak tekinthetnk, ha azok egyttesen alkotnak egy kzs zenetcsoportot, vagy ha az egyik zenet egy msik zenetre adott vlaszknt keletkezik. sszetartoz zenetek jellsnek legegyszerbb mdja a szabadon felhasznlhat CorrelationId tulajdonsg. Ez a tulajdonsg a CorrelationFilter segtsgvel szrhet, s alapvet zenetcsoportostsi lehetsgeket biztost. Egy krs-vlasz tpus zenetvlts esetn a vlasz zenet CorrelationId tulajdonsgnak rtkl adhatod a krs zenet MessageId tulajdonsgt. A tbb sszetartoz zenet jellsre leggyakrabban hasznlt tulajdonsg a SessionId. Ennek kezelshez engedlyezni kell a tma vagy zenetsor belltsainl a munkamenet hasznlatt a RequiresSession tulajdonsgon keresztl. Ha a munkamenet hasznlata nincs engedlyezve, akkor nem lehet olyan zenetet kldeni, amelynl ki van tltve a SessionId tulajdonsg, s ez hibt okoz. Ha engedlyezve van, akkor ennek a tulajdonsgnak a kitltse ktelez. Az albbi kdrszlet mutat pldt feliratkozs ltrehozsra engedlyezett munkamenet kezelsre:
namespaceManager.CreateSubscription( new SubscriptionDescription(ordersTopic, allOrders) { RequiresSession = true, });

sszetartoz zenetnek tekinthetjk pldul egy rtkestsi pontban trtnt rendels rszleteit, ahol az egyes zenetek korrelcija a rendels azonostja.
foreach (var orderLine in order.Lines) { topicClient.Send( new BrokeredMessage(orderLine) { SessionId = order.Id, }); }

Ilyenkor az zenetek olvasst a szoksos kzvetlen md helyett az AcceptMessageSession() metdus hvsval kezdemnyezhetjk. A metdus paramter nlkli vltozata az zenetsorban els zenet session azonostja szerinti MessageSession pldnnyal tr vissza. Lehetsged van paramterben tadni az olvasni kvnt session azonostjt. Egy munkamenet zeneteinek fogadsa utn az egyes zeneteket az gy ltrejtt MessageSession pldnyon keresztl olvashatod ki, ahogy azt a plda is mutatja:

280

13. PaaS Szolgltatsbusz

while (true) { var messageSession = subscriptionClient.AcceptMessageSession(); if (messageSession != null) { BrokeredMessage message = null; while((message = messageSession.Receive(TimeSpan.FromMinutes(1))) != null) { Process(message); message.Complete(); } } }

A MessageSession hasznlata garantlja, hogy az sszetartoz zeneteket egyms utn, pldul ms rendelsbl rkez zenetek nlkl olvashatod ki. A MessageSession osztly SetState(Stream) metdusval lehetsged van az adott munkamenet llapotnak elmentsre. gy egy esetleges alkalmazshiba esetn a munkt ott folytathatod, ahol abbahagytad. A munkamenet llapotnak elmentst s az aktulis zenet lezrst elvgezheted egy tranzakciban, a TrainsactionScope osztly hasznlatval, m ez a plda tlmutat a fejezet keretein.

ACS integrci s zenetbiztonsg


Az internet s a felh kapcsn leginkbb a biztonsg miatt aggdhatunk, klnsen rzkeny adataink tartalmnak esetleges lehallgatstl flhetnk, mikzben azok publikus hlzatokon utaznak. A Service Bus szolgltatst megalkotsakor teljes mrtkben integrltk az Azure Access Control szolgltatssal. Amg az zenetfogad szolgltatsoknak ktelezen t kell esnik egy azonostson, addig az zenetkld kliensek opcionlisan felmenthetk ez all. A szolgltatsok s kliensek eltr azonostsi mdszert is alkalmazhatnak. A Service Bus azonosts egyszerstett folyamatt a 13 -8 brn lthatod.

e ls ny g en L) i n M ke et To v t, SA nd st k ecre e t S #S 1) azon ared h ,S T (SW


n ke To

Access Control Service

a) e s yl n n ig e n et ke v To st k en t ist os #L zon a
To ke n

c) #Listen Token kirtkelse, kapcsolat engedlyezse Service Bus Relay / Messaging


Token

b) #Listen token kldse


Token

Kliens / Kld

Szolgltats / Fogad

zenet 2) zenet s Token kldse

3) A Token kirtkeldik, s eltvoltsra kerl az zenetrl

zenet 4) Az zenet tovbbtsra kerl a fogad fel

13-8 bra: Service Bus azonosts egyszerstett folyamata

A kliens azonosts folyamatnak lpsei az albbiak: 1. A kliens elkldi az azonostsi krst az ACS fel. Az azonostsi krs trtnhet Shared Secret alapjn vagy valamely azonossgszolgltattl beszerzett SWT vagy SAML token szerint. Sikeres azonostst kveten az ACS egy #Send claimet tartalmaz tokent llt ki a kliens szmra. A kliens elkldi az zenetet a Service Bus fel, az zenet fejlcben a megszerzett #Send tokennel. A Service Bus kirtkeli az zenetben tallhat tokent, s ha a kliens jogosult zenet kldsre, eltvoltja azt az zenetbl.

2. 3.

281

13. PaaS Szolgltatsbusz 4. A Service Bus tovbbtja az zenetet a szolgltats fel.

A szolgltats azonostsnak folyamata az albbi: a) A szolgltats azonostsi krst kld az ACS fel, hogy egy #Listen claimet tartalmaz tokent szerezzen. b) A szolgltats csatlakozik a Service Bus vgponthoz, s a csatlakozsi krssel kldi a megszerzett tokent. c) A Service Bus kirtkeli a tokent, s ha a szolgltats jogosult a csatlakozsra, felpti a kapcsolatot. Minden szolgltats rendelkezhet gy, hogy nem vrja el a kliensek azonostst a Service Bus fel. Fggetlenl attl, hogy ezt megkveteli-e a szolgltats vagy sem, a kliensek tovbbi azonostsra ktelezhetek a szolgltats fel. A kliensek Service Bus fel trtn azonostsnak ktelezsgt a Microsoft.ServiceBus nvtr RelayClientAuthenticationType felsorolsa rja le. Alaprtelmezett rtk a RelayAccessToken, amely megkveteli az azonostst, a None rtk pedig engedlyezi az azonosts nlkli csatlakozst. A kliensek s szolgltatsok ltal azonostshoz hasznlhat azonostsi mdokat a TransportClientCredentialType felsorols rja le: Saml: Jelzi, hogy a kliens vagy szolgltats egy azonossg szolgltattl beszerzett SAML token alapjn azonostja magt. SimpleWebToken: A kliens vagy szolgltats egy nmaga ltal killtott s az ACS szolgltatsban bekonfigurlt SWT tokennel hitelesti magt. SharedSecret: A kliens vagy szolgltats az ACS portlon bekonfigurlt s a konfigurciban megadott kibocst nv s titkos kulcs alapjn azonostja magt. Unauthenticated: Csak a kliensek esetn rtelmezett. Jelzi, hogy a kliens nem azonostja magt, a Service Bus az azonostsi token kvetelse nlkl kldi tovbb az zeneteket. Windows Communication Foundation szolgltatsokat hasznlva termszetesen tovbbra is alkalmazhat minden, az adott ktssel kompatibilis csatorna s zenettitkost megvalsts.
A Service Bus autentikcis s authorizcis lehetsgeirl a http://msdn.microsoft.com/enus/library/windowsazure/hh403962.aspx cmen olvashatsz bvebben.

sszegzs
A Service Bus egy teljes rtk, alkalmazs platformok szles skljt tmogat, Internet Service Bus megvalsts. A Windows Communication Foundation alapokra helyezett megvalsts rvid tanulsi idt s knny hasznlhatsgot biztost a mr megszokott eszkzkkel. Sajt infrastruktrn zemeltetett szolgltatsokhoz legyenek azok brmilyen hlzati krnyezetben a szoros Access Control Service integrci miatt biztonsgos s egyszer a hozzfrs. Az zenetsorok s tmk tmogatsval a lazn kapcsolt, aszinkron alkalmazs-integrcis megoldsok szles sklja trul fel eltted. A Service Bus a Microsoft Azure publikus felhplatform szolgltats rszeknt egyarnt alkalmas nagyvllalati krnyezetek sszekapcsolsra, modern mobil eszkzk s kiszolglk kztti kapcsolat biztos kezelsre s a publikus felhben fut alkalmazsok kztti megbzhat kommunikci megvalstsra.

282

14. PaaS Mobile Services

14. PaaS Mobile Services


Ebben a fejezetben az albbi tmkat ismerheted meg: A Mobile Services felptse, dinamikusan bvl szolgltatskszlete . Milyen esetekben rdemes a Mobile Services-t vlasztani backend megoldsnak? A Mobile Services HTTP protokoll fltt mkd REST API-ja, platformtmogatottsg. Adattrols, felhasznl-azonosts s push notification szolgltatsok. temezett feladatok ltrehozsa. Szerveroldali kd rsa JavaScript nyelven, az API fontosabb fggvnyei, objektumai. Windows Store s Windows Phone 8 klienseket kiszolgl Mobile Services alap szerveroldal ltrehozsa. A most kvetkez fejezetben megismerkedhetsz a Windows Azure Mobile Services -zel (WAMS), mely a Microsoft felhplatformjnak egy j, szerveroldal ksztst megclz knnysly komponense. A ZUMO (Azure Mobile kifejezsbl) kdnev projekt megoldsait megismerve komolyabb backend programozi tuds nlkl is, nagyon rvid fejlesztsi id mellett kpes leszel mobil klienseken fut, egyszerbb alkalmazsokat kiszolgl szerverlogikt pteni. Megismerheted, hogy miben klnbzik a Mobile Services a tbbi Azure backend megoldstl , s milyen esetekben knl hatkony alternatvt velk szemben. A Mobile Services alapfilozfijnak s felptsnek ttekintst kveten a fejezet vgigvezet a szolgltats hasznlatbavtelnek kezdeti lpsein. Ezt kveten rszletesebben is megismerkedhetsz a Mobile Services legfontosabb funkciival: a szerveroldali strukturlt adattrolssal, a felhasznlk autentikcijval s a push notification rtestsek kldsvel. Az elbbieken kvl a fejezetbl azt is megtudhatod, hogyan lehet ltrehozni temezett szerveroldali feladatokat, illetve milyen lehetsgeid vannak az e -mail klds megvalstsra. Ahogy lpsrl lpsre haladva megismered a Mobile Services funkciit, lehetsged lesz elsajttani a hatkony szerveroldali JavaScript kd rsnak nhny bevlt mdszert is. Vgl egy elre elksztett pldaprogram ttekintsvel tfog kpet kaphatsz arrl, hogyan lehet megoldani Windows Store s Windows Phone 8 kliensalkalmazsok kiszolglst a Mobile Services segtsgvel, dediklt szerverkapacits ignybevtele nlkl.

Szerveroldal egyszeren
Napjaink mobil eszkzkre sznt alkalmazsainak dnt hnyada valamilyen formban kommunikl a klvilggal. Az okostelefonokra s tblagpekre rt szoftverek a legritkbb esetben futnak izolltan, szinte mindegyikk funkcionalitsa tlpi a futtat hardver hatrait. Akr a felhasznlk kzti kapcsolattartst, akr egy meghatrozott tma kr csoportosul adatok hatkony elrst tzik ki clul, kzs jellemzjk, hogy az ignyelt informcit valamilyen kls, online adatforrsbl nyerik. Szolgltatsaiknak szerves rszt kpezi az internetes adatbzisok s hrfolyamok elrse, a felhasznl sajt tartalmainak megosztsa klnfle kzssgi csatornkon, s mg hosszan folytathatnnk a felsorolst. Tekintsnk brmilyen pldt is, a rajtuk megjelentett interaktv lmnyt nyjt tartalom szolgltatshoz megfelel szerveroldali erforrsokra van szksg. Egy mobil kliensek kiszolglst vgz szerver ltrehozsa sorn sok hasonl, projektrl projektre ismtld feladat vr megvalstsra. A leggyakoribb recept szerint biztostani kell egy adatbzist s az arra pl CRUD mveleteket nyjt adatelrsi rteget, majd ha ez elkszlt, egy webszolgltatst kell kiajnlani a klvilg fel, amin keresztl a mobil kliensek s a szerver kommuniklhatnak. Ezeken kvl

283

14. PaaS Mobile Services szerveroldalon rendszerint gondoskodni kell az autentikcirl, az egyes fontosabb esemnyekrl pedig e mailben vagy a telefonra kldtt rtestsekkel kell informlni a felhasznlkat.

Mikor vlaszd a Mobile Services komponenst?


Az elzekben felvzolt szolgltatsokat nyjt backend infrastruktra tervezsnl fontolra vehetjk, hogy rdemes-e a felhben hosztolni a szervereinket. Ezzel az elz fejezetekbl megismert mdon jelentsen lervidthetjk az zembe llts idejt, s a kltsghatkonysgunkon is ltvnyosan javthatunk. Ha gy is dntnk, a konkrt szerverlogika megrshoz a vlasztott technolgiakszlettl fggen akr igen hossz tervezsi, fejlesztsi s tesztelsi idk tartozhatnak. Ha mobil kliensekre sznt alkalmazst fejlesztnk, s a megvalstand projekt nem ignyel kifejezetten bonyolult kiszolgl logikt, akkor a mr ismert Azure Cloud Services s a kvetkez fejezetben bemutatsra kerl Web Sites megoldsok mellett lehetsgnk van a szerveroldali fejlesztsek elvgzshez a Mobile Services-t vlasztani! A Mobile Services drasztikusan lervidtheti a szerveroldal kialaktshoz szksges fejlesztsi s tesztelsi idket. Emellett a szerveroldali kd struktrjnak egyszersge miatt a Mobile Services kliensoldalra specializldott fejlesztk szmra is rdekes lehetsgeket knlhat. Kisebb projektek esetben rvid tanulsi peridus utn egy frontend fejleszt is kpes lesz egy Mobile Services-ben fut kiszolglt ltrehozni. A megolds kulcsa az, hogy a klasszikus .NET alap backend technolgikhoz kpest egy j s izgalmas krnyezetben hozzuk ltre a szerverkdunkat. Nzzk meg, miben rejlik ez az jdonsg, mik a klnbsgek a jl ismert ASP.NET-es s WCF-es megoldsokhoz kpest!

A Mobile Services felptse, sajtossgai


Elszr is, a leghangslyosabb eltrs az, hogy a Mobile Services egy felhszolgltats formjban biztost lehetsget a szerveroldali kd futtatsra. A mobil klienseink krsei nem egy konkrt, ltalunk meghatrozott MVC illetve Web API controllerhez vagy pp egy WCF szolgltats vgpontjhoz rkeznek be. A szervernk hatrait teljesen elfedi az Azure. A klienseink minden esetben csak egy transzparens szolgltats URL-t ltnak a WAMS-ben futtatott szervereinkbl s azok fel kpesek REST-es HTTP krseket intzni. A szolgltats URL-je mgtt egy Azure Web Sites alap szerver rejlik, ami a 14-1 brn lthat mdon az Azure-ban elrhet funkcik egy rszhalmazt valstja meg kulcsrakszen.

14-1 bra: A Mobile Services funkcii

Ezzel a megoldssal a Mobile Services egy teljes funkcionalits szervert biztost szmunkra sajt szerveroldali kd rsa nlkl. A WAMS szerver az albbi erforrsokat tartalmazza ltrehozst kveten: Egy SQL Server adatbzis (ez egy hagyomnyos SQL Azure adatbzis, amin a M obile Service dolgozik azt a szolgltatstl fggetlenl kell ltrehozni) Az adatbzishoz tartoz adatelrsi rteg Szerveroldali felhasznl azonosts Push notificationk s e-mailek kldse Adott gyakorisggal lefut temezett feladatok Sajt szerveroldali kd rsnak lehetsge

284

14. PaaS Mobile Services A Mobile Services szerverek szolgltatsainak kre folyamatosan bvl. A frisstsek gyakoriak, tlagosan havi rendszeressggel kerlnek be jabb s jabb funkcik. A kvetkez, 14 -2 brn megfigyelheted, hogy a kliens eszkzk egyszer HTTP protokollon keresztl kommuniklnak a Mobile Services -zel. Ennek eredmnyeknt nincsenek limitlva a tmogatott mobil platformok. Tetszleges HTTP fltti kommunikcira kpes eszkzzel meg tudjuk szltani a Mobile Service -t. A fejezet rsakor Windows 8, Windows Phone 8 s iOS eszkzkhz mr van ksz, letlthet SDK, s az Android tmogats is hamarosan megrkezik. A 14-2 brn rviden ttekintheted a szolgltats f komponenseit, a kvetkez fejezetrszben pedig rszletesebben is megismerkedhetsz mkdskkel.

14-2 bra: Mobile Services-t hasznl alkalmazs sematikus brja

Termszetesen az Azure ltal ltrehozott szerver mit sem rne, ha funkcionalitsa nem lenne rugalmasan testreszabhat egy konkrt gyakorlati feladat megoldsa sorn! Itt emltend meg a Mobile Services egy msik jelents klnbsge a klasszikus ASP.NET s WCF megoldsokhoz kpest: a szerveroldali kd szervezse. Ahhoz, hogy a mobil klienseinket kpes legyen kiszolglni, az elre elksztett szerverben a WAMS tbb kiterjesztsi pontot is biztost szmunkra sajt kdjaink futtatsra. Ezek a kiterjesztsi pontok teszik lehetv a WAMS ltal ltrehozott szerver testreszabst. A szerveroldali kdot JavaScript nyelven tudjuk megrni. Ha .NET technolgikban jrtas backend fejleszt vagy, akkor valsznleg eleinte a homlokodat fogod rncolni a szerveroldali JavaScript kd tlettl, de a Mobile Services ltal is hasznlt Node.js futtatkrnyezetnek hla, meglepen hatkony s gazdag funkcionalits eszkzt kapunk kzhez.
Ahhoz, hogy hatkonyan tudj a Mobile Services-zel szerveroldali szkripteket programozni, rdemes megismerkedned alapszinten a Node.js mkdsvel s modulkezelsvel. A http://nodejs.org weboldalon hasznos, az ismerkedshez szksges lersokat s API dokumentcit tallhatsz.

A JavaScript nyelvvel ugyan elvesztjk az ers tpusossgot s sok olyan produktivitst nvel nyelvi elemet, amit a C# s a VB biztost, cserbe azonban gyorsabban tudunk fejleszteni , s a ltrehozott kdbzisunk is rugalmasabban fogja tudni kvetni a vltozsokat. Ha belegondolunk, maga a JavaScript nyelv s a Node.js ltal hordozott koncepci nagyon jl illeszkedik azoknak a projekteknek a szksgleteihez, amikhez rdemes a Mobile Services-t vlasztani. Nem runk nagyon sszetett szerveroldali kdokat, alapveten kis alkalmazsokat szolglunk ki. Az ilyen projekteknl elvrt mdon rvid id alatt zembe tudjuk lltani a szerver krnyezetnket, s gyorsan, rugalmasan tudunk reaglni a specifikciban bekvetkez vltozsokra. 285

14. PaaS Mobile Services Jelenleg kt helyen van lehetsgnk sajt kd elhelyezsre a Mobile Services biztostotta szerverekben. Minden egyes adatbzistbln ngy-ngy esemny van definilva, melyek megfelelnek a rajtuk rtelmezett CRUD mveleteknek (beszrs, olvass, frissts, trls). Ezekre az esemnyekre tudunk reaglni a sajt magunk rt szerveroldali kdbl. Minden CRUD mveletnek egy -egy JavaScript fggvny felel meg: insert, read, update, illetve del. Ha brmikor olvasst kezdemnyez egy kliens, akkor a HTTP krs hatsra lefut a clzott tblhoz tartoz read fggvny. Ennek trzsben tudjuk kontrolllni a lekrdezs vgrehajtst. Pldul ha lekrdezst indtanak az Orders tbln, akkor a read fggvnyben gondoskodhatunk arrl, hogy az eredmnyhalmazba csak a krst kezdemnyez felhasznl sajt rendelsei kerljenek bele. Vagy pldul ha beszrnak egy j termket a Products tblba, akkor errl az esemnyrl az insert fggvny trzsben tudjuk rtesteni a termk kategrija irnt rdekld felhasznlkat egy push notificationnel. Mint minden szervernek, a strukturlt adattrols a Mobile Services-nek is kiemelt fontossg funkcija. A fejezet ksbbi rszben ezrt mg rszletesen olvashatsz az adatkezelsrl s a szerveroldali szkriptek rsrl. A szerveroldali szkriptekben lv fggvnyek paramtereiben mindig rendelkezsnkre ll a szerver ltal autentiklt felhasznl adatait tartalmaz user objektum s a vgrehajtst vezrl request objektum. Ez utbbinak kt fontos fggvnye van. A respond() hasznlatval vissza tudjuk kldeni a kliensnek a szerver HTTP vlaszt. Az execute() fggvnnyel pedig le tudjuk futtatni az adott CRUD mveletet. Figyeljnk r, hogy az execute() fggvnyt csak a respond() eltt hvhatjuk meg! Ha fordtva cseleksznk, a szerveroldalon hiba trtnik, s a kliens egy nem tl sokatmond Internal Server Error zenetet tartalmaz kivtelt kap. A msik kiterjesztsi pont az temezett feladatok ltrehozsnak lehetsge. A Mobile Service tulajdonsglapjn a Scheduler fln lehet j temezett feladatot ltrehozni. Minden temezett feladathoz egy JavaScript fggvny tartozik. Ezt fogja lefuttatni a szerver a Configure fln megadott belltsoknak megfelelen. Ltrehozsukkor tiltott mdban vannak, gy a fejleszts ideje alatt nem fognak lefutni a mg formld szkriptek. Tesztelskhz a Run once gombot hasznlhatjuk. Ez a portlrl indtott krsre egyszer lefuttatja a szkriptet. les zembe lltshoz hatrozzuk meg a futtats gyakorisgt, majd kattintsunk az Enable gombra! A sajt szkriptekkel vezrelt adatelrs s push notification klds mellett tovbbi lehetsgeink is vannak a Mobile Services ltal biztostott szerver szolgltatsnak testreszabsra. Ezek kzl egyik a felhasznli autentikci konfigurlsa. A Mobile Services tmogatja a mobil kliens kszlkekrl rkez felhasznlk azonostst, azonban az autentikci lebonyoltsa sorn nem sajt adatbzist hasznlja a felhasznli adatok trolsra. Ehelyett az autentikcit kls Identity Providerekre (IDP, lsd a 12. fejezet) bzza. A jelenleg tmogatott IDP-k listja a kvetkez: Microsoft Account, Google, Facebook, Twitter. Az autentikci kihelyezse a felhasznlk s az alkalmazs fejleszti szmra is elnys. A felhasznlknak nem kell a mobil eszkzkn a regisztrcival bajldni, knnyedn bejelentkezhetnek a mr meglv felhasznli fikjaikkal. Emellett a fejlesztk szmra is nagyon egyszerv teszi a szerveroldali identitskezelssel kapcsolatos teendket. Annyira, hogy sajt autentikcis szkriptek rsra nincs is szksgnk, az sszes bellts konfigurcibl, az Azure Management Portlon trtnik. A megfelel alkalmazs azonostk s kriptogrfiai kulcsok copy-paste jelleg bemsolst kveten minden szerveroldali szkript fggvnyparamterknt meg fogja kapni a mveletet kezdemnyez felhasznlt reprezentl, ellenrztt user objektumot. Az elbbi ttekints utn nzzk meg rszletesen, hogyan zajlik egy Mobile Service szolgltats hasznlatbavtele, milyen konfigurcis s monitorozsi lehetsgeink vannak ! Ismerjk meg rszletesen, egyenknt a f funkcikat: az adattrolst, az autentikcit, a push notificationt s az e-mail kldst!

A Mobile Services szolgltatsai


A most kvetkez fejezetrszben egy egyszer pldaprogram lt rehozsnak els lpseit vgrehajtva megismerheted a Mobile Services szolgltatsait. El fog od kszteni a szerveroldalt, valamint egy Windows 8 klienst is.

286

14. PaaS Mobile Services A pldaprogram egy fiktv kzssgi alkalmazs legalapvetbb funkciit valstja meg. Clja, hogy a bejelentkezett felhasznlk megoszthassk egymssal kedvenc ttermeik adatait. Minden felhasznlnak joga van j ttermet felvenni az adatbzisba. Autentikcihoz a Microsoft Account, Google vagy Facebook fikjukat vehetik ignybe. Ha valaki felvesz egy j ttermet, akkor errl az sszes felhasznlt push notification zenetben rtestjk. A plda egyszersge miatt nem kimondottan letszer egy knyv keretein bell erre terjedelmi okokbl nincs is lehetsg , mgis vgigvezet a Mobile Services sszes funkcijn, szemlltetve, hogyan lehet hatkony kliens -szerver architektrt pteni Windows 8 kliens alkalmazs s WAMS szerver kztt. A teljes funkcionalits pldaalkalmazst a Devportal.hu oldalon keresztl tudod letlteni.

Hasznlatbavtel
Mint minden Azure szolgltatsnl, a Mobile Services esetben is az Azure Management Portal jelenti a kiindulpontot. Az els lpsek megttelhez nyisd meg az j, HTML alap Management Portlt! j Mobile Service ltrehozshoz kattints a bal als sarokban lv New felirat gombra, s vlaszd a Compute kategrit, majd ezen bell a Mobile Services-t, s kattints a Create gombra! A felugr ablak URL mezjben meg kell adnod a ltrehozand Mobile Service egyedi cmt. Az gy ltrejv szolgltats URL az albbi mintra illeszkedik: https://<service_neve>.azure-mobile.net. Ezt a bziscmet ksbb brmikor kimsolhatod a Management Portlrl, azonban rdemes memorizlni. A Mobile S ervice-nek kldtt minden HTTP krs erre a cmre fog berkezni, ezrt ezt a cmet a ksbbiekben mg sokat fogod hasznlni. A Region legrdl menben meg kell adnod, melyik nagy Azure adatkzpontban szeretnd futtatni a ltrehozand Mobile Service-t. A Mobile Service-nek szksge van egy adatbzisra is, amiben trolni fogja az alkalmazs adatait. Ez egy htkznapi SQL Azure adatbzis. Ha van mr SQL Azure adatbzisod, azt felhasznlhatod a Mobile Services-hez, st ha tbb Mobile Service-t hozol ltre, azok is kpesek lesznek egy adatbzison osztozni. Ha mg nem rendelkezel SQL Azure adatbzissal, a legrdl menbl vlaszd ki a Create a new SQL database instance opcit, s hozz ltre egy j adatbzist! A varzsl vgigvezet a lpseken: lehetsged van teljesen j adatbzis szervert ignyelni, illetve ha van mr SQL Azure szervered, akkor azon bell j adatbzist is fel tudsz venni. A leggyorsabb mkds s az adatkzpontbl kimen adatforgalom minimalizlsnak rdekben a Mobile Service-edet s a hozz tartoz adatbzist hosztol SQL Azure szervert ugyanabban a rgiban helyezd el! Mr ltez SQL Azure adatbzis esetre a ltrehozs menett a 14-3 brn lthatod.

14-3 bra: Mobile Service ltrehozsa

Ha elkszltl az URL, a rgi s az SQL Azure adatbzis kivlasztsval, kattints a jobb als sarokban a pipa ikonra, s ezzel ltre is hoztad a Mobile Service-t! A szolgltats 10 Mobile Service futtatsig ingyenes, csak az SQL Azure adatbzisrt kell fizetn ed. Ha mr egy korbban is hasznlt adatbzist rendelsz a Mobile Service-hez, akkor gyakorlatilag teljesen ingyen tudsz a felhben szervert ltrehozni ezzel a megoldssal!

287

14. PaaS Mobile Services

Adminisztrci, belltsok, monitorozs


A Mobile Service-t nagyon gyorsan, 20-30 msodperc alatt ltrehozza az Azure. Ezt kvetn rgtn el is kezdheted hasznlni a szervert. A Management Portlon a bal oldali fggleges menben jelld ki a Mobile Services kategrit, s a Mobile Service-ek listjbl vlaszd ki a most ltrehozott szervert! A Quick Start ablak fogad, ami hasznos segtsget nyjt a szolgltatssal ismerked fejlesztknek. A jelenleg tmogatott Windows 8, Windows Phone 8 s iOS platformok mindegyikhez fejleszti tananyagokat sorakoztat fel, amik bemutatjk, hogyan tudod ignybe venni a WAMS-t. Ksbb, a kliens alkalmazs ltrehozsnl ezt az opcit mg hasznlni fogjuk, elszr tekintsk t a szerver belltsi lehetsgeit! A fels vzszintes menben a Dashboard parancsot kivlasztva a Mobile Service f adminisztrcis oldalra jutsz. Itt valsidej informcikat kapsz a Mobile Service terhelsrl. Lthatod az API hvsok szmt, a felhasznlt CPU idt s a szolgltatstl kimen adatforgalmat. Ezek a mutatk hasznosnak bizonyulnak, ha a Mobile Service sklzsrl kell dntened. A Data, Push s Identity menpontokkal ksbb egyenknt, rszletesen is foglalkozni fogunk. Ezekben az ablakokban adminisztrlhatod rendre az adattblkat, a push notificationk kldst s a felhasznlk autentikcijt. A Configure paranccsal az adatbzis konfigurlst vgezheted. Lehetsged van msik SQL Azure adatbzist vlasztani a szolgltatshoz, illetve itt kap mg helyet a dinamikus smakezelst engedlyez vagy letilt gomb, amivel szintn ksbb, az adatkezelsrl szl bekezdsben fogunk foglalkozni. A Scale menpontot vlasztva nylik lehetsg ed a Mobile Service sklzsra. Alaprtelmezetten a Mobile Service megosztott krnyezetben fut, egy virtulis gpre tbb, izolltan fut Mobile Service is felkerlhet. A virtulis gpek szmtsi kapacitsa kltsges erforrs, ezrt a Mobile Service -ek ingyenessge csak gy, a gpek megosztott hasznlatval tarthat fenn. Ha azonban a szervert sok mobil kliens hasznlja, elfordulhat, hogy sklzni kell a szolgltatst. Erre a Reserved md bekapcsolsval van lehetsg. Ezt a mdot vlasztva a Mobile Service legfeljebb 3 Small virtulis gp pldnyt kaphat, amiken egyedl ez fog futni. Ezzel tbb klienst szolglhatsz ki, s nvelheted a szolgltats rendelkezsre llst. Maga a Mobile Service mint szolgltats Reserved mdban futtatva is ingyenes, fizetn ed csak a fenntartott virtulis gpek szmtsi kltsge utn kell. A szmtsi kapacits nvelse mellett itt tud sz nagyobb adatbzist vlasztani a Mobile Service-hez. A portl utols, Logs menjben a Mobile Service futsa sorn keletkez naplbejegyzseket tekintheted meg. A futtatkrnyezet ide naplzza a kezeletlen kivteleket. A sajt szkriptekben elhelyezett console.log("") utastsokkal tudunk sajt rekordokat ltrehozni ez a fejleszts sorn a nyomkvetshez nagyon hasznos lehet. ltalnos ajnlsknt megfogalmazhat, hogy minden esetben, amikor csak lehetsgnk van a hvott JavaScript fggvnyeknek egy sikertelen lefuts esetn meghvd error callbacket tadni, ezt tegyk meg, s a callbackben naplzzuk a hibt, mert ez az egyetlen biztos tja annak, hogy informcit szerezznk a szerveroldal futsidej problmirl. Szt kell mg ejteni az als, vzszintes menben a Manage Keys parancsrl. Ha erre kattintasz, egy felugr ablakban kt kriptogrfiai kulcsot kapsz. A fels, Application key-t minden olyan kliens alkalmazsnak birtokolnia kell, amelyik szeretn megszltani a Mobile Service -t. Ezzel biztosthat, hogy illetktelenek ne vehessk ignybe a szervernk funkciit pusztn a szolgltats URL -jnek ismeretben. A msik szvegdobozban a Master key egy szerveradminisztrtori jogosultsgokat biztost titkos kulcs. Ezt csak szerveroldali mveletekhez pldul sajt autentikcis tokenek alrshoz hasznljuk, soha ne adjuk ki a klienseknek! A mesterkulcsot a tesztelsek sorn is felhasznlhatjuk. Ha csatoljuk a WAMS -nek kldtt HTTP krs headerjeihez, akkor a krsnk automatikusan autentiklt lesz szerveroldalon. A Master key-re akkor is szksg lehet, ha a Mobile Service-t egy msik szerverrel szeretnnk sszekapcsolni. Az ltalunk fejlesztett szerver szolgltatsban termszetesen megbzunk, ezrt megadhatjuk neki a Master key -t, hogy autentikci nlkl is hozzfrhessen a Mobile Service-hez.

288

14. PaaS Mobile Services

A kliensalkalmazs ltrehozsa
A szerver oldali funkcik tovbbi trgyalsa eltt hozz ltre egy Windows Store kliensalkalmazst, ami fel fogja hasznlni a Mobile Service-t! Ehhez a Management Portlon kattints a fels vzszintes men bal szls, felht formz ikonjra, s a mr ismert Quick Start oldalon vlaszd ki a Windows Store platformot ! Itt a Get Started szekcin bell vlaszd a Connect an existing Windows Store app lehetsget ! Ahogy az els lps is mutatja, ahhoz, hogy a kliens meg tudja szltani a szervernket, szksg van a Mobile Services SDK-ra. Ezt nem tartalmazza az Azure SDK, ezrt kln kell telepten ed. A portlon is megtallhat https://go.microsoft.com/fwLink/?LinkID=257545&clcid=0x409 linkrl tltsd le, majd teleptsd az SDK-t! A telepts utn nyisd meg a Visual Studio 2012-t, s kszts egy j Windows Store projektet! Ltrehozsnl a legegyszerbb, Blank Application projektsablont vlaszd! A Mobile Services SDK hasznlatbavtelhez vegyl fel egy referencit a szksges DLL fjlra ! Ehhez kattints a projekt References knyvtrra, vlaszd az Add Reference parancsot, s a dialgus ablak bal oldali menjben keresd ki a Windows, azon bell pedig az Extensions csompontot! Itt jelld be a Windows Azure Mobile Services Managed Client csomagot, s kattints az OK gombra ! Az elz pontban ltrehozott Mobile Service-t a kliensoldalon az SDK-ban definilt MobileServiceClient tpus C# objektum fogja reprezentlni. Minden adatelrsi s bejelentkeztetsi krst ennek az objektumnak fogunk cmezni. A MobileServiceClient feladata, hogy elvgezze a HTTP kommunikcit a WAMS fel. A fejlesztnek nyjtott funkcionalitst tekintve prhuzamba llthat a WCF szolgltatsokhoz generlt kliens oldali channel proxy objektumokkal. Helyezz el egy az alkalmazsban globlisan elrhet MobileServiceClient objektumot az App.xaml.csben! A kliensben, ha brmikor adatot szeretnnk kldeni a Mobile Services fel, akkor ezt az objektumot fogod hasznlni.
sealed partial class App : Application { public static MobileServiceClient MobileService = new MobileServiceClient( "https://<szolgltats_nv>.azure-mobile.net/", "<application_key>");

A <szolgltats nv> s az <application key> a Management Portal mr ismert oldalain tallhat.


Emlkeztetl: a szolgltatsnevet a Dashboardon a Mobile Service URL szvegdobozban tallod. Az Application key-hez pedig a portl als, vzszintes menjnek Manage Keys parancsra kattintva juthatsz hozz. gyelj r, hogy az Application key helyett nehogy a Master key-t msold ki!

A kliensben ezutn brhonnan az App.MobileService statikus objektumon keresztl tudod megszltani a WAMS-t.

Strukturlt adattrols a Mobile Services-ben


Most, hogy a kliens s a szerver kztt mr adatokat tudsz tovbbtani, ismerkedjnk meg a Mobile Services egyik legfontosabb szolgltatsval, az adatok szerveroldali feldolgozsval s trolsval ! Egy klasszikus tbbrteg alkalmazs fejlesztsnl a legels lpsek egyike a problma tartomnynak (problem domain) feltrkpezse. Meghatrozzuk a tartomnyt reprezentl objektumok halmazt, definiljuk a kztk rtelmezett kapcsolatokat, ezzel kialaktva egy adatmodellt. Kvetkez lpsknt ezt jellemzen valamilyen ORM eszkzzel lekpezzk az adatbzis szerver relcis modelljnek tblira. A folyamat eredmnyeknt szerveroldalon ersen tpusos .NET domain objektumokhoz jutunk, illetve ltrejnnek az objektumorientlt s a relcis vilg kzti kapcsolatot megfogalmaz mapping objektumok vagy XML fjlok. sszetett, bonyolult domain esetn ez egy hossz, sok itercibl ll folyamat, aminek eredmnyeknt nagyon hatkonyan felhasznlhat, de merev adatmodellt kapunk.

289

14. PaaS Mobile Services A Mobile Services-ben ezzel szemben egyetlen feladatunk van szerveroldalon: ltre kell hoznunk az adattblinkat. Nem kell definilnunk a smjukat, az egyes mezk tpusait. Egyszeren fel kell vennnk egy j tblt, meg kell adnunk a nevt, s a szerveroldali dinamikus smakezelsnek ksznheten az els beszrt rekordban rkez tulajdonsgok alapjn a WAMS ltrehozza a smt ! A JavaScript nyelv feldolgoz szkriptek s a dinamikus smakezels hatkony mkdse rdekben az alkalmazs adatai kzenfekv mdon JSON objektumokk sorostva kzlekednek a kliensek s a WAMS kztt. Ha kliens oldalrl felkldnk a szervernek egy HTTP POST zenet trzsben egy JSON objektumot, akkor a WAMS abbl mr tudni fogja, hogy be kell illesztenie egy rekordot. Ehhez vgighalad a JSON objektum tulajdonsgain, s ha tall a tblban olyan nev mezt, mint a tulajdonsg neve, akkor annak adja rtkl a tulajdonsg rtkt. Ha nem tall, akkor ltrehoz egy j mezt a tblban , s belltja annak tpust a JSON-ben rkez adat tpusa alapjn. A dinamikus smakezels a Managament Portlon a Mobile Service-nk tulajdonsglapjn a Configure menben kapcsolhat ki. A kvetkez pldaalkalmazsban a domain nagyon egyszer lesz, kezdetben egyetlen zleti objektum tpust fog tartalmazni Restaurant nven. Ennek a tpusnak egy pldnya egy adott ttermet reprezentl majd. Hozz ltre az ttermek trolsra egy tblt a szerveroldalon! Ehhez kattints a Management Portal fels, vzszintes menjben a Data parancsra, majd alul a Create gombra! A felugr ablakban (14-4 bra) a tblt nevezd el Restaurantnak! A nvvlaszt szvegdoboz alatti legrdl menk segtsgvel szabhatod testre, hogy kinek legyen joga egy adott CRUD mveletet vgrehajtani a tbln. Ngy lehetsges opci kzl vlaszthat sz. Az alaprtelmezett rtk az Anybody with the application key, melynek hatsra minden olyan kliens krst kiszolglja a rendszer, amelyik rendelkezik az Application key-jel. Emlkezz vissza, a kliensalkalmazsban ezt a kulcsot hasznltuk a MobileServiceClient objektum konstruktorban, gy a Windows Store kliensnk kpes lesz CRUD mveleteket vgrehajtani az adattblinkon ! Ha szeretnd, hogy bizonyos mveleteket csak autentiklt kliensek hajthassanak vgre, akkor az adott mveletnl vlasz d az Only Authenticated Users opcit! Ebben az esetben nem elg a kliensnek az Application key -t felmutatnia a WAMS fel, ezenkvl mg birtokban kell lennie egy, a sikeres autentikci tnyt reprezentl azonostsi tokennek (AuthToken). Az autentikci mkdsrl egy ksbbi bekezdsben olvashatsz majd rszletesebben. Az Only Scripts and Admins opcit vlasztva tovbb szigorthatod a mvelet vgrehajtsnak feltteleit. Ha ezt a lehetsget vlasztod, akkor csak a sajt Mobile Service-edben felvett szerveroldali szkriptek s a Master key birtokosai hajthatjk vgre az adott mveletet. Vgl, ha az Everyone opcit vlasztod, akkor sem autentikcira, sem az Application-, illetve Master key-re nincs szksge a kliensnek, a WAMS minden, az adott mvelet vgrehajtst kivlt HTTP krst kiszolgl. Ezt az opcit csak nagyon indokolt esetben hasznld vlasztsval brki (akr idegen, rosszindulat kd is) korltozs nlkl, a Mobile Service szolgltats URL-jnek ismeretben vgrehajthatja az adott mveletet!

14-4 bra: Adattbla ltrehozsa, jogosultsgok belltsa

290

14. PaaS Mobile Services Most hagyd vltozatlanul ezeket a belltsokat, hogy autentikci nlkl is ki tudd prblni a CRUD mveletek mkdst! A szerveroldalon nincs is ms dolgunk, trjnk t a kliensre , s nzzk meg, milyen teendink vannak az adatkezels tern! Az elz fejezetrszben ltrehozott Windows Store projektben az adatelrs vezrlshez ismernnk kell az alkalmazs domainjt. Most nagyon egyszer dolgunk van: egyedl a Restaurant zleti objektum szmra kell ltrehoznunk egy C# osztlyt a kliensben. A pldaprogramban nem fogjuk kvetni az MVVM mintt hasznl zleti alkalmazsok tervezsi szablyait. Nem fogjuk elklnteni az adattovbbtsrt felels DTO objektumokat a kliensoldali megjelentshez hasznlt View objektumoktl. Egyetlen, Restaurant nev osztlyt fogunk felvenni! Ennek az osztlynak a pldnyait fogjuk DTO -knt elkldeni a WAMS fel, s szintn ennek az osztlynak a pldnyaihoz fogunk adatktni a kliensoldal nzete iben. Hozd ltre a Restaurant C# osztlyt a kliens projektben, s vedd fel benne az albbi tulajdonsgokat:
public class Restaurant { public int Id { get; set; } // egyedi azonost public public public public string string string string Name { get; set; } City { get; set; } Address { get; set; } ImageUrl { get; set; }

public string AddedBy { get; set; } // az ttermet hozzad felhasznl azonostja }

Ezzel elrted, hogy kliens oldalon a C# nyelv ers tpusossgval tudod kezelni az zleti objektumokat. A szerveren a Restaurant tbla mg res az els Restaurant objektum beszrsnl a kliensnk JSON formtumba sorostja a beszrand C# objektumot, s elkldi azt a szerver fel. A WAMS a HTTP krsben rkez JSON objektumban lv kulcs-rtk prok alapjn ltrehozza a Restaurant tbla smjt. Az Id mezt konvenci alapjn elsdleges kulcsknt fogja rtelmezni. A tbbi, Name, City stb. tulajdonsgok rtkbl kikvetkeztetve ltrehozza a megfelel tpus Name, City stb. nev oszlopokat a tblban. Alakts ki a kliens oldalon egy nagyon egyszer felletet egy j rekord beszrshoz! Helyezz el ngy TextBox vezrlt a feltltend tterem adatainak tadshoz (Name, City, Address s ImageUrl), s egy Add gombot, amire kattintva feltltd az j ttermet a Mobile Services tblba a szvegdobozokban meghatrozott adatokkal. A ksz felletnek nagyjbl a 14-5 brn lthat mdon kell kinznie.

14-5 bra: j tterem feltltse

A pldaprogram teljes egszben letlthet a devPortal.hu oldalrl, ezrt a fejezet tovbbi rszben csak a Mobile Services-re vonatkoz kdrszleteket mutatjuk be. A GUI kialaktshoz szksges kdrszleteket is a letlthet pldaprogramban tallod. A knyvben szerepl kdrszletek nmileg eltrhetnek a letlthet megfeleljktl. A klnbsgek tpus-, illetve null ellenrzsek, try-catch blokkok knyvbeli elhagysban jelenhetnek meg, nem kapcsoldnak szervesen a Mobile Services mkdshez. Elhagysukkal a cl a kinyomtatott kd olvashatbb ttele. Az Add gomb esemnykezeljben hozz ltre egy Restaurant objektumot a beviteli mezk rtkei alapjn, s tltsd fel azt a Mobile Services-be!

291

14. PaaS Mobile Services

private async void btnPopupAdd_Click(object sender, RoutedEventArgs e) { Restaurant r = new Restaurant { ImageUrl = tbPopupImageUrl.Text, Name = tbPopupName.Text, City = tbPopupCity, Address = tbPopupAddress.Text }; await App.MobileService.GetTable<Restaurant>().InsertAsync(r); }

A MobileServiceClienten hvott generikus GetTable<T> metdus tpusparamterben tudod meghatrozni, hogy melyik tblba szeretnd azt beszrni. Ha a Restaurant osztlyt adod meg, akkor az azonos nev Restaurant tblba szrja be a kd azokat. Ha a megadott tbla nem ltezik, egy kivtelt kapsz. Az InsertAsync fggvnnyel a generikus paramternek megfelel tpus objektumokat illesztheted be a tblba. Figyeld meg, hogy az Id tulajdonsg nincs kitltve! Ezt mskor se tedd meg! Az Id-t a szerver oldalon generlja az adatbziskezel. Az InsertAsync hvsnak hatsra a WAMS a beszrt objektumot JSON formtumban adja vissza, benne az Id mezvel. Kliens oldalon az InsertAsync lefutsa utn a paramterknt megadott Restaurant tpus objektum a beszrt rekord adatait fogja tartalmazni, kitlttt Id rtkkel. Vegyl fel nhny rekordot a Restaurant tblba, s ha ezzel kszen vagy, hajts vgre azon nhny lekrdezst! A tbla sszes sort a kvetkezkppen tudod lekrni:
var allRestaurant = await App.MobileService.GetTable<Restaurant>().ToListAsync();

A Mobile Service tblin a LINQ-hez hasonl szintaxissal is meg tudunk fogalmazni lekrdezseket. A kvetkez pldban elkrjk azokat a rekordokat, ahol a vrosnv Budapest, tugorjuk az els ngy elemet, s visszaadjuk a kt kvetkezt. Ezek a lekrdezsek a szerveren kerlnek vgrehajtsra, a kliens csak a lekrdezs eredmnyhalmazt kapja meg:
List<Restaurant> results = await App.MobileService.GetTable<Restaurant>() .Where(o => o.City == "Budapest") .Skip(4) .Take(2) .ToListAsync();

A fggvnyhvs hatsra a Mobile Services SDK elhelyez egy OData query kifejezst a HTTP krs URL jben. A WAMS ez alapjn hajtja vgre a szrseket. Az elz lekrdezs lefuttatshoz pldul az albbi URL-t hvja meg az SDK a szervernkn:
https://azurebookdemo.azuremobile.net/tables/Restaurant?$filter=(City%20eq%20'Budapest')&$skip=4&$top=2

Az adattblkat elkr GetTable<T> metdusoknak van egy nem-generikus, string paramtert vr vltozata is. A string paramterben meg tudjuk adni a tbla nevt, amihez hozz szeretnnk frni. Hasonlan a generikus vltozathoz, a visszaadott IMobileServiceTable objektumon meghvhatak a CRUD mveleteket kezdemnyez InsertAsync, ReadAsync, UpdateAsync s DeleteAsync metdusok. Azonban itt nincs lehetsge a fordtnak behelyettesteni a GetTable generikus tpusparamtere alapjn a mveletben szerepl C# objektum tpust! Ezrt a szerverrel folytatott kommunikcihoz egy ltalnos JSON reprezentcit, a Windows.Data.Json nvtrben tallhat JsonObject osztlyt hasznlja. Az elbb ltott Restaurant generikus paramter fggvnyhvs megfelelje az albbi kdrszletben lthat, melyben nem egy Restaurant objektum tulajdonsgait tltjk ki, hanem egy JsonObject pldnyt lltunk ssze:

292

14. PaaS Mobile Services

var r = new JsonObject(); r.Add("Name", JsonValue.CreateStringValue("Best Restaurant")); r.Add("City", JsonValue.CreateStringValue("New York")); r.Add("Address", JsonValue.CreateStringValue("5th Ave.")); r.Add("ImageUrl", JsonValue.CreateStringValue("http://.....jpg")); await App.MobileService.GetTable("Restaurant").InsertAsync(r);

A tbla sszes rekordjnak lekrdezse a ReadAsync metdussal trtnik.


IJsonValue restaurantList = await App.MobileService.GetTable("Restaurant").ReadAsync("");

Az eredmnyhalmazbl a JsonObject fggvnyein keresztl rhetk el az egyes ttermekhez tartoz tulajdonsgok. Az elzleg ltrehozott restaurantList vltozban pldul az albbi igen nehzkes mdon frhetnk hozz az els rekord Name tulajdonsghoz:
string rName = restaurantList.GetArray()[0].GetObject()["Name"].GetString();

A string paramterrel hvott nem-generikus GetTable fggvnynek igazi ltjogosultsga a JavaScriptben rt Windows Store alkalmazsok esetn van. C# nyelven rt alkalmazsokban inkbb mindig vllaljuk az adattovbbtsrt felels osztlyok megrsval jr munkt, mint hogy a fentihez hasonl kdot kelljen rnunk! Tegynk egy nagyon rvid kitrt, amiben megnzzk, hogyan tudjuk egy JavaS criptben rt alkalmazsbl elrni a WAMS adattblit!

Adatkezels a Mobile Services SDK-val JavaScript nyelven


Dinamikus nyelv lvn, JavaScriptbl az eredmnyhalmazt eleve nem is rhetjk el ersen tpusosan. Az albbi kdrszletet hasznlva, a JavaScript alkalmazsbl elkrjk az sszes budapesti ttermet, s a letlts utn a done()-nak tadott callbackben frnk hozz a lekrdezs eredmnyeihez :
var client = new Microsoft.WindowsAzure.MobileServices.MobileServiceClient( "https://<szolgltats_nv>.azure-mobile.net/", "<application_key>" ); var restaurantTable = client.getTable('Restaurant'); restaurantTable.where({ City: 'Budapest' }) .read() .done(function (results) { results.forEach(function (restaurant) { var name = restaurant.Name; var address = restaurant.Address; var city = restaurant.City; }); });

Hasonlan, egy j rekord felvtele is a duck-typing elvt hasznlva trtnik. Tetszleges JavaScript objektumot megadhatunk az insert() fggvny paramterben. A WAMS megprblja lekpezni a tulajdonsgok neveit a Restaurant tbla oszlopaira, s ahol nem tudja, ott ha a dinamikus smakezels engedlyezve van ltrehoz egy j oszlopot. A done() fggvnyben felvett callback paramterknt megkapja a beszrt objektumot. A callbackben mr hozzfrhetnk az adatbzis ltal generlt Id rtkhez is. Az insert() fggvny hasznlatt a kvetkez kdrszlet mutatja be:
var r = { Name : "Sherlock Restaurant", City : "London", Address : "Baker str. 4" };

293

14. PaaS Mobile Services

restaurantTable.insert(r).done(function(item){ var itemId = item.id; });

T-SQL utastsok vgrehajtsa szerveroldali szkriptekbl


Br a kliensoldali SDK-bl lehetsgnk van a LINQ-hez hasonl szintaxissal viszonylag sszetett lekrdezsek megfogalmazsra is, ezekkel jellemzen csak egy tblt tudunk hatkonyan lekrdezni. Ha bonyolultabb lekrdezseket szeretnnk lefuttatni, a szerveroldali szkriptekben lehetsgnk van tetszleges T-SQL lekrdezsek vgrehajtsra az mssql objektum segtsgvel. A kvetkez pldban sszelltunk egy paramterezett SQL lekrdezst az sql vltozban, majd a query() fggvnnyel vgrehajtjuk azt:
var sql = "SELECT devices.id, devices.channelUri, listMembers.name FROM devices " + "INNER JOIN listMembers ON devices.userId = listMembers.userId " + "WHERE listMembers.listId = ? and devices.userId <> ?"; mssql.query(sql, [item.listId, user.userId], { success: function (results) { results.forEach(function (result) { push.wns.sendTileWideSmallImageAndText05 (result.channelUri, { text1: result.name, text2: item.text, image1src: profile.imageUrl }); }); } });

A query()-nek tadott els paramter maga a lekrdezs, a msodik paramter egy tmb, aminek az elemei rendre a lekrdezs paramtereibe lesznek behelyettestve. A harmadik paramterben szerepl objektumban tudunk tadni egy sikeres futtats esetn meghvd success callbacket. A lefut fggvny paramterben (results vltoz) megkapjuk a lekrdezs eredmnyhalmazt. A plda egy push notification kldst is szemlltet. A lekrdezs eredmnyhalmazn vgighaladva minden kivlasztott device tblabeli rekordra elkld egy push notificationt. A bemutatott plda a Mobile Services-hez kiadott dem programok egyikbl szrmazik. A Doto nvre hallgat demban egy todo listakezel alkalmazst nzhetnk meg. A Dott s ms egyb hasznos, a WAMS-hez kszlt dem alkalmazsokat az albbi linkrl tlthetsz le: http://code.msdn.microsoft.com/windowsapps/site/search?f%5B0%5D.Type=Technology&f%5B0%5D.V alue=Windows%20Azure%20Mobile%20Services.

Az adatkezels korltai a Mobile Services-ben


Az elbbi nhny pldn keresztl lthattad, hogy az adatkezels nagyon grdlkeny a Mobile Services ben, az adatsmk dinamikusak, a kliens oldali SDK is egyszer fggvnyeket knl fel , s tkletesen tmogatja az aszinkron programozsi modellt. A Mobile Services ezzel kitn megolds az egyszer adatmodellt hasznl mobil alkalmazsokhoz. Vannak azonban esetek, amikor ez a fajta adatkezels nem hasznlhat hatkonyan. Ha a Mobile Services -t szeretnd hasznlni az alkalmazs kiszolglsra, tartsd szem eltt, hogy az adatmodell komplexitsnak nvekedsvel egyre nehezebben fog od majd tudni megfogalmazni a szerveroldali logikt az egyszer CRUD szkriptekkel. Br van lehetsged a szerver szkriptekben SQL utastsok futtatsra, a jelenlegi llapotban a sok kls kulcsot, sok-sok relcit tartalmaz adatmodellek kezelsre a WAMS nem a megfelel eszkz. sszetet t kliensoldali objektumhierarchikat szintn nehz feltlteni, valamint sok rekord egy tranzakciban val feltltse sem oldhat meg egyszeren. Jelenleg az InsertAsync<T> fggvnnyel beszrhat kliensoldali C# objektumok csak egyszer tulajdonsgokat tartalmazhatnak. Lehetnek string, DateTime s numerikus (int, double,

294

14. PaaS Mobile Services


float) tulajdonsgaik, de sajt tpus tulajdonsgok sorostsa alaprtelmezetten nem biztostott. A feladat megoldhat, ha ltrehozunk egy, az IDataMemberJsonConverter interfszt megvalst sajt

konverter osztlyt, amiben lerjuk, hogyan kell egy adott objektumtpus s a sorostott JSON formtum kzti konverzit mindkt irnyban elvgezni. Ebbl ltszik az, hogy egy komplex adatmodell sok s bonyolult konverter osztly ltrehozst kveteln meg. A ltrejv nehezen ttekinthet s karbantarthat kddal pont a Mobile Services nyjtotta elnyket vesztennk el.

Felhasznlk autentikcija
A Mobile Service-ekben nagyon grdlkenyen zajlik az autentikci megvalstsa: minden felhasznlazonostssal kapcsolatos feladatot elvgez helyettnk a WAMS. Az azonostshoz nem hozunk ltre sajt felhasznli adatbzist, ezt a feladatot teljes egszben kls Identity Providerekre (IDP-kre) bzzuk. A szerveroldalon mindssze annyi teendnk van, hogy meghatrozzuk azoknak az azonostst vgz kls szolgltatknak a krt, amikben a szervernk megbzik. A tmogatott IDP -k a knyv rsnak idpontjban a Microsoft Account, a Google, a Facebook s a Twitter. Ha egy mobil kliens eszkzrl egy felhasznl be szeretne jelentkezni, akkor krse az IDP-hez rkezik be. Itt azonostani tudja magt a sajt Microsoft Account, Google stb. fikjval, s az autentikci sikeressgrl az IDP egy felhasznli adatokat tartalmaz token kldsvel rtesti a Mobile Service-t. A kihelyezett autentikci mkdsrl a 12. fejezetben olvashatsz rszletesebben. Mind a ngy IDP esetben a WAMS s a kztk felptett bizalmi viszony kialaktsa az Azure Management Portlon, illetve az IDP sajt fejleszti weboldaln keresztl trtnik. Nyisd meg az Azure portlon a Mobile Service tulajdonsglapjt, s vlaszd ki a fels vzszintes menben az Identity oldalt! Ezen az oldalon tudod meghatrozni, hogy a szerver mely IDP-kben bzzon meg. Ehhez lthatan mind a ngy IDP-nl egy kliens azonost (irnyukban a Mobile Service tlti be a kliens szerepet!) s egy titkos kulcs megadsra van szksg. Nem kell mst tenned, mint ezeket a mezket kitlteni, s a vltoztatsok mentse utn a WAMS megbzik a kivlasztott IDP-kben. A szksges azonostk s titkos kulcsok (secret) beszerzshez, valamint a WAMS IDP bizalmi viszony IDP oldali kiptshez el kell ltogatnod az IDP-k fejleszti oldalaira. Elsknt nzzk meg, hogyan juthatsz hozz a Microsoft Account hasznlathoz szksges Client ID s Client Secret informcikhoz! Nyisd meg a Live Connect fejleszti oldalt az albbi URL-en: http://msdn.microsoft.com/enus/live//default.aspx! Jelentkezz be a Microsoft Accountoddal, s a fenti menben vlaszd ki a My Apps oldalt! Itt tudsz ltrehozni egy j, a felhasznlk azonostsra is felhasznlhat Live Connect alkalmazst. Hozz ltre egy j alkalmazst a Create Application linkre kattintva , s vlassz neki egy Live Connectre nzve egyedi nevet! Kattints az Edit Settings linkre, majd vlaszd ki a bal oldali menben az API Settings opcit! Ahogy a 14-6 brn lthatod, msold t errl az oldalrl a Client ID s Client Secret mezk rtkt az Azure Management Portlon a Microsoft Accounthoz tartoz szvegdobozokba ! Az brn lthat mdon add meg a Live Connect alkalmazs szmra a Redirect URL mezben a Mobile Service URL-jt! A Live Connect erre a cmre fogja elkldeni a felhasznlkrl killtott autentikcis tokeneket. A Google IDP konfigurlshoz naviglj az albbi weboldalra: http://go.microsoft.com/fwlink/p/?LinkId=268303&clcid=0x409 ! Jelentkezz be a Google Accountoddal, majd a bal oldali menben vlaszd ki az API Access linket! A betltd oldalon kattints a Create an OAuth 2.0 Client ID gombra! A felugr ablakban vlassz ki egy egyedi nevet az alkalm azsod szmra, majd kattints a Next gombra! Az alkalmazs tpusnak vlaszd a Web Applicationt! Az Authorized Redirect URIs mezben add meg a Mobile Service autentikcis URL-jt! Ez a https://<service_neve>.azure-mobile.net/login/google cm. Az Authorized JavaScript Origins mezben pedig a Mobile Service bziscmt! Ha az ablak a 14-7 brhoz hasonlan nz ki, elkszltl, kattinsd a Create client ID gombra!

295

14. PaaS Mobile Services

14-6 bra: Autentikci konfigurlsa (fent: Azure Mgmt. Portal, lent: Live Connect fejleszti oldal)

14-7 bra: Autentikci konfigurlsa a Google fejleszti oldaln

Az API Access oldalon megtallod a ltrehozott Client ID-t s Client Secretet. Ahogy a Microsoft Account esetben is tetted, msold ezeket az adatokat az Azure Management Portlon a Google-hoz tartoz szvegdobozokba! Nagyon hasonlan kell eljrni a Facebook s a Twitter esetben is. Az ID s a kulcs ltrehozshoz el kell ltogatnod a fejleszti oldalaikra, s ltre kell hoznod egy-egy alkalmazst. A Facebook fejleszti oldala a http://facebook.com/developers, a Twitter pedig a https://dev.twitter.com/ cmen rhet el. A ltrehozs sorn az alkalmazsok egy azonostt kapnak, amit a Facebook App ID-nak, a Twitter pedig Consumer Key-nek nevez. Ezen kvl egy titkos kulcsot is kap sz mindkt szolgltatnl. Ezeket msold t az Azure Management Portal megfelel szvegdobozaiba! A Facebook s Twitter alkalmazsok megfeleln kitlttt tulajdonsglapjait a 14-8 illetve 14-9 brkon lthatod.

296

14. PaaS Mobile Services

14-8 bra: Autentikci konfigurlsa a Facebook fejleszti oldaln

14-9 bra: Autentikci konfigurlsa a Twitter fejleszti oldaln

Autentikci kezdemnyezse kliensoldalrl


Ha kialaktottad a szksges bizalmi kapcsolatokat a Mobile Services s az IDP-k kztt, akkor a Mobile Services SDK fggvnyeivel kezdemnyezhet ed a felhasznl bejelentkeztetst a kliens oldalon. Trj vissza a Visual Studio projekthez, s vegyl fel az alkalmazs App osztlyban egy publikusan elrhet, osztly szint MobileServiceUser vltozt CurrentUser nvvel! Ebben trolja az alkalmazs a futsa sorn az aktulisan bejelentkezett felhasznlt. Helyezz el a felleten egy bejelentkezsre szolgl gombot, s a Click esemnykezeljbe rd be az albbi kdot:
App.CurrentUser = await App.MobileService.LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount);

A LoginAsync metdusnak tadott MobileServiceAuthenticationProvider felsorolt tpus rtkeibl tudjuk kivlasztani, hogy melyik IDP fel kezdemnyezzen bejelentkezst a felhasznl. Sikeres bejelentkezst kveten az aszinkron meghvott fggvny visszatrsi rtkben megkapjuk a bejelentkezett felhasznl azonostjt (UserId property), valamint az IDP irnyban lezajlott sikeres autentikci tnyt reprezentl tokent (MobileServiceAuthenticationToken tulajdonsg). Ha ezt kveten a MobileServiceClient objektumon meghvunk egy InsertAsync, ReadAsync stb. adatelrst vgz fggvnyt, akkor a WAMS-nak kldtt HTTP krsek fejlcbe minden hvsnl belekerl a kapott authentication token, s a szerveroldalon a felhasznl autentiklt lesz.

297

14. PaaS Mobile Services A szerveroldali JavaScript fggvnyeink mindegyiknek egyik paramtere egy user nev objektum. Ezen keresztl rhetek el a szerver ltal mr ellenrztt felhasznl adatai. Legfontosabb tulajdonsga a userId, ami a bejelentkezett felhasznl egyedi azonostja. Hangslyozand, hogy a user objektum adattartalma szerveroldali ellenrzs eredmnyeknt ll el. Ugyan lenne lehetsgnk a kliens oldalrl feltlttt Restaurant objektumokhoz csatolni a feltlt azonostjt, de ez szigoran tilos! Szerver oldalon soha ne hagyatkozzunk arra, amit a kliens llt magrl ! A kapott informci hitelessgre nincs garancia, felhasznli azonostk kinyersre mindig a user objektumot hasznljuk!

Bejelentkezs a Live SDK hasznlatval


Windows Store alkalmazsokban a bejelentkezs felhasznli lmnyn tovbb javthatunk, ha ignybe vesszk az opercis rendszer s a Microsoft Account integrcijval knlkoz lehetsgeket. A Live SDK hasznlatval egy, a Windows 8 modern felhasznli lmnyhez szorosan illeszked bejelentkez kpernyt knlhatunk fel a felhasznlknak. Ehhez a Live SDK szoftverfejleszti kszlet teleptse szksges.
A csomag nem rsze a .NET keretrendszernek, az albbi linken tudod letlteni:

http://www.microsoft.com/en-us/download/details.aspx?id=35754.

Teleptst kveten a Visual Studio projektben a szoksos Add Reference paranccsal tudsz referencit felvenni a Live SDK-ra (Windows Extensions fl)! Az albbi kdrszlet a btnLogin nev gombra kattintssal bejelentkezteti a felhasznlt a Live SDK segtsgvel. A sikeres bejelentkezs eredmnyeknt a Live killt szmunkra egy tokent, ami a result.Session.AuthenticationToken tulajdonsgon keresztl lesz elrhet. Ezt a tokent hasznlva tudjuk azonosttatni a felhasznlt a WAMS fel, a kvetkez kdrszletben kiemelt LoginAsync fggvnnyel. Akrcsak az elz pldnl, a LoginAsync lefutsa utn a kliens tovbbi, WAMS fel indtott krsei autentikltak lesznek.
public sealed partial class MainPage : Page { private LiveConnectSession session; private async void btnLogin_Click() { //Live SDK LiveLoginResult result = await liveIdClient.LoginAsync(new[] { "wl.basic" }); if (result.Status == LiveConnectSessionStatus.Connected) { session = result.Session; LiveConnectClient client = new LiveConnectClient(result.Session); LiveOperationResult meResult = await client.GetAsync("me"); //WAMS SDK App.CurrentUser = await App.MobileService.LoginAsync (result.Session.AuthenticationToken); } else { /*TODO: sikertelen autentikci esetn*/ }

Ahhoz, hogy a fenti kd mkdjn, s a kliensnk kpes legyen autentikcit kezdemnyezni a Live SDK-n keresztl, az alkalmazsunknak rendelkeznie kell egy Package Identityvel. Ez egy Windows Store alkalmazsokhoz ktd egyedi azonost informci. A Package Identity megszerzshez ltre kell hoznunk a Windows Store fejleszti oldalon egy alkalmazst, amit egy varzsl segtsgvel ssze fogunk ktni a Visual Studio projekttel. A Live Connectnek erre az informcira szksge van, ebbl fogja tudni, hogy melyik Windows Store alkalmazsbl kezdemnyeztk a bejelentkezst. A Windows Store alkalmazs ltrehozshoz nyisd meg az albbi oldalt: http://msdn.microsoft.com/enus/windows/apps! Jelentkezz be, s kattints a bal oldali menben a Submit an app parancsra! Itt adj meg

298

14. PaaS Mobile Services egy egyedi nevet az alkalmazshoz, s kattints a Reserve app name gombra! Ezzel lefoglalod a vlasztott nevet, s a Store az alkalmazs szmra egy Package Identityt generl. A Store-beli alkalmazs s a Visual Studio projekt kzti megfeleltets megteremtshez kattints a jobb egrgombbal a projektre, a felugr menbl vlaszd a Store kategrit, azon bell pedig az Associate App with the Store parancsot! Ha bejelentkezel a Microsoft Accountoddal, mr lthatod az elbb ltrehozott alkalmazst. Jelld ki, kattints a Next, majd a kvetkez ablakban az Associate gombra! Ezt kveten a Windows Store kliensbl a Live SDK-t hasznlva mr be tudsz jelentkezni a Microsoft Accountoddal.

Push Notification rtestsek kldse


Mobil eszkzkn fut alkalmazsok esetben sokszor elvrs, hogy bizonyos szerveroldali esemnyek bekvetkezsekor a szerver kpes legyen rtestst kldeni a kliensnek. A szerver azonban nem tudja kzvetlenl megszltani a kliens kszlkeket! Ennek a problmnak a megoldsra hoztk ltre a push notification szolgltatsokat. A push notification rtestsek kldsnek folyamatban hrom szereplt azonosthatunk: Push notification szolgltat (WNS / MPNS / APNS) Push notification kldst kezdemnyez szerver (itt a Mobile Service) Mobil kliens kszlkek, az rtestsek fogadi (Windows 8, WP8, iOS) A push notificationk kldse a 14-10 brn lthat mdon trtnik: 1. 2. 3. 4. 5. A kliens regisztrlja magt a push notification szolgltatnl, s megnyit fel egy csatornt. A regisztrci eredmnyeknt a push szolgltat elkld a kliensnek egy URL -t, amin keresztl a kliens a ksbbiekben megszlthat lesz. A kliens elkldi a kapott URL-t ahhoz a szerverhez, amelytl push notificationket kvn fogadni (esetnkben ez a WAMS). A szerver eltrolja a push notification szolgltatra mutat URL-t. Ha ksbb zenni szeretne a kliensnek, ezt az URL-t hvja meg. Az URL meghvsnak hatsra a push szolgltat rtesti a klienst.

14-10 bra: A push notification klds lpsei

A Mobile Services hrom push notification szolgltatst tmogat. A Windows Notification Service (WNS) a Windows Store alkalmazsok, a Microsoft Push Notification Service (MPNS) a Windows Phone 8 alkalmazsok, az Apple Push Notification Service (APNS) pedig az iOS -re rt alkalmazsok fel tud push notificationket kldeni. A WNS s az APNS hasznlathoz az alkalmazsunkat regisztrlni kell a Windows Store-ban, illetve az iOS Provisioning Portlon. Az MPNS szabadon, autentikci nlkl hasznlhat. Az elz, Live SDK hasznlatrl szl bekezdsben olvashatsz rla, hogyan tudod regisztrlni az alkalmazsodat a Windows Store-ban. A kvetkez pldkban Windows Store alkalmazsokon fogjuk megismerni a push notificationk kldst, ezrt ha mg nem tetted meg, hozz ltre egy alkalmazst a Windows Store fejleszti oldaln, s kapcsold ssze a Visual Studio projekteddel! 299

14. PaaS Mobile Services Ha elkszltl az alkalmazsod regisztrcijval, nyisd meg a tulajdonsglapjt a Store weboldaln ! A bal oldali menben vlaszd az Advanced features parancsot, majd a megjelen oldalon kattints a Push notifications and Live Connect services info linkre! Ezen az oldalon kattins az If your app uses WNS... kezdet szekcin bell az Authenticating your service linkre! Innen msold t az ms-app:// kezdet Package SID s a Client Secret mezk tartalmt az Azure portlon a Mobile Service -ed tulajdonsglapjnak Push oldalra! Ezzel elrted, hogy a Mobile Service-ed szerver szkriptjeibl meg tudod hvni a WNS biztostotta push notification kldshez szksges URL-eket. A konfigurcis lpsekkel elkszltl, helyezd el a kliens alkalmazsban s a Mobile Service szkriptjeiben a push notification kldshez szksges kdrszleteket! A cl az, hogy ha egy felhasznl felvesz egy j ttermet az adatbzisba, akkor arrl az sszes felhasznl push notification rtestst kapjon. A kdrs elkezdse eltt a mr ismert mdon hozz ltre a Mobile Service-ben egy PushChannel nev tblt! Ebben trolod, hogy melyik felhasznlhoz milyen push notification csatorna URL tartozik. Els lpsknt a klienst mdostsd! A Visual Studio projektben engedlyezd, hogy az alkalmazs rtestseket fogadhasson! Ehhez nyisd meg a Package.appxmanifest fjl grafikus szerkesztfellett, s az Application UI fln lltsd Yes rtkre a Toast capable opcit! Az App.xaml.cs-ben vegyl fel egy, az alkalmazsbl brhonnan elrhet PushNotificationChannel tpus vltozt! Ez reprezentlja a WNS fel nyitott csatornt:
sealed partial class App : Application { public static PushNotificationChannel PushChannel;

A kliens alkalmazs indulsakor lefut App.OnLauched metdusban hajtsd vgre a 14-10 brn 1-es s 2-es sorszmmal jellt mveletet: nyisd meg a csatornt a WNS fel!
protected async override void OnLaunched(LaunchActivatedEventArgs args) { PushChannel = await PushNotificationChannelManager. CreatePushNotificationChannelForApplicationAsync();

A felhasznl bejelentkeztetse (vagyis a LoginAsync fggvny lefutsa) utn kldd el a Mobile Servicenek a push notification csatorna URL-jt s azt, hogy a csatorna Windows 8-at futtat kliens kszlkhez tartozik (3-as sorszm mvelet az brn)! A kliens platform tpusra ksbb, szerveroldalon lesz szksg ettl fgg, hogy a szervernek a WNS-en vagy az MPNS-en keresztl kell kezdemnyeznie az rtestsek kldst.
var channel = new JsonObject(); channel.Add("channelUri", JsonValue.CreateStringValue(App.PushChannel.Uri)); channel.Add("clientPlatform", JsonValue.CreateStringValue("Windows8")); await App.MobileService.GetTable("PushChannel").InsertAsync(channel);

Az InsertAsync metdushvs hatsra a szerveroldalon ltrejn egy j rekord a PushChannel tblban. Nyisd meg a Management Portlon az ehhez tartoz Insert szkriptet, s a kvetkez kdsor elhelyezsvel gondoskodj arrl, hogy a szerveroldalon ellenrztt user objektum adattartalma alapjn trold el a felhasznl azonostjt:
function insert(item, user, request) { item.userId = user.userId; request.execute(); }

Ha egy szerveroldali szkriptben brmikor trolnod kell a CRUD mveletet kezdemnyez felhasznl azonostjt, akkor azt mindig ezzel a kdsorral tedd meg, soha ne a kliens ltal kldtt adatokra hagyatkozz!

300

14. PaaS Mobile Services Vgl (az bra 4. lpst megvalstva) add hozz Restaurant tbla insert() fggvnyhez azt a kdrszletet, ami az sszes beregisztrlt kliensnek elkldi az j tterem hozzadsakor a push notification rtestst! A kvetkez kdrszlet a Windows Phone 8 klienseknek szl push notificationk kldst is tartalmazza:
function insert(item, user, request) { item.AddedBy = user.userId; request.execute({ success: function() { request.respond(); var pushChannels = tables.getTable("PushChannel"); pushChannels.read({ success: function(results) { var notificationText = "New restaurant added: " + item.Name; results.forEach(function(chn) { if (chn.clientPlatform == "Windows8") { push.wns.sendToastText01(chn.channelUri, notificationText); } else if(chn.clientPlatform == "WP8"){ push.mpns.sendToast(chn.channelUri, {text1: "New restaurant }, { error: OnPushError }); } }); } }); } }); } function OnPushError(pushResponse){ console.log("Push error:", pushResponse); }

Figyeld meg, hogy mg mieltt a push notificationket elkldd, a kd meghvja a request.respond() fggvnyt! Erre azrt van szksg, mert gy amint beszrtad a rekordot a Restaurant tblba, a Mobile Service rgtn elkldi a kliensnek a HTTP vlaszt a sikeres mveletrl. gy nem kslelte ted a kliensnek kldtt vlaszt, az nem fog mindaddig vrakozsra knyszerlni, amg a szerver elvgzi az sszes push URL meghvst. ltalnosan elmondhat, hogy a szerveroldali szkriptekben, amint minden kldend adat rendelkezsre ll, azonnal clszer meghvni a request.respond() fggvnyt, hogy a kliensnek a lehet legkevesebbet kelljen vrnia a szerver vlaszra. A push notification kldst sikeresen megvalstottad! Indtsd el az alkalmazst, s vegyl fel egy j ttermet! Rvid idn bell megrkezik az rtests a mveletrl. Sajnos azonban ez a megolds nem tkletes. Ha egy adott eszkzrl tbb felhasznli bejelentkezs trtnik egymst kveten, akkor az alkalmazs ltal nyitott push notification csatorna URL nem vltozik, de a userId-k klnbzek lesznek vagy duplikldnak. A jelensg az alkalmazs hibs mkdshez vezet! Az l csatorna URL-ekre egy esemnyrl sok push notification rtests is rkezik, ha azok tbbszr szerepelnek a tblban. A msik problma a megoldssal az, hogy a csatorna URL-ek idvel elvlnek, a kliensek j URL-eket kapnak. Ennek kvetkeztben sok olyan rekord halmozdik fel feleslegesen a PushChannel tblban, ami mr nem ltez channelUri-ket tartalmaz. A problmt ktflekpp oldhatjuk meg. Ltrehozhatunk egy temezett feladatot, ami meghatrozott idkznknt eltakartja a PushChannel tblbl a dupliktumokat. Ennl jobb megolds, ha eleve meg sem engedjk, hogy dupliktumok kerljenek be a tblnkba. Mivel egy felhasznl tbb mobil eszkzrl is belphet a sajt fikjval, ezrt az a megolds nem jhet szba, hogy ha a userId mezben egyezst tallunk beszrsnl, akkor fellrjuk a channelUri mezt. Ha gy jrnnk el, akkor egy felhasznl csak egy eszkzn kaphatn meg a push notificationket. A kvnt mkds elrshez fel kell vennnk egy j mezt a PushChannel tblban, ami a kliens alkalmazs egy konkrt installlt pldnyt azonostja a mez neve legyen installationId!

301

14. PaaS Mobile Services Windows Store alkalmazsok fejlesztsnl ehhez az informcihoz nagyon egyszeren hozzfrhetnk. Egsztsk ki a PushChannel tblba beszr kliensoldali kdunkat az albbi sorokkal:
var packageToken = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null); string installationId = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String (packageToken.Id); var channel = new JsonObject(); channel.Add("channelUri", JsonValue.CreateStringValue(App.PushChannel.Uri)); channel.Add("installationId", JsonValue.CreateStringValue(installationId)); channel.Add("clientPlatform", JsonValue.CreateStringValue("Windows8")); await App.MobileService.GetTable("PushChannel").InsertAsync(channel);

A szerveroldalon hasznljuk fel a PushChannel tbla Insert szkriptjben a klienstl kapott installationId-t! A tbla szrshez a where() fggvnynek egy JavaScript objektummal tudjuk megadni a szrfeltteleket:
function insert(item, user, request) { item.userId = user.userId; var pushChannels = tables.getTable("PushChannel"); pushChannels.where({ installationId: item.installationId }).read({ success: function(results) { if (results.length > 0) { results.forEach(function(chan){ chan.channelUri = item.channelUri; chan.userId = user.userId; pushChannels.update(chan); }); request.respond(200); } else { request.execute(); } } }); }

A szkript kiegsztsvel elrtk, hogy a programunk minden teleptett pldnya mindig csak egy, az aktulisan bejelentkezett felhasznlnak kldtt push notificationt kapjon. Windows Phone 8 kliensek esetben nem tudjuk az elbb bemutatott mdszerrel elkldeni az installationId-t a szervernek. Ha WP8-as alkalmazsokat fejlesztnk, akkor az alkalmazs els indtsnl troljunk egy automatikusan generlt Guid tpus vltozt a telefon perzisztens trterletn, s az alkalmazs minden tovbbi indulsnl ezt a Guid rtket kldjk el installationId-knt!

E-mail klds a Mobile Services-bl


A push notificationkhz hasonlan e-mail zeneteket is tudunk kldeni szerveroldalrl. Ehhez a SendGrid ltalnos e-mail kld szolgltatst kell ignybe vennnk. A http://sendgrid.com oldalon lehetsgnk van ingyenes fik ltrehozsra a szolgltats kiprblshoz. Hozz ltre egy SendGrid felhasznli fikot, s vrd meg, amg a szolgltat elvgzi a fik provizionlst ez nagyjbl 1-2 rt vesz ignybe! Ezt kveten mr el is kezdheted rni a szerveroldali szkripteket. A Node.js require fggvnyvel importlnod kell a sendgrid nev modul SendGrid osztlyt. Az osztly konstruktorban meg kell adnod a SendGrid-es felhasznlnevedet s jelszavadat. Ezt kveten az albbi paramterezssel tudod meghvni az e-mail kldst kezdemnyez send() fggvnyt:

302

14. PaaS Mobile Services

var SendGrid = require('sendgrid').SendGrid; function sendEmailTest() { var sendgrid = new SendGrid('<felhasznl_nv>', '<jelsz>'); sendgrid.send({ to: '<cmzett_email>', from: '<felad_email>', subject: 'Test e-mail by SendGrid', text: 'E-mail sending from WAMS works fine.' }, function(success, message) { // ha nem sikerlt elkldeni az e-mail zenete, logoljuk a hibt if (!success) { console.error(message); } }); }

Ha valamelyik CRUD szkriptbl hvod a send() fggvnyt, akkor azt a push notification kldshez hasonlan csak a request.respond() hvsa utn tedd, hogy a kliensnek kldtt vlaszt ne ksleltesd az email kldssel!

A pldaalkalmazs mkdse
A fejezethez tartoz Visual Studio 2012 solutionben kt projektet tallsz: egy Windows Store s egy WP8 kliens alkalmazst. Mindkt alkalmazsban bejelentkezst kveten j ttermeket vehetsz fel. Az j tterem beszrsrl mind a Windows Store, mind pedig a WP8 kliensek push notificationt kapnak. A WP8 kliensben az rtestsek fogadshoz lpj vissza a telefon fkpernyjre, mert ha az alkalmazs az eltrben fut, nem tud toast notificationket fogadni! A solution bezemelshez nhny lpst vgre kell hajtanod: Teleptened kell a Mobile Services SDK-t s a Live SDK-t. A push notificationk kldshez s a Live SDK hasznlathoz a Windows Store alkalmazs projektjt ssze kell rendelned a sajt Windows Store alkalmazsoddal. Ezt a mr ismertetett mdon a projekt context menjben a Store Associate App with the Store parancsval teheted meg. A Win8 s a WP8 projektben egyarnt az App.xaml.cs-ben a MobileServiceClient konstruktorban a sajt Mobile Service-ed szolgltats URL-jt, illetve Application key rtkt add meg! A szerveroldali szkriptek jelenleg nem helyezhetk verzikezels (source control) al, ezrt az alkalmazs mkdshez szksges sszes szkript fjlt megtallod a solutionben, a Win8 projekt WAMSScripts knyvtrban. Mieltt futtatnd az alkalmazst, ezeket msold t az Azure Management Portlra a megfelel tblk CRUD szkriptjeihez! Ha szeretnd elkerlni a Visual Studio s a portl kztti msolgatst a fejlesztseid sorn, akkor lehetsged van arra, hogy a diszken lv WAMSScripts knyvtr vltozsakor a benne trolt fjlok automatikusan szinkronizldjanak a Mobile Service-zel. Errl az albbi rdekes blogbejegyzsben tallhatsz egy teljes, lpsrl lpsre kvethet lerst: http://www.thejoyofcode.com/More_CLI_ndash_changing_your_Mobile_Services_workflow_D ay_5_.aspx.

303

14. PaaS Mobile Services

sszegzs
A fejezet olvassa sorn meggyzdhettnk rla, hogy a Mobile Services-zel ltrehozott felhszolgltatsknt mkd szerverek nagyon knyelmess teszik a fejlesztk lett, hiszen out-of-thebox lmnnyel juthatunk garantltan hibamentes s testreszabhat backend infrastruktrhoz. Azonban nem szabad elfelejteni, hogy a kulcsraksz komponensek hasznlatnak ra van tisztban kell lennnk testreszabhatsguk, sklzhatsguk hatraival s rendelkezsre lls uk jellemzivel. Pontosan ismernnk kell a felhasznlt technolgia korltait, hogy eldnthessk, alkalmas-e a megvalstand mobil alkalmazsunk szmra szerveroldalnak. A vlasz szerencsre meglepen sok esetben igenl. A szerver szkripteket hosztol Node.js krnyezet gazdag modulkszletnek egyre bvl halmaza hasznlhat, a tmogatott mobil platformok kzt hamarosan megjelenik az egyetlen hinyz jelents platform, az Android is, gy startup projektek szmra mr most is megfontoland alternatvt tud knlni a Mobile Services. A ZUMO (Azure Mobile) kdnev projekt fejleszti a jvben hasonl intenzitssal fognak egyre tbb Azure funkcit elrhetv tenni a WAMS-bl, mindezt a fejleszti kzssg krseihez igazodva. Sok izgalmas s hasznos jdonsggal fog bvlni a Mobile Services a kzeljvben is, megri figyelemmel ksrni a technolgia fejldst.

304

15. PaaS/SaaS Web Sites

15. PaaS/SaaS Web Sites


Ebben a fejezetben az albbi tmkat ismerheted meg: Az Azure Web Sites szolgltats alapjai Az Azure Portal Web Sites rsznek hasznlata Fejleszteszkzk hasznlata Web alkalmazsok ltrehozsa nhny kattints segtsgvel Azure hasznlata Mac OS X opercis rendszeren A korbbi fejezetek olvassa sorn megismerhetted a Windows Azure infrastrukturlis rszt, melynek segtsgvel knnyedn tudsz virtulis gpeket futtatni a felhben. Ebben a fejezetben ms vizekre eveznk, megtudhatod, hogyan veszi le a vlladrl a weboldalak zemeltetse sorn gyakran elfordul terheket az Azure. Megtanulhatod, hogy hogyan tudsz nhny kattints utn ltrehozni egy felhben fut weboldalt, ami egy perc mlva mr mkdkpes.

Az Azure Web Sites szolgltats ttekintse


Az Azure Web Sites hasznlatval nem vagyunk beleszortva a Microsoft fejlesztsi koszisztmjba, knnyedn fejleszthetnk s hosztolhatunk a felhben a meglv .NET -es megoldsok mellett akr a node.js keretrendszerben, Java, PHP s Python nyelveken elksztett webes alkalmazsokat. Ha a weboldalunknak adatbzisra van szksge, akkor se vagyunk rknyszertve az SQL Azure hasznlatra, btran lhetnk a MySQL lehetsgeivel is. Ha nem szeretnnk sajt magunk a kdolssal foglalkozni, hanem inkbb egy jl bevlt tartalomkezel rendszert (CMS) hasznlnnk, az Azure ebben is segtsgnkre lesz. Nhny kattintssal el tudjuk kszteni a legismertebb CMS-ek alapjn a weboldalunkat, amely a konfigurls utn azonnal mkdkpes lesz. Nhny plda az Azure Web Sites ltal out-of-the-box tmogatott CMS rendszerekre (15-1 bra): Drupal Joomla Orchard CMS Wordpress Umbraco CMS MediaWiki

305

15. PaaS/SaaS Web Sites

15-1 bra: j weboldal ltrehozsa galribl

A fejleszts folyamatnak sorn nemcsak kivl fejleszteszkzket s platformot kapunk a keznkbe, hanem egyttal deployment lehetsgek szles krt is. A hagyomnyos FTP kapcsolaton keresztli deploymenten kvl weboldalunkat feltlthetjk TFS (Team Foundation Server) vagy Git verzikezel segtsgvel, illetve repository szolgltatst kzvetve nyjt oldalakon keresztl, ilyen a CodePlex vagy a GitHub. Webes alkalmazsok fejlesztsnl gyakran elfordul, hogy tbb kdgat hasznlunk a fgon kvl, gy kln tudjuk vlasztani az oldalunk les, illetve fejleszts alatt ll vltozatt. Ez egy igen hatkony eszkz a keznkben, hiszen egy hibs verzi lestsekor egy kattintssal brmikor vissza tudunk llni egy mkd fgra, gy nem lesz kiess az oldalunk mkdsben (15-2 bra).

15-2 bra: Tbb kdg tmogatsa

306

15. PaaS/SaaS Web Sites

A knyv rsnak idejben a Microsoft ksrleti szolgltatsknt ingyenes Team Foundation Service verzikezel s project menedzsment szolgltatst biztost, amely t felhasznlig teljesen ingyenes, s teljes mrtkben egyttmkdik az Azure Web Sites szolgltatssal. Bvebb informci a http://tfs.visualstudio.com cmen olvashat.

Fejleszteszkzk hasznlata
Microsoft WebMatrix
A WebMatrix egy ingyenes, knnyen tlthat fejlesztkrnyezet, mely tbbfle webes eszkzt magba foglalva knnyti meg a weboldalak elksztst. A csomag az IIS Expresst, az ASP.NET-et s az SQL Server Compactot tartalmazza. A WebMatrixban fejlesztett kdunkat knnyedn felhasznlhatjuk ksbb a Visual Studio vagy az SQL Server hasznlata sorn is. Az ASP.NET alap dinamikus weboldalak ksztsekor Razor szintaxist, C# vagy Visual Basic programozsi nyelvet is hasznlhatunk. Ebben a rszben megtudhatjuk, hogyan segt a WebMatrix abban, hogy webhelyeket hozzunk ltre, s az Azure Web Sites segtsgvel a felhben hosztoljuk.
A fejezetnek nem clja teljes kren bemutatni a WebMatrix eszkzt s az ASP.NET Web Pages technolgit. Bvebb informcit a http://webmatrix.devportal.hu oldalon tallsz, ahol letltheted a Honlappts a XXI. szzadban cm knyv PDF vltozatt, s az ingyenes video oktatanyag segtsgvel elmlylhetsz a WebMatrix hasznlatban.

Gyakorlat: Egyszer bemutatkoz weboldal ltrehozsa


A kvetkez gyakorlatban ltrehozunk egy kisebb cgeknek vagy magnembereknek idelis egyszer bemutatkoz weboldalt, amibe nhny informci megadsval knnyedn beilleszthetnk meglv blogbejegyzseket, twitter hrfolyamot s a Flickr szolgltatsra feltlttt kpeket. Kvesd az albbi lpseket: 1. 2. Jelentkezz be a Windows Azure portlra, majd kattints az oldal aljn lv NEW gombra! Menj a Compute Web Site Quick Create lehetsgre, majd add meg oldal nevt, s kattints a Create Web Site gombra, ahogy az a 15-3 brn lthat!

15-3 bra: Weboldal ltrehozsa

3. 4.

Amint a weboldal ltrejtt, kattints a nevre, hogy hozzfrj a Dashboardhoz! A Dashboardon kattints az oldal aljn elhelyezked WebMatrix ikonra! Ha a WebMatrix 2 nincs felteleptve a szmtgpre, akkor a Web Platform Installer 4.0 feltelepti a WebMatrix 2-t s

307

15. PaaS/SaaS Web Sites minden szksges komponenst. Ha mr rendelkezel teleptett WebMatrix 2-vel, akkor letltdik az res weboldal. 5. 6. Vlaszd a Yes, install from the template gallery lehetsget, a kvetkez kpernyn kattints a Personal site, majd a Next gombra! Elindul a WebMatrix alkalmazs a kivlasztott Personal site sablonnal (15 -4 bra).

15-4 bra: A WebMatrix a Personal Site sablonnal

7.

Vlaszd ki a bal oldalon lv oldal struktrbl a _Twitter.cshtml fjlt! Mdostsd a kijellt rszt, adj meg egy tetszleges twitter felhasznli nevet! Jelen pldban a devportal.hu hivatalos twitter csatornjt hasznljuk pldaknt. A twitter a hagyomnyos http://twitter.com/[felhasznlnv] elnevezst hasznlja.

@{ // provide your Twitter screen name string screenName = "devportal"; } @if (String.IsNullOrEmpty(screenName)) { <p> Welcome to the Twitter Page! Please view the Contents/_Twitter.cshtml page and fill out your Twitter screen name. </p> } else { var tweets = TwitterHelper.GetUserTimelime(screenName); if (tweets.Count > 0) { <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> foreach (var item in tweets) { <article class="twitteritem"> <div class="twitterbody"> <header> <h1>@item.Title</h1> </header> <p>@Html.Raw(item.HtmlContent)</p>

308

15. PaaS/SaaS Web Sites

<p class="pubdate">Tweeted <span>@item.PublishedDate.ToLocalTime().DateTime.ToShortTimeString()</span> </p> <ul class="twitterActions hide-from-mobile"> @TwitterHelper.ReplyToTweet(item.Id) @TwitterHelper.Retweet(item.Id) @TwitterHelper.FavoriteTweet(item.Id) </ul> </div> <!-- Seperate set of links for jquery mobile --> <div class="twitterActions hide-from-desktop" data-role="controlgroup" data-type="horizontal" data-mini="true"> @TwitterHelper.ReplyToTweet(item.Id) @TwitterHelper.Retweet(item.Id) @TwitterHelper.FavoriteTweet(item.Id) </div> </article> } } else { <p>There was a problem contacting Twitter: you may be behind a proxy or have hit your request limit temporarily.</p> } }

8.

Kvetkez lpsben mdostsd a _Blog.cshtml fjlt! Itt szintn a devportal.hu oldal RSS feedjt hasznljuk pldaknt.

@{ //Example: http://www.zdnet.com/blog/microsoft/rss string blogUrl = "https://devportal.hu/blogs/news/rss.aspx"; } @if (String.IsNullOrEmpty(blogUrl)) { <p> Welcome to the RSS page! Please view the Contents/_Blog.cshtml page and provide a URL for the blog that you would like to display. Note that this page only supports RSS 2.0 and Atom 1.0 feeds. </p> } else { var feedItems = BlogHelper.GetFeedItems(blogUrl); foreach (var item in feedItems) { <article class="newsitem"> <div class="newsbody"> <header> <h1>@item.Title</h1> <h2>@item.Author</h2> </header> <p class="pubdate">Published: <span>@item.PublishedDate.ToLocalTime().DateTime</span> </p> <p>@Html.Raw(item.HtmlContent)</p> <a href="@item.WebUrl" target="_blank" data-role="button">Read more</a> </div> </article> } }

309

15. PaaS/SaaS Web Sites 9. A mdostsok utn a fels szalagmenn kattints a Publish gombra! Ezutn a WebMatrix kilistzza a mdostott fjlokat. Lpj btran tovbb, a httrben elkezddik a weboldal komponenseinek feltltse a felhbe! Ennek llapotrl a WebMatrix aljn elhelyezked srga sv tjkoztat, ahogy a 15-5 brn lthat.

15-5 bra: Sikeres feltlts jelzse

10. Nyisd meg a weboldal linkjt, s naviglj a twitter oldalra, ahogyan az a 15 -6 brn lthat!

15-6 bra: A felhben fut weboldal

310

15. PaaS/SaaS Web Sites

Azure Web Sites hasznlata Mac OS X opercis rendszeren


A Windows Azure lehetsgeit immr nemcsak Windows alatt, hanem Linux vagy akr Mac OS X rendszer alatt is hasznlhatjuk a Windows Azure Command-line Tool for Mac segtsgvel.
A fent emltett segdprogram letlthet az albbi weboldalrl:

http://go.microsoft.com/fwlink/?LinkId=252249&clcid=0x409 .

Gyakorlat: Command-line Tool teleptse s hasznlatbavtele


Kvesd az albbi lpseket: 1. 2. Tltsd le a teleptshez szksges .pkg kiterjeszts fjlt a fenti weboldalrl! A letlts utn kattints dupln a fjlra, hogy elinduljon a telepts (15-7 bra):

15-7 bra: A telepteszkz az indulsa utn

3.

A felttelek elfogadsa s a teleptsi hely kivlasztsa utn rd be az adminisztrtori jelszt! A telepts nhny perc alatt megtrtnik, a befejezse utn errl rtestst kapsz, s az alaprtelmezett bngszben megnylik az Azure weboldala. Ellenrizd, hogy valban sikeresen teleptetted-e a szoftvert! Indtsd el a terminlt, majd gpeld be az azure parancsot (15-8 bra):

4.

311

15. PaaS/SaaS Web Sites

15-8 bra: Az azure parancssoros eszkz

5.

Ahogy a 15-8 brn lthat, mkdik a felteleptett alkalmazs, s a kilistzott parancsok segtsgvel knnyedn tudod a weboldalt vezrelni. Ezutn nincs ms dolgod, mint letlteni az account settings s a publish settings belltsokat. Ehhez gpeld be a terminlba az albbi sort:

~$ azure account download info: Executing command account download info: Launching browser to https://windows.azure.com/download/publishprofile.aspx help: Save the downloaded file, then execute the command help: account import <file> info: account download command OK

6.

A fjl letltse utn lpj be a letlts clknyvtrba, majd add ki az albbi parancsot:

~$ azure account import <fjl neve>.publishsettings

7.

A sikeres importls utn a 15-9 brn is lthat zenetek trulnak eld:

15-9 bra: Sikeres importls

312

15. PaaS/SaaS Web Sites

Ne ijedj meg, ha nem teljesen az 15-9 brn szerepl kimenetet kapod, Azure Free Trial elfizets esetn a kzps sorok gy mdosulnak:

info: info: info:

Found subscription: 3-Month Free Trial Found subscription: Pay-As-You-Go Setting default subscription to: 3-Month Free Trial

Az eszkz mkdsnek kiprblsra hozz ltre egy weboldalt nhny msodperc alatt az albbi gyakorlat segtsgvel!

Gyakorlat: Node.JS alap weboldal ltrehozsa


A weboldal ltrehozshoz kvesd az albbi lpseket: 1. 2. 3. 4. Menj fel az Azure portlra (http://manage.windowsazure.com/), bal oldalt alul kattints a New gombra! A lentrl besz szrke rszen vlaszd ki a Compute Web Site Quick Create lehetsget, majd add meg az oldal nevt tetszlegesen (a pldban myfirstnodesite)! Befejezsknt kattints a jobb als sarokban lv Create Website gombra! Ha a weboldal mr Running sttuszban van, akkor kattints az oldal nevre, hogy hozzfrhess a Dashboardhoz!

15-10 bra: A Dashboard

5. 6. 7.

A Dashboard felletn (15-10 bra) vlaszd ki a Set up Git publishing menpontot! Mivel a Git s az FTP nem tud Microsoft Account (Live ID) segtsgvel autentiklni, gy meg kell adnod egy szabadon vlasztott felhasznli nevet s jelszt! Nhny msodperc utn ltrejn a git repository, errl tjkoztatst kapsz.

313

15. PaaS/SaaS Web Sites

A kvetkez lpsekhez szksg van az opercis rendszerre felteleptett Node.JS s Git kliensre. A fejezetnek nem clja ezen eszkzk rszletes bemutatsa. A szksges llomnyok s teleptsi instrukcik elrhetk a http://nodejs.org, valamint a http://git-scm.com/ weboldalakon.

8.

Nyiss meg egy szimpatikus szvegszerkeszt programot, majd hozz ltre egy j fjlt server.js nven, s rd bele az albbi kdot:

var http = require('http') var port = process.env.PORT || 1337; http.createServer(function(req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Az elso Azure alapu Node oldalam \n'); }).listen(port);

9.

Mentsd el a fjlt, majd nyisd meg a Terminlt, s rd be az albbi sort:

node server.js

10. Ezutn a fut weboldal megtekinthet a localhost:1337 cmen, ahogy az a 15-11 brn is lthat.

15-11 bra: A fut weboldal

11. Itt az ideje, hogy feltltsd az oldalt a felhbe! Ehhez elszr lltsd be a helyi Git repositoryt! A Terminl hasznlatval menj a server.js fjlodat tartalmaz knyvtrba, majd add ki az albbi parancsot:
git init

12. Ezutn gpeld be az albbi parancsokat, hogy hozzadd a fjlokat a helyi Git repositoryhoz:
git add . git commit -m "initial commit"

13. lltsd be a szksges URL-t, melyet a weboldal dashboardjn GIT URL nven tallsz meg:
git remote add azure [ide jn az URL]

14. Kldd fel a felhbe a vltoztatsokat az albbi paranccsal! Sikeres feltlts utn a 15 -12 brn lthat kimenetet kapod.
git push azure master

314

15. PaaS/SaaS Web Sites

15-12 bra: Sikeres feltlts

A Git s az Azure hasznlatnak elnye, hogy a vltozsok azonnal rvnybe lpnek a weboldalon is (15-13 bra), de ha valami mdosts rosszul slne el, akkor nhny kattintssal lehetsgnk van a vltoztatsok visszavonsra (rollback) is, amit a dashboardon grafikusan is elvgezhetnk.

15-13 bra: A verzitrtnet

A feltlts utn ellenrizheted, hogy sikeresen fut -e a felhben a frissen megrt webes alkalmazsod (15-14 bra).

15-14 bra: A felhben fut weboldal

Monitorozs s sklzs
Monitorozs
A Monitor management oldal segtsgvel a weboldalainkhoz kapcsold napraksz teljestmny statisztikkat tekinthetnk meg, ahogy az a 15-15 brn is lthat. Az itt megjelen legfrissebb statisztikai adatok:

315

15. PaaS/SaaS Web Sites CPU Time a weboldal processzorhasznlata Requests a weboldal fel irnyul krsek kliens oldalrl Data Out a weboldal kliensek fel kldtt adatnak mennyisge Data In a kliensektl a weboldal fel rkez adat mennyisge Http Client Errors Http 4xx Client Error zenetek szma Http Server Errors Http 5xx Server Error zenetek szma j metrika hozzadshoz kattints az oldal aljn elhelyezked ADD METRICS gombra, s vlassz a lehetsgek kzl!

15-15 bra: A weboldalunkhoz kapcsold statisztikk

Sklzs
Az Azure Web Sites esetn hromfle hasznlati md ltezik: Free, Shared s Reserved. Egyszerre tbb weboldalt is ltrehozhatsz, s weboldalanknt llthatod, hogy melyik milyen kiszolglsi szinten fusson.

316

15. PaaS/SaaS Web Sites

15-16 bra: Sklzsi lehetsgek

Free Web Site Mode


Ebben a mdban egyszerre maximum 10 weboldalt hozhatsz ltre. Ha egy weboldal Free mdban fut, akkor fizikailag olyan gpen kap helyet, amin tbb felhasznl weboldalai osztoznak. A Free weboldalak teljesen ingyenesek, de klnfle kiktsek vonatkoznak rjuk. Fontos korltozs, hogy egyedi domain nv ebben a mdban nem hasznlhat, a ltrehozott weboldal cme mindenkppen [weboldalneve].azurewebsites.net lesz. A megktsek az albbiak: 10 ingyenes weboldal hasznlatnak lehetsge 165 MB napi kimen adatforgalom adatkzpontonknt Maximum 1 GB trhely az sszes weboldalnak 20 MB MySQL adatbzis trhely az els 1 vre

15-17 bra: Shared Instance model 1db Instance esetn

Shared Web Site Mode


Shared mdban egyrszt megengedbbek a CPU idre s egyebekre vonatkoz korltozsok, nincs korltozva a kimen adatforgalom, valamint Shared weboldalnl mr hasznlhatod a sajt domain nevedet is. Ennek a mdnak a f jellemzit az albbiak foglaljk ssze: Sajt host vagy domain nv hasznlatnak a lehetsge Kimen adatforgalom fizetse Pay-As-You-Go mdon Maximum 1 GB trhely az sszes weboldalnak 20 MB MySQL adatbzis trhely

Reserved Web Site Mode


Itt mr semmilyen korltozs nincs, az erforrsok szabadon felhasznlhatk, azonban egy Azure virtulis gp havi kltsgeit kell fizetned. Tbb nagyobb forgalm weboldal hasznlata esetn rdemes elgondolkodni ezen a lehetsgen, hiszen az Azure automatikusan sszemsolja az ugyabban az adatkzpontban lv weboldalainkat erre a dediklt virtulis gpre. Sajt host vagy domain nv hasznlatnak lehetsge 10 GB trhely az sszes oldalnak 20 MB MySQL adatbzis trhely

317

15. PaaS/SaaS Web Sites

15-18 bra: Shared s Reserved md kztti klnbsg

A Shared s Reserved Web Sites md bekapcsolshoz ki kell kapcsolnod a kltsi limitet (Spending Cap). Errl s a szolgltats rszletes razsrl a kvetkez, 16. fejezetben olvashatsz.
Felmerlhet, hogy mi trtnik, ha tllped az elfizetsi szintedhez kapcsold megengedett keretedet. Az Azure 24 rnknt szmolja a kvtt, teht ha az adott napra tllped a kimen adatforgalmi s/vagy a processzor hasznlati keretedet, akkor automatikusan lekapcsolja az elfizetshez tartoz Free vagy Shared mdban fut weboldalaidat, s a kvetkez 24 rs ciklus kezdetekor automatikusan elindtja.

sszegzs
Ebben a fejezetben megtanulhattad az Azure Web Sites alapvet hasznlatt s funkciit, valamint a legegyszerbb mdjt annak, hogyan hozz ltre weboldalakat a felhben. Lthat, hogy egy kis ltogatottsg weboldal esetn teljesen ingyenesen elhelyezheted a weboldalad a felhben. Ha szksg van sajt domain nv alkalmazsra s az ingyenes hasznlati keret mr nem elg, weboldaladat az Azure ban hosztolva a hagyomnyos hosting cgekhez hasonl rral, azonban lnyegesebben bvebb szolgltatsknlattal s szolgltatsi minsggel tallkozhatsz.

318

16. razs

16. razs
Ebben a fejezetben az albbi tmkat ismerheted meg: Az Azure razsi alapelvei, alapfogalmak A fontosabb Azure-szolgltatsok konkrt razsi modelljei Elfizetsi s termktmogatsi konstrukcik A szmlzsi portl hasznlata Knyvnk korbbi rszeiben rszletesen megismerkedhettl az Azure elmleti, gyakorlati httervel. Ezek tisztzsa utn most ttrnk a pnzgyi krdsekre. Ebben a fejezetben bemutatjuk az Azure platform djszabst. Ahogy lthattad, a platform igen sok elembl ll, amiket radsul klnbz felhasznlk ms s ms mennyisgben szeretnnek ignybe venni van, akinek egy virtulis gpre van szksge, van, aki pedig tszz gpes farmot szeretne zemeltetni (s ezrt termszetesen diszkontlt rat vr el). A fejezetben megnzzk, hogyan szmolhat ki a felhasznlt Azure erforrsok alapjn a kltsg, illetve milyen konstrukcik kzl vlaszthatod ki az alkalmazsod, cged felhasznlsi profiljhoz leginkbb illt. Az ezutn kvetkez, 17. fejezetben a pnzgyek msik, bevteli oldalt vizsgljuk majd meg. Az Azure felhasznlk nagy rsze termszetesen azrt hasznlja a platformot, mert profitlni szeretne belle. A felh s az ott futtatott zleti szolgltatsok azonban sokak szmra mg j terletet jelentenek. A kvetkez fejezetben ezrt a platform rtkestsvel kapcsolatos krdseket jrjuk krl: bemutatjuk a jellemz zleti modelleket, monetizcis lehetsgeket, megvizsgljuk, hogy a Microsoft milyen partnerprogramokkal s egyb lehetsgekkel segti az Azure fejlesztket s gy tovbb.
Az razs az Azure-platform egyik legdinamikusabban vltoz rsze folyamatosan jelennek meg j komponensek, meglv komponensek razsa gyakran vlik egyszerbb vagy olcsbb s gy tovbb. Jelen fejezet a megrsakor (2013 eleje) aktulis informcikat tartalmazott, ezek idvel azonban termszetesen elavulnak. Az aktulis rakat mindig a www.azure.com honlap Pricing szekcijban tallod.

Az Azure ltalnos razsi elvei


Tekintsk t, hogy nagy vonalakban, hogyan nz ki az Azure razsi modellje, mik az ide kapcsold fogalmak! Ahhoz, hogy Azure erforrsokat hasznlhass, elsknt egy Microsoft Accountra (korbbi nevn Live ID) van szksged. (A Microsoft Account akr tbb is termszetesen ingyenesen ltrehozhat.) Miutn ez megvan, el kell ltogatnod az Azure.com portlra, ahol az azonostdhoz tartoz egy elfizetst (subscription) kell regisztrlnod. Egy Microsoft Accounthoz tbb elfizets is tartozhat, s egy elfizetshez is tartozhat tbb Microsoft Account (co-admin funkcionalits, korbban mr volt rla sz). Az gy elkszlt elfizetsbe bejelentkezhetsz az azonostd segtsgvel, s a Management Portlon vagy az erre szolgl klnfle API-kon keresztl (pldul PowerShell) nekilthatsz az Azure hasznlatnak, ltrehozhatsz klnfle erforrsokat s gy tovbb. Minden ltrehozott Azure erforrsnak egy elfizetshez kell tartoznia, az nem lghat a levegben. Minden Azure erforrsnak van egy alapdja, ezt nevezzk Pay-As-You-Go rtnak. Virtulis gpeknl pldul a gp mrettl fggen van egy rnknti dj, Azure Storage esetn a trolt adatmennyisgnek van valamekkora kltsge s gy tovbb. A felhasznlsod mrtkt az az elfizets mri, amelyikhez az adott erforrs tartozik. Nem biztos azonban, hogy tnylegesen ezt az alapdjat fogod kifizetni. Ez egy irnyelv, azonban az elfizetseknek vannak tpusai, s az adott elfizets tpustl fggen az azon belli felhasznlsra

319

16. razs klnbz kedvezmnyek vonatkozhatnak. Lteznek pldul olyan elfizetsek, ahol valamilyen szzalkos kedvezmny jr a fogyasztsrt: ilyenkor az elfizets szpen regisztrlja az elhasznlt gprk mennyisgt, azonban a hnap vgi szmlra az alapdjnak csak bizonyos szzalka kerl. Ilyen elfizets-tpusbl tbb is van, ezeket vgignzzk a fejezetben. Egy ilyen tpussal mr tallkoztl, ez volt a 90 napos prbaverzi. Ennek a tpusnak a specialitsa, hogy 90 napig l csak, m a 90 napos peridus alatt 30 naponknt egy sor erforrskvta kerl jvrsra az elfizetsen bell, s ezeket a kvtkat ingyenesen lefogyaszthatod. Egy msik lnyeges tpus a Pay-As-You-Go elfizets: ahogy a neve is mutatja, ez egy olyan elfizets tpus, ahol semmilyen kedvezmny nincs, minden erforrs utn az adott erforrs alapdjt kell megfizetned, viszont cserbe nincsenek ktelezettsgeid sem. A kedvezmnyes elfizets -tpusok ltalban elvrnak valamilyen idbeli vagy pnzbeli ktelezettsgvllalst, mg a Pay-As-You-Go tetszleges idpillanatban indokls nlkl lemondhat. sszefoglalva teht az Azure-vsrlssal kapcsolatos alapfogalmakat: Az Azure-ba val bejelentkezshez Microsoft Accountot kell hasznlnod. Egy Microsoft Accounthoz tbb elfizets is ltrehozhat, de az Azure hasznlathoz legalbb egy elfizetsnek lteznie kell. Az elfizetsek megoszthatk, teht egy elfizetshez tartozhat tbb azonost. Minden Azure erforrsodnak (virtulis gpek, Storage Accountok, SQL adatbzisok stb.) egy elfizetshez kell ktdnie, az erforrsok kltsgeit az elfizetsek mrik. Technikai szempontbl minden elfizets ugyanazt tudja, razsi szempontbl viszont tbbfle elfizets-tpus is ltezik (pldul 90 napos prbaverzi, Pay-As-You-Go stb.), a hasznlni kvnt tpust az elfizets regisztrcijakor hatrozhatod meg. Az Azure erforrsok mindegyike rendelkezik egy alapdjjal, de erre az alapdjra az adott erforrst tartalmaz elfizets tpustl fggen valamilyen szzalkos kedvezmnyt kaphatunk, havi kvtkat stb. Pldul a 90 napos prbaverzi esetn egy sor ingyenes kvtt kapsz minden hnapban, s azt a kvtt teljesen ingyenesen elhasznlhatod. A fejezet tovbbi rszeiben rszletesen megismerkednk az itt csak ltalnossgban emltett elfizets tpusokkal s az egyes erforrsok alapdjainak szmtsi mdjval, majd ttrnk a tmhoz kapcsold tovbbi lnyeges krdsekre.

Fontosabb Azure szolgltatsok razsa


Az Azure platform igen sokfle szolgltatsbl ll. Knyvnknek nem clja, hogy ezeknek mindenre kiterjed enciklopdija legyen, ezrt az albbiakban csak a lnyegesebb, jellemzen sokat hasznlt (s gy a tipikus Azure-projekt kiadsainak nagy rszt generl) komponensek razst mutatjuk be. A szolgltatsok napraksz, teljes kr razsi informciit az Azure.com portlon tallhatod meg. A fejezetben citlt szmok s adatok 2013 janurjbl szrmaznak, idvel termszetesen elvlnek.

A mindentt jelenlv adatforgalmi dj


Kezdjk azzal a djttellel, ami mindig, minden komponens esetn jelen van. Ez az adatforgalmi dj. Szmtsi mdja: Ha egy adatcsomag az Azure adatkzpont bels hlzatn mozog, akkor az ingyenes. Ilyen pldul kt sajt virtulis gpnk kztt zajl forgalom vagy egy PaaS szerepkr s a hozz tartoz SQL Database kztt zajl forgalom, de az is ingyenes, ha egy msik Azure elfizetssel vagy Azure gyfllel kommuniklunk, mindaddig, amg az is a mi adatkzpontunkban van. Emiatt a djttel miatt nagyon lnyeges, hogy gyelj az sszetartoz komponensek egytt trtn elhelyezsre! Magyarorszgrl rtelemszeren valamelyik eurpai adatkzpontot rdemes hasznlni. Vlaszd ki, hogy melyik a szimpatikus, s utna kvetkezetesen helyezd minden szolgltatsodat oda! Ha az adatbzisodat a North Europe kzpontba rakod, a webes szerepkrdet meg a West Europe kzpontba, akkor egyrszt lass lesz a kapcsolat (interneten

320

16. razs keresztl fog menni loklis hlzat helyett), msrszt pnzbe fog kerlni. Termszetesen tmogatottak a tbb adatkzpontok kztt elosztott alkalmazsok, azonban vedd figyelembe ennek teljestmnybeli s pnzgyi kvetkezmnyeit! Ha egy adatcsomag a klvilgbl az Azure adatkzpontba befel halad (kvlrl nzve feltlts trtnik, angol neve ingress), akkor szintn ingyenes. Ha egy adatcsomag az Azure adatkzpontbl a klvilgba kimegy (kvlrl nzve letlts trtnik, angol neve egress), akkor pnzbe kerl, az adatkzpont rgijtl fgg mennyisgben. Az eurpai s amerikai adatkzpontokbl a kimen forgalom 12 dollrcent/GB, az zsiai adatkzpontokbl a kimen forgalom 19 dollrcent/GB. Az razs pontos, azaz pl. 500 MB letltse a gigabjtonknti r felbe kerl. Nagymret fogyaszts esetn (tbb, mint 10 TB/hnap) a gigabjtonknti dj cskken, rszleteket az razsi honlapon tallsz. Az elzekbl kvetkezik, hogy ha egy adatcsomag kt Azure-adatkzpont kztt mozog, az nem ingyenes. Ez all egy kivtel van: az Azure Storage szolgltats georeplikcijnak adatforgalma, aminek nincs kltsge a felhasznl szmra. Ne feledd: az adatforgalmi dj mindig jelen van, legyen sz brmilyen Azure felhasznlsrl!

IaaS virtulis gpek (Virtual Machines) razsa


A knyv els felben megismerkedhettl az Azure virtulis gpekkel. Egy virtulis gp ltrehozsakor tfle mret kzl vlaszthatsz (Extra Small, Small, Medium, Large, Extra Large). A gpek rt elssorban a mretk hatrozza meg, az rnknti djban van megadva. Az rnknti dj a gp mrettl s opercis rendszertl fgg. Minl nagyobb a gp, termszetesen annl tbbe kerl rnknt. Ezenfell az Azure gondoskodik a Windows Server licencekrl (teht nem kell megvenned a Windows licencet ahhoz, hogy az Azure-ban Windows Servert futtathass), cserbe azonban a Windows Server alap gpek rnknti tarifja kicsivel magasabb, mint az azonos mret Linuxos gpek. Knyvnk rsakor a virtulis gpek preview llapotban voltak. Ez azt jelenti, hogy a virtulis gp funkcionalits hivatalosan mg nem tmogatott, ezrt nem vonatkoznak r a klnfle Azure SLA-k (szolgltatsszint-garancik) sem, cserbe viszont 33%-kal cskkentett ron lehet azokat ignybe venni. A 16-1 tblzat bemutatja a gpmreteket, a gpmretekhez rendelt Windows - s Linux-tarifkat, valamint tartalmazza az aktulis (a preview md miatt diszkontlt) rat s a majdani teljes rat is. 16-1 tblzat: Az Azure IaaS virtulis gpek rnknti tarifi Gpmret Extra Small Small Medium Large Extra Large CPU magok Osztott 1 2 4 8 RAM 768 MB 1,75 GB 3,5 GB 7 GB 14 GB Windows-r Preview $0,013 $0,08 $0,16 $0,32 $0,64 Teljes $0,02 $0,115 $0,23 $0,46 $0,92 Linux-r Preview $0,013 $0,08 $0,16 $0,32 $0,64 Teljes $0,02 $0,085 $0,17 $0,34 $0,68

rnknti tarifa alatt naptri rkat rtnk, azaz ha egy gpet 16:30-kor kapcsolsz be s 17:30-kor kapcsolsz ki, akkor 2 naptri rba esett bele, teht az rnknti dj ktszerest kell megfizetned. (Ezall kivtelt kpez az rk els s utols t perce: ha 16:15 -kor bekapcsolt gpedet 17:03-kor kikapcsolod, akkor csak egyszer kell kifizetned az rnknti djat.) Nagyon fontos, hogy gpeid ugyan az Azure portlon lellthatk a Stop gombbal, illetve tvoli asztali kapcsolaton keresztl is kikapcsolhatk, de a lelltott gpek is djktelesek. Egy virtulis gprt kizrlag akkor nem kell fizetned, ha trlted. Ettl persze nem kell megijedni: a trls gyakorlatilag csak annyit

321

16. razs jelent, hogy az Azure elengedi a gphez rendelt processzort s memrit: a virtulis gp merevlemeze ott marad, a gpet brmikor vissza tudod kapcsolni nhny kattintssal vagy szkriptbl. Az rnknti djon kvl van mg kt fontos djttel: a Storage kltsgek s az adatforgalmi dj. Nzzk a Storage kltsgeket! A virtulis gpek merevlemezei perzisztensek (a rajtuk trolt adatok megmaradnak a gp teljes lettartama alatt), s kpesek a hardverhibkat is tllni. Ezt technikailag gy oldottk meg, hogy a virtulis gpek merevlemezei valjban a Blob Storage-ban trolt VHD fjlok. Ugyanez vonatkozik a Sysprepelssel ltrehozott virtulis lemezkp fjlokra is. Mivel a Blob Storage perzisztens s hibatr, ezrt a virtulis merevlemezek is kpesek azok lenni. Viszont ez azt is jelenti, hogy az rnknti dj fltt a Blob Storage hasznlatrt is fizetni kell. Ennek rszleteirl lsd a Blob Storage-dzsal foglalkoz szakaszt. Termszetesen a virtulis gpekre (ahogy minden ms Azure szolgltatsra) is vonatkozik az adatforgalmi dj: a feltlts s a gpek kzti, adatkzponton bell zajl kommunikci ingyenes, ha azonban a gpekrl letlts trtnik (pldul webszerverknt hasznlod ket, s az gyfeleid megnzik a weboldaladat), akkor az adatforgalomrt az elz szakaszban lertaknak megfelelen fizetni kell.

Licencek
A virtulis gpekhez kapcsold rdekes tmakr a licencek krdse. Szmos szoftver, pldul a Windows Server, SQL Server, SharePoint, klnfle Dynamics termkek stb. licenckteles. Azt mr lthattad, hogy a Windows licenc nem problma: a virtulis gpek rnknti rban benne van a Windows licenc s a szksges CAL-ok (Client Access License) ra. Ez azt is jelenti, hogy ha helyben zemeltetsz egy Windows Servert, amit ksbb felkltztetsz a felhbe, akkor a lenti Windows licenc felszabadul. Az egyb Microsoft szoftverekre pedig az gynevezett License M obility program vonatkozik. Ez azt jelenti, hogy bizonyos felttelek teljeslse esetn a helyi licenceid egyszeren felkltztethetk a felhbe: ha helyben van pldul megvsrolt SharePointod, akkor a licenc felmehet a felhbe, ami azt jelenti, hogy egy felhben lv virtulis gpen jogszeren felhasznlhatod a szoftvert (ami persze lefoglalja a licencet, teht ezzel prhuzamosan ugyanazzal a licenccel nem zemeltethetsz jogszeren egy msik SharePointot a helyi adatkzpontodban). A program rszleteirl lsd az Azure razsi oldalt vagy a kvetkez linket: http://www.windowsazure.com/en-us/pricing/license-mobility/. Emellett az razsi oldal tanbizonysga szerint tervben van, hogy pl. az SQL Server is a Windows Serverhez hasonlan rnknti tarifrt elrhet lesz majd a felhbl. Ez azt jelenti, hogy nem kell majd SQL Server licencet vsrolni, hanem az Azure virtulis gp rnknti dja tartalmazza majd a licenc rt. A knyvnk rsakor elrhet informcik alapjn ez az ajnlat a virtulis gpek General Availabilitybe kerlse (azaz a szolgltats elkszlte) utn lesz majd elrhet.

PaaS virtulis gpek (szerepkr-pldnyok) razsa


A PaaS virtulis gpek (teht a Cloud Services szerepkr-pldnyok) razsa (16-2 tblzat) nagyban hasonlt a virtulis gpek razshoz. Itt is a gpek mrettl fgg rnknti tarifa van, melynek szmtsi mdja megegyezik az IaaS gpeknl ltottakkal (naptri ra). Azure PaaS esetn azonban c sak Windows gpek hasznlhatk, gy nincs kln Linuxos tarifa, maga a PaaS szolgltats pedig termszetesen mr rgta kszen van, gy nincs diszkontlt Preview r sem. 16-2 tblzat: Az Azure PaaS virtulis gpek rnknti tarifi Gpmret Extra Small Small Medium Large Extra Large CPU magok Shared 1 2 4 8 CPU sebessg 1.0 GHz 1.6 GHz 1.6 GHz 1.6 GHz 1.6 GHz RAM 768 MB 1.75 GB 3.5 GB 7 GB 14 GB Loklis tr 20 GB 225 GB 490 GB 1,000 GB 2,040 GB r $0,02 $0,12 $0,24 $0,48 $0,96

322

16. razs A fenti, dollrban kifejezett rakra nha szmtsi raknt (compute hour) hivatkozik az Azure. Egy szmtsi ra 12 centnyi fogyasztsnak felel meg, ennek megfelelen egy Extra Small pldny rnknt 1/6 szmtsi rt, egy Small pldny rnknt 1 szmtsi rt, egy Medium gp rnknt 2 szmtsi rt fogyaszt s gy tovbb. Az IaaS virtulis gpekhez hasonlan a PaaS virtulis gpekre is igaz, hogy Stopped llapotban is fizetni kell rtk, kizrlag gy lehet elkerlni az rnknti djat, ha trld a gpeket. Gyakori problma, hogy egyszer feledkenysgbl egy tesztrendszer fennmarad a felhben. Ennek megelzsre hasznos segdeszkz a Greybox (http://greybox.codeplex.com), amellyel folyamatosan monitoroztathatod Azure elfizetseidet, az eszkz pedig felugr zenetekkel emlkeztet, ha valamit bekapcsolva felejtettl a felhben. A PaaS virtulis gpek llapotmentesek, merevlemezket teht nem Azure Storage -ban troljk, ezrt az IaaS virtulis gpektl eltren a PaaS virtulis gpeknl nincsen Storage kltsg. Az adatforgalmi dj a korbban megismerteknek megfelelen vonatkozik a PaaS alkalmazsokra is.

Azure Storage (Blob, Table, Queue) razsa


Az Azure Storage hromfle szolgltatst nyjt: a fjlok trolsra szolgl Blob Storage-ot, a tblajelleg adatokat trol Table Storage szolgltatst s a vrakozsi sort megvalst Queue Service -t. A hrom szolgltats teljesen klnbz clokat szolgl ugyan, razsuk azonban teljesen megegyezik. A Storage esetn hrom djttellel kell szmolni: adattrolsi kltsggel, tranzakcis djjal s a mindenhol jelen lv adatforgalmi djjal. Az adattrolsi kltsg rtelemszeren az ltalad trolt adatok sszmennyisgtl fgg. A rendszer mindennap megmri, hogy az adott napon mekkora adatmennyisget troltl a Storage Account-jaidban. Ez lesz az adott nap felhasznlsa, amelynek az egysge gigabjt/nap. Hnap vgn pedig a rendszer sszegzi a gigabjt/nap-ban megadott napi felhasznlsokat, s gigabjt/hnap egysgben kiszmolja az adott havi sszfogyasztst. Ez alapjn lltja aztn ki a szmlt. Nzznk egy pldt! Tegyk fel pldul, hogy htfn egsz nap adatokat tltttl fel az Azure Storage -be a Blob, Table s Queue szolgltatsok segtsgvel. Egsz nap mentek fel az adatok, a napi maximum 100 GB volt, de a napot egybknt gy zrtad, hogy nmi takarts utn voltakppen csak 85 GB volt eltrolva. A htfi felhasznlsod 100 GB/nap lesz, mert ennyi volt az aznapi maximlis felhasznlsod. A pldt folytatva felttelezzk, hogy kedden egyltaln nem nylsz hozz az adatokhoz; a keddi felhasznlsod gy 85 GB/nap, mert ennyi volt az aznapi maximum. Szerdn reggel mr nincs szksg az adatokra, gy trld az egszet. A szerdai felhasznls megint 85 GB/nap lesz, hiszen ennyi volt a napi maximum, de utna a hnap htralv rszben mr res a Storage Accountod, gy minden tovbbi napon 0 GB/nap lesz a lefoglalt adatmennyisged. Nzzk, hogy alakul a hnap vgi szmla! A havi sszes felhasznlsod 100 + 85 + 85 = 270 GB/nap, amit t kell szmolnunk GB/hnap mrtkegysgre, mert az r ebben van megadva. 270 GB/nap = 9 GB/hnap (30 napos hnap esetn), teht az Azure-szmln 9 GB/hnap szerepel majd havi elhasznlt adattrolsi djknt. Az adattrolsi dj tnyleges sszege attl fgg, hogy fldrajzilag redundns vagy loklisan redundns trhelyet hasznlsz-e. Ez egy Storage Account-szint bellts, amit a Storage Account ltrehozsakor meg kell adnod, de ksbb is mdosthat. Fldrajzilag redundns trols esetn minden adatod 3 pldnyban repliklt azon az adatkzponton bell, ahol ltrehoztad a Storage Accountot, s emellett mg 3 pldnyban repliklt egy msik, az eredeti adatkzpontoddal megegyez rgiban lv msik adatkzpontban is (pldul ha a West Europe adatkzpontot hasznlod, akkor a replikk a North Europe adatkzpontba kerlnek). Ez azt jelenti, hogy adataid nemcsak hardverhiba esetn vannak biztonsgban, hanem egy adatkzpont -szint katasztrfa (pldul valamilyen termszeti csaps) esetn sem esik bajuk. A loklisan redundns trols esetn nincs fldrajzi replikci, de adatkzponton bell tovbbra is 3 replikban lteznek az adataid, azaz hardverhibktl vdettek. A fldrajzilag redundns trols gigabjt/hnaponknt $0,095-be kerl (azaz 9,5 dollrcentbe). A loklisan redundns trols nmileg olcsbb, $0,070 (7 dollrcent). A fenti pldban 9 GB/hnapot hasznltunk el, a

323

16. razs teljes tarifa fldrajzilag redundns trols esetn 9*9,5 dollrcent = 0,855 dollr, azaz kb. 190 Ft. Ez az r nagymret felhasznls (tbb, mint 1 TB/hnap) esetn klnfle kedvezmnyekben rszesl, a rszleteket lsd az Azure Pricing honlapon. Amint korbban mr olvashattad a fejezetben, az IaaS virtulis gpek merevlemezei is Azure Blob Storage ban vannak trolva VHD fjlok kpben. Fontos tudni, hogy a VHD fjlok gynevezett fixed size VHD-k, azaz ha pldul egyik gpedben ltrehozol egy 100 GB -os Disk-et, akkor az a Blob Storage-ban ltrejn egy 100 GB-os fjl tele nullkkal. Az Azure azonban intelligensen kezeli a helyzetet, s a napi fogyasztsban nem 100 GB-knt szmtja be ezt a teljesen res fjlt, hanem naplzza, hogy a lemez mely rszeire trtnt mr rs. Ha a lemezre csak 20 GB-ot rtl, akkor hiba 100 GB-os ugyan maga a VHD fjl, az adattartalma valjban csak 20 GB, gy a napi fogyasztsba csak 20 GB-tal szmt bele. Ennek a mechanizmusnak ksznheten nem kell tartanod attl, hogy az res lemezterletrt is fizetned kell, btran ltrehozhatsz nagymret partcikat virtulis gpeid szmra. (Ez nemcsak a felhben, hanem a helyben ltrehozott VHD fjlokra is igaz, amennyiben a csupload nev eszkzzel tltd fel ket a felhbe.) Jelen sorok rsakor ez a mechanizmus csak egy irnyba mkdik, azaz ha a VHD -ba mr rtl 20 GB-ot, aztn visszatrlsz belle 5 GB-ot, akkor az Azure ezt nem veszi szmtsba, s tovbbra is 20 GB-ot szmlz ki. A fejezet rjnak rteslsei szerint ezen a Microsoft vltoztatni kszl. A msodik djttel az Azure Storage esetn a tranzakcis kltsg. Ez a kltsgtnyez gyakran riadalomra ad okot, pedig vals felhasznls esetn a tnyleges Azure-kltsgeknek jellemzen csak elenysz rszt alkotja. Ahogy korbban mr olvashattl rla, az Azure Storage igazi API -ja egy REST API, amin keresztl nyers HTTP krsekkel lehet utastsokat adni a szolgltatsnak. Minden ms hozzfrsi technolgia, legyen sz PowerShellrl, a .NET-es StorageClient knyvtrrl vagy az egyb osztlyknyvtrakrl ezt a REST API -t hasznlja. Egy ilyen REST API mvelet (pl. egy j fjl vagy Queue zenet ltrehozsa, egy tblasor trlse, Blobo k esetn egy Block vagy Page kiolvassa stb.) szmt egy tranzakcinak. (Fontos: a tranzakci kifejezsnek itt semmi kze az SQL technolgik esetn megszokott ACID tranzakcikhoz, egyszeren csak mveletet jelent!) Aktulis razs szerint 100 ezer tranzakci kerl 1 centbe, vagyis 10 milli tranzakci kerl 1 dollrba. A viszonyts vgett ez azt jelenti, hogy ha egy hnapban minden egyes msodpercben 3 tranzakcit hajtasz vgre, akkor lesz a havi kltsged kb. 78 dollrcent (kb. 172 Ft). Mennyire jelent pnzgyi veszlyt ez az elsre esetlegesen furcsn hat metrika? A tranzakcis dj egy esetben tud elszllni: ha pldul vatlanul rsz meg egy while ciklust, nem teszel bele Thread.Sleep() utastst, s gy a ciklus pl. msodpercenknt ezerszer belenz egy Azure Queue-ba, akkor ez a dj megugorhat. Az ilyen programozsi bakiktl eltekintve azonban a tranzakcis dj nem jelent problmt, mert az Azure Storage rendeltetsszer hasznlata alapjn a tapasztalatok szerint alacsony marad. A tranzakciktl IaaS virtulis gpek hasznlata esetn sem kell tartani. Igaz, hogy pl. a Windows folyamatosan rja-olvassa a gp merevlemezt (ami a valsgban azt jelenti, hogy folyamatosan tranzakcikkal bombz egy VHD fjlt), de a tranzakcis dj nem bitenknt szmt, hanem laponknt (Page Blob esetn) vagy blokkonknt (Block Blob esetn). Vals letbeli tapasztalatok alapjn a tranzakcis dj elenyszen kis rszt kpezi egy Azure szmlnak, nem kell tle tartani. Az elhasznlt Azure Storage tranzakcik mrsre tbb lehetsg is van. Az sszmennyisg egyrszt folyamatosan nyomon kvethet a fejezet ksbbi rszben bemutatott portloldalon, gy hnap kzben is megfigyelhet, hogy hogyan alakul a fogyaszts. Msrszt a knyv korbbi rszben bemutatott Storage Analytics szolgltats segtsgvel minden egyes tranzakci naplztathat, gy pontosan kvetni lehet, hogy mi trtnik. Nem kell teht a tranzakciktl tartani, elsre furcsnak hathat, hogy az I/O mveletek djttelknt jelentkeznek, de valjban ez a kltsg elenyszen kicsi, s pontosan nyomon kvethet. Az Azure Storage harmadik, s egyben utols djttele pedig a mr tbbszr ltott adatforgalmi dj.

324

16. razs

SQL Database (a korbbi SQL Azure) razsa


SQL Database esetn az razs alapjt az egyes adatbzisok mretei kpezik. Az razs kszbs; mindig az utn a kszb utn kell fizetni, amit mg nem rtnk el. A kszbszmok s raik: Adatbzis mrete 0 bjttl 100 MB-ig 100 MB fltt, 1 GB-ig 1 GB fltt, 10 GB-ig 10 GB fltt, 50 GB-ig 50 GB fltt, 150 GB-ig Adatbzis havidja $4,995 $9,99 $9,99 az els gigabjtrt, $3,996 a tovbbi gigabjtokrt $45,954 az els 10 GB-rt, $1,996 a tovbbi gigabjtokrt $125,874 az els 50 GB-rt, $0,999 a tovbbi gigabjtokrt

16-3 tbla: Az SQL Database havidjai az adatbzis mrettl fggen

Nhny plda: Ha adatbzisunkban 20 MB van, akkor havidja az 1. sor rtelmben $4,995. Ha adatbzisunkban 2,8 GB van, akkor havidja a 3. sor rtelmben $9,99 + $3,996 + $3,996 = $17,982. Egy SQL Database maximlis mrete jelenleg 150 GB. j SQL Database ltrehozsakor vlaszthatsz Web s Business Edition adatbzistpusok, valamint klnfle mretek kzl. A Web s Business Edition tpus adatbzisok tudsa teljesen megegyezik, mindssze annyi a klnbsg, hogy az Editiontl fgg majd, hogy a msodik lpsben milyen mretek kzl vlaszthatsz. A msodik lpsben kivlasztott mret pedig egy fels korlt. Ha pl. ltrehozol egy 10 GB-os mretkorlt Business Edition adatbzist, de valjban csak 4,3 GB adat van benne, akkor a fenti tblzat rtelmben az adatbzisrt a 3. sornak megfelelen fizetend sszeg $9,99 + 4 $3,996. A fels korlt rtelme, hogy az az Azure nem engedi az adatbzist a megadott mretkorlt fl nni (a korlt elrsekor hibra futnak az adatmennyisget nvel, pl. INSERT utastsok). Az gy megllaptott havidj utna napi bontsban kerl kiszmlzsra. Ez azt jelenti pldul, hogy egy 800 MB-ot tartalmaz adatbzis havidja $9,99; ha azonban az adatbzist nem egy teljes hnapig, hanem pl. csak 15 napig hasznlod, s utna trld, akkor a havidjnak csak a fele fizetend. Tovbbi djttel mg a szoksos adatforgalmi dj. SQL Database esetn azonban ez viszonylag ritkn bukkan el, ugyanis egy SQL Database pldnnyal jellemzen adatkzponton bell trtnik kommunikci, s az ilyen forgalom ingyen van. Nagyon fontos, hogy SQL Database esetn (az Azure Storage -dzsal ellenttben) nincs tranzakcis dj. SQL Database esetn kizrlag az adatbzis fent ismertetett havidja, illetve az esetleges adatforgalmi dj fizetend. Ezzel megismerted az SQL Database szolgltats razst. SQL tern az Azure tovbbi szolgltatsokat is nyjt, mint pldul Reporting, Data Sync vagy Federations. Ezek razst az Azure Pricing oldaln tallod.

Web Sites razsa


Az Azure Web Sites funkcionalits segtsgvel ASP.NET, PHP vagy egyszer statikus weboldalakat hozhatsz ltre a felhben. Ezt megtehetnd termszetesen IaaS virtulis gpek vagy PaaS Cloud Service -ek hasznlatval is. A Web Sites nagy elnye azonban, hogy kisforgalm weboldalak szmra ingyenes vagy nagyon olcs mdon kiszolglst tud biztostani, mg az IaaS vagy PaaS szolgltatsoknl a legkisebb opci esetn is egy teljes dediklt virtulis gp havidjt kellene kifizetned, ami egy kisforgalm weboldal esetn tlzs lehet. Az Azure Web Sites esetn hromfle kiszolglsi szint ltezik: Free, Shared s Reserved. Egyszerre tbb weboldalt is ltrehozhatsz, s weboldalanknt llthatod, hogy melyik milyen kiszolglsi szinten fusson.

325

16. razs Free mdban egyszerre maximum 10 weboldalt tarthatsz adatkzpontonknt (elfizetsenknt kln, termszetesen). Ha egy weboldal Free mdban fut, akkor fizikailag egy olyan gpen kap helyet, amin tbb ms gyfl weboldalai is futnak. A Free weboldalak teljesen ingyenesek, de klnfle korltozsok vonatkoznak rjuk: naponta 165 MB kimen forgalmat generlhatnak, adatkzpontonknt sszestve a Free weboldalaid sszesen 1 GB trhelyet hasznlhatnak el, megszabott, hogy naponta mennyi ideig hasznlhatnak processzort s gy tovbb. Tovbbi korltozs mg, hogy egyni DNS nv nem hasznlhat Free mdban, a weboldal cme mindenkppen [valami].azurewebsites.net formtum lesz. A tapasztalatok szerint a korltozsok egy kisforgalm, napi 50 -100 ltogats, takarkosan megrt weboldal futtatsra elgsgesek, gy egy szemlyes, egyesleti vagy kisebb cges weboldal futtatsra a Free szint teljesen megfelel. A szint elnye mg az is, hogy ha egy ingyenes, 90 napos Azure Trial elfizetsben hozod ltre a weboldalakat, akkor az elfizets maga lejr ugyan 90 nap mlva, de a weboldalak tovbbra is ingyenesen benne maradhatnak. Shared mdban maximum 100 weboldalt tarthatsz adatkzpontonknt. Minden weboldalnl kln -kln vltogathatsz a Free s a Shared mdok kztt. Shared mdban egyrszt megengedbbek a CPU idre s egyebekre vonatkoz korltozsok, msrszt nincs limitlva a kimen adatforgalom, harmadrszt Shared oldalnl mr hasznlhatsz sajt DNS nevet is. Cserbe fizetni kell egy alacsony havidjat (jelenleg $9,6), plusz a rendes ron ki kell fizetni a kimen forgalmat. Egy ilyen Shared oldal akr mr kzepes mret weboldalakat is ki tud szolglni az Azure minsgi infrastruktrjrl, havi 2500-3000 Ft krli rrt. A Reserved md akkor hasznos, ha Azure weboldalaid forgalma mr meghaladja a Shared szint lehetsgeit is. Ha bekapcsolod a Reserved mdot egy weboldalon, akkor az sszes, azzal a weboldallal megegyez adatkzpontban lv weboldal is Reserved mdra vlt, s az Azure valamennyit sszemsolja egy dediklt szervergpre, amin csak a sajt weboldalaid vannak. Itt mr semmilyen korltozs nincs, a CPU, adatforgalom s egyb erforrsok szabadon felhasznlhatk, cserbe egy Azure virtulis gp havi kltsgeit kell fizetned. (A gp kvnt mrete megvlaszthat a szoksos mretek kzl.) Termszetesen ezen a szinten is hasznlhatk egyni DNS nevek.

Elfizetsi konstrukcik
A fentiekben megismerhetted a fontosabb Azure szolgltatsok razsnak mdjt. Ahogy korbban mr sz volt rla, ez az egyes elfizetsek alapdja; a tnylegesen fizetend sszeget befolysolja, hogy az erforrsokat milyen elfizets keretben hasznltad fel. Ebben a szakaszban vgighaladunk az Azure elfizetsek tpusain, hogy eldnthesd, sajt felhasznli ignyeidhez melyik illeszkedik legjobban.

90 napos prbavltozat (Free Trial)


Ahogy a bevezet szakaszban olvashattad, a 90 napos prbavltozat lnyege, hogy kockzatmentesen kiprblhatv tegye az Azure platformot. Miutn regisztrltl, az Azure jvr szmodra egy sor erforrst szmtsi rkat, adattrolsi s adatforgalmi kapacitst, SQL Database adatbzisokat s gy tovbb , amiket ingyenesen elhasznlhatsz. Ha elhasznltad a kvtidat, akkor egy kltsi limitnek ksznheten az Azure nem engedi tovbb futni az alkalmazsodat, gy biztosan nem kell majd semmirt sem fiz etned. 30 s 60 nap elteltvel a kvtid visszallnak a kezdeti rtkkre, gy megint lefogyaszthatod ket. A 90 nap alatt brmikor dnthetsz gy, hogy szeretnd tovbb hasznlni a platformot. Ilyenkor nhny kattintssal eltvolthatod a kltsi plafont. (Ennek mdjrl a fejezet ksbbi rszben lesz sz.) Az ingyenes kvtkat tovbbra is megkapod, de a kvtk elfogyasztsa utn sem lvi le az Azure az alkalmazsodat, hanem annyi erforrst hasznlhatsz el, amennyit szeretnl. A 90 nap leteltvel pedig vagy megsznik az elfizets (ha fennhagytad a kltsi plafont), vagy automatikusan konvertldik Pay-As-You-Go-v (ha leszedted a kltsi plafont). Ez a Free Trial teht a javasolt kezdpont az Azure-ral val megismerkedshez, mert kockzatmentes, nem jr ktelezettsggel, de ha megtetszik az Azure, akkor brmikor tvlthatod les Azure -elfizetss. A Free Trial regisztrcis lpseirl lsd a knyv elejn lv Els lpsek fejezetet.

326

16. razs

Pay-As-You-Go
A Pay-As-You-Go-rl szintn volt mr sz. Ez az alap-elfizets abban az rtelemben, hogy nem jr r semmilyen kedvezmny (teht brmi, amit elhasznlsz, az alapron kerl kiszmlzsra), viszont semmilyen ktelezettsged sincsen. Brmikor regisztrlhatsz Pay-As-You-Go elfizetst, s brmikor le is mondhatod. (A regisztrci-lemonds mdjrl szintn ksbb lesz sz.)

Commitment
A Commitment, ktelezettsgvllal elfizetsek lnyege, hogy pnzgyi vllalsrt cserbe kedvezmnyeket kapsz. A vllals 6 vagy 12 hnapra szlhat, s legalbb havi 500 dollrrl. Ha havi 500 dollr elhasznlst vllalod 6 hnapra elre, akkor 20% kedvezmnyt kapsz minden elfogyasztott Azure erforrs rbl. Ha 6 helyett 12 hnapot, vagy havi szinten magasabb sszeget vllalsz, esetleg elre kifizeted az egsz sszeget, akkor a kedvezmny mrtke feljebb megy akr 32,5%-os is lehet. A Commitment ajnlat nagy elnye, hogy igen rugalmas. Nincs megszabva, hogy a megadott pnzsszeget mire kltheted arra hasznlhatod fel, amire sajt alkalmazsodnak szksge van. Ha elrelthatlag nagyobb mennyisg Azure-felhasznlsra lesz szksged, akkor clszer regisztrlni egy Commitment elfizetst, mert tbbet hozhatsz ki vele az Azure-ra sznt kltsgvetsbl.

Member Offers
Amennyiben rendelkezel MSDN elfizetssel (Professional, Premium vag y Ultimate a dikoknak szl MSDN:AA ajnlat nem hasznlhat fel), vagy cged tagja a Microsoft Partner Network, BizSpark vagy WebsiteSpark programoknak, akkor jogosult vagy programonknt egy -egy Azure-elfizetsre. Ezek az elfizetsek hasonltanak a Free Trialre abban, hogy itt is 30 naponta kapsz erforrskvtkat, amiket ingyenesen elhasznlhatsz. Tovbb ezeken is van kltsi limit. 90 nap helyett azonban jellemzen tovbb tartanak, s a Free Trialhez kpest magasabbak a kvtk is. Ha a fenti felttelek teljeslnek, akkor rdemes kivltanod az elfizetseket, mert jelents kltsgeket sprolhatsz meg velk. (Ennek mdjrl ksbb.)

Enterprise Agreement
Igazn nagymrtk Azure-felhasznls esetn lehet opci az Enterprise Agreement. Ennek keretben egy cg egyben vsrolhat tbb ezer dollrnyi Azure-kvtt, amit teljesen szabadon hasznlhat aztn fel, termszetesen jelents kedvezmnnyel. Enterprise Agreement ignylshez vagy a Microsofttal, vagy egy nagyvllalati licencrtkest partnerrel (Large Account Reseller, LAR) kell felvenni a kapcsolatot.

Termktmogatsi konstrukcik
Az elz szakaszban megismerhetted a klnfle Azure-szolgltatsok alaprait s a lehetsges elfizetseket, amelyekkel ezek ignybe vehetk. A technolgiai erforrsok mell igny szerint beszerezhetsz termktmogatst is. Minden Azure -gyfl jogosult pnzgyi s szmlzsi problmival a Microsofthoz fordulni, technolgiai krdsek pedig feltehetk a Microsoft ltal zemeltetett Azure-frumokon. Egy termktmogatsi szintre trtn elfizetssel pedig ennl bvebb tmogatsi lehetsgek is ignybe vehetk. Jelenleg 4 szint ltezik: a Developer (havi 29 dollr), a Standard (havi 300 dollr), a Professional Direct (havi 1000 dollr) s a Premier (egyni ras). Mindegyikben kzs az, hogy technikai krdsekkel is lehet mr rni a termktmogatsnak, akik e-mailben vagy telefonon fognak reaglni garantlt, nhny rs vlaszidn bell. A magasabb szinteken ez a vlaszid rvidebb, akr kzvetlen telefonvonal, vagy vgs esetben akr helysznre kikldtt mrnk is krhet. Komolyabb projekt esetn rdemes elgondolkozni valamelyik termktmogatsi szinten. Az egyes szintek pontos lersai, beszerzsi lehetsgei megtallhatk az Azure.com portlon vagy a http://www.windowsazure.com/en-us/support/plans/ linken.

327

16. razs

A szmlzsi portl
Nzzk, hogy a fejezetben idig elmletben lertakat tnylegesen milyen felleten keresztl tudod belltani!

Elfizetsek regisztrcija
A knyv bevezet rszben mr olvashattad, hogy Free Trial elfizetst hogyan kell regisztrlni. A folyamat igen hasonl a tovbbi elfizets-tpusok esetn is. j elfizets regisztrlshoz nyisd meg a www.azure.com portlt, s a fels mensvban kattints a Pricing flre! A Pricing fl elemei kztt tallod a Purchase Options, Member Offers s Free Trial opcikat (16 -1 bra).

16-1 bra: Elfizets-vsrlsi opcik

A Free Trial regisztrcijra rtelemszeren a Free Trial fl hasznlhat. A Commitment Offer s a Pay -AsYou-Go elfizetsek a Purchase Options fl alatt tallhatk. A klnfle Member Offerek (pl. MSDN elfizetssel rendelkez fejlesztk vagy BizSpark, WebSiteSpark vagy Microsoft Partner Network tagsggal rendelkez cgek szmra) a Member Offers fln tallhatk, mindegyik a sajt egyni varzsljval. Enterprise Agreement ignylshez egy Microsoft viszonteladhoz kell fordulni.

Kltsi limit (Spending Cap) eltvoltsa


Ahogy a fejezetben mr volt rla sz, tbb olyan elfizets-tpus is ltezik (pl. 90 napos Trial s a klnfle Membership Offerek), amely kltsi limittel rendelkezik. A kltsi limit megakadlyozza, hogy az elfizetsben biztostott kvtkat tlhasznld, azaz garantlt, hogy a kvtk alatt maradsz, s nem kell fizetned. Tbb olyan helyzet is elkpzelhet azonban, amikor a kltsi limit htrnyos: Ha egy prbavltozatot szeretnl a 90 napon tl hasznlni, akkor tvoltsd el a kltsi limitet, s a 90 nap leteltvel az elfizets magtl talakul Pay-As-You-Go konstrukcira! Ha egy nagyfogyaszts alkalmazst futtatsz Azure-ban, akkor cskkentheted gy a kltsgeket, hogy egy Membership Offert aktivlsz, az alkalmazst erre az elfizetsre mozgatod r, majd eltvoltod a kltsi limitet. Ilyenkor az alkalmazs fogyasztsnak egy rszt lenyelik a kvtk, viszont nem fenyeget az a veszly, hogy tlhasznlat esetn az Azure lelltja az alkalmazst. Helyette a tlcsordul fogyasztst az alapdjon szmlzza ki a platform. Kltsi limit eltvoltshoz kattints az Azure.com-on az Account flre, majd ennek az oldalnak az aljn vlaszd az Account Center gombot (16-2 bra)!

16-2 bra: Az Account Center gomb

Az Account Center megjelense utn egy listban lthatod valamennyi elfizetsedet. Azok az elfizetsek, amelyek kltsi limittel rendelkeznek, ltvnyos mdon ki vannak emelve (16 -3 bra).

328

16. razs

16-3 bra: Az Account Center oldal, rajta egy kltsi limittel rendelkez elfizetssel

Az elfizetsek nevre kattintva lphetsz be az egyes elfizetsek tulajdonsglapjra. Ha egy kltsi limittel rendelkez elfizets tulajdonsglapjt nyitod meg, akkor elkel helyen tallod a kltsi limitet eltvolt gombot (16-4 bra). Erre kattintva szabadulhatsz meg a Spending Captl.

16-4 bra: Kltsi limitet eltvolt gomb

Figyelem: ha egyszer eltvoltottad a kltsi limitet egy elfizetsrl, ksbb nem tudod azt visszarakni!

Elfizets lemondsa
Elfordulhat, hogy szeretnl lemondani egy elfizetst. Lemondskor az elfizetsben lv sszes erforrs trldik, onnantl kezdve garantltan nem kell semmirt sem fizetned. A legtbb elfizets -konstrukcinl ez brmikor vgrehajthat, jellemzen a Commitment Offereknl nem, hiszen ott pont azrt jr a diszkontr, mert hosszabb idtartamot vllaltl elre. (Ezeknl is van persze megolds, az Azure Billing Supportnak kell rni.) Elfizets lemondshoz ltogass el az elfizets tulajdonsglapjra az elz pontban megismertek szerint! A tulajdonsglap jobb als sarkban tallod az elfizetsen vgezhet klnfle mveletek listjt (16 -5 bra).

16-5 bra: Elvgezhet mveletek egy elfizetsen

329

16. razs Az elfizetst a Cancel Subscription gombbal mondhatod le.

Hasznlati adatok megtekintse, letltse


Az elfizetsek tulajdonsglapjn tallhatod meg, hogyan ll az elfizetshez kapcsold erforrsok fogyasztsa. Az itt olvashat adatok jellemzen naponta egyszer frisslnek. A 16 -6 brn egy kvtkkal rendelkez elfizets llapota tekinthet meg, jl lthat, hogy a kvtval rendelkez (azaz bizonyos mennyisgig ingyenes) s a kvtval nem rendelkez vagy tlhasznlt (azaz fizetend) erforrsok elklntve jelennek meg.

16-6 bra: Egy elfizets hasznlati adatai

Ezeket az adatokat trtnetileg is, pontos lebontsban letltheted a Download usage details gomb (jobb als sarok) segtsgvel.

Szmlzs s fizetsi lehetsgek


Az elfizetseid ltal generlt kltsgek kifizetsre alapveten kt md van. Az els s alaprtelmezett a bankkrtys megolds: ennek keretben az Azure havonta egy elektronikus szmlt generl, amelyet rgtn le is von az elfizets regisztrcijakor megadott bankkrtyrl. A msik lehetsg az tutalsos fizets, amit az Azure Invoice nven ismer. Sok cg szmra testhezllbb lehet ez az opci. tutalsos fizets esetn az Azure legenerlja az elektronikus, digitlisan alrt szmlt, amelyet az elfizetnek 30 napos hatridvel, utalssal kell kiegyenltenie. A fizetsi mdot vagy az elfizets regisztrcijakor, vagy utlag, az elfizets tulajdonsglapjn a Change payment method gomb (jobb als sarok) segtsgvel lehet megvltoztatni.

330

16. razs Ha az Invoice lehetsg nem szerepel a listban, akkor rni kell a Billing Supportnak az Azure.com port lon keresztl (ezt ingyenesen megteheti brmilyen Azure-elfizet), s k engedlyezik majd kzzel ezt az opcit. Az elektronikus szmlk az elfizets tulajdonsglapjn, a Billing History flre kattintva rhetk el.

sszegzs
A fejezetben megismerkedhettl az Azure razsval kapcsolatos alapfogalmakkal, majd ttekinthetted a fontosabb szolgltatsok konkrt razsi modelljeit, a vlaszthat elfizetsi s termktmogatsi konstrukcikat, vgl ezeknek a mveleteknek az elrst biztost portlt is. A kvetkez fejezetben pedig a fentiek ellenpontjrl lesz sz: bemutatunk nhny javaslatot, bevlt mdszert az Azure szolgltatsok rtkestsre, illetve ismertetjk a Microsoft ltal nyjtott klnfle partnerprogramokat, egyttmkdsi lehetsgeket.

331

17. rtkests

17. rtkests
Ebben a fejezetben az albbi tmkat ismerheted meg: A felht egy vllalat tbbfle okbl is megvsrolhatja: azrt, mert hasznlni szeretn, mert alkalmazst fejlesztene rajta, mert oda is kiterjeszten szolgltatsait. Itt a szereplkkel s indokaikkal tallkozhatsz. A Windows Azure nmagban is ru, de a leggyakoribb fellls, hogy a partner valamilyen felh alap szolgltatst nyjt, a vev pedig megveszi. Most megrtheted, milyen lehetsgek lteznek, s mikor melyikkel lhetsz. A partnerek tbbfle zleti modell kzl vlaszthatnak, a Microsoft pedig partnerprogramokkal segti el sikerket. sszefoglaltuk a lnyeget.

Ki s mirt vesz felht?


Ha egy szervezet vagy magnszemly rendelkezi k internet-hozzfrssel, szinte biztosan ignybe vesz egy vagy tbb felhszolgltatst. Klnsen fontos a felh az albbi szereplk szmra: sajt adatkzpontot, informatikai rendszert hasznl vllalatok, szoftverfejleszt cgek s informatikai szolgltatsokat nyjt cgek. De milyen zleti rvek miatt ptsenek ezek a szereplk a felhre?

Sajt adatkzpontot, informatikai rendszert hasznl vllalatok


Ahogy azt az 1. fejezetben lttad, a felh a sajt adatkzpontot, informatikai rendszert hasznl vllalatoknl megtallhat hagyomnyos szmtstechnika alternatvja, br j ideig mg biztosan nem vltja le azt, inkbb kiegszti. A vllalatok csak fokozatosan trnek t a felh hasznlatra, a dntsben pedig elssorban az albbi szempontok vezetik majd ket: Az zlet ignyeinek gyorsabb kiszolglsa. Ha a vllalatod j szolgltatst indt vagy egy meglvt mdost (pl. fokozni szeretn a teljestmnyt), gyakran az id az egyik legfontosabb tnyez. A hagyomnyos IT-ben ilyenkor hardver- s szoftverbeszerzsre kerl sor, majd a megvsrolt rendszer teleptsre s integrlsra, ami akr hetekig is eltarthat mg akkor is, ha a szksges kltsgvets rendelkezsre ll, s megvannak a ktelez jvhagysok. A felhben ezzel szemben nhny perc alatt ltrehozhatk s hasznlatba vehetk a kvnt erforrs ok. Az informatikai kltsgvets optimalizlsa. Ha az informatikai vezet nemcsak a hagyomnyos adatkzpontra, de a felhre is pt, a vllalat eldntheti, megvsrolja-e az egyes informatikai feladatok (pl. egy rendelskezel rendszer) ltal ignyelt IT-erforrsokat vagy klcsnzi azokat. Ehhez a dntsi szabadsghoz az szksges, hogy az informatikai kltsgvets befektetseket (Capital Expenditures, CapEx) s kltsgeket (Operational Expenditures, OpEx) egyarnt tartalmazzon. Minl nagyobb az OpEx arnya, annl knnyebben alkalmazkodik az IT a cg gazdasgi helyzethez, s teszi rugalmasabb sajt mkdst. (Tovbbi magyarzat a keretes megjegyzsben.)

333

17. rtkests

Mirt fontos a CapEx s az OpEx arnya az informatikai kltsgvets szerkezetben? me, kt plda ne aggdj, nem lesz szksged MBA-vgzettsgre ahhoz, hogy megrtsd ket! Elszr nzzk a felh hatst a cg piaci alkalmazkodkpessgre! Amikor vllalatod hagyomnyos informatikai krnyezetet hasznl, akkor kipti sajt adatkzpontjt, megvsrolja a szksges hardver- s szoftversszetevket (ezek beruhzsok), majd IT-munkatrsakat alkalmaz, s fizeti az elektromos s telekommunikcis djakat (ezek kltsgek). Ha egy rossz negyedvet kveten a jvedelmezsg fenntartsa rdekben kltsget kell cskkenteni, a beruhzsokat nem tudod visszacsinlni, gy gyakran emberek elkldsre lesz szksg. A felh azonban lehetv teszi, hogy vllalatod az informatikai krnyezet egy rszt ne vsrolja meg, csak brelje. Ha eljn a nehz idszak, takarkoskodhatsz az alkalmazsokon: ideiglenesen futhatnak kevesebb virtulis gpen, de akr szneteltethetk is, gy kevesebbe kerlnek s ha az zlet jra virgzik, egy kattintssal visszallthatod az eredeti llapotot. A msodik plda a felh hatsa az IT rugalmassgra. Az informatikai beruhzsokrl ltalban vente egyszer hatroz a cg, az odatlt pnz konkrt eszkzk beszerzsre szolgl, s sem az sszeget, sem a clt nem szvesen vltoztatjk utlag. De az zlet ignyei v kzben is mdosulhatnak, s ezek informatikai tmogatshoz gyakran ms eszkzre (vagy ppen ms idztsre) van szksg, mint ami az v elejn kszlt tervben szerepel. A felh (pontosabban a felh ignybevtelre betervezett, rugalmasan felhasznlhat kltsgvets) lehetv teszi, hogy az IT mindig olyan erforrsokat breljen, amilyenek az zlet ignyeinek kiszolglshoz szksgesek.

Szoftverfejleszt cgek
Ahogy azt a 9-15. fejezetekben lttad, a Windows Azure egy sokoldal, gazdag szolgltatsokat nyjt felhplatform, amely hasznos lehet a szoftverfejleszt cgek szmra, mgpedig az albbi szempontok miatt: j rtkestsi/terjesztsi csatorna. A felhszolgltatsok online rhetk el, nincs szksg fizikai adathordozra s hagyomnyos rtkestsi infrastruktrra. Nagyon gyakori, h ogy a Windows Azure-on fut szolgltats egy mobilalkalmazs httert biztostja, ami egy alkalmazsboltbl ( app store) szerezhet be. Ez leegyszersti a marketinget s az rtkests pnzgyi folyamatt ( online vsrls). Az alkalmazshoz szksges infrastruktra kivltsa. Az alkalmazsok al szerver kell, annak hardver-, szoftver- s karbantartsi kltsgeivel egytt. Ha az alkalmazs a Windows Azure-on fut, az gyflnek nem kell beszereznie a futtatkrnyezetet, az ugyanis mr rendelkezsre ll a felhben s a tovbbi sklzshoz sem kell beruhznia. A szoftverfejleszt cg az n. tbb -brls modell segtsgvel optimalizlhatja is az gyfelek kiszolglshoz szksges infrastruktrt, tovbb cskkentve ezzel a kltsgeket. gy olyan gyfelek is megvsrolhatjk a termkt, amelyek nem tudnk kigazdlkodni a futtatshoz szksges sajt krnyezetet. A tesztelsi, bevezetsi s karbantartsi kltsgek cskkentse. Az alkalmazsok ltalban tbb verziban lteznek: az ppen hasznlatban lv mellett mr fejlesztik a kvetkez verzit, s karbantartjk az elzeket is. A Windows Azure minden felhszolgltats szmra biztost egy les s egy tesztkrnyezetet, gy mikzben az gyfelek az aktulis verzit hasznljk, a fejlesztk s tesztelk mr a kvetkezn dolgozhatnak. Egyszerbb az alkalmazsok bevezetse is: a szksges belltsi feladatokat nem az gyfl adatkzpontjban, hanem a felhben, online vgzik el a fejlesztcg (vagy a rendszerintegrcis partner) munkatrsai s ugyanez igaz a karbantartsra.

Informatikai szolgltatsokat nyjt cgek


Ahogy az 5-8. fejezetekben lttad, a Windows Azure a hagyomnyos adatkzpontokkal jl integrlhat infrastruktra-szolgltatst nyjt felhplatform, amely hasznos lehet az informatikai szolgltatsokat nyjt cgek szmra, mgpedig az albbi szempontok miatt: j rendszerek bevezetsnek megknnytse. Az zlet szmra szksges, de az informatikai kltsgvetsben eredetileg nem szerepl rendszerek a Windows Azure infrastruktra -szolgltatsa segtsgvel j beruhzs nlkl is bevezethetk, s integrlhatk a vllalat meglv hlzatval s felgyeleti eszkzeivel. Az informatikai szolgltatst nyjt partner gy olyan projekteket is elvgezhet az gyflnl, amelyeket az annak idejn nem tervezett be.

334

17. rtkests Egyes kiszolgl feladatokhoz szksges infrastruktra kivltsa. Amikor a vllalatok fellvizsgljk informatikai rendszerket (pldul hardvercsere vagy a licencszerzdsek megjtsa idejn), gyakran arra a kvetkeztetsre jutnak, hogy egyes kiszolgl feladatokat tbb nem szksges a sajt krnyezetben zemeltetni, egyszerbb kihelyezni azokat, gy a beruhzs megsprolhat. A Windows Azure infrastruktra-szolgltatsa befogadja a fldi virtulis gpek lemezkpeit (image), a szerverek teht az informatikai szolgltatst nyjt partner segtsgvel mintegy beemelhetk a felhbe, s ott futnak tovbb. A karbantarts egyszerstse. Ha egy vllalat kls partner segtsgvel tartja karban informatikai rendszert, online s fizikai hozzfrst kell biztostania szervereihez, s tovbbra sem feledkezhet meg a meghibsodott eszkzk cserjrl. A Windows Azure-ban fut virtulis gpek s egyb eszkzk nagyon egyszeren hozzfrhetv tehetk a partner szmra, a hardver karbantartst pedig a Microsoft vllalja.

A Windows Azure rtkestse


gyflknt ktflekppen frhetsz hozz a Windows Azure szolgltatsaihoz: beszerzel egy Windows Azure-elfizetst, amivel tetszs szerinti, sajt fejleszts vagy vsrolt alkalmazst, szolgltatst futtathatsz, illetve ignybe veszed egy szoftverfejleszt partner vagy egy informatikai szolgltatsokat nyjt partner termkt, ami a httrben begyazott Windows Azure-t hasznl. Partnerknt csak meg kell fordtanod a fentieket. Ha egy Windows Azure-alap sajt szolgltatst szeretnl rtkesteni, az albbiak kzl vlaszthatsz: beszerzel egy Windows Azure-elfizetst, ezen futtatod sajt alkalmazsodat, s egy- vagy tbbbrls konstrukciban elrhetv teszed azt gyfeleid szmra, vagy elrod gyfeleid szmra, hogy vsroljanak egy meghatrozott erforrsokat tartalmaz Windows Azure-elfizetst, s bocsssk azt a rendelkezsedre. (Ez nagyon hasonlt ahhoz, amikor alkalmazsod futtatshoz az gyflnek alkalmazsszerverrel, adatbzis -kezelvel stb. kell rendelkeznie.) A fbb klnbsgeket a 17-1 tblzat foglalja ssze.
17-1 tblzat: Klnbsgek a sajt s a begyazott elfizets kztt

Jellemz Ki vsrolja meg s tartja karban az elfizetst? Ki kezeli az elfizetsben lv erforrsokat? Ki fizeti az elfizetshez tartoz korltok esetleges tllpsnek djt?

Sajt elfizets Az gyfl. Az gyfl; a partner csak akkor, ha az gyfl ezt engedlyezi a szmra. Az gyfl.

Begyazott elfizets A partner. A partner; az gyfl csak akkor, ha a partner ezt engedlyezi a szmra. A partner (aki ezt sajt razsi konstrukcijval thrthatja az gyflre).

A Windows Azure-ra pl szoftverszolgltatsok rtkestse


A Windows Azure egyik kiemelt felhasznli csoportja a felhmegolds -fejlesztk (Cloud Service Vendor, CSV) kre: szmukra a Windows Azure egy platformszolgltats, amely lehetv teszi, hogy sajt megoldsokat fejlesszenek rajta, s ezeket szoftverszolgltatsknt adjk tovbb gyfeleiknek. Az albbiakban megismerheted, milyen tipikus zleti modelleket hasznlnak a CSV -k, milyen partnerprogramok rhetk el a szmukra, s hol tudjk rtkesteni termkeiket. 335

17. rtkests

zleti modellek
A Windows Azure-alap szolgltatsok rtkestse (egy kivteltl eltekintve, amit a keretes rsban olvashatsz) nem klnbzik a hagyomnyos szoftverek rtkeststl. A kialaktand zl eti modellt itt is elssorban annak rendeld al, hogy milyen clkznsgnek sznod a termket, milyen szolgltatsok vannak mr a megclzott piacon, mik a termk relatv erssgei s gyengesgei a versenytrsakkal szemben, milyen az gyfelek rrzkenysge, vsrlsi minti s gy tovbb.
A hagyomnyos szoftverek ltalban az gyfl meglv (vagy megvsroland) sajt gpparkjn futnak majd. A Windows Azure-alap szoftverek esetn ms a helyzet: valamelyik szereplnek fenn kell tartania egy elfizetst, amiben a szoftver ltal hasznlt erforrsok (virtulis gpek, adattrols, adatforgalom stb.) kltsgei jelentkeznek. Br elvben az gyfl s a partner is lehet ez a szerepl, a hazai s nemzetkzi gyakorlatban szinte kizrlag a msodik megolds l: a partner megvsrol egy elfizetst, telepti r a sajt szoftvert, majd a szoftver (s alatta a Windows Azure) szolgltatsait eladja az gyflnek. Ezt hvjuk begyazott elfizetsnek, ahol a Windows Azure az gyfl szmra nem is lthat (azaz n. white label szolgltats). A szolgltats rnak meghatrozsakor teht figyelembe kell venni a benne tallhat Windows Azure -erforrsok rt is.

Az SaaS vilgban hasznlatos zleti modellek rszletes bemutatsa sztfeszten a knyv kereteit. Sok hasznos cikk tallhat a tmrl az albbi blogon: http://cloudstrategyblog.com/ . Az albbi listban nhny jellemz konstrukcit ismerhetsz meg: Ingyenes. A szoftverszolgltatst minden anyagi ellenszolgltats nlkl elrhetv teszed gyfeleid szmra. Termszetesen az zletben mindennek ra van. Ahogy egy, a Facebook ingyenessgt magyarz tanmesben olvashat: Ha valamirt nem kell fizetned, akkor te valsznleg nem a vsrl vagy, hanem a termk. De az ingyenes szolgltats remek eszkz lehet arra, hogy a felhasznlkat megismertesse egy msodik, immr fizets termkeddel/szolgltatsoddal, aminek a hasznbl kigazdlkodod az els kltsgeit is. Hirdets alap. Ha szoftverszolgltatsod elsdleges megjelensi fellete egy weblap vagy egy mobilalkalmazs, elhelyezhetsz rajta reklmokat, gy az ezekre kattint felhasznlk szmval arnyos djazshoz jutsz. A hirdetsek (legalbbis a felhasznlk egy rsznl) cs kkentik szolgltatsod vonzerejt, a vrhat bevtel pedig nem igazn kiszmthat ne akarj csak a reklmokbl meglni! Ingyenes plusz fizets. Az n. Freemium (free + premium) modellben alkalmazott gyakori megolds, hogy a szolgltatsnak ltezik egy korltozott tuds, de ingyenes, valamint egy vagy tbb kibvtett funkcionalits, de fizets vltozata. Az els (amit gyakran Lite vagy Express kifejezssel klnbztetnek meg a tbbitl) elegend funkcit tartalmaz ahhoz, hogy az gyfl eldnthesse, rdekli-e a teljes szolgltats. Ugyanakkor hinyzik belle egy vagy tbb fontos kpessg, amik elbb-utbb arra sarkalljk a felhasznlt, hogy megvsrolja a fizets vltozatot. Akkor vlaszd ezt a konstrukcit, ha elg jl ismered a megclzott vevkrt nem knny meghzni a hatrvonalat az ingyenes s a fizets verzi kztt. Idbombval elltott. A Freemium modell msik megjelensi formja, amikor a teljes rtk szolgltatst meghatrozott ideig (pl. egy hnapig) ingyen bocstod gyfeleid rendelkezsre, utna pedig pnzt krsz rte. Az ingyenes idszak vgnek kzeledtvel e -mailben s/vagy a szolgltats felletn figyelmezteted kuncsaftjaidat, hogy hamarosan dntenik kell: fizetnek, s tovbb hasznljk a szolgltatst, vagy megsznik a hozzfrsk. Kt fontos javaslat: a fizets vltozatra val ttrst tedd nagyon egyszerv, a szolgltatsrl vgl lemondkat pedig ne bntesd (pl. adataik azonnali trlsvel): ha szpen bcszol, lehet, hogy egyszer mg az gyfeleid lesznek! Elfizetses. Szoftverszolgltatsod hasznlatnak jogt egy -egy konkrt idszakra (hnapra, negyedvre, flvre, vre) vsroljk meg gyfeleid. Kialakthatsz csomagokat, megszabhatsz egysgrat vagy felhasznlnknti djat, mindez rajtad ll de az elfizetses konstrukci pnzgyi kezelse nem ppen egyszer.

336

17. rtkests Hagyomnyos. Mintha csak dobozos termket rtkestenl, gyfeleid egy meghatrozott sszeg leszurkolsa utn megkapjk szoftverszolgltatsod idkorlt nlkli hasznlati jogt. Miutn a httrben egy felhplatformot, kzmvet hasznlsz, aminek folyamatos kltsgei lesznek, nehz olyan rat kialaktanod, amely a vgtelensgig fedezi ezeket a kltsgeket. Viszont alkalmazhatod ezt a konstrukcit akkor, amikor termked egy mobilalkalmazs, ami pl. a felhben trolja adatait, s a felh hasznlatnak dja nagyon alacsony. Ami a hazai s nemzetkzi Windows Azure-tapasztalatokat illeti, me, nhny hasznos tipp az zleti modell kialaktshoz: Mieltt belefogsz a fejlesztsbe, legyen tbb-kevsb vilgos elkpzelsed arrl a piaci krnyezetrl (gyfelek, versenytrsak s partnerek, ignyek, rszintek, vsrlsi szoksok), amelyben rtkesteni akarod a termkedet! Ne csak a termked technikai szolgltatsait razd be, hanem azokat az egyedi elnyket is, amelyeket csak a felh alap megolds nyjt ilyen a befektets nlkli, gyors bevezethetsg, a mindig mkdkpes hardver-szoftver, a rugalmas sklzhatsg! Az rszintek meghatrozsnl ne az legyen a f clod, hogy kitermeld a termked alatt fut Windows Azure-elfizets kltsgt (ez az n. bottom-up megkzelts), indulj ki inkbb abbl, mennyit r szolgltatsod leend gyfeleidnek ebbl majd kiaddik a hasznod s a maximlisan erre fordthat kltsged (ez az n. top-down)! Kszts tbb termkvltozatot (csomagot) a klnbz rrzkenysg vevk szmra! A csomagok rnak nem a bennk lv szolgltatsok kltsgt kell tkrznie, hanem azt, hogy ezek a szolgltatsok mennyit rnek az adott csoport szmra. Tedd ingyenesen kiprblhatv termkedet, s gondoskodj arrl, hogy megkeresd egy j ajnlattal azokat, akik vettk a fradsgot, s jtszottak vele egy kicsit! Nem elg, hogy elkszted a termket, el is kell tudnod adni! Nhny kulcsfontossg krds: hogyan szereznek rla tudomst a vevk, van-e kapacitsod az rdekldk vsrlv konvertlsra, hol s hogyan tudjk megvenni a termket, hogy jutsz a pnzedhez, tu dod-e tmogatni azokat, akik problmba tkztek?

Partnerprogramok
A Microsoft Partner Network (MPN) tagjai (teht nemcsak a felhalkalmazs-fejleszt cgek) ignybe vehetik a Microsoft Cloud Essentials Pack nev csomagot, ami egy, a Windows Azure megismersre s tesztelsre alkalmas (de zleti szolgltats nyjtsra nem megfelel mret) Windows Azure -elfizets. Tovbbi rszletek a http://www.microsoftcloudpartner.com/ cmen. A felhalkalmazs-fejleszt partnerekkel elssorban a Microsoft lenyvllalatai tartjk a kapcsolatot. A Microsoft Magyarorszg elindtott egy Azure Expressz nev programot a hazai felhalkalmazs-fejlesztk tmogatsa rdekben. A program fbb elemei a kvetkezk: zleti tancsads az alkalmazstlet kirtkelse (j vagy ltez tlet, megklnbztet jellemzk, piaci potencil), az zleti lehetsgek ttekintse (zleti modell, monetizci) s a befektetsi lehetsgek vizsglata (elssorban kezd vllalkozsok, startupok rszre). Fejleszti tmogats fejleszti ismerettads (rszvtel Azure Camp s Azure Workshop esemnyeken), konzultci (fejleszti szaktancsads az elfizets szintjtl fggen), labor (fejleszts alatt ll alkalmazsok optimalizlsa, segtsg a problmamegoldsban). Marketingtmogats termkfejlesztsi tancsads (termk elnevezse, lersa, kpessgek, szolgltatsok definilsa, csomagok, rak kialaktsa), piacra lpsi terv elksztse (rtkestsi mdok, csatornk, folyamatok kialaktsa, bevezet kampny megtervezse), kommunikcis tancsads (identits kialaktsa, online s nyomtatott marketinganyagok elksztse). rtkestsi tmogats megjelens (Microsoft-esemnyek, a Microsoft online felletei, magyar Azure-webhely), telesales (piaci potenciltl fggen), profitnvels (Azure-kltsgek optimalizlsa).

337

17. rtkests Az Azure Expressz programrl rszletesen a http://devportal.hu/azureexpressz/ cmen olvashatsz ott csatlakozhatsz is, ha rdekel.

Piacterek
Nhny vvel ezeltt forradalmi vltozs kvetkezett be a digitlis tartalom (elssorban a zene, a filmek s a knyvek) rtkestsben. A hagyomnyos adathordozn trtn terjeszts visszaszorult, s egyre inkbb elterjedtek a klnbz online piacterek, amelyek lehetv teszik a brelt vagy megvsrolt tartalom fogyasztst: letltst vagy csak hallgatst/nzst. A piactr a terjesztsen kvl tovbbi feladatokat is ellt: a bevtel egy meghatrozott szzalkrt cserben segti a fejlesztt termkei marketingjben, s leveszi vllrl a tnyleges rtkests terht. Ez a folyamat az alkalmazsok vilgban is lezajlott, szkszletnkbe bevonult az app s az app store vagy piactr. A Windows Azure-alap megoldsok is rtkesthetk klnbz piactereken, ezeket foglalja ssze a kvetkez hrom alfejezet.

A Windows Azure Store


A Windows Azure egy nyitott platform, amely kiegszthet kls szolgltatsokkal. Ennek szntere a Windows Azure Store (http://www.windowsazure.com/store/), ahol elssorban fejlesztcgeknek szl alkalmazs- s adatszolgltatsokat vsrolhatsz s rtkesthetsz. Nhny alkalmazsszolgltats: AppDynamics (felhalkalmazsok teljestmnynek kezelse, sklzsa) Aspera Platform On Demand (nagy sebessg adattvitel) ClearDB (MySQL adatbzis-szolgltats) MongolLab (MongoDB adatbzis-szolgltats) New Relic (teljestmnyoptimalizls) SendGrid (e-mailklds a felhbl) Nhny adatszolgltats: Melissa DATA Address Check (USA-beli s kanadai postacmek rtelmezse s helyesbtse) s IP Check (fldrajzi hely IP cm alapjn) Dun & Bradstreet Business Insight (vllalatok listja sajt felttelek alapjn) StrikeIron Phone Number Validation (USA-beli s kanadai telefonszmok ellenrzse) s Sales and USA Tax Complete (USA-beli s kanadai adkulcsok irnytszm alapjn ott nem egysges az FA!) WSI Supeer MicroCast (idjrs-elrejelzs) LOQATE Verify Worldwide Address Verification & Cleansing (240 orszgra kiterjed postacmrtelmezs s -helyesbts) WT360 Worldwide Historical Weather Data (trtneti idjrsi adatok)

A Windows Azure Store jelenleg n. preview llapot, s csak az Egyeslt llamokban rhet el. A bevezet idszak utn hasznlatt (a benne tallhat szolgltatsok megvsrlst, valamint sajt szolgltatsok kzzttelt s rtkestst) tbb orszgra, kztk haznkra is kiterjesztik.

Tovbbi Microsoft-piacterek (Windows 8, Windows Phone)


A fogyaszti s zleti alkalmazsok rtkestsnek egyik f szntere a Windows 8 s a Windows Phone piactere, a Windows Store (http://www.windowsstore.com/). A Windows 8 s a Windows Phone 8 platformra kszlt alkalmazsok gyakran hasznlnak felhszolgltatst a kvetkez feladatokhoz: a felhasznlk bejelentkeztetse,

338

17. rtkests az alkalmazs adatainak tarts trolsa, kiszolgl oldali zleti logika s adatfeldolgozs vgrehajtsa, valamint zenetek kldse a mobileszkzre. Ha mobilalkalmazst fejlesztesz, s a felht is ignybe vennd, ismerkedj meg a Windows Azure Mobile Services (http://www.windowsazure.com/en-us/develop/mobile/) szolgltatssal, amirl a 14. fejezetben olvashatsz rszletesen! A Windows 8- s Windows Phone-alkalmazsok fejlesztsrl szlnak a Microsoft Magyarorszg s a Jedlik Oktatsi Stdi ltal kiadott Windows 8 lpsrl lpsre s Windows Phone fejleszts lpsrl lpsre cm knyvek (keresd ket ezen a cmen: https://devportal.hu/Fajlok/Default.aspx?shareid=1&path=Konyvek ).

Ms szolgltatk piacterei
A Windows Azure nemcsak a Microsoft sajt opercis rendszereit, hanem ms gyrtk mobilplatformjait is tmogatja. A Windows Azure Mobile Services segt az iOS alap appok felhszolgltatssal val kiegsztsben, s hamarosan jn az Android-tmogats is.

A Windows Azure-hoz kapcsold informatikai szolgltatsok rtkestse


A Windows Azure msik kiemelt felhasznli csoportja (a felhalkalmazs -fejlesztk mellett) a rendszerintegrtorok s a kihelyezett IT-szolgltatsokat nyjt partnerek kre; szmukra a Windows Azure elssorban infrastruktra-szolgltats, amely lehetv teszi, hogy az gyfeleknek nyjtott IT-tervezsi, integrcis s zemeltetsi szolgltatsokat a felhre is kiterjesszk.

zleti modellek
A szoftverfejleszt partnerekkel ellenttben az informatikai szolgltatsokat nyjt cgek ltalban nem a sajt elfizetsket, hanem az gyfl elfizetst hasznlva nyjtjk szolgltatsaikat. Megtervezik s lebonyoltjk az gyfl egyes rendszereinek felhbe trtn thelyezst, a sajt adatkzpont s a felh sszekapcsolst, a hibrid rendszerek felgyelett azaz meglv portflijukat kiegsztik a felhvel. Az informatikai szolgltatsokat nyjt partnerek egy specilis kategrija a Managed Service Provider (MSP). Az MSP jogosult arra, hogy sajt Windows Azure-elfizetst rtknvelt IT-szolgltatsokkal egsztse ki, s rtkestse azt gyfeleinek.

Partnerprogramok
Ahogy azt korbban mr olvashattad, a Microsoft Partner Network (MPN) tagjai ignybe vehetik a Microsoft Cloud Essentials Pack nev csomagot, ami egy, a Windows Azure megismersre s tesztelsre alkalmas (de zleti szolgltats nyjtsra nem megfelel mret) Windows Azure -elfizets. Tovbbi rszletek a http://www.microsoftcloudpartner.com/ cmen. A jelents Windows Azure-bevezetsi projekteket indt partnerek meghvst nyerhetnek az Azure Circle programba. A tagsg rvn exkluzv informcikhoz juthatnak hozz, zleti s szakmai tanfolyamokon vehetnek rszt, s gyfeleik Windows Azure-fogyasztsval arnyos anyagi visszatrtsre is jogosultak lesznek.

sszegzs
A Windows Azure-t az gyfl vagy megveszi magnak, vagy egy partner ltal ksztett szolgltats rszeknt kapja. Nem mindegy, ki kti az elfizetst, ahogy az sem, milyen zleti modellt vlaszt a partner termke ltrehozsakor. A Microsoft ltalnos s testre szabott partnerprogramokat egyarnt nyjt, vlaszd ki a megfelelt!

339

Utsz

Utsz
Knyvnkben megismerhetted a felh fogalmi, zleti httert, s alaposan vgignztk a Windows Azure egyes technolgiit. Nincs ms htra, mint nekivgni a felh felfedezsnek. Hozd ltre els elfizetsedet, s lss neki! A knyvet folyamatosan naprakszen tartjuk majd, a nagy Azure-frisstsekkel prhuzamosan jabb verzikat fogunk megjelentetni. A knyv frisstseit, a hozz tartoz kiegszt cikkeket, kdokat a http://devportal.hu/azurekonyv cmen tallhatod meg. Sok sikert kvnnak a knyv szerzi tallkozzunk a devPortal.hu ltal szervezett klnfle magyar Azureesemnyeken!

341

Vous aimerez peut-être aussi