• Save
PROGRAMSKI ALAT ZA ADMINISTRIRANJE MREŽNIH USLUGA OGLAŠAVANJA U OBLAČNOM RAČUNARSTVU
Upcoming SlideShare
Loading in...5
×
 

PROGRAMSKI ALAT ZA ADMINISTRIRANJE MREŽNIH USLUGA OGLAŠAVANJA U OBLAČNOM RAČUNARSTVU

on

  • 1,043 views

Magistarski rad se bavi problematikom razmjene asinkronih poruka između heterogenih sustava pomoću oblačne usluge Amazon SQS....

Magistarski rad se bavi problematikom razmjene asinkronih poruka između heterogenih sustava pomoću oblačne usluge Amazon SQS.

Predstavljena je Actionscript 3.0 API zbirka koja omogućava mobilnim aplikacijama izrađenim pomoću Adobe Flex alata da na jednostavan način koriste uslugu Amazon SQS.

Izvršeni su i prikazani klijentski testovi izvođenja (eng. performance) usluge Amazon SQS korištenjem kućne Internet veze.

Statistics

Views

Total Views
1,043
Views on SlideShare
1,041
Embed Views
2

Actions

Likes
1
Downloads
0
Comments
0

2 Embeds 2

http://www.linkedin.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

PROGRAMSKI ALAT ZA ADMINISTRIRANJE MREŽNIH USLUGA OGLAŠAVANJA U OBLAČNOM RAČUNARSTVU PROGRAMSKI ALAT ZA ADMINISTRIRANJE MREŽNIH USLUGA OGLAŠAVANJA U OBLAČNOM RAČUNARSTVU Document Transcript

  • SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET Krešimir PopovićPROGRAMSKI ALAT ZA ADMINISTRIRANJE MREŽNIH USLUGA OGLAŠAVANJA U OBLAČNOM RAČUNARSTVU Magistarski rad Osijek, 2012
  • PODACI O MAGISTARSKOM RADU I. AutorIme i prezime Krešimir PopovićDatum i mjesto rođenja 29. rujna 1980., Osijek Fakultet elektrotehnike i računarstva u Osijeku,Naziv fakulteta i datum diplomiranja 27. travnja 2005Sadašnje zaposlenje Stariji inženjer programske podrške. II. Magistarski radNaslov Programski alat za administriranje mrežnih usluga oglašavanja u oblačnom računarstvuBroj stranica, slika, tablica, izvorni kod, Prvih 11 nenumeriranih stranica, 103bibliografski podaci numerirane stranice, 35 slika, 27 tablica, 13 isječaka izvornog koda, 59 bibliografskih referenciZnanstveno područje, smjer i disciplina Tehničke znanosti, Procesno računarstvo,iz koje je postignut akademski stupanj RačunarstvoMentor ili voditelj rada prof.dr.sc. Željko HocenskiFakultet na kojem je rad obranjen Fakultet elektrotehnike i računarstva, OsijekOznaka i redni broj rada III. Ocjena i obranaDatum prihvaćanja teme od Znanstveno- 06.10.2010nastavnog vijećaDatum predaje radaDatum sjednice ZNV-a na kojoj jeprihvaćena pozitivna ocjena radaSastav Povjerenstva koje je rad ocijeniloDatum obrane radaSastav Povjerenstva pred kojim je rad obranjenDatum promocije
  • SADRŽAJ1. UVOD ...................................................................................................................................... 1 1.1. MOTIVACIJA .................................................................................................................. 1 1.2. DOSADAŠNJA ISTRAŽIVANJA ................................................................................... 2 1.3. CILJEVI RADA ............................................................................................................... 3 1.4. PLAN ISTRAŽIVANJA................................................................................................... 52. PREGLED SUSTAVA ZA RAZMJENU PORUKA .......................................................... 6 2.1. POJAM SPREMNIK PORUKA ....................................................................................... 6 2.2. SPREMNIK PORUKA KAO STRUKTURA PODATAKA ............................................ 6 2.3. SPREMNIK PORUKA KAO REPOZITORIJ .................................................................. 7 2.4. ARHITEKTURA STANDARDNOG JAVA PROGRAMSKOG SUČELJA ZA RAZMJENU PORUKA ............................................................................................................... 9 2.5. PODRUČJE DJELOVANJA SUSTAVA PORUKA ..................................................... 10 2.5.1. PODRUČJE DJELOVANJA “OD TOČKE DO TOČKE”..................................... 10 2.5.2. PODRUČJE DJELOVANJA „OBJAVI-PRETPLATI“ ......................................... 11 2.5.3. PRIKUPLJANJE PORUKA ................................................................................... 12 2.6. JBOSSMQ – PRIMJER DAVATELJA STANDARDNE USLUGE JMS ..................... 16 2.7. SPREMNICI PORUKA SA VISOKOM DOSTUPNOŠĆU .......................................... 17 2.8. USLUGA AMAZON SQS ZA RAZMJENU PORUKA ................................................ 17 2.8.1. SVOJSTVA USLUGE AMAZON SQS ................................................................. 18 2.8.2. OSNOVNI PREGLED ARHITEKTURE USLUGE AMAZON SQS ................... 19 2.8.3. KAKO RADI USLUGA AMAZON SQS ? ............................................................ 20 2.8.4. HTTP(S) ZAHTJEVI I ODGOVORI ..................................................................... 24 2.8.5. IZRADA I SIGURNOST JEDNOSTAVNOG HTTP(S) ZAHTJEVA UPITA ..... 263. IZRADA UKUPNOG TROŠKA KORIŠTENJA USLUGE AMAZON SQS IUSPOREDBA SA UKUPNIM TROŠKOM ODRŽAVANJA POSLUŽITELJA ORACLEWEBLOGIC – IBM WEBSPHERE .......................................................................................... 32 3.1. UKUPAN TROŠAK ODRŽAVANJA POSLUŽITELJA ORACLE WEBLOGIC - IBM WEBSPHERE ........................................................................................................................... 32 3.2. UKUPAN TROŠAK KORIŠTENJA USLUGE AMAZON SQS ................................... 36 3.3. USPOREDBA TROŠKOVA POSLUŽITELJA ORACLE WEBLOGIC I USLUGE AMAZON SQS.......................................................................................................................... 414. IZRADA ALATA ZA MJERENJE RADNIH SVOJSTAVA USLUGE AMAZON SQSI REZULTATI MJERENJA ...................................................................................................... 45 4.1. POSTAVKE PARAMETARA ALATA ZA MJERENJE RADNIH SVOJSTAVA USLUGE AMAZON SQS ......................................................................................................... 46 4.2. REZULTATI MJERENJA ............................................................................................. 495. IZRADA I NAČIN KORIŠTENJA MREŽNOG PROGRAMSKOG SUČELJAUSLUGE AMAZON SQS ZA TANKE KLIJENTE ................................................................ 54 5.1. ARHITEKTURA PROGRAMSKOG SUČELJA TANKOG KLIJENTA ..................... 60
  • 5.2. IZRADA IMENIKA PORUKA ...................................................................................... 62 5.3. BRISANJE IMENIKA PORUKA .................................................................................. 65 5.4. LISTA SVIH DOSTUPNIH IMENIKA PORUKA ........................................................ 67 5.5. PREGLED POSTAVKI IMENIKA PORUKA .............................................................. 69 5.6. IZMJENA POSTAVKI IMENIKA PORUKA ............................................................... 72 5.7. DAVANJE PRISTUPA VANJSKIM KORISNICIMA .................................................. 75 5.8. ODUZIMANJE PRAVA VANJSKIM KORISNICIMA ................................................ 78 5.9. SLANJE PORUKE ......................................................................................................... 80 5.10. PRIKUPLJANJE PORUKA ........................................................................................... 83 5.11. BRISANJE PORUKE ..................................................................................................... 87 5.12. IZMJENA VIDLJIVOSTI PORUKE ............................................................................. 89 5.13. USPOREDBA UKUPNOG BROJA LINIJA KODA IZMEĐU SLUŽBENIH PROGRAMSKIH ZBIRKI TVRTKE AMAZON I AS3AWSSDK.SWC ZBIRKE ................. 916. ZAKLJUČAK ...................................................................................................................... 937. LITERATURA ..................................................................................................................... 95SAŽETAK .................................................................................................................................. 100ABSTRACT ............................................................................................................................... 101ŽIVOTOPIS ............................................................................................................................... 102BIOGRAPHY ............................................................................................................................ 103
  • POPIS SLIKASlika 2.1: FIFO spremnik poruka .................................................................................................... 6Slika 2.2: Spremnik poruka sa dva kraja ......................................................................................... 7Slika 2.3: Izmjena poruka pomoću proizvođača – potrošača .......................................................... 8Slika 2.4: Arhitektura standardnog Java programskog sučelja za razmjenu poruka (JMS API) .. 10Slika 2.5: Područje djelovanja „Od točke do točke“ ..................................................................... 11Slika 2.6: Područje djelovanja "Objavi-pretplati" (P1 – poruka; C1,C2,C3 – potvrda primitkaporuke) .......................................................................................................................................... 12Slika 2.7: Pregled arhitekture usluge Amazon SQS ...................................................................... 20Slika 2.8: Slanje poruke u spremnik poruka (akcija SendMessage) ............................................. 21Slika 2.9: Prikupljanje poruka iz spremnika poruka (akcija ReceiveMessage)............................. 22Slika 2.10: Prikupljanje poruka A, B, C; D iz spremnika poruka (akcija ReceiveMessage) ........ 22Slika 2.11: Vremensko ograničenje nevidljivosti poruke (akcija ChangeMessageVisibility) ...... 23Slika 2.12: Brisanje poruke A iz spremnika poruka unutar vremenskog ograničenja nevidljivostiporuke (akcija DeleteMessage) ..................................................................................................... 23Slika 2.13: Niz koji treba biti potpisan .......................................................................................... 26Slika 2.14: Primjer niza koji je potrebno potpisati ........................................................................ 27Slika 2.15: Primjer potpisanog HTTP(s) zahtjeva ........................................................................ 27Slika 2.16: Odobrenje (autorizacija) i provjera valjanosti (autentifikacija) klijenata pomoćuusluge Amazon IAM ..................................................................................................................... 29Slika 2.17: Primjer postavki dozvole usluge Amazon SQS za spremnik poruka „Test“ .............. 30Slika 3.1: Ukupni troškovi posjedovanja poslužitelja WebLogic i WebSphere [41].................... 33Slika 3.2: Usporedba cjenika Oracle WebLogic-IBM WebSphere-Amazon SQS sustava zarazmjenu poruka ............................................................................................................................ 41Slika 3.3: Grafički alat AWSAdminTool 1.0.1 za promjenu postavki usluge Amazon SQS ....... 44Slika 4.1: Primjer međusobno povezanih heterogenih SOA sustava ............................................ 45Slika 4.2: Simulacija proizvođača (izvršena sa parametrom -p) ................................................... 49Slika 4.3: Simulacija potrošača (izvršena sa parametrom -c) ....................................................... 49Slika 4.4: Prikaz prikupljanja poruka u deset mjernih intervala ................................................... 52Slika 4.5: Prikaz slanja poruka u deset mjernih intervala ............................................................. 52Slika 5.1: Grafičko i programsko sučelje za upravljanje uslugom Amazon SQS ......................... 55Slika 5.2: Sigurnost Adobe Flash Playera (2007 / 2008 godina) [51]........................................... 56Slika 5.3: Globalna rasprostranjenost Adobe Flash Player na kućnim računalima [52] ............... 57Slika 5.4: Globalna rasprostranjenost Flash Playera na pametnim telefonima [53] ..................... 58Slika 5.5: Skup modela programskog sučelja Amazon SQS ........................................................ 60Slika 5.6: Primjer ListQueues parametara odgovora .................................................................... 68Slika 5.7: Primjer GetQueueAttributes parametara odgovora ...................................................... 72Slika 5.8: Akcija AddPermission daje ograničeni pristup vanjskim korisnicima (trećoj strani) .. 75Slika 5.9: Primjer GetQueueAttributes parametara odgovora ...................................................... 81Slika 5.10: Primjer ReceiveMessage parametara odgovora .......................................................... 85
  • POPIS TABLICATablica 2.1: Imenski prostor usluge Amazon SQS ....................................................................... 20Tablica 2.2: Lista obaveznih parametara za Amazon SQS HTTP(s) zahtjeve.............................. 24Tablica 2.3: Tijelo HTTP zahtjeva nadgledano od Wireshark alata za nadgledanje IP prometa .. 28Tablica 2.4: Tijelo HTTP odgovora nadgledano od Wireshark alata za nadgledanje IP prometa 28Tablica 3.1: Usporedba svojstava poslužitelja Oracle WebLogic i usluge Amazon SQS ............ 34Tablica 3.2: Cjenik izlaznog Internet prometa usluge Amazon SQS od 01.07.2011 [43] ............ 37Tablica 4.1: Popis računalnih komponenti korištenih za testiranje radnih svojstava uslugeAmazon SQS ................................................................................................................................. 46Tablica 4.2: Postavke parametara alata za mjerenje radnih svostava usluge Amazon SQS ......... 47Tablica 4.3: Rezultati mjerenja radnih svojstava usluge Amazon SQS ........................................ 50Tablica 5.1: CreateQueue parametri zahtjeva ............................................................................... 62Tablica 5.2: CreateQueue parametri odgovora ............................................................................. 62Tablica 5.3: Primjer CreateQueue zahtjeva i odgovora koristeći sučelje Wireshark za praćenjemrežnog prometa ........................................................................................................................... 64Tablica 5.4: DeleteQueue parametri zahtjeva ............................................................................... 65Tablica 5.5: ListQueues parametri zahtjeva .................................................................................. 67Tablica 5.6: ListQueues parametri odgovora ................................................................................ 67Tablica 5.7: GetQueueAttributes parametri zahtjeva .................................................................... 69Tablica 5.8: GetQueueAttributes parametri odgovora .................................................................. 70Tablica 5.9: SetQueueAttributes parametri zahtjeva..................................................................... 73Tablica 5.10: AddPermission parametri zahtjeva ......................................................................... 75Tablica 5.11: RemovePermission parametri zahtjeva ................................................................... 78Tablica 5.12: SendMessage parametri zahtjeva ............................................................................ 80Tablica 5.13: SendMessage parametri odgovora .......................................................................... 80Tablica 5.14: ReceiveMessage parametri zahtjeva ....................................................................... 83Tablica 5.15: ReceiveMessage parametri odgovora ..................................................................... 84Tablica 5.16: DeleteMessage parametri zahtjeva .......................................................................... 87Tablica 5.17: ChangeMessageVisibility parametri zahtjeva ......................................................... 89Tablica 5.18: Rezultat usporedbe SLOC metrike između programskih sučelja Amazon SDK ias3awsSDK. Usporedba se odnosi na izvorni kod prisutan u „com.amazonaws.services.sqs.*“paketu. Za mjerenje korišten je Apache CLOC 1.53. ................................................................... 91
  • POPIS IZVORNOG KODA TANKOG KLIJENTAIzvorni kod tankog klijenta 5.1: Primjer korištenja akcije CreateQueue ...................................... 63Izvorni kod tankog klijenta 5.2: Primjer korištenja akcije DeleteQueue ...................................... 66Izvorni kod tankog klijenta 5.3: Primjer korištenja akcije ListQueues ......................................... 68Izvorni kod tankog klijenta 5.4: Primjer korištenja akcije GetQueueAttributes ........................... 71Izvorni kod tankog klijenta 5.5: Primjer korištenja akcije SetQueueAttributes ........................... 74Izvorni kod tankog klijenta 5.6: Primjer korištenja akcije AddPermission .................................. 77Izvorni kod tankog klijenta 5.7: Primjer korištenja akcije RemovePermission ............................ 79Izvorni kod tankog klijenta 5.8: Primjer korištenja akcije SendMessage ..................................... 82Izvorni kod tankog klijenta 5.9: Primjer korištenja akcije ReceiveMessage ................................ 86Izvorni kod tankog klijenta 5.10: Primjer korištenja akcije DeleteMessage................................. 88Izvorni kod tankog klijenta 5.11: Primjer korištenja akcije ChangeMessageVisibility ................ 90
  • POPIS IZVORNOG JAVA KODAIzvorni Java kod 2.1: Sinkroni način rada primatelja poruka opisan izvornim Java kodom JMSsučelja ............................................................................................................................................ 13Izvorni Java kod 2.2: Asinkroni način rada primatelja poruka opisan izvornim Java kodom JMSsučelja ............................................................................................................................................ 15
  • PRILOZISvi prilozi su računalni programi koji su pod stalnim promjenama vlasnika licence.Prilog 3.1: Izvorni kod AWSAdminTool 1.0.1 grafičkog alata,https://bitbucket.org/Kresimir/awsadmintool/overviewPrilog 4.1: Izvorni kod Java alata za mjerenje radnih svojstava Amazon SQS usluge,https://bitbucket.org/Kresimir/awsproducerconsumertoolPrilog 5.1: Izvorni kod mrežnog programskog sučelja izrađenog u Actionscript 3.0 jeziku,https://bitbucket.org/Kresimir/as3awssdk/overview
  • POPIS KRATICAPopis sadrži samo one kratice koje se općenito koriste u računarstvu, dok su specifične kratice,kao dio komercijalnih naziva za različite tehnologije i proizvode objašnjene u tekstu rada. Amazon IAM AWS Identity and Access Management Amazon SQS Amazon Simple Queue Service API Application Programming Interface AWS Amazon Web Services CIO Chief Information Officer ENISA European Network and Information Security Agency EU European Union FIFO First in First Out HA High Availability HMAC Hash-based Message Authentication Code HTML HyperText Markup Language HTTP Hypertext Transfer Protocol HTTPS Hypetext Transfer Protocol Secure IIOP Internet Intert-ORB Protocol ISO International Organization for Standardization IT Information Technology JavaEE Java Enterprise Edition JMS Java Message Service JNDI Java Naming and Directory Interface JSR Java Specification Requests JVM Java Virtual Machine MD5 Message Digest Algorithm MOM Message Oriented Middleware
  • PaaS Platform as a ServiceQoS Quality of ServiceRAM Random Access MemoryRESTful Representational state transferRIA Rich Inaternet ApplicationRMI Remote Method InvocationSAML Security Assertion Markup LanguageSHA Secure Hash AlgorithmSLOC Source lines of codeSMS Short Message ServiceSOA Service oriented architectureSSO Singe Sign-onTCO Total Cost of OwnershipURL Uniform Resource LocatorUTC Coordinated Universal TimeUTF-8 Unicide Transformation Format
  • 1. UVODU ovom poglavlju bit će razmotreni čimbenici i motivacija koji su utjecali na nastanak ovogarada te korisnost znanstvenicima koji se bave ovom domenom, poslovnim stručnjacima iorganizacijama (malim i srednjim tvrtkama, javnim institucijama). Sadržaj poglavlja poslužiti ćekao uvod u uslugu oblačnog računarstva (Amazon SQS) – primarnu temu ovog rada – te će seokvirno opisati postavljeni ciljevi istraživanja. Važno je unaprijed naglasiti tri značajke ovogarada: 1. Tema rada je komercijani računalni oblak tvrtke Amazon, a ne privatni niti akademski računalni oblaci izvedeni na sveučilištima (samostalno ili u suradnji s privatnim sektorom). To znači da zaključci izvedeni u ovom radu, posebice oni vezani za ekonomiku i programsko sučelje sustava za razmjenu poruka vrijede prije svega za uslugu Amazon SQS. 2. Uglavnom će se uspoređivati način korištenja, složenost i ekonomičnost uporabe usluge oblačnog računarstva (Amazon SQS) u odnosu na postojeća rješenja unutar kuće (on- premise). 3. Izrađena je klijentska zbirka Amazon SQS u objektno-orijentiranom programskom jeziku Actionscript 3.0 zasnovanom na standardu ECMAScript ECMA-262. Zbirka se može iskoristiti kao univerzalno prenosivo programsko sučelje za više različitih vrsta klijentskih računalnih sustava.1.1. MotivacijaSmatra se da su računalni oblaci i SOA tehnološki komplementarni pojmovi u smislu daračunalni oblaci predstavljaju povoljnu platformu za pokretanje i izvođenje SOA usluga [1].SOA oblačni sustav za razmjenu poruka Amazon SQS [2] je relativno nova komponenta PaaSkoja je prvi puta predstavljena 2006 godine od strane tvrtke Amazon. Još uvijek je u faziinkrementalnog razvoja i poboljšanja. Omogućuje razvojnim inženjerima da povezuju (loosecoupling of services) različite SOA usluge koje mogu međusobno nezavisno rasti bez obzira naveličinu i postavke spremnika poruka. Budući da su istraživanja u ovome polju prilično skromna(a ovdje su opisana u potpoglavlju 1.2) ovim radom se želi dati odgovarajući doprinos na poljupovezivanja tankih klijenata [3] s konceptom računalnih oblaka. 1
  • Također, u današnje doba širenja SOA usluga računalnih oblaka postavlja se nekolikozanimljivih pitanja vezano za oblačnu uslugu razmjene poruka: 1. Može li uporaba oblačnog sustava za razmjenu poruka smanjiti troškove i vrijeme (Time to Market) izrade sustava sa visokom dostupnošću (high availabily systems)? 2. Kakva su radna svojstava oblačnog sustava za razmjenu poruka po pitanju latencije i količini poruka obrađenih u jedinici vremena? 3. Za sada je praksa da se za svaki računalni sustav (stacionarni ili mobilni) razvija posebni sustav koji funkcionira samo u svom (native) okolišu ili alternativno pomoću hipertekstualnog označnog jezika HTML5 [4]. U današnje doba širenja usluga računalnih oblaka na mobilne računalne sustave (pametni telefoni – „smarthphones“, dlanovnici – „tablets“) postoji potreba za univerzalno prenosivim klijentskim programskim sučeljem koje može pristupati programskom sučelju računalnog oblaka. Postoji li tehnologija koja omogućava izradu univerzalno prenosivog klijentskog programskog sučelja?1.2. Dosadašnja istraživanjaRijetko koje dosadašnje istraživanje je razmatralo uslužno orijentiranu arhitekturu u okviruračunalnih oblaka. Najznačajniji takav rad objavili su de Leusse i suradnici [5]. U tome raduraspravlja se o tehničkim gledištima smještaja (deployment) cjelokupnog rješenja uslužnoorijentirane programske podrške u oblaku. Međutim, autori se ne bave ekonomskom isplativošćutakvog poduhvata niti problematikom hibridnih arhitektura u kojima se neke usluge pokreću izoblaka, a neke na klasičan način, sa privatnih poslužitelja poslovnog sustava ili tankih klijenata.Općeniti pristup objedinjavanju SOA načela sa suvremenim informacijskim tehnologijamaistraživali su David S. Linthicum [6], K. Kontogiannis i suradnici [7] te Vitharana [8]. Noveparadigme razvoja i korištenja programske podrške kao usluge istraživali su A. Dan, R. Johnsoni A. Arsanjani u radu [9], gdje autori spominju kako su takva rješenja iznimno primjenjiva uokruženju računalnih oblaka. Općenitu problematiku prijelaza iz postojećih, naslijeđenih(legacy) sustava na SOA sustav razmatrali su L. OBrien, P. Breber i J. Gray [10], izloživšiglavnu ideju da je prijelaz na uslužno orijentiranu arhitekturu evolucijski proces koji neobezvređuje postojeća rješenja, nego ih potvrđuje i dopunjuje. Pregled nedostataka, pogodnosti iekonomiku računalnih oblaka izraživali su M. Armbrust, A. Fox, R. Griffith i suradnici [11]. Usvome istraživanju naveli su deset prepreka koje je potrebno imati u vidu za vrijeme izrade ipovezivanja oblačnih SOA usluga. Pitanje vezana uz sigurnost postavlja europska agencija za 2
  • informacijsku sigurnost ENISA [12], [13]; T. Mather, S. Kumaraswamy i S. Latif [14]; J. W.Rittinghouse i James F. Ransome [15]. Izrada i primjena univerzalnog prenosivog klijentskogprogramskog sučelja za razmjenu poruka do sada nije istraživana osim u ovome radu.SOA usluga za razmjenu poruka u oblaku nije dovoljno istražena, ali generalno ima za ciljukloniti potrebu da se razvojni inženjeri bave osmišljavanjem i izgradnjom tradicionalnih sustavaza razmjenu poruka:  Olakšati i ubrzati povezivanje heterogenih sustava uz što manje troškove i prepravke postojećih rješenja.  Ukloniti troškove održavanja (troškove održavanja sustava za razmjenu poruka istraživali su M. R. Selim, Y. Goto, and J. Cheng [16]) kupcima oblačnih resursa.  Omogućiti promjene postavki sustava pomoću grafičkog sučelja a da za to nije potrebno plaćati obuku razvojnim inženjerima i trošiti vrijeme na postavljanje i testiranje postavki.Na takav novi način promjene paradigme izbjegle bi se tradicionalne prepreke povezane saradom unutar vlastite infrastrukture sustava poruka [17].1.3. Ciljevi radaRad ima četiri glavna cilja: 1. Proučiti način korištenja oblačnog SOA sustava za razmjenu poruka (Amazon SQS) u svrhu povezivanja heterogenih SOA usluga radi povećanja raspoloživosti i sposobnosti rasta cjelokupnog sustava. 2. Napraviti izračun troškova sustava za razmjenu poruka Amazon SQS i usporediti ga sa tradicionalnim JMS sustavom; matematički opisati cjenik usluge Amazon SQS koji se može koristiti za provjeru trenutnog stanja potrošnje sustava poruka; izraditi grafički alat za provjeru i izmjenu postavki usluge Amazon SQS da se vidi koliko sati mjesečno je potrebno prosječnom korisniku za osnovnu uporabu. Na temelju mjesečnog rada može se izračunati mjesečna cijena rada jednog administratora. 3. Izraditi testni alat za mjerenje radnih svojstava usluge Amazon SQS. Svrha testa je da odgovori na pitanje mogućnosti uporabe na tisuće tankih Internet klijenata (npr. mobilni uređaji, dlanovnici) sa oblačnim sustavom za razmjenu poruka preko javne mreže Internet. 3
  • 4. Izraditi klijentsku zbirku as3awsSDK.swc u Actionscript 3.0 objektno-orijentiranom programskom jeziku zasnovanom na standardu ECMAScript ECMA-262. Svrha zbirke je da se iskoristi kao programsko sučelje za više različitih klijentskih računalnih sustava različitih operativnih sustava (Windows, Mac OS, Linux, Windows, Android OS, Apple iOS i BlackBerry OS).Smatra se da će od ostvarenja prvoga cilja posebnu korist imati arhitekti programske podrške irazvojni inženjeri jer će dobiti smjernice za upravljanje oblačnim SOA sustavom za razmjenuporuka.Ostvarenje drugoga i trećeg cilja od posebnog je interesa voditeljima informatike stoga što će,koristeći spomenute rezultate testa, moći donositi potkrijepljene odluke o angažmanu računalnihoblaka i načinu korištenja svih dostupnih resursa, privatnih ili oblačnih, za izvođenje usluga usloženom informacijskom sustavu, posebice onog izloženog vremenski promjenljivimzahtjevima za računalnom snagom.Ostvarenje četvrtog cilja je od posebnog značaja računalnim programerima jer im izrađenaklijentska zbirka Amazon SQS (as3awsSDK.swc, Prilog 5.1) kao alat omogućuje komunikacijusa oblačnim sustavom za razmjenu poruka na jednostavan i univerzalno prenosiv način. To značida je računalni kod Actionscript 3.0 dovoljno napisati jednom, prevesti ga pomoću Adobe FlexSDK prevodioca i pokrenuti ga na više operativnih sustava (Write once, run anywhere).Ovim radom će se razjasniti ekonomski troškovni održavanja i tehnička svojstva između nove itradicionalne paradigme povezivanja heterogenih SOA usluga.U drugom poglavlju napravljen je pregled tradicionalnog sustava za razmjenu poruka JMS iusluge Amazon SQS. U trećem poglavlju napravljena je usporedba ukupnog troška održavanjatradicionalnog sustava za razmjenu poruka sa troškovima korištenja usluge Amazon SQS. Učetvrtom poglavlju predstavljen je izrađeni alat za mjerenje radnih svojstava (ukupan broj HTTPzahtjeva/odgovora u jedinici vremena) usluge Amazon SQS. U petom poglavlju predstavljena jeizrađena klijentska zbirka Amazon SQS (as3awsSDK.swc, Prilog 5.1) koju krasi jednostavnostuporabe i univerzalna prenosivost na više računalnih sustava sa različitim operativnim sustava. 4
  • 1.4. Plan istraživanjaPlan istraživanja obuhvaća četiri radnje provedene u razdoblju od jedne godine:  Temeljen na spoznajama koje su proizašle iz eksperimentalnog istraživanja provedenog mjerenjem radnih svojstava usluge Amazon SQS pomoću posebnog alata izrađenog u Java programskog jeziku.  Također biti će predstavljena posebno izrađena klijentska zbirka Amazon SQS (as3awsSDK.swc, Prilog 5.1) koja omogućuje komunikaciju sa oblačnim sustavom za razmjenu poruka. Svaka akcija koja je podržana od klijentske zbirke biti će prikazana uz primjer tako da čitaoc ovoga rada dobije osjećaj koliko zapravo malo posla ima pri uspostavi komunikacije između tankog klijenta i usluge Amazon SQS.  Višemjesečnom usporedbom tradicionalnog komercijalnog proizvoda za razmjenu poruka sa uslugom Amazon SQS izrađen je jednostavan tablični prikaz razlika između standardnog sustava razmjena poruka i oblačnog sustava za razmjenu poruka. Tablični prikaz služi kao pokazatelj usporedbe koji može pomoći razvojnim inženjerima da na temelju tehničkih mogućnosti jednog i drugog sustava mogu donjeti odluku koji od sustava koristiti.  Ispitivanje i izračun strukture cijene usluge Amazon SQS radi objektivne procjene troškova uporabe korištenja sustava za razmjenu poruka u oblaku u odnosu na vlastite računalne, podatkovne resurse i vrijeme uloženo u promjene postavki.Cilj istraživanja je potvrditi da je korištenje oblačnog sustava za razmjenu poruka (AmazonSQS) ekonomski isplativije u odnosu na tradicionalni sustav u vlastitom vlasništvu i tehničkijednostavnije koristiti pri povezivanju heterogenih SOA usluga. 5
  • 2. PREGLED SUSTAVA ZA RAZMJENU PORUKA2.1. Pojam spremnik porukaSpremnikom poruka se smatra skup poruka koje čekaju u redu sve dok ih neki vanjski izvor nepokupi radi obrade podataka. Razvojni inženjeri su kroz vrijeme proširili osnovnu idejuspremnika poruka tako što su nadodali nova svojstva u svrhu rješavanja problema u izgradnjiprogramskog sustava. U idućim potpoglavljima raspravlja se o uporabi spremnika poruka uračunalnoj znanosti.2.2. Spremnik poruka kao struktura podatakaU računalnoj znanosti spremnikom poruka se smatra FIFO struktura koja čuva slijed poruka zakomunikacijske kanale. Poruke se nadodaju na kraj spremnika, a uzimaju se sa početkaspremnika. Spremnik poruka prikazan je na Slika 2.1. Slika 2.1: FIFO spremnik porukaU FIFO načinu rada [18] prva poruka koja se nadoda u spremnik poruka biti će prva i uklonjena.To je jednako zahtjevu da kada je poruka nadodana, sve poruke koje su bile nadodane prijemoraju se ukloniti prije nego što se nadoda nova poruka. Spremnik poruka je pravi primjerlinearne strukture podataka. U stvarnom životu može se usporediti sa plaćanjem računa našalteru. Prvi platiša koji uđe u red će biti prvi poslužen, dok idući platiša ide na kraj reda i čekada sve platiše ispred njega budu poslužene. Kod računalnih programa najbolje primjer se možepredočiti tipkanjem po tipkovnici gdje se svaki znak odabran preko tipki pohranjuje premaslijedu tipkanja u memoriju računala. Računalna znanost je s vremenom zbog zahtjevnijihpotreba računalnih programa proširila tipove spremnika poruka koji imaju poboljšan način rada: a) Poboljšani način rada jamči da se u jednom vremenskom intervalu može nadodati- ukloniti samo jedna poruka iz spremnika bez obzira na broj potrošača ili proizvođača poruka kada više proizvođača-potrošača (producer-consumer) pokuša istovremeno 6
  • pristupiti spremniku poruka. Znači, ne smije se dogoditi da neka računalna komponenta nadoda dvije poruke, a odmah nakon nje druga komponenta ukloni jednu. b) Spremnik sa dva kraja (deque) – omogućava nadodavanje i uklanjanje poruka sa obje strane spremnika. Slika 2.2: Spremnik poruka sa dva kraja c) Spremnik sa rasporedom prioriteta – poruka s višim prioritetom će biti prije pročitana nego poruka sa nižim prioritetom. d) Spremnik sa privremeno nevidljivim porukama – sprema poruke koje su nevidljive za potrošače spremnika određeni vremenski interval.2.3. Spremnik poruka kao repozitorijSpremnik poruka kao struktura podataka se najčešće koristi kao unutarnji pomoćni sustav zasamostalne programske komponente. Mrežni programi i mrežne usluge zahtjevaju drugačijipristup jer se sastoje od više komponenti koje obitavaju fizički na više različitih sustava iposlužuju na tisuće korisnika istovremeno. Mehanizmi koje posjeduje spremnik poruka moguposlužiti pri rješavanju problema sa kojima se mrežni programi susreću: a) Program ponekad nije u stanju obraditi sve zahtjeve koje prima u isto vrijeme. Jedno od rješenja bi bilo da se prvo poruke stave u spremnik poruka te nakon toga da se omogući njihova obrada. b) Programi ponekad moraju izvršiti zadatke u određeno vrijeme. Za to vrijeme zadaci se pohranjuju u spremnik za stalno i čekaju na izvršenje. Primjer takve uporabe može biti npr. slanje podsjetnika korisniku o nekoj pretplati putem SMS poruke u određeno doba dana. c) Najčešći primjer iz prakse koristi pristup proizvođač-potrošač. Radi na takav način da više proizvođača stavlja poruke u spremnik dok potrošači prikupljaju poruke. Pristup 7
  • proizvođač-potrošač omogućava da proizvođači i potrošači izvršavaju svoje zadatke neovisno jedni o drugome. Slika 2.3: Izmjena poruka pomoću proizvođača – potrošačaSpremnik poruka prikazan na Slika 2.3 može se smatrati kao privremeni repozitorij poruka koječekaju da ih netko pokupi. Privremeni repozitorij se koristi kao nezavisna programskakomponenta koju može koristiti više proizvođača i potrošača poruka istovremeno bez obzira gdjese fizički repozitorij nalazi. Repozitorij se može nalaziti na računalu na kojemu se isto takonalaze proizvođači i potrošači poruka ili na nekom udaljenom računalu. Može se reći daspremnik poruka točka razdvajanja između proizvođača i potrošača poruka. Spremnik porukamože biti neizdržljiv (poruke se čuvaju u memoriji) ili izdržljiv (poruke se čuvaju u bazipodataka ili direktno na tvrdom disku bez posredovanja baze podataka). a) Neizdržljiv način rada – poruke su spremljene na poslužitelju sve dok ima dovoljno računalnih resursa (dovoljna količina RAM memorije) da zadrži poruke. Spremnik poruka se može vrlo brzo napuniti ako potrošač nedovoljno brzo kupi poruke iz spremnika, odnosno da proizvođač poruka brže puni spremnik porukama nego što ih potrošač prikuplja i obrađuje. U tom slučaju može doći do pada sustava zbog nedostatka memorije, a sve poruke koje su se nalazile u spremniku će biti zauvijek izgubljene. b) Izdržljiv način rada – zahtjeva da se poruke iz spremnika pohranjuju direktno na tvrdi disk ili u bazu podataka. U slučaju pada sustava ili redovitog održavanja poruke unutar spremnika će uvijek biti očuvane. Ovakav način rada je više pouzdan i omogućava da se pohrani više poruka u spremnik nego kod neizdržljivog načina rada. Nedostatak ovog načina rada je da zahtjeva više računalne snage te vrijeme izvođena izmjene poruka između potrošača i proizvođača je veće.Spremnik poruka se može nalaziti na istom računalu gdje se nalaze proizvođači i potrošačiporuka. Ako se sustav na računalu sruši tada računalne komponente koje se služe uslugamaspremnika neće biti dostupne ili će imati otežan način obavljanja zadataka. Zato je potrebno 8
  • osmisliti i izraditi sustav sa visokom raspoloživošću koji može istovremeno poslužiti višepotrošača i proizvođača poruka pod bilo kojim okolnostima.2.4. Arhitektura standardnog Java programskog sučelja za razmjenu porukaPrije više od deset godina uz pomoć Java platforme izgrađena je sabirnica za razmjenu porukaMOM između dva ili više programskih komponenti. Za razmjenu poruka između programskihkomponenti koristi se programsko sučelje JMS API 1.1 koje je registrirano pod organizacijomJava Community Process JSR 914 [19]. Smatra se standardom za razmjenu poruka izmeđuprogramskih JavaEE komponenti koje se nalaze na udaljenim računalnim sustavima u svrhupružanja pouzdane, asinkrone i međusobno nezavisne razmjene poruka.Standardna JMS komponenta je građena od nekoliko osnovnih dijelova: 1. Davatelj JMS usluge – predstavlja izradu JMS sučelja i omogućava promjenu postavki sustava za razmjenu poruka. Najpoznatije izrade takvog sučelja su: JBoss Messaging [20], HornetQ [21], Apache ActiveMQ [22], IBM WebSphereMQ [23], Oracle WebLogic [24], Tibco EMS [25], RabbitMQ [26]. 2. JMS klijenti – proizvođači i potrošači poruka čiji je računalni kod napisan u Java programskom jeziku. 3. Poruke – predstavljaju objekte koji prenose informacije između klijenata. 4. Postavke JMS objekata – postavke odredišta JMS poruka koje će koristiti potrošači i proizvođači poruka. 5. Izvorni klijenti – programi koji koriste izvorno (native) klijentsko programsko sučelje umjesto JMS API-ja.Slika 2.4 prikazuje međudjelovanja između pojedinih dijelova JMS API arhitekture. Alat zapromjenu postavki sustava poruka omogućava korisnicima da povezuju odredišta i veze u JNDI[27] okoliš. JMS klijent tada može pogledati objekt s promjenjivim postavkama u JNDI okolišu ipokušati uspostaviti logičku vezu s njime preko davatelja JMS usluge. 9
  • Slika 2.4: Arhitektura standardnog Java programskog sučelja za razmjenu poruka (JMS API)2.5. Područje djelovanja sustava porukaPostoje dva pristupa koji se primjenjuju kod razmjene poruka između programskih komponentiproizvođač-potrošač. Prvi pristup se zove „Od točke do točke“, a drugi „Objavi-pretplati“. JMSpropisuje odvojeno područje djelovanja sustava poruka za svaki od navedenih pristupa i pravilaza svako područje djelovanja (opisano u potpoglavljima 2.5.1 i 2.5.2). Dužnost razvojnoginženjera (ili razvojne programske zajednice) je da tokom razvoja „Davatelja usluge JMS“razviju oba pristupa djelovanja i da omoguće klijentima po potrebi združivanje pristupa.2.5.1. Područje djelovanja “Od točke do točke”Slika 2.5 prikazuje način na koji područje djelovanja “Od točke do točke” djeluje. Adresaspremnika poruka se postavlja pomoću „Alata za promjenu postavki“ koji je sastavni dio„Davatelja usluge JMS“. Adresa spremnika poruka je poznata proizvođaču (Klijent 1) ipotrošaču (Klijent 2). Proizvođač poruka šalje poruke u spremnik, poruke u spremniku čekajusve dok ih potrošač ne pokupi ili dok ne istekne rok trajanja poruke u spremniku. Nakon štopotrošač pokupi poruku šalje potvrdu „Davatelju usluge JMS“ da je poruka uspješno primljena. 10
  • Slika 2.5: Područje djelovanja „Od točke do točke“Svojstva područja djelovanja „Od točke do točke“: a) Svaka poruka ima samo jednog potrošača. b) Proizvođač i potrošač poruka međusobno su vremenski nezavisni. c) Potrošač poruka uvijek može pokušati dohvaćati poruke bez obira da li proizvođač poruka proizvodi poruke ili ne. d) Potrošač uvijek šalje potvrdu „Davatelju usluge JMS“ da je poruka uspješno primljena, ali zato „Davatelj usluge JMS“ ne zna da li je poruka uspješno obrađena.2.5.2. Područje djelovanja „Objavi-pretplati“Područje djelovanja “Objavi-pretplati” radi prema načinu pretplate korisnika (potrošača) tako dase pretplatnici pretplate na određenu temu (topic). Kada proizvođač poruka pošalje poruku natemu, tada „Davatelj usluge JMS“ šalje tu istu poruku (P1) prema svim pretplatnicima.Najjednostavniji primjer usluge koja radi na takav način je elektronička pošta. U zahtjevu zadostavu elektroničke pošte moguće je postaviti više odredišta (imena osoba kojima se želi poslatielektronička pošta). Slika 2.6 prikazuje način na koji područje djelovanja „Objavi-pretplati”djeluje. Može se primjetiti da bez obzira na promjenjen broj potrošača (Klijent 1, Klijent 2, ...Klijent n) „Davatelj usluge JMS“ će uvijek slati poruke svim potrošačima transparentno prekoteme. To znači da proizvođač ne mora znati (niti biti obavješten) o promjeni liste pretplatnika. 11
  • Slika 2.6: Područje djelovanja "Objavi-pretplati" (P1 – poruka; C1,C2,C3 – potvrda primitka poruke)Svojstva područja djelovanja “Objavi-pretplati”: a) Tema je središnje mjesto područja djelovanja „Objavi-pretplati“. b) Više proizvođača poruku može staviti na temu. c) Dovoljno je jednom poslati poruku na temu, a „Davatelj usluge JMS“ će poslati tu istu poruku svim pretplatnicima unutar teme („one-to-many“ način slanja poruka). d) Proizvođač i potrošač poruka međusobno su vremenski zavisni (potrošač koji se pretplatio na temu može pokupiti poruke nakon što ih je proizvođač poslao. Potrošač mora biti aktivan da bi uspješno nastavio primati poruke).Vremenska zavisnost može predstavljati problem jer se može dogoditi da neki potrošači nedobiju poruke zbog kvara ili redovitog održavanja sustava. U tome slučaju može se reći daproizvođači poruka šalju poruke u prazno gdje se na takav način gube poruke. Da bi se riješio tajproblem uveden je pojam „Trajna lista pretplatnika“ za koje će tema (topic) trajno (iliprivremeno određeno vremensko razdoblje) čuvati poruke u slučaju da pretplatnici (klijenti) nisudostupni. Kada se pretplatnici (klijenti) ponovo osposobe za primanje poruka, „Davatelj uslugeJMS“ će im početi ponovo slati poruke, ali i one poruke koje su se skupile u razdoblju dok supretplatnici (klijenti) bili nedostupni.2.5.3. Prikupljanje porukaPrikupljanje (potrošnja) poruka je uobičajen postupak za računalne programske proizvode koji sebave dostavom poruka između računalnih sustava. JMS poslužitelj propisuje dva načinaprikupljanja poruka: asinkroni i sinkroni. 12
  • a) Sinkroni način – sinkronim načinom prikupljanja poruka se smatra kada potrošač sam izričito zatraži poruku od „Davatelja usluge JMS“. Za to vrijeme blokiran je poziv prema „Davatelju usluge JMS“ sve dok potrošač ne dobije odgovor ili ne istekne vrijeme čekanja. Izvorni kod sinkronog načina prikupljanja poruka prikazan je na Izvorni Java kod 2.1.public class Receiver{ public static void main(String[] args) throws Exception { // sadržaj Java okoliša InitialContext ctx = new InitialContext(); // povezivanje vrijednosti Queue queue = (Queue) ctx.lookup("queue/queue0"); // izrada objekta preko kojega će se veza sa "Davateljem usluge JMS" ostvariti QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx. lookup("queue/connectionFactory"); // ostvarivanje veze sa "Davateljem usluge JMS" QueueConnection queueConn = connFactory.createQueueConnection(); // stvaranje sesije QueueSession queueSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); // stvaranje potrošača QueueReceiver queueReceiver = queueSession.createReceiver(queue); // pokretanje veze prema spremniku queueConn.start(); // izričito traženje poruke iz spremnika TextMessage message = (TextMessage) queueReceiver.receive(); // ispis poruke System.out.println("received: " + message.getText()); // zatvaranje veze prema spremniku queueConn.close(); }} Izvorni Java kod 2.1: Sinkroni način rada primatelja poruka opisan izvornim Java kodom JMS sučelja 13
  • b) Asinkroni način – „Davatelj usluge JMS“ šalje poruku registriranom osluškivaču poruka. Primitkom poruke pokreće se metoda „onMessage“ iz koje se može pročitati sadržaj poruke. Izvorni kod asinkronog načina prikupljanja poruka prikazan je na Izvorni Java kod 2.2. 14
  • public class AsyncReceiver implements MessageListener, ExceptionListener{ public static void main(String[] args) throws Exception { // sadržaj Java okoliša InitialContext ctx = new InitialContext(); // povezivanje vrijednosti Queue queue = (Queue) ctx.lookup("queue/queue0"); // izrada objekta preko kojega će se veza sa "Davateljem usluge JMS" ostvariti QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx. lookup("queue/connectionFactory"); // ostvarivanje veze sa "Davateljem usluge JMS" QueueConnection queueConn = connFactory.createQueueConnection(); // stvaranje sesije QueueSession queueSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); // stvaranje potrošača QueueReceiver queueReceiver = queueSession.createReceiver(queue); // postavljanje prislušne komponente na potrošača poruka AsyncReceiver asyncReceiver = new AsyncReceiver(); queueReceiver.setMessageListener(asyncReceiver); // postavljanje prislušne komponente za hvatanje grešaka queueConn.setExceptionListener(asyncReceiver); // pokretanje veze prema spremniku poruka queueConn.start(); // čekanje primitka poruke... System.out.print("waiting for messages"); for (int i = 0; i < 10; i++) { Thread.sleep(1000); System.out.print("."); } System.out.println(); // zatvaranje veze prema spremniku poruka queueConn.close(); } /** Ova metoda je pozvana asinkrono od strane "Davatelja JMS usluge" svaki puta kada jeporuka poslana u Spremnik. @param message objekt JMS poruke. */ public void onMessage(Message message) { TextMessage msg = (TextMessage) message; try { System.out.println("received: " + msg.getText()); } catch (JMSException ex) { ex.printStackTrace(); } }Izvorni Java kod 2.2: Asinkroni način rada primatelja poruka opisan izvornim Java kodom JMS sučelja 15
  • 2.6. JBossMQ – primjer davatelja standardne usluge JMSU ovom podpoglavlju ukratko će biti predstavljen ne-komercijalni (pripadnik otvorenog koda)„Davatelj usluge JMS“ koji se naziva JBossMQ. JBossMQ je programska komponenta unutarJavaEE poslužitelja JBoss koji ima mogućnost pružanja usluge razmjene poruka između višeprogramskih komponenti. JBossMQ je temeljen na programskom sučelju JMS API 1.1 ipodržava oba područja djelovanja: „Od točke do točke“ i „Objavi-pretplati“.Svojstva JBossMQ kao davatelja usluge JMS: a) „Od točke do točke“ – proizvođač poruka dostavlja poruke u spremnik, a jedan potrošač kupi poruke. b) „Objavi-pretplati“ – ovaj model se još naziva i „Jedan prema više“. Kada pošalje poruku na Temu, tada „Davatelj usluge JMS“ pošalje tu istu poruku svim pretplatnicima teme. Pretplatnici koji nisu aktivni neće primiti poruku. c) „Trajne poruke“ – može se reći da je riječ o miješanom svojstvu „Od točke do točke“ i „Objavi-pretplati“. Ako pretplatnik nije bio aktivan za vrijeme kada su se poruke slale prema njemu tada ih može pročitati kasnije kada se uključi jer su se poruke spremale za vrijeme njegove neaktivnosti. d) Spremnici i teme u grozd okružju – nalaze se na svim računalima unutar grozda. JMS klijent koristi visokodostupni HA JNDI koji ima informacije o svim adresama spremnika i tema na računalima. Pri tome važno je napomenuti da algoritmi ravnoteže (weighted round-robin, round-robin-affinity, weight-based-affinity, random-affinity) [28] održavaju pravilan raspored veza između spremnika i tema tako da ne dođe do zagušenja prometa poruka.Svi „Davatelji usluge JMS“ (komercijalni i nekomercijalni) zahtjevaju predefiniranje postavkitako da programske komponente mogu ispravno komunicirati sa „Davateljem JMS usluge“. Touključuje instalaciju programskih komponenti, postavljanje sigurnosnih ograničenja, izrada JMSsučelja, postavke spremnika i teme u grozd okružju. Rad sa raspodjeljenim spremnicima itemama je danas među najvećim problema u raspodjeljenom računarstvu. Pravi izazov je izraditii koristiti takav sustav, ali u pojednostavljenom obliku tako da osobe koje su dužne mijenjatipostavke takvih sustava čine to jednostavnije, brže i bez posebne tehničke obuke. 16
  • 2.7. Spremnici poruka sa visokom dostupnošćuImati nedostupan spremnik poruka zbog pada sustava je najveći mogući problem s kojim sesusreću mrežne usluge. Spremnik poruka sa visokom dostupnošću je sustav razmjene poruka kojise nudi kao jedino logično rješenje za sigurnu i pouzdanu razmjenu poruka između programskihkomponenti. Problem koji se javlja je: kako postaviti postavke takvog sustava? - jer postavkesvih „Davatelja usluga JMS“ nisu jednake. Razlikuju se po broju parametara, vrsti parametara,grafičkom sučelju alata za promjenu postavki. Amazon AWS je zato ponudio vrlo interesantnorješenje kojim sakriva složenost sustava za razmjenu poruka, a da pri tome nudi visokudostupnost usluge, sigurnost, podesivost, jednostavno programsko i grafičko sučelje. Takavsustav nije potrebno održavati sa gledišta kupca – kupnja računalnih komponenti za nadogradnjupostojećeg sustava, potrošnju električne energije, sustav hlađenja, plaćanje licenci, certifikati,plaćanje obuke vlastitog osoblja kako se služiti grafičkim sučeljem. Iduće poglavlje raspravlja ouslugi Amazon SQS da bi se bolje razumio način na koji djeluje.2.8. Usluga Amazon SQS za razmjenu porukaTvrtka Amazon je izradila SOA oblačnu uslugu Amazon SQS za razmjenu poruka sa visokomdostupnosti, sigurnosti, pouzdanosti i podesivosti. Svrha usluge je da omogući jednostavnoasinkrono povezivanje ostalih geografski udaljenih heterogenih SOA usluga i uklanjanjenjihovih međuzavisnosti. Geografski udaljene heterogene SOA usluge ne moraju čak biti uvlasništvu istog kupca. Osnovni cilj je da bilo koja SOA usluga treće strane može pohraniti bilokoji tip podatka u sigurni i uvijek dostupni spremnik poruka uz pomoć posebnog programskogsučelja Amazon SQS API [29].Ovakav način obavljanja razmjene poruka između programskih komponenti rješava problemvremenske zavisnosti između proizvođača i potrošača poruka. Postaje nebitno kojom brzinomproizvođač puni spremnik poruka, ili kojom brzinom i kada potrošač prikuplja poruke.Usluga Amazon SQS se obvezuje dostaviti poruku barem jednom u sklopu svoje kvaliteteusluge, podržava više istovremenih proizvođača i potrošača poruka koji unose i čitaju poruke izspremnika poruka. Građena je na takav način da uvijek bude dostupna za dostavljanje poruka, alizato ne jamči FIFO načina dostavljanja poruke. U slučaju da je potrebno pratiti redoslijed porukatada je na razvojnom inženjeru da unutar svake poruke stavi informaciju o rednom broju poruke.Kada se poruka primi potrebno je samo provjeriti informaciju o rednom broju. 17
  • Usluga Amazon SQS omogućava da bilo koje računalo, pametni telefon, dlanovnik, spojeno najavnu mrežu Internet uz pravilnu provjeru valjanosti (authentication) i odobrenja (authorization)korisnika može nadodavati ili čitati poruke bez posebno instaliranog programa treće strane ilipostavki vatrozida.Velika prednost je što programske komponente koje koriste uslugu Amazon SQS radeneovisno jedna o drugoj, ne moraju biti na istoj mreži, ne moraju biti razvijene istimprogramskim jezikom te raditi u isto vrijeme.2.8.1. Svojstva usluge Amazon SQSUsluga Amazon SQS sadrži nekoliko korisnih svojstava koja olakšavaju rad razvojniminženjerima: a) Višestruka zalihost omogućava visoku dostupnost spremnika za primanje i slanje poruka. b) Obavezuje se dostaviti poruku barem jednom u sastavu svoje kvalitete usluge (QoS), istovremeno podržavati više proizvođača i potrošača poruka koji unose i čitaju poruke iz spremnika poruka. c) Građena je na takav način da uvijek bude dostupna za dostavljanje poruka, ali zato ne jamči FIFO načina dostavljanja poruke. U slučaju da je potrebno pratiti redoslijed poruka tada je na razvojnom inženjeru da unutar svake poruke stavi informaciju o rednom broju poruke. Kada se poruka primi na strani potrošača potrebno je samo provjeriti informaciju o rednom broju. d) Moguće je da više proizvođača i potrošača poruka istovremeno koriste isti spremnik poruka. e) Zaključavanje poruka unutar spremnika – poruka će biti zaključana (nevidljiva) određeno vrijeme od strane spremnika kada potrošač (klijent) pročita poruku. Npr. Kada Potrošač 1 pročita poruku P1 tada je ta poruka nevidljiva Potrošaču 2, Potrošaču 3, Potrošaču (n) određeno vremensko razdoblje. To je napravljeno da se spriječi višestruko čitanje poruke od strane više potrošača u istom vremenskom rezdoblju. f) Svakom spremniku poruka mogu se vrlo jednostavno promijeniti postavke, ali i provjeriti trenutne postavke. Npr. spremniku poruka se mogu postaviti postavke na takav način da uspori očitavanje poruka potrošačima tako da se poveća vrijeme nevidljivosti poruka. g) Najveća dopuštena veličina poruke je 64 kB. Naravno, to se može i povećati jer sadržaj poruke se može sažimati. Najjednostavnije i sukladno sa drugim programskim jezicima je 18
  • koristiti deflate/inflate postupak za sažimanje podataka koji se navodi u RFC 1951 [30]. Podržan je u Javi, C#, Actionscriptu 3.0 i ostalim programskim jezicima. h) Broj spremnika i količina poruka unutar spremnika je NEOGRANIČENA. i) Najdulje vrijeme života poruke unutar spremnika je 14 dana. Ako za to vrijeme potrošač ne pokupi poruku onda će poruka biti obrisana od strane usluge Amazon SQS. j) U slučaju da se spremnik poruka ne koristi (prikupljanje poruka, slanje poruka, brisanje poruka, dodavanje prava, oduzimanje prava, provjera stanja) dulje od 30 dana usluga Amazon SQS će ga zauvijek obrisati. k) Uslugi Amazon SQS moguće je pristupiti korištenjem programskog sučelje SOAP ili obični HTTP(s) zahtjev. U slučaju korištenja javne mreže Internet najpoželjnije je koristiti HTTPS koji koristi SSL/TLS protokol koji omogućava zaštićenu komunikaciju između klijenta i poslužitelja. Takav način komunikacije primjenjuje i bankarski sektor pri novčanim Internet transakcijama. l) Spremnici poruka mogu dijeliti svoje poruke između više različitih potrošača koji pripadaju različitim korisnicima AWS računa (npr. klijenti koji pripadaju različitim tvrtkama koji se spajaju na spremnik poruka). Da ne bi došlo do nedozvoljenih radnji mogu se ograničiti pristupna prava tako da se dodatno provjerava Internet adresa potrošača, zaglavlje HTTP(s) zahtjeva UserAgent i vrijeme pristupa uslugi.2.8.2. Osnovni pregled arhitekture usluge Amazon SQSUsluga Amazon SQS se sastoji od tri glavne komponente (Slika 2.7): a) Komponente udaljenih sustava – sustavi međusobno koriste uslugu Amazon SQS za primanje i slanje poruka. b) Spremnici poruka – svaki spremnik je kopiran na više poslužitelja radi pružanja veće dostupnosti poruka klijentima. c) Poruke – poruke se kopiraju više puta za svaku instancu spremnika. 19
  • Slika 2.7: Pregled arhitekture usluge Amazon SQS2.8.3. Kako radi usluga Amazon SQS ?Korisnici usluge Amazon SQS moraju izraditi Amazon AWS račun za koji im je potrebnavaljana kreditna kartica (American Express, Visa, Diners). Svaki Amazon AWS račun jeprepoznat prema jedinstvenom broju od dvanaest znamenki koji se pridodjeli korisniku računa zavrijeme izrade računa. Nakon završene prijave korisnika usluga Amazon SQS je potpunodostupna. Spremnik poruka se izrađuje pokretanjem SQS akcije CreateQueue kojoj mora bitipredano jedinstveno ime spremnika. Nakon uspješne izrade spremnika, usluga Amazon SQSizrađuje URL imenski prostor. Primjer oblika jednoga takvog imenskog prostora može sepredočiti ovako: http://<adresa usluge Amazon SQS>/<jedinstveni broj računa>/<imespremnika>. Error! Reference source not found.Tablica 2.1 prikazuje imenski prostor uslugeAmazon SQS u ovisnosti o geografskom položaju računalnog centra. Korisnik time dobivamogućnost da sam odluči u kojem računalnom centru želi imati spremnik poruka. Najlogičnije jeodabrati onaj računalni centar koji je najbliži klijentu u svrhu smanjenja vremena kašnjenja(latency issue) izmjene poruka između proizvođača i potrošača. Tablica 2.1: Imenski prostor usluge Amazon SQS Odredišta ovisno o Jedinstveni broj Imenski prostor geografskom položaju računa The US East (Northern Virginia) http://sqs.us-east- 012345678912 (http://sqs.us-east- 1.amazonaws.com/012345678912/Test 1.amazonaws.com) The US West (Northern California) http://sqs.us-west- 012345678912 (http://sqs.us-west- 1.amazonaws.com/012345678912/Test 1.amazonaws.com) US West (Oregon) http://sqs.us-west-2.amazonaws.com 012345678912 (http://sqs.us-west- /012345678912/Test 20
  • 2.amazonaws.com) The EU(Ireland) http://sqs.eu-west- (http://sqs.eu-west- 012345678912 1.amazonaws.com/012345678912/Test 1.amazonaws.com) The Asia Pacific (Singapore) http://sqs.ap-southeast- (http://sqs.ap- 012345678912 1.amazonaws.com/012345678912/Test southeast- 1.amazonaws.com) The Asia Pacific (Tokyo) (http://sqs.ap- http://sqs.ap-northeast- 012345678912 northeast- 1.amazonaws.com/012345678912/Test 1.amazonaws.com) The South America (Sao Paulo) (sqs.sa- http://sqs.sa-east-1.amazonaws.com 012345678912 east- /012345678912/Test 1.amazonaws.com)Nakon što je spremnik poruka izrađen usluga Amazon SQS je odmah spremna primati poruke izadržati ih dok ih potrošač ne pokupi i obriše. Proizvođač poruke šalje pomoću SQS akcijeSendMessage kao što je prikazano na Slika 2.8. Poruke se kopiraju na više poslužitelja radipružanja visoke dostupnosti tako što se čuvaju redundantne kopije. Slika 2.8: Slanje poruke u spremnik poruka (akcija SendMessage)Slika 2.9 prikazuje zahtjev akcije ReceiveMessage koji prikuplja poruke iz spremnika poruka isat koji mjeri vrijeme vidljivosti poruke unutar spremnika. 21
  • Slika 2.9: Prikupljanje poruka iz spremnika poruka (akcija ReceiveMessage)Za vrijeme prikupljanja poruke iz spremnika poruka zahtjev će biti usmjeren prema težinskojfunkciji raspodjele nekom od poslužitelja usluge Amazon SQS. To znači da se može dogoditi dapojedini SQS zahtjev neće vratiti nikakvu poruku iako poruke postoje na poslužiteljima ili ako ihje jako malo (npr. postoji manje od 1000 poruka unutar spremnika poruka). Zato je ponekadpotrebno (za male spremnike poruka) izvršiti više uzastopnih SQS zahtjeva da bi se porukeprikupile. Slika 2.10 prikazuje poruke A, B, C, D i E čije se kopije nalaze na više poslužiteljausluge Amazon SQS. Može se primjetiti da poruka E nije dohvaćena jer SQS zahtjev nijeobuhvatio poslužitelj na kojemu se poruka E nalazi. Slika 2.10: Prikupljanje poruka A, B, C; D iz spremnika poruka (akcija ReceiveMessage)Nakon što komponenta n primi poruku, poruka se i dalje nalazi u spremniku poruka. Ona nijeobrisana nego je sakrivana od ostalih komponenti određeno vrijeme. To znači da usluga AmazonSQS blokira druge komponente da prime istu poruku da bi se spriječila istovremena obrada jednete iste poruke od više komponenti. Slika 2.11 grafički prikazuje vremensko ograničenjenevidljivosti poruke. 22
  • Slika 2.11: Vremensko ograničenje nevidljivosti poruke (akcija ChangeMessageVisibility)Kada komponeta n (potrošač) uspješno pročita i obradi poruku tada mora pozvati akcijuDeleteMessage koja uklanja poruku iz spremnika poruka tako da je druge programskekomponente ne mogu više koristiti. DeleteMessage je potrebno pozvati unutar vremenskogograničenja nevidljivosti poruke kao što je prikazano na Slika 2.12. Ako komponenta ne uspijeobraditi i obrisati poruku tada će poruka ponovo biti pročitana od neke druge programskekomponente akcijom ReceiveMessage nakon što istekne vrijeme nevidljivosti poruke. Slika 2.12: Brisanje poruke A iz spremnika poruka unutar vremenskog ograničenja nevidljivosti poruke (akcija DeleteMessage)Usluga Amazon SQS pokušava održati redoslijed poruka unutar spremnika poruka, ali zbograspodjeljene prirode spremnika nemoguće je jamčiti da će strana koja prikuplja poruke dobitiporuke po redoslijedu slanja. Ako sustav zahtjeva da prima poruke po nekom zadanomredoslijedu tada je potrebno umetnuti informaciju o rednom broju poruke. Redni broj sepostavlja u tijelo poruke, a ne u zaglavlje. Poruke se kopiraju na više poslužitelja radi očuvanjazalihosti i visoke dostupnosti. U rijetkim slučajevima, jedan od poslužitelja koji čuva kopije 23
  • poruka može biti nedostupan nakon što potrošač (klijent) primi ili obriše poruku. Ako se todogodi, kopija poruke neće biti obrisana na tom nedostupnom poslužitelju i moguće je da će istipotrošač ponovo primiti tu istu poruku kasnije kada poslužitelj postane dostupan. Zbog togapotrebno je osmisliti i povezati heterogene SOA usluge da budu otporne na obradu jedne te isteporuke više puta - idempotentnost.2.8.4. HTTP(s) zahtjevi i odgovoriUsluga Amazon SQS propisuje posebna pravila kako napraviti ispravni SQS zahtjev i kakavoblik odgovora očekivati. U ovom podpoglavlju biti će objašnjeni različiti tipovi HTTP(s)zahtjeva i odgovora sa kojima će se razvojni inženjeri susretati. Postoji lista parametara (Tablica2.2) koju je potrebno primjenjivati da bi zahtjev za pokretanjem SQS akcije bio ispravan. Napomena: Programsko sučelje SOAP nije podržano od 31.12.2011. Razlog tome je što~0.3% razvojnih inženjera koristi programsko sučelje SOAP što ga čini nezanimljivim za daljneodržavanje pa zato i neće biti rasprave o njemu u ovom radu [31]. Tablica 2.2: Lista obaveznih parametara za Amazon SQS HTTP(s) zahtjeve Tko koristi parametar Jednostavni Naziv parametra Opis parametra zahtjev SOAP upita Naziv akcije koja se treba izvršiti DA NE Action unutar SQS usluge. Npr. CreateQueue. Korisnikov Amazon AWS javni ključ. DA DA AWSAccessKeyId Sastoji se od 20 alfanumeričkih znakova. Datum i vrijeme trajanja zahtjeva u DA DA formatu YYYY-MM- DDThh:mm:ssZ. Format je podržan Expires prema standardu ISO 8601 [32]. Preporučljivo je slati datum i vrijeme prema GMT vremenskoj zoni. 24
  • Napomena #1: SOAP zahtjevi koji ne koriste WS-Security ne smiju koristiti Expires, nego Timestamp. Napomena #2: Jednostavni upit zahtjeva ne smije koristiti Timestamp ako koristi Expires parametar. Potpis zahtjeva napravljen koristeći DA DA SHA1 ili SHA256 algoritam [33] pomoću tajnog AWS ključa (40 Signature alfanumeričkih znakova) koji je dodjeljen korisniku (prema standardu RFC 2104 [34]). Tajni ključ se NIKADA NE ŠALJE u zahtjevu. Način izrade potpisa zahtjeva. DA NE SignatureMethod=HmacSHA256SignatureMethod (preporučeno) SignatureMethod= HmacSHA1 (zastarjelo) SignatureVersion=1 (zastarjelo) DA NESignatureVersion SignatureVersion=2 (preporučeno) Datum i vrijeme kada je zahtjev upita DA DA nastao u formatu YYYY-MM- DDThh:mm:ssZ. Format je podržan prema standardu ISO 8601. Preporučljivo je slati datum i vrijeme prema GMT vremenskoj zoni. Timestamp Napomena #1: SOAP zahtjevi koji ne koriste WS-Security ne smiju koristiti Expires, nego Timestamp. Napomena #2: Jednostavni upit zahtjeva ne smije koristiti Timestamp ako koristi Expires parametar. Verzija programskog sučelja. DA NE Version Trenutna verzija: 2009-02-01. 25
  • 2.8.5. Izrada i sigurnost jednostavnog HTTP(s) zahtjeva upitaUsluga Amazon SQS podržava jednostavne RESTful zahtjeve upita [35] pozivajući SQS akcije.Zahtjevi upita su jednostavni HTTP(s) zahtjevi koji koriste GET i POST metode poziva. Zahtjeviupita obavezno moraju sadržavati parametre: Action, AWSAccessKeyId, Expires ili Timestamp,Signature, SignatureMethod i SignatureVersion. Mogu imati i dodatne parametre, ali njihovinazivi ovise o tipu akcije koje izvršavaju. U šest koraka objašnjeno je kako napraviti ispravanzahtjev upita [36]: 1. Izrada kanoničkog upita a) Poredati UTF-8 komponente upita po imenu parametra sa prirodnim byte redoslijedom. Parametri mogu doći od GET URI ili POST tijela poruke (kada je parametar HTTP(s) zaglavlja Content-Type=application/x-www-form- urlencoded). b) URL enkodirati imena i vrijednosti parametara prema slijedećim pravilima:  Ne smiju se enkodirati nerezervirani znakovi koje propisuje RFC 3986 [37]. Nerezervirani znakovi: A-Z, a-z, 0-9, crtica ( - ), donja crtica ( _ ), točka ( . ), and tilda ( ~ ).  Enkodirati sve ostale druge znakove sa %XY. X i Y predstavljaju heksadecimalne znakove: 0 - 9 i A – F.  Proširene znakove formata UTF-8 [38] enkodirati u formatu %XY%ZA....  Jedan razmak (ASCII kod 32) enkodirati kao %20. c) Odvojiti enkodirana imena parametara od njihovih enkodiranih vrijednosti sa znakom jednako ( = ) (ASCII kod 61) bez obzira da li je vrijednost parametra prazna ili ne. d) Odvojiti sve parove ime-vrijednost sa znakom & (ASCII kod 38). 2. Izrada niza koji treba biti potpisan prema slijedećoj pseudo gramatici („n“ predstavlja novi red – ASCII kod 13). Niz = HTTP(s) metoda + „n“ + odredište SQS usluge + identifikator + „n“ + kanonički upit iz prethodnog koraka Slika 2.13: Niz koji treba biti potpisan a) HTTP(s) metoda - POST (za izmjenu podataka) ili GET (za dohvaćanje podataka). 26
  • b) Odredište usluge Amazon SQS – lista odredišta se može vidjeti u Tablica 2.1. c) Identifikator - <broj korisnikovog Amazon AWS računa>/<ime spremnika> (ako ime spremnika nije potrebno slati u zahtjevu onda je kao identifikator potrebno postaviti znak „ / “) 3. Izračunati RFC 2104 HMAC potpis [34] (SHA1 ili SHA-256) za niz koji smo odredili, a kao ključ koristiti tajni ključ koji je korisnik dobio pri izradi Amazon AWS računa. 4. Prevesti HMAC potpis u Base 64 format [39]. 5. Potpis u formatu Base 64 spremiti u parametar Signature koji je dio HTTP(s) zahtjeva. POSTn sqs.us-east-1.amazonaws.comn 207121356507/Testn AWSAccessKeyId=< Korisnikov AWS Access Key ID> &Action=SetQueueAttributes &Attribute.Name=VisibilityTimeout &Attribute.Value=90 &Expires=2008-02-10T12%3A00%3A00Z &SignatureMethod=HmacSHA256 &SignatureVersion=2 &Version=2009-02-01 Slika 2.14: Primjer niza koji je potrebno potpisati POSTn sqs.us-east-1.amazonaws.comn 207121356507/Testn AWSAccessKeyId=<Korisnikov AWS Access Key ID> &Action=SetQueueAttributes &Attribute.Name=VisibilityTimeout &Attribute.Value=90 &Expires=2008-02-10T12%3A00%3A00Z &SignatureMethod=HmacSHA256 &SignatureVersion=2 &Version=2009-02-01 & Signature=jVJSWV50VWlN1CGU9wE1vS4UEikgz0E9W1BuEScyGOI%3D Slika 2.15: Primjer potpisanog HTTP(s) zahtjeva Napomena: Zaglavlje HTTP(s) zahtjeva mora obavezno sadržavati Content-Type:application/x-www-form-urlencoded; charset=utf-8. Charset=utf-8 je neobavezan parametar, alitrebalo bi ga uvijek postaviti radi višejezične podrške. 27
  • Tablica 2.3 i Tablica 2.4 prikazuju primjer zahtjeva/odgovora Amazon SQS poruke izvršene odstrane klijenta. Svaki HTTP(s) zahtjev sastoji se od zaglavlja i tijela. U zaglavlju su uvijekprisutni parametri POST (ili GET), Content-Type i User-Agent dok su ostali parametri zaglavljaautomatski nadodani od strane klijenta. POST predstavlja tip metode koja se izvršava, Content-Type predstavlja tip sadržaja (ako želimo imati podršku za dijakritičke znakove tada je potrebnoimati postavku charset=utf-8 u zaglavlju HTTP(s) zahtjeva), Host predstavlja odrediše regije ukojoj se usluga Amazon SQS nalazi dok ostali parametri zaglavlja nisu uzeti u obzir. Tablica 2.3: Tijelo HTTP zahtjeva nadgledano od Wireshark alata za nadgledanje IP prometa Zaglavlje HTTP zahtjeva POST http://sqs.us-east-1.amazonaws.com/207121356507/Test HTTP/1.1 Content-Type: application/x-www-form-urlencoded; charset=utf-8 User-Agent: aws-sdk-java/1.1.9 Windows_7/6.1 Java_HotSpot(TM)_Client_VM/14.2-b01 Host: sqs.us-east-1.amazonaws.com Proxy-Connection: Keep-Alive Content-Length: 291 Tablica 2.4: Tijelo HTTP odgovora nadgledano od Wireshark alata za nadgledanje IP prometa Tijelo HTTP odgovora MessageBody=%C5%BD%C5%BE%C4%90%C4%91%C5%A0%C5%A1%C4%8C%C 4%8D%C4%86%C4%87%21&Action=SendMessage&SignatureMethod=HmacSHA256 &AWSAccessKeyId=AKIAJ4E7FUK2P44ECKMA&SignatureVersion=2&Version=200 9-02- 01&Signature=jVJSWV50VWlN1CGU9wE1vS4UEikgz0E9W1BuEScyGOI%3D&Time stamp=2011-04-12T23%3A00%3A54.224ZHTTP/1.1 200 OK Content-Type: text/xml Server: AWS Simple Queue Service <?xml version="1.0"?> <SendMessageResponse xmlns="http://queue.amazonaws.com/doc/2009-02- 01/"><SendMessageResult> <MD5OfMessageBody>3d099411fec3af188f51efb884653c1c</MD5OfMessageBody> <MessageId>f599352c-ed31-4893-b2c2-163bdf2da5db</MessageId> </SendMessageResult> 28
  • <ResponseMetadata><RequestId>ee88379d-6f8d-45e5-a6ee- e9fc7abea128</RequestId></ResponseMetadata> </SendMessageResponse>Da bi se slanje poruka mrežom Internet odvijalo na siguran način potrebno je učiniti dva koraka:  Zahtjev je potrebno uputiti kao HTTPS zahtjev čiji se sadržaj (zaglavlje i tijelo) automatski enkriptira temeljem dogovora između klijenta i poslužitelja. Na taj način neovlaštena treća strana nema mogućnosti čitati sadržaj poruka osim IP adrese izvora i odredišta koje su ionako javno poznate. Takav način komunikacije koristi se i u bankarskom sektoru prilikom novčanih transakcija (npr. plaćanje i uplate na tekući račun).  Da bi se povećala sigurnost provjere valjanosti klijenata potrebno je izraditi javni i privatni ključ sa ograničenom odgovornošću. To se radi pomoću usluge Amazon IAM [40] što znači da se nekim klijentima može (a i ne mora) omogućiti izvršavanje određenih akcija usluge Amazon SQS. Slika 2.16: Odobrenje (autorizacija) i provjera valjanosti (autentifikacija) klijenata pomoću usluge Amazon IAM 29
  • Opis slike Slika 2.16:  Korak 1 – 2: Klijent 1 a) Korak 1 - zahtjev klijenta 1 je ispravan jer HTTP(s) zahtjev sadrži ispravan parametar AWSAccessKeyId i potpis koji je izrađen uz pomoć tajnog AWSSecretKey ključa. b) Korak 2 - Nakon provjere ispravnosti zahtjeva klijenata, usluga Amazon SQS provjerava akcije (Slika 2.17 - parametar Action: DeleteMessage, GetQueueAttributes, ReceiveMessage, SendMessage) koju su dozvoljene klijentu 1 izvršavati. Slika 2.17: Primjer postavki dozvole usluge Amazon SQS za spremnik poruka „Test“  Korak 3 – 4: Klijent 3 a) Korak 3 - zahtjev klijenta 1 za brisanjem spremnika poruka „Test“ je ispravan jer HTTP(s) zahtjev sadrži ispravan parametar AWSAccessKeyId i potpis koji je izrađen uz pomoć tajnog AWSSecretKey ključa. b) Korak 4 - Nakon provjere ispravnosti zahtjeva klijenta, usluga Amazon SQS provjerava akcije koje su dozvoljene klijentu 3 izvršavati. Unutar liste akcija (Slika 2.17) ne postoji akcija DeleteQueue što znači da je klijentu 3 zahtjev odbijen. 30
  •  Klijent 2 – nema ispravan parametar AWSAccessKeyId ili izrađen potpis uz pomoć tajnog AWSSecretKey ključa. Daljnje provjere neće biti izvršavane. 31
  • 3. IZRADA UKUPNOG TROŠKA KORIŠTENJA USLUGE AMAZON SQS I USPOREDBA SA UKUPNIM TROŠKOM ODRŽAVANJA POSLUŽITELJA ORACLE WEBLOGIC – IBM WEBSPHEREU današnje doba velikih tehnoloških i ekonomskih promjena, jedna stvar ostaje nepromjenjenaza organizaciju bilo koje veličine: poslovni pritisak za smanjenjem IT troškova i iskorištavanjenajvećih poslovnih vrijednosti iz postojećih i budućih investicija. Aplikacijski poslužitelji suključni u ovoj nakani, nudeći bolju uporabu i raspodjelu IT mogućnosti, povećanu agilnost iproširene vrijednosti za postojeća IT ulaganja. Mogu igrati i ključnu ulogu u rasterećenjuoblačnog modela usluga. Ali pod koju cijenu? U idućim podpoglavljima prikazani su troškoviulaganja u vlastiti sustav razmjena poruka i tehničke razlike između poslužitelja OracleWebLogic i usluge Amazon SQS u svrhu donošenja konačne odluke o isplativosti ulaganja uvlastiti sustav za razmjenu poruka naspram oblačnog modela.3.1. Ukupan trošak održavanja poslužitelja Oracle WebLogic - IBM WebSphereU ovome podpoglavlju prikazani su rezultati istraživanja Crimson Consulting Group tvrtke kojisu objavljeni u svibnju 2011 godine [41]. Istraživanje se bavilo izračunom ukupnih troškovaposlovanja (TCO) komercijanih poslužitelja Oracle WebLogic i IBM WebSphere. U izračuncijene uključeni su troškovi stjecanja (acquisition), razvoja aplikacija, testiranja, podrške ipromjene postavki. Cilj istraživanja je bio dokazati bolju ekonomsku isplativost korištenjaposlužitelja Oracle WebLogic u odnosu na poslužitelj IBM WebSphere. Naravno, treba imati naumu da je istraživanje naručeno zbog velikih tvrtki koje imaju dovoljno novca priuštiti si ovakvesustave.Osnovni model sustava koji se koristio u istraživanju sastojao se od pet poslužitelja (svakiposlužitelj ima dva procesora, a svaki procesor dvije jezgre). Na svakom poslužitelju radile sučetiri instance poslužitelja Oracle WebLogic ili poslužitelja IBM WebSphere. Svaki poslužiteljpokretao je četiri jedinstvene aplikacije.Istraživanje Crimson Consulting Group tvrtke je obuhvatilo trenutno važeće cjenike tvrtki Oraclei IBM, (cjenici od ožujka 2011 godine), politiku prodaje licenci, detaljne razgovore sa osobljemšesnaest organizacija koje koriste poslužitelje Oracle WebLogic i IBM WebSphere. Razgovaranoje i sa admnistratorima koji održavaju ovakav tip sustava. Na temelju vlastitog iskustva 32
  • odgovarali su na pitanja u vezi instalacije, općih promjeni postavki, grozd postavki, nadogradnje,izrade instanci, razmjene podataka, nadgledanja, održavanja baze podataka, alarma i prilagodbe.Dobiveni odgovori pomogli su u izradi modela troška za voditelje informatičkih odjeljenja ustvarnom okolišu.Slika 3.1 prikazuje ukupne troškove poslovanja koje kupac poslužitelja Oracle WebLogic iliposlužitelja IBM WebSphere mora imati na raspolaganju u razdoblju od pet godina. Iz dobivenihrezultata može se zaključiti da je poslužitelj Oracle WebLogic za razdoblje od pet godina jefinijiza 46% u odnosu na poslužitelj IBM WebSphere, dok početni troškovi za prvu godinu su jeftiniji88%. Napomena: Cijene su izražene u američkim $ USD dolarima. Slika 3.1: Ukupni troškovi posjedovanja poslužitelja WebLogic i WebSphere [41]Što to znači za male i srednje velike tvrtke (ili čak početnike na IT tržištu) koji žele pokušatiponuditi visoko pouzdani i podesiv sustav koji koristi sustav za razmjenu poruka za povezivanjeheterogenih SOA usluga? Iz rezultata istraživanja za tradicionalne sustave može se zaključiti da 33
  • si najbolje komercijalne sustave male i srednje tvrtke ne mogu priuštiti. Jedino što im preostajeriskirati sa rješenjima otvorenog koda (open source solution) koja tehnički ne moraju biti loša(npr. HornetQ, Apache MQ, Rabbit MQ, JBossMQ), ali cijena i uloženo vrijeme petogodišnjegodržavanja poslužitelja je nepoznata. Za pretpostaviti je da bi cijena rješenja otvorenog koda zarazmjenu poruka bila niža od komercijanog zbog besplatne licence, ali ostali troškovi održavanjamogu čak biti i isti. Kao drugo rješenje postoji mogućnost povezivanja heterogenih SOA uslugakorištenjem oblačnog sustava za razmjenu poruka Amazon SQS. Da bi usluga Amazon SQS bilaisplativa za korištenje mora imati gotovo podjednaka tehnička svojstva kao standardna uslugaJMS i biti financijski priuštiv. Kao rezultat višemjesečne faze istraživanja (uspoređivanjasvojstava poslužitelja Oracle WebLogic i usluge Amazon SQS) nastala je Tablica 3.1 kojaprikazuje najvažnija svojstva jedne i druge usluge. Tablica 3.1: Usporedba svojstava poslužitelja Oracle WebLogic i usluge Amazon SQS Usluga Poslužitelj Oracle WebLogic kao davatelj JMS Svojstvo Amazon SQS usluge Najveća Neograničen Ovisi o veličini JVM memorije, o količini i veličini dozvoljena broj poruka tvrdih diskova na kojima će se poruke pohranjivati veličina imenika unutar imenika poruka poruka Kvaliteta usluge Moguće je da Jamči da će poruka iz imenika biti dostavljena samo potrošač iz jednom na zahtjev potrošača (QoS) imenika poruka dohvati jednu te istu poruku više puta Podesiv broj NE DA dohvaćanja poruka Sigurnost X509 potvrda X509 potvrda, SSO, SAML Odobrenja i DA DA provjera valjanosti vanjskih korisnika (Authorization 34
  • andauthentificationof third-partyusers)Protokoli HTTP, HTTPS HTTP, HTTPS, RMI, IIOP, t3, t3sTrajnost poruka Uvijek Neobavezno prisutnoPodesivost Uvijek Samo u grozd-u prisutnoRaspoloživost Uvijek Da bi se postigla visoka raspoloživost potrebno je prisutno predvidjeti preseljenje postavki i podataka JMS poslužiteljaRedoslijed Nije Može se podesiti da bude zajamčeno, ali nije obaveznoporuka zajamčenoSlanje više DA NEporuka u jednomzahtjevuBrisanje više DA NEporuka u jednomzahtjevuPodesiva kontrola NE DAtokaPotvrda primitka NE DAporukeNajdulje 1 sat – 14 dana 1 ms ~ 2 milijuna godinadopuštenovrijeme životaporuke unutarspremnikaNajveća 65,536 byte; Neograničenodopuštena početnaveličina jedne vrijednost jeporuke 8192 byteSažimanje NE DAsadržaja poruke 35
  • Grafičko DA DA korisničko sučelje za izmjenu postavki Komercijalna DA (pogledati DA (10 000$ - 25 000$ po procesoru) [42] licenca Tablica 3.2 za detalje)Temeljem usporedbe svojstava može se zaključiti da je usluga Amazon SQS potpuno tehničkiuporabljiva za povezivanje sa heterogenim SOA uslugama. Jedini nedostaci usluge Amazon SQSsu: ograničena veličina poruke, najdulje dopušteno vrijeme života poruke unutar spremnika temogućnost primanja jedne te iste poruke više puta. Navedeni nedostaci se mogu nadomjestitikvalitetnijom i podesivom izradom svojstava potrošača-proizvođača poruka te višestrukeprovjere stanja spremnika poruka u pravilnim vremenskim radobljima (npr. provjeriti svakih 30minuta da li ima poruka u spremniku). Višestruke provjere stanja spremnika (kao i samo slanje iprimanje poruka) ima svoju ekonomsku cijenu jer se svaki zahtjev i vraćena količina podataka uodgovoru se naplaćuje pa je izračun troškova usluge Amazon SQS opisan u idućempodpoglavlju.3.2. Ukupan trošak korištenja usluge Amazon SQSU ovome podpoglavlju cilj je napraviti usporedbu i dokazati bolju ekonomsku isplativostkorištenja usluge Amazon SQS (namjerno je odabrana riječ korištenje a ne riječ održavanje jerkorisnik ne mora održavati infrastrukturu usluge Amazon SQS) u odnosu na ulaganje u vlastitisustav za razmjenu poruka. Prednost ne ulaganja u vlastitu infrastrukturu je u kraćem vremenupromjene postavki korištenjem grafičkog sučelja za upravljanje uslugom Amazon SQS, bržiizlazak proizvoda na tržište i manje razvojnih inženjera za održavanje sustava poruka.Osnovna vodilja poslovanja sa uslugom Amazon SQS je „Plati samo ono što si potrošio“. Nepostoje nikakve dodatne naplate ili pretplate za održavanje sustava razmjene poruka. Cjenik jetransparentan te se stanje novčanog duga može provjeriti svaki trenutak koristeći sustav zapraćanje stanja računa (Account Activity) tvrtke Amazon. 36
  • Napomena: Cijene su izražene u američkim $ USD dolarima ovisno o regiji.Ukupna cijena korištenja usluge Amazon SQS sastoji se od dvije stavke:  O broju HTTP(s) zahtjeva upućenih uslugi Amazon SQS (0.000001 $ po jednom zahtjevu. To znači da je cijena 1 milijun zahtjeva 1.00 $).  Izlazni promet - količina prometa usluge Amazon SQS prema potrošačima i proizvođačima poruka. Naplaćuje se samo ako se promet odvija preko javne mreže Internet, a ako se odvija unutar mreže tvrtke Amazon (lokalni promet) onda se ne naplaćuje. Tablica 3.2: Cjenik izlaznog Internet prometa usluge Amazon SQS od 01.07.2011 [43] Izlazni promet Regija Promet Cijena Prvi GB/mjesečno je 0.000 $/GB EU (Irska)/US East (Virginia)/US West besplatan Do 10 TB/mjesečno 0.120 $/GB (North Carolina, Oregon) Idućih 40 TB/mjesečno 0.090 $/GB Idućih 100 TB/mjesečno 0.070 $/GB Idućih 350 TB/mjesečno 0.050 $/GB Idućih 524 TB/mjesečno Kontaktirati Amazon AWS. Idućih 4 PB/mjesečno Kontaktirati Amazon AWS. Više od 5 PB/mjesečno Kontaktirati Amazon AWS. Prvi GB/mjesečno je 0.000 $/GB besplatan Asia Pacific (Singapure) Do 10 TB/mjesečno 0.190 $/GB Idućih 40 TB/mjesečno 0.150 $/GB Idućih 100 TB/mjesečno 0.130 $/GB Idućih 350 TB/mjesečno 0.120 $/GB Idućih 524 TB/mjesečno Kontaktirati Amazon AWS. 37
  • Idućih 4 PB/mjesečno Kontaktirati Amazon AWS. Više od 5 PB/mjesečno Kontaktirati Amazon AWS. Prvi GB/mjesečno je 0.000 $/GB besplatan Do 10 TB/mjesečno 0.201 $/GB Asia Pacific (Tokyo) Idućih 40 TB/mjesečno 0.158 $/GB Idućih 100 TB/mjesečno 0.137 $/GB Idućih 350 TB/mjesečno 0.127 $/GB Idućih 524 TB/mjesečno Kontaktirati Amazon AWS. Idućih 4 PB/mjesečno Kontaktirati Amazon AWS. Više od 5 PB/mjesečno Kontaktirati Amazon AWS. Prvi GB/mjesečno je 0.000 $/GB besplatan Do 10 TB/mjesečno 0.250 $/GB South America (Sao Paulo) Idućih 40 TB/mjesečno 0.230 $/GB Idućih 100 TB/mjesečno 0.210 $/GB Idućih 350 TB/mjesečno 0.190 $/GB Idućih 524 TB/mjesečno Kontaktirati Amazon AWS. Idućih 4 PB/mjesečno Kontaktirati Amazon AWS. Više od 5 PB/mjesečno Kontaktirati Amazon AWS.Uvjeti naplate usluge Amazon SQS su vrlo jednostavni i transparentni za korisnika što znači daje troškove usluge vrlo jednostavno izračunati. Najrazumljiviji prikaz troškova je najboljeprikazati kroz primjer. Kao primjer odabran je projekt Livemocha [44] koji je pokrenut unutarinfrastrukture Amazon AWS-a sa upogonjenim Amazon EC2 [45] virtualnim instancama.Livemocha je mrežna stranica sa besplatnim tečajevima učenja stranih jezika i broji više od trimilijuna korisnika (1.5 milijuna posjeta dnevno) u svijetu. Osmišljena je kao interaktivna 38
  • zajednica koja okuplja ljude iz cijeloga svijeta koji međusobno uvježbavaju govor nekog stranogjezika sa školovanim profesionalcima. Da bi se pratila aktivnost svakog pojedinog korisnikaLivemocha bilježi svaku akciju koju korisnik izvrši. Temeljem ukupnog broja dnevnih posjetamrežnoj stranici može se pretpostaviti da Livemocha sustav pohranjuje 1.5 milijuna porukadnevno u spremnik poruka usluge Amazon SQS i isto tako prikuplja najmanje 1.5 milijunaporuka. To znači da sustav najmanje obrađuje više od tri milijuna poruka dnevno. Postoje dvanačina izračuna cijene: Sa uključenom cijenom izlaznog prometa i bez cijene izlaznog prometa.Izlazni promet se naplaćuje samo ako se uslugi Amazon SQS pristupa preko javne mrežeInternet. Ako se uslugi pristupa iz Amazon EC2 virtualne instance unutar mreže tvrtke Amazontada se izlazni promet smatra lokanim prometom i ne naplaćuje se. Napomena: Izračun cjenika temeljen je na cjeniku od 01.07.2011 godine za EU regiju. 1$USD dolar = 1 000 000 HTTP(s) zahtjeva [43]. 1. Bez cijene izlaznog prometa (lokalni promet) a) Ukupna mjesečna cijena = 3 000 000 HTTP(s) zahtjeva dnevno x 30 dana = 90 000 000 HTTP(s) zahtjeva mjesečno = 90 $ mjesečno. b) Ukupna godišnja cijena = 90 $ mjesečno * 12 mjeseci = 1080 $ godišnje. c) Ukupna petogodišnja cijena = 1080 $ godišnje * 5 godina = 5400 $ u pet godina. 2. Sa cijenom izlaznog Internet prometa (prosječna veličina jedne poruke 10 kb). a) Ukupna mjesečna cijena (192.99 $)  Cijena ovisna o broju zahtjeva = 3 000 000 HTTP(s) zahtjeva dnevno x 30 dana = 90 000 000 HTTP(s) zahtjeva mjesečno = 90 $ mjesečno.  Cijena ovisna o izlaznom prometu = 3 000 000 HTTP(s) zahtjeva dnevno * 30 dana* 0,0000095367431640625 Gb = 858.306 Gb mjesečno * 0.120 $ / Gb = 102.99 $ mjesečno. b) Ukupna godišnja cijena = 192.99 $ * 12 mjeseci = 2315,88 $ godišnje. c) Ukupna petogodišnja cijena = 2315,88 $ godišnje * 5 godina = 11579,4 $ u pet godina.Usporedba cijena pokazuje da je korištenje usluge Amazon SQS preko javne mreže Internet53.37% skuplje u odnosu na korištenje usluge Amazon SQS unutar mreže tvrtke Amazon.Temeljem tog saznanja može se zaključiti da je ekonomski dugoročno isplativije postavljati 39
  • vlastite usluge sa tendencijom rasta unutar oblačne infrastrukture nego im pristupati preko javnemreže Internet. Negativna strana naplaćivanja korištenja usluge Amazon SQS je u tome što jegotovo nemoguće znati cijenu trenutno potrošenih resursa kada se naplaćuje izlazni Internetpromet. Razlog tome je što se izlazni Internet promet naplaćuje ovisno o ukupnom mjesečnomprometu (Tablica 3.2). Na taj način korisnik mora unaprijed znati koliko će otprilike mjesečnoprometa trošiti. Zato je najbolje za izračun trenutne cijene koristiti najskuplju varijantu kao što jeprikazano u jednadžbi 4.1. ( )  CIJENAmax – najveća moguća cijena u danom trenutku.  n – broj HTTP(s) zahtjeva  A – cijena jednog HTTP(s) zahtjeva ($0.000001)  p – ukupna količina podataka (Gb) primljena u svim odgovorima od kada se prati potrošnja prometa. Ako se promet odvija unutar mreže Amazon-a tada je vrijednost parametra jednaka nuli.  cmax – maksimalna cijena prometa. Npr. za EU regiju iznosi 0.120 $/Gb. Cijene su prikazne u Tablica 3.2.  k – faktor pogreške koji proizvoljno određuje korisnik na temelju iskustva sa uslugom Amazon SQS; .Naravno, ova formula nije 100% precizna zbog nemogućnosti uvida klijenta u potrošnjupodatkovnog prometa sa aplikacijskog nivova, ali se može približno izračunati najveća trenutnacijena razmjene poruka po satu ili čak minuti. Primjenom ove formule sustav koji koristi usluguAmazon SQS ima mogućnost ograničiti potrošnju poruka nekom od klijenata u svojojprogramskoj podrški, poslati e-mail ili SMS alarm i time spriječiti financijsko prekoračenjesveukupnog proračuna. 40
  • 3.3. Usporedba troškova poslužitelja Oracle WebLogic i usluge Amazon SQSUsporedbom rezultata ukupnog poslovanja poslužitelja Oracle WebLogic (Slika 3.1) sa cjenikomusluge Amazon SQS dolazi se do zaključka da je usluga Amazon SQS ekonomski isplativijanego ulaganje u vlastiti sustav za razmjenu poruka. Grafički prikaz usporedbe cjenika vidljiv jena Slika 3.2. 3000000 $2.501.718,00 2500000 2000000 $1.711.851,00 1500000 Troškovi prve godine 1000000 $800.275,00 Troškovi pete godine $425.200,00 $11.580,00 $5.400,00 500000 $2.136,00 $1.080,00 0 Oracle IBM Amazon SQS Amazon SQS WebLogic WebSphere - sa izlaznim - unutar Internet Amazon prometom AWS mreže Slika 3.2: Usporedba cjenika Oracle WebLogic-IBM WebSphere-Amazon SQS sustava za razmjenu porukaUsporedba cjenika poslužitelja Oracle WebLogic sa rezultatima prema izrađenoj formuli 4.1 izpodpoglavlja 3.2 pokazuje da su troškovi usluge Amazon SQS koja se koristi unutar mrežeAmazon-a u odnosu na poslužitelj Oracle WebLogic u prvoj godini povoljniji za 99.75%, a u petgodina 99.94% povoljniji. Troškovi usluge Amazon SQS koja se koristi preko javne mrežeInternet u odnosu na poslužitelj Oracle WebLogic u prvoj godini povoljniji za 99.49%, a u petgodina povoljniji 99.32%. Razlika u troškovima je toliko velika da se troškovi usluge AmazonSQS gotovo mogu i zanemariti.Da bi se dobio osjećaj o kakvoj razlici u cijeni je riječ napravljeni su dodatni izračuni:  Koliko je potrebno napraviti HTTP(s) zahtjeva da se troškovi usluge Amazon SQS izjednače sa petogodišnjim troškovima održavanja pet poslužitelja WebLogic tvrtke Oracle? 41
  • Ukupan broj zahtjeva unutar mreže Amazon-a = 1 711 851 $ * 1 000 000 HTTP(s) zahtjeva = HTTP(s) zahtjeva.  Kolika je najveća količina podataka koja se može prenijeti u 1 711 851 T (tera) zahtjeva? Ukupna količina podataka = * 0.0000000596 (tera) T = 102026319600 T (terabyte) 99642842,54 P (petabyte) u pet godina. Napomena: Najveća dopuštena količina podataka jednog HTTP(s) zahtjeva je 64 kb (Tablica 3.1). Kada se pretvori u terabyte iznosi 0.0000000596 T.  Koliko godina se može koristiti usluga Amazon SQS (bez promjene cijene) da bi dostigla razinu troškova koju ima poslužitelj Oracle WebLogic u pet godina u petogodišnjem razdoblju?  Broj godina unutar Amazon AWS mreže = 1 711 851 $ / 1080 $ = 1585.04 godina.  Broj godina unutar mreže Internet = 1 711 851 $ / 2136 $ = 801.4 godina.Izračuni usporedbe pokazuju da voditelji i vlasnici informatičkih tvrtki koje imaju potrebu zaovakvim sustavima itekako moraju uzeti u obzir oblačni sustav za razmjenu poruka. Njezinajednostavnost se nameće kao ekonomski isplativije rješenje za manje i srednje tvrtke u svrhusigurnog i podesivog povezivanja heterogenih SOA sustava. Za promjenu postavki potrebno seposlužiti intuitivnom grafičkom Amazon AWS administracijskom konzolom. Njezina uporaba jejednostavna i besplatna. Dovoljno je da korisnik nižeg tehničkog znanja pročita Amazon SQSvodič za razvojne inženjere [36] u kojemu je objašnjeno značenje svakog parametra uslugeAmazon SQS te način na koji radi. Ukupno vrijeme za izmjenu postavki usluge Amazon SQSpreko službene Amazon AWS administracijske konzole na jednogodišnjoj razini može se svestina par minuta do par sati jer ima jednostavno sučelje koje ne zahtjeva posebna tehnička znanja.Npr. kod izračuna troška korištenja poslužitelja Oracle WebLogic uračunata je cijena ljudskograda u razdoblju od jedne godine (početni troškovi): početna instalacija poslužitelja (43 h),promjena postavki poslužitelja (396h) [41] za petogodišnje razdoblje po jednom administratoru.Ukupno vrijeme upravljanja jednog administratora postavkama poslužitelja Oracle WebLogic zapetogodišnje razdoblje iznosi 436h (mjesečno iznosi 7.26h za jednog administratora uz cijenu od9400 $ po satu rada!) što je daleko više od vremenske potrebe za korištenjem grafičke AmazonAWS administracijske konzole koja je prosječno iznosila po korisniku manje od 1 h mjesečno. 42
  • Zaključak o „vremenu za izmjenom postavki“ usluge Amazon SQS donešen je na temeljuvišemjesečnog korištenja posebno izrađenog grafičkog alata AWSAdminTool 1.0.1 ( [46], [47],Prilog 3.1) za promjenu postavki. Podatak da su korisnici uspjeli u prosječnom vremenu od 1hmjesečno zadovoljiti poslovne potrebe pomoću grafičkog alata AWSAdminTool 1.0.1 dobiven jeputem e-maila i razgovora preko usluge GoogleTalk sa dvadeset korisnika alata. Alat je bilopotrebno izraditi jer u razdoblju od 2006 godine – jesen 2011 godine tvrtka Amazon nijeomogućila promjenu postavki svojstava usluge Amazon SQS na jednostavan način. To je tjeralorazvojne inženjere da razvijaju polovična rješenja koja ne podržavaju funkcionalost svih SQSakcija. U razdoblju od 05.04.2011 – 13.11.2011 165 korisnika se poslužilo grafičkim alatomAWSAdminTool 1.0.1 [48]. Nijedna žalba na ideju i način korištenja nije zaprimljena, nego jepreporučena od strane korisničke službe tvrtke Amazon [49] kao stabilno, ali privremenorješenje. Na Slika 3.3 prikazano je grafičko sučelje alata koji podržava svih jedanaest akcija zaprovjeru i izmjenu postavki usluge Amazon SQS. 43
  • Slika 3.3: Grafički alat AWSAdminTool 1.0.1 za promjenu postavki usluge Amazon SQS 44
  • 4. IZRADA ALATA ZA MJERENJE RADNIH SVOJSTAVA USLUGE AMAZON SQS I REZULTATI MJERENJAPreporučeni način korištenja usluge Amazon SQS je da se HTTP(s) zahtjevi izvršavaju unutarmreže tvrtke Amazon. Glavni razlog takve preporuke je u tome što se izlazni HTTP(s) promet utom slučaju ne naplaćuje. Naravno, prednost u takvom načinu razmišljanja imaju one tvrtke (ilipojedinci) koje unaprijed osmišljavaju svoju programsku podršku i postavljaju je u računalnioblake. Što je sa onima koji već imaju nekakav postojeći sustav koji održavaju i žele gapovezivati s drugim heterogenim SOA sustavom, ali bez radikalnih promjena postojećeg sustavai postavljanja u računalni oblak? Jedini način je da se koristi javna mreža Internet za povezivanjeheterogenih SOA sustava. Slika 4.1 pokazuje primjer međusobno povezanih i geografskiudaljenih SOA sustava. Prednost takvog načina rada je u tome što vlasnici pojedinih sustava nemoraju ulagati u opremu za povezivanje sustava (npr. kablovi, routeri, dodatna napajanja) negoiskorištavaju postojeće resurse Interneta. Promjene koje bi bilo potrebno napraviti na postojećimsustavima ne bi trebale biti tolike da uzrokuju neopravdane troškove. Negativna strana takvognačina rada je da komunikacija ovisi o kvaliteti Internet veze između pojedinih sustava (ovisno otelekomunikacijskom tvrtkama svake države) i mora se plaćati izlazni promet za svaki HTTP(s)zahtjev. Slika 4.1: Primjer međusobno povezanih heterogenih SOA sustava 45
  • Do sada nije objavljeno javno istraživanje mjerenja radnih svojstava nekog sustava sa uslugomAmazon SQS preko javne mreže Internet. Da bi se izmjerila ukupna količina izmjenjenih porukaizmeđu heterogenih SOA sustava u jedinici vremena izrađen je programski alat za tu namjenu.Za vrijeme izrade alata postavila su se slijedeća pitanja: 1. Koliko poruka jedna nit potrošača može primiti kućnom Internet vezom? 2. Koliko poruka jedna nit proizvođača može poslati kućnom Internet vezom? 3. Koliko je prosječno kašnjenje (latency) proizvođač – usluga Amazon SQS, odnosno potrošač – usluga Amazon SQS ?Test koji je izvršen sa osobnim računalom preko kućne Internet veze (Tablica 4.1) je pokazao daprosječno osobno računalo može slati/primati nekoliko stotina poruka u minuti.4.1. Postavke parametara alata za mjerenje radnih svojstava usluge Amazon SQSKao radni okoliš korišteno je standardno komercijalno kućno računalo sa javnim Internetpriključkom. Postavke radnog okoliša prikazane su u Tablica 4.1. Tablica 4.1: Popis računalnih komponenti korištenih za testiranje radnih svojstava usluge Amazon SQS Komponente Opis 64 bitni procesor: Intel 2.1 GHz Core Duo Memorija: 4 GB DDR3 (1033 MHz) Mrežna kartica: 1 Gb LAN Internet poslužitelj u vlasništvu VipNet d.o.o tvrtke; ugovorena propusnost: 8192/768 kbps Razvojno okružje: Oracle Java 1.6.29 (64 bitna verzija) 46
  • Operativni sustav: Windows 7 (64 bitna verzija)Postavke parametara alata postavljene su u datoteci koju korisnik alata mijenja po potrebi uASCII uredniku. Sve postavke prikazane su u Tablica 4.2, a programski alat je dostupan uPrilogu 4.1. Tablica 4.2: Postavke parametara alata za mjerenje radnih svostava usluge Amazon SQS Parametar Opis parametra aws.sqs.endpoint Amazon AWS regija gdje se spremnik poruka nalazi. Postavka za vrijeme testa: https://sqs.eu-west- 1.amazonaws.com aws.test.duration Trajanje testa u milisekundama. Postavka za vrijeme testa: 60000 aws.clientConfiguration.proxyHost Lokacija proxy poslužitelja. Postavka za vrijeme testa: 192.168.0.10 aws.clientConfiguration.proxyPort Port proxy poslužitelja. Postavka za vrijeme testa: 808 aws.clientConfiguration.proxyPassword Lozinka za proxy server. Parametar nije korišten. aws.clientConfiguration.proxyUsername Ime korisnika za proxy server. Parametar nije korišten. aws.clientConfiguration.proxyDomain Domena proxy servera. Parametar nije korišten. aws.clientConfiguration.maxConnections Najveća dopuštena količina otvorenih HTTP(s) veza sa uslugom Amazon SQS. Postavka za vrijeme testa: 100 aws.clientConfiguration.maxErrorRetry Najveći dopušteni broj ponavljanja neuspjelih 47
  • HTTP(s) zahtjeva. Postavka za vrijeme testa: 10aws.clientConfiguration.connectionTimeout Najveće dopušteno vrijeme čekanja na odgovor usluge Amazon SQS u milisekundama. Postavka za vrijeme testa: 5000aws.clientConfiguration.protocol Tip protokola. Postavka za vrijeme testa: HTTPSaws.clientConfiguration.socketTimeout Najveće vrijeme čekanja za prijenos podataka nakon što je veza uspostavljena u milisekundama. Postavka za vrijeme testa: 5000aws.clientConfiguration.userAgent Ime agenta. Parametar nije korišten.aws.credentials.accessKeyId Pristupni Amazon AWS ključ. Postavka za vrijeme testa: <20 tajnih znakova>aws.credentials.secretKey Tajni Amazon AWS ključ. Postavka za vrijeme testa: <40 tajnih znakova>aws.credentials.sessionToken Amazon IAM ključ za korisnike treće strane. Parametar nije korišten.aws.sqs.consumer.queueUrl Lokacija imenika poruka potrošača. Postavka za vrijeme testa: https://eu-west- 1.queue.amazonaws.com/207121356507/Testaws.sqs.consumer.threadCount Broj Java niti potrošača. Postavka za vrijeme testa: 20aws.sqs.producer.queueUrl Postavka za vrijeme testa: https://eu-west- 1.queue.amazonaws.com/207121356507/Testaws.sqs.producer.threadCount Broj Java niti proizvođača. Postavka za vrijeme testa: 20 48
  • aws.sqs.producer.minMessageSizeFactor Najmanji faktor veličine poruke. Postavka za vrijeme testa: 1 aws.sqs.producer.maxMessageSizeFactor Najveći faktor veličine poruke. Postavka za vrijeme testa: 10 aws.sqs.producer.messageBody Tijelo poruke. Postavka za vrijeme testa: poruka veličine 1024 byteNakon što je korisnik završio sa postavkama alata unutar datoteke test-settings.propertiessimulacija je spremna za izvršenje korištenjem konzole (command prompt) operativnog sustava. java -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog -cp aws-sqs-testtool-1.0.0.jar com.amazonaws.services.sqs.loadtest.ExecuteTest -p "C:Documents and Settingshr1ur0c4IdeaProjectsAmazonSQSTestToolsrcmainresourcestest- settings.properties" Slika 4.2: Simulacija proizvođača (izvršena sa parametrom -p) java -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog -cp aws-sqs-testtool-1.0.0.jar com.amazonaws.services.sqs.loadtest.ExecuteTest -c "C:Documents and Settingshr1ur0c4IdeaProjectsAmazonSQSTestToolsrcmainresourcestest- settings.properties" Slika 4.3: Simulacija potrošača (izvršena sa parametrom -c)Ovaj alat može se koristiti na bilo kojem operativnom sustavu koji mora imati instaliranu Javu1.5 ili veću verziju, ASCII tekst urednik i neobaveznu Internet vezu. Ako Internet veza ne postojionda se alat može samo koristiti unutar mreže tvrtke Amazon.4.2. Rezultati mjerenjaOpis testa navodi dodatne detalje da se pokaže kako je test izvršen. Simulacija se pokretala dvaputa: jednom za proizvođača i jednom za potrošača. Nakon završetka simulacije rezultati su seupisali u rezultatsku datoteku.1. Alat pokreće na 1 minutu 20 proizvođača poruka (20 Java niti).2. Alat pokreće na 1 minutu 20 potrošača poruka (20 Java niti). 49
  • 3. Svi HTTPS zahtjevi potrošača i proizvođača su bili sinkroni što na same rezultate utječe kašnjenje Internet veze.4. Svi HTTPS zahtjevi su izvršeni prema EU (Irska) podatkovnom centru (https://eu-west- 1.queue.amazonaws.com).5. Testna poruka izmjenjive veličine 1024 byte - 10240 byte se koristila za slanje.6. VisibilityTimeout parametar spremnika poruka je bio postavljen na 1 sekundu tako da potrošači mogu brže prikupiti poruke.7. Izvršeno je nekoliko desetaka mjerenja što je rezultiralo slanjem i primanjem nekoliko stotina tisuća poruka. Kao tablični rezultat biti će prikazano zadnjih deset rezultata mjerenja - Tablica 4.3.8. Cijena testiranja usluge Amazon SQS je bila ~0.50 $. Napomena 1: Jedan HTTP(s) odgovor usluge Amazon SQS potrošaču može najvišesadržavati deset poruka. To je ograničenje usluge Amazon SQS na koju razvojni inženjer nemautjecaja. Napomena 2: Rezultate mjerenja ne treba strogo shvatiti nego kvalitativno zbognepredvidljivosti kašnjenja (latency) IP paketa javne mreže Internet. Svrha rezultata je da čitaocupredoče koliko poruka je moguće obraditi u nekom vremenskom razdoblju bez posebneračunalne opreme. Tablica 4.3: Rezultati mjerenja radnih svojstava usluge Amazon SQS Rezultati mjerenja Redni broj Potrošači Proizvođači 20 niti: 9680 poruka/1 minuta 20 niti: 2012/1 minuta 1 1 nit: 484 poruke/1 minuta 1 nit: 101 poruka/1 minuta 20 niti: 9480 poruka/1 minuta 20 niti: 1965/1 minuta 2 1 nit: 474 poruke/1 minuta 1 nit: 98 poruka/1 minuta 20 niti: 8257 poruka/1 minuta 20 niti: 1822/1 minuta 3 1 nit: 413 poruke/1 minuta 1 nit: 91 poruka/1 minuta 20 niti: 8479 poruka/1 minuta 20 niti: 1365/1 minuta 4 1 nit: 424 poruke/1 minuta 1 nit: 68 poruka/1 minuta 5 20 niti: 9301 poruka/1 minuta 20 niti: 1731/1 minuta 50
  • 1 nit: 465 poruke/1 minuta 1 nit: 86 poruka/1 minuta 20 niti: 7211 poruka/1 minuta 20 niti: 1821/1 minuta 6 1 nit: 361 poruke/1 minuta 1 nit: 91 poruka/1 minuta 20 niti: 7671 poruka/1 minuta 20 niti: 1810/1 minuta 7 1 nit: 384 poruke/1 minuta 1 nit: 91 poruka/1 minuta 20 niti: 8411 poruka/1 minuta 20 niti: 1655/1 minuta 8 1 nit: 421 poruke/1 minuta 1 nit: 83 poruka/1 minuta 20 niti: 9111 poruka/1 minuta 20 niti: 1978/1 minuta 9 1 nit: 456 poruke/1 minuta 1 nit: 99 poruka/1 minuta 20 niti: 9021 poruka/1 minuta 20 niti: 1924/1 minuta 10 1 nit: 451 poruke/1 minuta 1 nit: 96 poruka/1 minuta Izračun prosječnog broja poruka obrađenih u jednoj minuti Nit / minuta Potrošači Proizvođači Prosječan broj poruka obrađenih u jednoj 433 poruke/1 minuta 90 poruka/1 minuta minuti po jednoj niti Prosječan broj poruka obrađenih u jednoj 8660 poruka/1 minuta 1800 poruka/1 minuta minuti za svih dvadeset niti Najmanje i najveće kašnjenje poruke izmjerene mrežnim alatom Wireshark (Potrošač – usluga Amazon SQS; Proizvođač – usluga Amazon SQS) 500 ms - 2000 msSlika 4.4 prikazuje zadnjih deset rezultata mjerenja potrošača izvršenih u jednoj niti uvremenskom intervalu od jedne minute. Na osi X nalaze se redni brojevi mjerenja, a na osi Ybroj poruka. 51
  • Potrošač poruka Potrošač poruka 600 500 484 474 465 456 451 413 424 421 400 384 361 300 200 100 0 1 2 3 4 5 6 7 8 9 10 Slika 4.4: Prikaz prikupljanja poruka u deset mjernih intervalaSlika 4.5 prikazuje zadnjih deset rezultata mjerenja proizvođača izvršenih u jednoj niti uvremenskom intervalu od jedne minute. Na osi X nalaze se redni brojevi mjerenja, a na osi Ybroj poruka. Proizvođač poruka Proizvođač poruka 120 100 101 98 99 96 91 91 91 86 83 80 68 60 40 20 0 1 2 3 4 5 6 7 8 9 10 Slika 4.5: Prikaz slanja poruka u deset mjernih intervala 52
  • Ukupni mjerni rezultat pokazuje da se usluga Amazon SQS može koristiti za bilo koje naprave(računala i mobilni uređaji) sa dostupnom Internet vezom jer nije potrebno imati snažne i skupeposlužitelje za razmjenu većeg broja poruka u kratkom vremenskom razdoblju. Naravno, sve toovisi o tehničkim potrebama i ekonomskim mogućnostima vlasnika programske podrške, alisigurno se može računati na ovakvu opciju zbog ekonomske priuštivosti i jednostavnostikorištenja programskog sučelja usluge Amazon SQS. 53
  • 5. IZRADA I NAČIN KORIŠTENJA MREŽNOG PROGRAMSKOG SUČELJA USLUGE AMAZON SQS ZA TANKE KLIJENTESvrha mrežnog programskog sučelja za upravljanje uslugom Amazon SQS je da razvojniminženjerima pojednostavi povezivanje udaljenih računalnih sustava i omogući nadgledanjeusluge. Potrebne su dvije vrste sučelja za cjelovito upravljanje uslugom Amazon SQS:programsko mrežno sučelje (Prilog 5.1) i grafičko korisničko sučelje. Programsko mrežnosučelje je isključivo namjenjeno razvojnim inženjerima dok je grafičko korisničko sučeljenamjenjeno razvojnim inženjerima, testerima, projektnim menadžerima i administratorimasustava.Usluga Amazon SQS službeno nudi programsko mrežno sučelje izrađeno u Javi (za kućnaračunala i Android OS), .NET C#, Objective C za iOS i PHP. Postoji i doprinos zajedniceotvorenog koda sa dodatnom neslužbenom programskom podrškom: C++, Ruby, Python i Perl.Grafičko korisničko sučelje usluge Amazon SQS sastavni je dio Amazon AWS administracijskekonzole. Omogućava korisnicima besplatno i jednostavno sučelje za promjenu postavki u bilokoje doba dana iz bilo kojeg mjesta na svijetu. Dovoljna je samo Internet veza i AWS račun dase korisnik posluži funkcijama konzole.Slika 5.1 prikazuje općeniti način na koji bi se trebala odvijati komunikacija između udaljenihračunalnih sustava (kućno računalo, pametni mobilni uređaji, dlanovnici) i njihova prilagodbapomoću grafičkog sučelja. 54
  • Slika 5.1: Grafičko i programsko sučelje za upravljanje uslugom Amazon SQSOpis moguće uporabe sustava u stvarnom životu: 1. Slučaj #1  1 i 2 – liječnik ili liječnički tim u bolnici je obavio pregled pacijenta ozlijeđenog na radu i zaključio da mu treba propisati lijek, bolovanje, rehabilitaciju i pregled svakih mjesec dana. Liječnik upisuje potrebne mjere na računalo (ili pametni telefon) i šalje parametre na unutarnji poslužitelj sustava za javno zdravstvo. Poslužitelj (proizvođač poruka) pohranjuje te podatke na svoj sustav i prosljeđuje ih u Amazon SQS imenik poruka HZZO_HR OZLJEDA_NA_RADU (Hrvatski zavod za zdravstveno osiguranje). o 4 i 5 – svakih sat vremena sustav Hrvatskog zavoda za zdravstveno osiguranje (potrošač poruka) provjerava imenik poruka, prikuplja poruke ako ih ima, obrađuje ih, te ih na kraju obriše iz imenika poruka. o 6 – tehnička osoba nadgleda proizvodnju i potrošnju poruka. 2. Slučaj #2  Građanin Republike Hrvatske popunjava dobrovoljni upitnik i šalje podatke u imenik poruka HZZO_HR_UPITNIK. Svakih 12 sati vremena sustav Hrvatskog zavoda za zdravstveno osiguranje (potrošač poruka) provjerava imenik poruka, prikuplja poruke ako ih ima, obrađuje ih, te ih na kraju obriše iz imenika spremnika. 55
  • Za brz i jednostavan razvoj klijentske programske podrške odabrana je tehnologija Adobe RIA(Flash Runtime i AIR Runtime). Programski objektno orijentirani jezik u kojemu je izrađenomrežno programsko sučelje naziva se Actionscript 3.0 [50].Tehnologija Adobe RIA je odabrana iz slijedećeg razloga: 1. Prenosivost – može raditi na više različitih operativnih i računalnih sustava. 2. Sigurnost – Symantecov globalni izvještaj o Internet prijetnjama iz 2009 godine pokazuje da je Adobe Flash Player među najsigurnijim Internet tehnologijama (Slika 5.2). Slika 5.2: Sigurnost Adobe Flash Playera (2007 / 2008 godina) [51] 3. Globalna rasprostranjenost na kućnim računalima – oko 99% posto svjetskih računala ima instaliran Adobe Flash Player na osobnom računalu (Slika 5.3). 56
  • Slika 5.3: Globalna rasprostranjenost Adobe Flash Player na kućnim računalima [52]4. Globalna rasprostranjenost na mobilnim uređajima – krajem 2010 godine, preko 35 modela pametnih telefona je bilo certificirano za Adobe Flash Player, i preko 20 milijuna korisnika pametnih telefona je instaliralo Flash Player. Preko 84 milijuna pametnih telefona i dlanovnika (Android, BlackBerry Tablet OS i iOS) koriste aplikacije izrađene za Adobe AIR. Predviđanja za 2011 godinu (Slika 5.4) govore da će preko 40 modela pametnih telefona podržavati Flash Player što će činiti oko 36% svjetske cjelokupne količine pametnih telefona. Isto tako predviđa se da će oko 200 milijuna pametnih telefona i dlanovnika podržavati aplikacije izrađene za Adobe AIR. 57
  • Slika 5.4: Globalna rasprostranjenost Flash Playera na pametnim telefonima [53] 5. Zajednica razvojnih inženjera – trenutno na razvoju Adobe AIR i Flash Player aplikacija radi 3 milijuna razvojnih inženjera. 6. Sličnost Actionscript 3.0 programskom jeziku Java – razvojni inženjer koji radi (ili je radio) u Javi vrlo lako će se prilagoditi programskom jeziku Actionscript 3.0. To isto vrijedi i za .NET C# – razvojne inženjere. 7. Digitalna certifikacija Adobe desktop AIR aplikacija – da bi se izradila instalacija za aplikaciju upogonjenu sa Adobe AIR Runtime obavezno se mora certificirati pomoću PKCS12 standarda. Time se potvrđuje nepromjenjenost instalacijskog paketa od neke treće strane (npr. virusa).Mrežno programsko sučelje izrađeno u objektno-orijentiranom programskom jeziku Actionscript3.0 je programska zbirka koja se može dijeliti između zajednice razvojnih inženjera. Za tu svrhuizrađena je programska zbirka as3awsSDK.swc [54] koja se može koristiti na više operativnihsustava i računalnih uređaja: Windows OS, Linux OS, Mac OS, Android OS, iOS i BlackBerryOS. Da bi se zbirka uspješno koristila potrebno je imati instaliran Adobe AIR Runtime (ako sezbirka koristila za razvoj Adobe AIR aplikacija) ili Adobe Flash Player Runtime (ako se zbirkakoristila za razvoj Adobe mrežnih aplikacija koja se pokreću pomoću Internet preglednika).Programska zbirka je izrađena pomoću Adobe Flash Builder 4.5 Premium IDE razvojnog alata i 58
  • Adobe Flex 4.5.1 prevodioca. Vrijeme razvoja prve verzije zbirke je trajalo četiri mjeseca(01.12.2010 - 21.03.2011), ali postupak njezine nadopune traje i dan danas zbog neprestanihnadogradnji programskog sučelja Amazon SQS API od tvrtke Amazon. Do 01.02.2012registrirano je 164 korisnika koji koriste ovu zbirku. Napomena: Ako se zbirka koristila za razvoj mrežne aplikacije koja se pokreće prekoInternet preglednika tada se ne može pokrenuti na iPhonu i iPadu zbog zabrane pokretanja Flashaplikacija na Apple uređajima.Višemjesečni put razvoja programske zbirke sastojao se od: 1. Pretraga najvažnijih svjetskih sustava za verzioniranja datoteka u svrhu pronalaska postojanja programskog sučelja Amazon SQS izrađenog u Adobe Flex tehnologiji. Pretraženi su GitHub, Bitbucket, Apache i Google Code kao najveći davatelji potpore zajednici otvorenog koda i nijedno slično rješenje do sada nije pronađeno. 2. Proučavanje vodiča za razvojne inženjere (Amazon Simple Queue Service Developer Guide) [36]. Sadrži opis arhitekture i pravilnog izvršavanja HTTP(s) zahtjeva prema uslugi Amazon SQS. 3. Proučavanje programskog sučelja Amazon SQS API (Amazon Simple Queue Service API Reference) [29]. Sadrži popis svih jedanaest SQS API akcija dostupnih korisniku. 4. Slanje tehničkih upita forumu za uslugu Amazon SQS i razmjena informacija sa Amazon zaposlenicima zaduženim za tehničku podršku korisnicima. 5. Proučavanje Adobe AIR i Flash Player tehnologije i njene budućnosti u svijetu informatičke tehnologije. 6. Proučavanje objektno orijentiranog programskog jezika Actionscript 3.0 [55]. 7. Proučavanje programskog dodatka ASDoc [56] za Adobe Flex 4.5 prevodioca koji je služio za izradu dokumentacije programske zbirke. Dokumentacija je namijenjena zajednici otvorenog koda u kojoj je opisano kako se služiti Amazon SQS akcijama. 8. Izrada računa na Bitbucket sustavu za verzioniranje datoteka. Na tome mjestu nalazi se izvorni kod mrežnog programskog sučelja, uputstva i popis grešaka koje su se ispravljale tokom razvoja programske zbirke. 9. Proučavanje GNU General Public License ugovora. Ugovor je proučavan zato što je programsko sučelje prijavljeno i izdano radi upoznavanja programske zajednice s njihovim pravima korištenja zbirke. 59
  • 10. Proučavanje FlexUnit testova radi provjere funkcionalnosti mrežnog programsko sučelja [57]. 11. Kada je završio razvoj programske zbirke upućen je zahtjev tvrtki Amazon da uvrsti zbirku na listu neslužbeno podržanih biblioteka. Zbirka je uvrštena u listu neslužbenih zbirki 03.05.2011. 12. Proučavanje grafičkog programskog sučelja za praćanje mrežnog IP prometa Wireshark. Korišten je u svrhu provjere ispravnosti HTTP(s) formata Amazon SQS zahtjeva/odgovora i nadgledanja kašnjenja komunikacije [58].5.1. Arhitektura programskog sučelja tankog klijentaPojednostavljeni grafički prikaz arhitekture programskog sučelja izrađenog u Actionscript 3.0objektno orijentiranom programskom jeziku prikazan je na Slika 5.5. Slika 5.5: Skup modela programskog sučelja Amazon SQSSastoji se od dvije osnovne komponente: klijenta i modela. Amazon SQS klijent upućuje zahtjevpreko jednog od modela (ovisno koju akciju je potrebno izvršiti) i prosljeđuje zahtjev Internet 60
  • vezom uslugi Amazon SQS. Nakon ~100 ms do ~250 ms odgovor stiže do klijenta uprilagođenom obliku od strane modela. Napomena: Komunikacija između Amazon SQS klijenta i usluge Amazon SQS se uvijekodvija asinkrono. Brzina odziva odgovora usluge Amazon SQS ovisi o kašnjenju Internet veze.Da bi se zahtjev izvršio prema uslugi Amazon SQS i uhvatio njezin odgovor (pozitivan ilinegativan) potrebno je koristiti programsko sučelje na slijedeći način: 1. Postaviti Amazon javni i privatni ključ (AWSCredentials) radi provjere valjanosti i odobrenja korisnika. 2. Postaviti ime računalnog centra prema kojemu se zahtjev treba izvršiti (endpoint lista - Tablica 2.1). 3. Postaviti tip protokola (HTTP ili HTTPS). Ako se ne postavi onda će Amazon SQS klijent automatski koristiti HTTPS što je i preporučeno ako se komunikacija odvija javnom Internet mrežom. 4. Postaviti vrijeme trajanja zahtjeva (signatureExpires) radi povećanja nivoa sigurnosti. Služi tome da spriječi ponovno slanje jednog te istog zahtjeva od neke treće strane. Ako se ne postavi vrijeme trajanja usluga Amazon SQS može dozvoliti ponavljanje jednog te istog zahtjeva u prvih ~15 minuta koje je proteklo od prvog zahtjeva. Prepuruča se postaviti vrijeme trajanja SQS zahtjeva na što nižu vrijednost, npr. ~30 sekundi. 5. Postaviti korisničkog agenta (userAgent) u zaglavlje HTTP(s) zahtjeva. Služi kao identifikator porijekla zahtjeva jer postoji mogućnost u postavkama usluge Amazon SQS postaviti kojim akcijama i tipovima aplikacija se dozvoljava pristup spremnicima poruka. Npr. ako postoje dvije tvrtke koje pristupaju spremniku A; tvrtka 1 smije izvršiti sve akcije dok tvrtka 2 samo neke tada se može zahtjevati od tvrtka da u svom HTTP(s) zaglavlju šalju tajni naziv korisničkog agenta koje će biti poznato samo onoj osobi koja mijenja postavke usluge Amazon SQS i primjeniti ta pravila na sustav. Napomena: userAgent parametar se samo može koristiti kod Adobe AIR aplikacija. Ako jeaplikacija razvijena kao Adobe Flash Player tada je potrebno userAgent postaviti u postavkamaInternet preglednika. 61
  • U idućim podpoglavljima opisane su sve moguće Amazon SQS akcije (verzija 2009-02-01) sapravilnim načinom uporabe. Sve akcije i odgovori opisani su na temelju višemjesečne prakserada koji su prikupljeni izradom klijentske zbirke as3awsSDK.swc.5.2. Izrada imenika porukaImenik poruka je spremnik poruka koje se čuvaju od strane usluge Amazon SQS određenovrijeme ili dok se ne obrišu od klijenta (potrošača). Imenik poruka se izrađuje izvršavanjemakcije CreateQueue. Da bi se uspješno izvršila akcija CreateQueue potrebno je obaveznopostaviti ime spremnika (QueueName - najviše 80 alfanumeričkih znakova, dozvoljeni su - i _)i neobavezno vrijeme nevidljivosti poruka DefaultVisibilityTimeout. 1. U slučaju da se izvršti CreateQueue sa već postojećim imenom imenikom spremnika neće doći do greške. U odgovoru zahtjeva će biti poveznica UR na postojeći spremnik. 2. U slučaju da se izvrši CreateQueue sa već postojećim imenom spremnika i drugačijom vrijednošću parametra DefaultVisibilityTimeout od postojećeg tada će doći do greške u odgovoru zahtjeva. Tablica 5.1: CreateQueue parametri zahtjeva Ime parametra Opis ObaveznoQueueName Ime spremnika koje treba biti izrađeno. DA Tip podatka: String Ograničenje: najviše 80 alfanumeričkih znakova, dozvoljeni su - i _DefaultVisibilityTimeout Vrijeme nevidljivosti poruka unutar spremnika. NE Tip podatka: Integer Početna vrijednost: 30 sekundi Tablica 5.2: CreateQueue parametri odgovora Ime parametra Opis Obavezno QueueUrl URL put do imenika poruka koji je izrađen. DA Tip podatka: String 62
  • /** Zahtjev za izradu spremnika poruka TestQueue. */public function createQueue(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS ključ"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.endpoint = "sqs.eu-west-1.amazonaws.com"; clientConfig.protocol = ProtocolEnum.HTTPS; clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials, clientConfig); var request:CreateQueueRequest = new CreateQueueRequest(); request.setQueueName("TestQueue"); // obavezni parameter request.setDefaultVisibilityTimeout(uint(30)); // neobavezni parameter client.createQueue(request, resultHandler, faultHandler); // izvršavanje SQS zahtjeva}/** Asinkroni pozitivni odogovor. */private function resultHandler(event: CompleteActionEvent): void { var result: CreateQueueResult = event.result as CreateQueueResult; var queueUrl: String = result.getQueueUrl(); // URL put do imenika poruka var requestId: String = result.getRequestId(); // requestId}/** Asinkroni negativni odogovor.*/private function faultHandler(event: IOErrorActionEvent): void { var result: AmazonWebServiceErrorResult = event.result as AmazonWebServiceErrorResult; var type: String = result.getType(); var code: String = result.getCode(); var message: String = result.getMessage(); var detail: String = result.getDetail();} Izvorni kod tankog klijenta 5.1: Primjer korištenja akcije CreateQueueU primjeru prikazanom na Izvorni kod tankog klijenta 5.1 primjećuje se da je vrlo jednostavnokoristiti programsko sučelje za izvršavanje akcije CreateQueue. Nema previše linija koda štopovećava samu čitljivost i lako ga je mijenjati po potrebi. 63
  • Tablica 5.3: Primjer CreateQueue zahtjeva i odgovora koristeći sučelje Wireshark za praćenje mrežnog prometa Zaglavlje HTTP zahtjeva POST http://sqs.eu-west-1.amazonaws.com/ HTTP/1.1 Referer: app:/AWSAdminTool.swf Accept: text/xml x-flash-version: 10,2,153,1 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Content-Length: 273 Accept-Encoding: gzip,deflate User-Agent: as3awsSDK/Windows 7 Host: sqs.eu-west-1.amazonaws.com Proxy-Connection: Keep-Alive Pragma: no-cache Tijelo HTTP zahtjeva Timestamp=2011%2D06%2D25T12%3A28%3A25%2E000Z&QueueName=TestQueu e&AWSAccessKeyId=QKIBJ4U7FUK2P40ECPOA&Action=CreateQueue&Signatur eMethod=HmacSHA256&Version=2009%2D02%2D01&SignatureVersion=2&Signatu re=PUDKTJWXybPLyDHTT5meO0vXflS3v2HNQVWvE0d6SVI%3D&DefaultVisibil ityTimeout=30HTTP/1.1 200 OK Odgovor HTTP zahtjeva <?xml version="1.0"?> <CreateQueueResponse xmlns="http://queue.amazonaws.com/doc/2009-02-01/"> <CreateQueueResult> <QueueUrl>http://sqs.eu-west- 1.amazonaws.com/207121356507/TestQueue</QueueUrl> </CreateQueueResult> <ResponseMetadata> <RequestId>9b6d88ef-14bb-4618-8b8d-abe724cdf0b8</RequestId> </ResponseMetadata> </CreateQueueResponse>Sve ostale akcije koje slijede u idućim podpoglavljima izvršavaju se na sličan način što vrlo brzopovećava krivulju učenja (steep learning curve) kod razvojnog inženjera. 64
  • 5.3. Brisanje imenika porukaAkcija DeleteQueue briše imenik poruka bez obzira da li je pun ili prazan. Dovoljno je samopostaviti ime spremnika koji treba izbrisati. Napomena: Nakon uspješnog izvršenja akcije brisanja spremnika poruka potrebno jepričekati ~60 sekundi da usluga Amazon SQS obriše spremnik. Tablica 5.4: DeleteQueue parametri zahtjeva Ime parametra Opis Obavezno QueueURL URL put do spremnika koji treba biti obrisan. DA Tip podatka: StringDeleteQueue parametri odgovora nisu prikazani jer usluga vraća samo standardni requestIdparametar.RequestId primjer: <RequestId>9b6d88ef-14bb-4618-8b8d-abe724cdf0b8</RequestId> 65
  • /** Zahtjev za brisanje imenika poruka TestQueue*/public function deleteQueue(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS ključ"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.protocol = ProtocolEnum.HTTPS; clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials, clientConfig); var request:DeleteQueueRequest = new DeleteQueueRequest(); // 123456789012 – korisnikov broj AWS računa (neobavezan parametar) request.setQueueUrl("https://sqs.eu-west-1.amazonaws.com/123456789012/TestQueue"); //request.setQueueUrl("https://sqs.eu-west-1.amazonaws.com/TestQueue"); client.deleteQueue(request, resultHandler, faultHandler);}/** Asinkroni pozitivni odgovor * /private function resultHandler(event: CompleteActionEvent): void { var result: DeleteQueueResult = event.result as DeleteQueueResult; var requestId: String = result.getRequestId();}/** Asinkroni negativni odgovor */private function faultHandler(event: IOErrorActionEvent): void { var result: AmazonWebServiceErrorResult = event.result as AmazonWebServiceErrorResult; var type: String = result.getType(); var code: String = result.getCode(); var message: String = result.getMessage(); var detail: String = result.getDetail();} Izvorni kod tankog klijenta 5.2: Primjer korištenja akcije DeleteQueue 66
  • 5.4. Lista svih dostupnih imenika porukaAkcija ListQueues vraća listu svih dostupnih imenika spremnika unutar određenog računalnogcentra (regije). Najveća dopuštena veličina liste imenika spremnika koja može biti vraćena uodgovoru je 1000. Tablica 5.5: ListQueues parametri zahtjeva Ime parametra Opis Obavezno QueueNamePrefix Početni naziv imenika poruka koje se želi NE pretražiti. Npr. ako se unese naziv „Test“ tada će usluga Amazon SQS pretražiti da li postoje imenici za prefiksom „Test*“. Ako parametar nije poslan tada će akcija vratiti SVE dostupne nazive imenike spremnika kao URL poveznice. Tip podatka: String Ograničenje: najviše 80 alfanumeričkih znakova, dozvoljeni su - i _ Tablica 5.6: ListQueues parametri odgovora Ime parametra Opis Obavezno QueueUrl URL put to imenika poruka koji je izrađen. NE Odgovor može sadržavati do 1000 URL imenika. Tip podatka: String 67
  • /** Zahtjev za pretragu svih imenika poruka koji počinju s početnim slovom T */public function listQueues(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS kljuć"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.endpoint = "sqs.eu-west-1.amazonaws.com"; clientConfig.protocol = ProtocolEnum.HTTPS; clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials, clientConfig); var request:ListQueuesRequest = new ListQueuesRequest(); request.setQueueNamePrefix("T"); // ptretraga svih imenika poruka koji počinju sa početnim slovom T client.listQueues(request, resultHandler, faultHandler);}/** Asinkroni pozitivni odgovor. */private function resultHandler(event: CompleteActionEvent): void { var result: ListQueuesResult = event.result as ListQueuesResult; var queueUrlList: ArrayCollection = result.getQueueUrls(); // lista imena spremnika poruka var requestId: String = result.getRequestId();}/** Asinkroni negativni odgovor. */private function faultHandler(event: IOErrorActionEvent): void { var result: AmazonWebServiceErrorResult = event.result as AmazonWebServiceErrorResult; var type: String = result.getType(); var code: String = result.getCode(); var message: String = result.getMessage(); var detail: String = result.getDetail();} Izvorni kod tankog klijenta 5.3: Primjer korištenja akcije ListQueues <ListQueuesResponse xmlns="http://queue.amazonaws.com/doc/2009-02-01/"> <ListQueuesResult> <QueueUrl>https://sqs.eu-west-1.amazonaws.com/207121356507/Test</QueueUrl> </ListQueuesResult> <ResponseMetadata> <RequestId>3e77b966-5eb6-4e49-9b5e-bcb088a8a0f0</RequestId> </ResponseMetadata> </ListQueuesResponse> Slika 5.6: Primjer ListQueues parametara odgovora 68
  • Imenik poruka = sqs.eu-west-1.amazonaws.com (regija) / 207121356507 (broj korisničkogAWS računa; slično kao OIB broj) / Test (ime spremnika poruka)5.5. Pregled postavki imenika porukaAkcija GetQueueAttributes vraća postavke imenika poruka. Postavke su prikazane u Tablica 5.7. Tablica 5.7: GetQueueAttributes parametri zahtjeva Ime parametra Opis Obavezno AttributeName.n Lista postavki koje se mogu dohvatiti. DA  All – vraća sve vrijednosti postavki  ApproximateNumberOfMessages – vraća približan broj vidljivih poruka u imeniku poruka  ApproximateNumberOfMessagesNotVisi ble – vraća približan broj nevidljivih poruka (privremeno sakrivenih) u imeniku poruka  VisibilityTimeout – vraća vrijeme vidljivosti poruka  CreatedTimestamp – vraća vrijeme kada je imenik poruka izrađen (UTC vrijeme)  LastModifiedTimestamp – vraća vrijeme kada su zadnji put postavke spremnika bile izmjenjene  Policy – vraća posebno dogovorena pravila koja vrijede za treću stranu  MaximumMessageSize – vraća najveću dopuštenu postavljenu veličinu poruke (najviše može biti 64 kB)  MessageRetentionPeriod – vraća najveće dopušteno vrijeme čuvanja poruka unutar spremnika  QueueArn – specijalna oznaka spremnika koju mogu koristiti druge usluge Amazon AWS-a (npr. usluga Amazon SNS) Tip podatka: String 69
  • Tablica 5.8: GetQueueAttributes parametri odgovora Ime parametra Opis Obavezno Attribute Lista Name - Value parova. DA  ApproximateNumberOfMessages – vraća približan broj vidljivih poruka u imeniku poruka  ApproximateNumberOfMessagesNotVisibl e – vraća približan broj nevidljivih poruka (privremeno sakrivenih) u imeniku poruka  VisibilityTimeout – vraća vrijeme vidljivosti poruka  CreatedTimestamp – vraća vrijeme kada je imenik poruka izrađen (UTC vrijeme)  LastModifiedTimestamp – vraća vrijeme kada su zadnji put postavke spremnika bile izmjenjene  Policy – vraća posebno dogovorena pravila koja vrijede za treću stranu  MaximumMessageSize – vraća najveću dopuštenu postavljenu veličinu poruke (najviše može biti 64 kB)  MessageRetentionPeriod – vraća najveće dopušteno vrijeme čuvanja poruka unutar spremnika  QueueArn – specijalna oznaka spremnika koju mogu koristiti druge usluge Amazon AWS-a (npr. usluga Amazon SNS) Tip podatka: StringSlika 5.7 prikazuje cjelovitu listu svih mogućih povratnih informacija. Najčešće se koristi radipregleda stanja imenika poruka, odnosno radi provjere da li je potrebno imati više potrošača zaskupljanje poruka. 70
  • /** Zahtjev za vraćanje svih postavki imenika spremnika.*/public function queueAttributes(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS ključ"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.endpoint = "sqs.eu-west-1.amazonaws.com"; clientConfig.protocol = ProtocolEnum.HTTPS; clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials); var request:GetQueueAttributesRequest = new GetQueueAttributesRequest(); request.setQueueUrl("https://sqs.eu-west-1.amazonaws.com/123456789012/TestQueue"); var attributeName: ArrayCollection = new ArrayCollection(); attributeName.addItem("All"); request.setAttributeNames(attributeName); client.getQueueAttributes(request, resultHandler, faultHandler);}/** Asinkroni pozitivni odgovor.*/private function resultHandler(event: CompleteActionEvent): void { var result: GetQueueAttributesResult = event.result as GetQueueAttributesResult; var attributeList: Map = result.getAttributes(); var visibilityTimeout: String = attributeList.itemFor("VisibilityTimeout"); var approximateNumberOfMessages: String = attributeList.itemFor("ApproximateNumberOfMessages"); var approximateNumberOfMessagesNotVisible: String =attributeList.itemFor("ApproximateNumberOfMessagesNotVisible"); var createdTimestamp: String = attributeList.itemFor("CreatedTimestamp"); var lastModifiedTimestamp: String = attributeList.itemFor("LastModifiedTimestamp"); var policy: String = attributeList.itemFor("Policy"); var maximumMessageSize: String = attributeList.itemFor("MaximumMessageSize"); var messageRetentionPeriod: String = attributeList.itemFor("MessageRetentionPeriod"); var queueArn: String = attributeList.itemFor("QueueArn"); var requestId: String = result.getRequestId();}/** Asinkroni negativni odgovor.*/private function faultHandler(event: IOErrorActionEvent): void { var result: AmazonWebServiceErrorResult = event.result as AmazonWebServiceErrorResult; var type: String = result.getType(); var code: String = result.getCode(); var message: String = result.getMessage(); var detail: String = result.getDetail();} Izvorni kod tankog klijenta 5.4: Primjer korištenja akcije GetQueueAttributes 71
  • <GetQueueAttributesResponse xmlns="http://queue.amazonaws.com/doc/2009-02-01/"> <GetQueueAttributesResult> <Attribute> <Name>VisibilityTimeout</Name> <Value>26</Value> </Attribute> <Attribute> <Name>ApproximateNumberOfMessages</Name> <Value>0</Value> </Attribute> <Attribute> <Name>ApproximateNumberOfMessagesNotVisible</Name> <Value>0</Value> </Attribute> <Attribute> <Name>CreatedTimestamp</Name> <Value>1308179188</Value> </Attribute> <Attribute> <Name>LastModifiedTimestamp</Name> <Value>1308817905</Value> </Attribute> <Attribute> <Name>QueueArn</Name> <Value>arn:aws:sqs:us-east-1:207121356507:TestQueue</Value> </Attribute> <Attribute> <Name>MaximumMessageSize</Name> <Value>10000</Value> </Attribute> <Attribute> <Name>MessageRetentionPeriod</Name> <Value>3650</Value> </Attribute> </GetQueueAttributesResult> <ResponseMetadata> <RequestId>a286f9dd-77ad-40d4-aa7b-8b3487e2a914</RequestId> </ResponseMetadata> </GetQueueAttributesResponse> Slika 5.7: Primjer GetQueueAttributes parametara odgovora5.6. Izmjena postavki imenika porukaAkcija SetQueueAttributes postavlja postavke spremnika poruka. Dozvoljeno je postaviti samojednu postavku u jednom zahtjevu. Napomena: Nakon uspješnog izvršenja akcije postavljanja postavki potrebno je pričekati~60 sekundi da se postavke potpuno primjene unutar usluge Amazon SQS. 72
  • Tablica 5.9: SetQueueAttributes parametri zahtjeva Ime parametra Opis Obavezno Attribute.Name Imena postavki. DA  VisibilityTimeout – duljina vremena (u sekundama) u kojemu će primljene poruke biti nevidljive drugim potrošačima.  Policy - posebno dogovorena pravila za koja vrijede za treću stranu  MaximumMessageSize – najveća dopuštena veličina poruke  MessageRetentionPeriod – najveći dopušteni period (u sekundama) u kojemu imenik poruka sadrži poruke. Attribute.Value Vrijednosti postavki. DA  VisibilityTimeout – Integer tip podatka; 0 sekundi – 43200 sekundi.  Policy – prava nad spremnikom poruka  MaximumMessageSize - najviše može ići do 64 kB; početna vrijednost je 8192 byte  MessageRetentionPeriod – 3600 sekundi (1 sat) do 1209600 sekundi (14 dana)SetQueueAttributes parametri odgovora nisu prikazani jer usluga vraća samo standardnirequestId parametar.RequestId primjer: <RequestId>9b6d88ef-14bb-4618-8b8d-abe724cdf0b8</RequestId> 73
  • /** Zahtjev za postavljanje postavki imenika spremnika.*/public function setQueueAttributes(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS ključ"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.endpoint = "sqs.eu-west-1.amazonaws.com"; clientConfig.protocol = ProtocolEnum.HTTPS; clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials, clientConfig); var request:SetQueueAttributesRequest= new SetQueueAttributesRequest(); // 123456789012 – korisnikov broj AWS računa (neobavezan parametar) request.setQueueUrl("https://sqs.eu-west-1.amazonaws.com/123456789012/TestQueue"); var map: org.as3commons.collections.Map = new Map(); //map.add("VisibilityTimeout", "30"); //Policy generator tool: http://awspolicygen.s3.amazonaws.com/policygen.html //map.add("Policy", "........policy definition..."); //map.add("MaximumMessageSize", "8192"); map.add("MessageRetentionPeriod", "345600"); // samo jedan parametar unutar mape smije postojati request.setAttributes(map); client.setQueueAttributes(request, resultHandler, faultHandler);}/** Asinkroni pozitivni odgovor.*/private function resultHandler(event: CompleteActionEvent): void { var result: SetQueueAttributesResult = event.result as SetQueueAttributesResult; var requestId: String = result.getRequestId();}/** Asinkroni negativni odgovore.*/private function faultHandler(event: IOErrorActionEvent): void { var result: AmazonWebServiceErrorResult = event.result as AmazonWebServiceErrorResult; var type: String = result.getType(); var code: String = result.getCode(); var message: String = result.getMessage(); var detail: String = result.getDetail();} Izvorni kod tankog klijenta 5.5: Primjer korištenja akcije SetQueueAttributes 74
  • 5.7. Davanje pristupa vanjskim korisnicimaAkcija AddPermission daje ograničena prava imeniku poruka vanjskim korisnicima. Koristi se uslučaju kada se određenim korisnicima želi onemogućiti izvršavanje pojedinih akcija. Slika 5.8: Akcija AddPermission daje ograničeni pristup vanjskim korisnicima (trećoj strani) Tablica 5.10: AddPermission parametri zahtjeva Ime parametra Opis Obavezno Label Jedinstveni naziv prava - npr. ETFOS_Dozvola DA Tip podatka: String Ograničenje: najviše 80 alfanumeričkih znakova, dozvoljeni su - i _ AWSAccountId.n Naziv AWS računa kojemu se daje pristup DA imeniku spremnika. Tip podatka: String Ograničenje: 12-znamenkasti broj AWS računa treće strane. ActionName.n Naziv akcije koju smije izvršiti treća strana. DA Akcije koje se mogu dozvoliti trećoj strani: * | SendMessage | ReceiveMessage | DeleteMessage | ChangeMessageVisibility | GetQueueAttributes 75
  • * - označava SendMessage, ReceiveMessage, ChangeMessageVisibility, GetQueueAttributesAddPermission parametri odgovora nisu prikazani jer usluga vraća samo standardni requestIdparametar.RequestId primjer: <RequestId>9b6d88ef-14bb-4618-8b8d-abe724cdf0b8</RequestId> 76
  • /** Zahtjev za izdavanje pristupa spremniku poruka trećo strani 111111111111 */public function addPermissions(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS ključ"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.endpoint = "sqs.eu-west-1.amazonaws.com"; clientConfig.protocol = ProtocolEnum.HTTPS; clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials, clientConfig); var request:AddPermissionRequest = new AddPermissionRequest(); // 123456789012 – korisnikov broj AWS računa (neobavezan parametar) – onaj koji daje dozvolu trećoj strani request.setQueueUrl("https://sqs.eu-west-1.amazonaws.com/123456789012/TestQueue"); request.setLabel("TestQueueLabel"); var accountList: ArrayCollection = new ArrayCollection(); var actionList: ArrayCollection = new ArrayCollection(); accountList.addItem("111111111111"); actionList.addItem("*"); client.addPermission(request, resultHandler, faultHandler);}/** Asinkroni pozitivni odgovor.*/private function resultHandler(event: CompleteActionEvent): void { var result: AddPermissionResult = event.result as AddPermissionResult; var requestId: String = result.getRequestId();}/** Asinkroni negativni odgovor.*/private function faultHandler(event: IOErrorActionEvent): void { var result: AmazonWebServiceErrorResult = event.result as AmazonWebServiceErrorResult; var type: String = result.getType(); var code: String = result.getCode(); var message: String = result.getMessage(); var detail: String = result.getDetail();} Izvorni kod tankog klijenta 5.6: Primjer korištenja akcije AddPermission 77
  • 5.8. Oduzimanje prava vanjskim korisnicimaAkcija RemovePermission uklanja prava vanjskim korisnicima (trećoj strani) temeljem naziva(Label) dozvole. Samo vlasnik imenika poruka (onaj koji ga je i izradio) može ukloniti prava. Tablica 5.11: RemovePermission parametri zahtjeva Ime parametra Opis Obavezno Label Jedinstveni naziv prava koja se želi oduzeti trećoj DA strani (npr. ETFOS_Dozvola) Tip podatka: String Ograničenje: najviše 80 alfanumeričkih znakova, dozvoljeni su - i _RemovePermission parametri odgovora nisu prikazani jer usluga vraća samo standardnirequestId parametar.RequestId primjer: <RequestId>9b6d88ef-14bb-4618-8b8d-abe724cdf0b8</RequestId> 78
  • /** Zahtjev za uklanjanje dozvole trećoj strani.*/public function removePermissions(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS ključ"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.endpoint = "sqs.eu-west-1.amazonaws.com"; clientConfig.protocol = ProtocolEnum.HTTPS; clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials, clientConfig); var request:RemovePermissionRequest = new RemovePermissionRequest(); // 123456789012 – korisnikov broj AWS računa (neobavezan parametar) – onaj koji uklanja dozvolu trećoj strani. request.setQueueUrl("https://sqs.eu-west-1.amazonaws.com/123456789012/TestQueue"); request.setLabel("TestQueueLabel"); // mandatory parameter client.removePermission(request, resultHandler, faultHandler);}/** Asinkroni pozitivni odgovor.*/private function resultHandler(event: CompleteActionEvent): void { var result: RemovePermissionResult = event.result as RemovePermissionResult; var requestId: String = result.getRequestId();}/** Asinkroni negativni odgovor.*/private function faultHandler(event: IOErrorActionEvent): void { var result: AmazonWebServiceErrorResult = event.result as AmazonWebServiceErrorResult; var type: String = result.getType(); var code: String = result.getCode(); var message: String = result.getMessage(); var detail: String = result.getDetail();} Izvorni kod tankog klijenta 5.7: Primjer korištenja akcije RemovePermission 79
  • 5.9. Slanje porukeAkcija SendMessage dostavlja UTF-8 poruku u imenik poruka. Najveća moguća dozvoljenaveličina poruke je 64 kB. Napomena: Poruka može sadržavati UTF-8 znakove koje pripadaju ovoj listi: #x9 | #xA |#xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]. Lista podržava sveznakove svjetskih jezika. Tablica 5.12: SendMessage parametri zahtjeva Ime parametra Opis Obavezno MessageBody Sadržaj poruke koja se želi poslati. DA Tip podatka: String Ograničenje: pročitati napomenu iznad Tablica 5.12. Tablica 5.13: SendMessage parametri odgovora Ime parametra Opis Obavezno MD5OfMessageBody MD5 prikaz poruke. Može se iskoristiti za DA provjeru valjanosti primitka poruke.. Tip podatka: String MessageId Jedinstveni identifikator poruke. DA Tip podatka: String 80
  • <SendMessageResponse xmlns="http://queue.amazonaws.com/doc/2009-02-01/"> <SendMessageResult><MD5OfMessageBody>437fda77fd1d95c076f59350b7482239</MD5OfMessageBody> <MessageId>1e51d04f-52d0-4da1-932f-0b37b3eccd18</MessageId> </SendMessageResult> <ResponseMetadata> <RequestId>14243053-e8a7-4fc3-a9ea-6faf6de4328a</RequestId> </ResponseMetadata></SendMessageResponse> Slika 5.9: Primjer SendMessage parametara odgovora 81
  • /** Zahtjev za slanje UTF-8 poruke */public function sendMessage(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS ključ"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.endpoint = "sqs.eu-west-1.amazonaws.com"; clientConfig.protocol = ProtocolEnum.HTTPS; clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials, clientConfig); var request:SendMessageRequest = new SendMessageRequest(); // 123456789012 – korisnikov broj AWS računa (neobavezan parametar). request.setQueueUrl("https://sqs.eu-west-1.amazonaws.com/123456789012/TestQueue"); request.setMessageBody("Test poruka!"); client.sendMessage(request, resultHandler, faultHandler);}/** Asinkroni pozitivni odgovor. */private function resultHandler(event: CompleteActionEvent): void { var result: SendMessageResult = event.result as SendMessageResult; var messageId: String = result.getMessageId(); var MD5OfMessageBody: String = result.getMD5OfMessageBody(); var requestId: String = result.getRequestId();}/** Asinkroni negativni odgovor. */private function faultHandler(event: IOErrorActionEvent): void { var result: AmazonWebServiceErrorResult = event.result as AmazonWebServiceErrorResult; var type: String = result.getType(); var code: String = result.getCode(); var message: String = result.getMessage(); var detail: String = result.getDetail();} Izvorni kod tankog klijenta 5.8: Primjer korištenja akcije SendMessage 82
  • 5.10. Prikupljanje porukaAkcija ReceiveMessage pristupa imeniku poruka i prikuplja poruke iz njega. Najveća količinaporuka koja se može prikupiti iz imenika poruka u jednom zahtjevu je deset, a najmanja jedna. Tablica 5.14: ReceiveMessage parametri zahtjeva Ime parametra Opis Obavezno AttributeName.n Naziv postavke koja se želi dohvatiti. DA Tip podatka: String  All – vraća sve postavke  SenderId – vraća broj AWS računa ili IP adresu anonimnog korisnika spremnika (ako je anonimni pristup dozvoljen)  SentTimestamp – vraća vrijeme (u milisekundama) kada je poruka poslana u imenik poruka  ApproximateReceiveCount – vraća broj koliko puta je poruka bila pročitana, ali ne i obrisana  ApproximateFirstReceiveTimesta mp – vraća vrijeme (u milisekundama) kada je prvi put poruka bila pročitana MaxNumberOfMessages Najveća dozvoljena količina poruka koju NE odgovor akcije može vratiti. Najviše može vratiti 10, a najmanje 1. Tip podatka: Integer [1 – 10] Napomena: Ako parametar nije poslan usluga Amazon SQS će vratiti samo jednu poruku. VisibilityTimeout Duljina vremena (u sekundama) u kojemu NE će primljene poruke biti nevidljive drugim potrošačima. Tip podatka: Integer [0 – 43200 (12 sati)] 83
  • Tablica 5.15: ReceiveMessage parametri odgovora Ime parametra Opis Obavezno Message Naziv postavke koja se želi dohvatiti. NE Tip podatka: String  Body – UTF-8 sadržaj poruke  MD5OfBody – MD5 prikaz poruke  MessageId – Jedinstveni identifikator poruke.  ReceiptHandle – oznaka koja služi kao parametar kod brisanja ili promjene vidljivosti poruke.  Attribute – vraćene postavke poruke: SenderId, SentTimestamp, ApproximateReceiveCount, ApproximateFirstReceiveTimesta mp Napomena: Važno je napomenuti da se ReceiptHandle parametar mijenja svaki puta kada sedohvati ista poruka. Takva funkcionalnost parametra jamči da onaj potrošač koji je zadnjiprikupio poruku jedini je i on može obrisati jer ima najnoviju (najmlađu) vrijednostReceiptHandle parametra.Slika 5.10 prikazuje primjer ReceiveMessage odgovora. Odgovor sadrži sve moguće parametre. 84
  • <ReceiveMessageResponse xmlns="http://queue.amazonaws.com/doc/2009-02-01/"> <ReceiveMessageResult> <Message> <MessageId>1e51d04f-52d0-4da1-932f-0b37b3eccd18</MessageId><ReceiptHandle>gH2qdC6bjNux+LtEkm5hubQYNrLzWsZYJKXr9MyoL2BeD7lckGdRp8Y6+tzDLz/OJqy5Zc8kH4IKk3gW3N5AQoIuPX47P3PKsgCNXo+Ja04c+tXEkGou25OMFw/m+NJYUJT9jop1HDP+5zHOtbr9HpLZOZb1YJXLx92GcLv3dYlbddp9VTOGiZfQ3hxMyWSQ</ReceiptHandle> <MD5OfBody>437fda77fd1d95c076f59350b7482239</MD5OfBody> <Body>Test poruke!</Body> <Attribute> <Name>SenderId</Name> <Value>207121356507</Value> </Attribute> <Attribute> <Name>SentTimestamp</Name> <Value>1309088372842</Value> </Attribute> <Attribute> <Name>ApproximateReceiveCount</Name> <Value>1</Value> </Attribute> <Attribute> <Name>ApproximateFirstReceiveTimestamp</Name> <Value>1309091408950</Value> </Attribute> </Message> </ReceiveMessageResult> <ResponseMetadata> <RequestId>96e1e34d-adb5-450f-83b0-d1260cacdf0e</RequestId> </ResponseMetadata></ReceiveMessageResponse> Slika 5.10: Primjer ReceiveMessage parametara odgovoraIzvorni kod tankog klijenta 5.9 prikazuje izvorni Actionscript 3.0 kod akcije ReceiveMessage.Funkcija faultHandler nije prikazana zbog ograničene veličine slike, ali određuje se na isti načinkao i u prethodnim primjerima Amazon SQS akcija. 85
  • /** Zahtjev za prikupljanje poruka */public function receiveMessage(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS ključ"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.endpoint = "sqs.eu-west-1.amazonaws.com"; clientConfig.protocol = ProtocolEnum.HTTPS; clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials, clientConfig); var request:ReceiveMessageRequest = new ReceiveMessageRequest(); // 123456789012 – korisnikov broj AWS računa (neobavezan parametar). request.setQueueUrl("https://sqs.eu-west-1.amazonaws.com/123456789012/TestQueue"); var attributeName: ArrayCollection = new ArrayCollection(); attributeName.addItem(attributeNameList.selectedItem); request.setAttributeNames("All"); request.setMaxNumberOfMessages(uint(10)); request.setVisibilityTimeout(uint(30)); client.receiveMessage(request, resultHandler, faultHandler);}/** Asinkroni pozitivni odgovor.*/private function resultHandler(event: CompleteActionEvent): void { var result: ReceiveMessageResult = event.result as ReceiveMessageResult; var messageList: ArrayCollection = result.getMessages(); var dataProvider: ArrayCollection = new ArrayCollection(); var requestId: String = result.getRequestId(); for each (var item: Message in messageList) { var map: Map = item.getAttributes(); dataProvider.addItem({ MessageId: item.getMessageId(), ReceiptHandle: item.getReceiptHandle(), Body: item.getBody(), MD5OfBody: item.getMD5OfBody(), SenderId: map.itemFor("SenderId") as String, SentTimestamp: map.itemFor("SentTimestamp") as String, ApproximateReceiveCount: map.itemFor("ApproximateReceiveCount") as String, ApproximateFirstReceiveTimestamp: map.itemFor("ApproximateFirstReceiveTimestamp") as String}); } // end of "for each" loop} Izvorni kod tankog klijenta 5.9: Primjer korištenja akcije ReceiveMessage 86
  • 5.11. Brisanje porukeAkcija DeleteMessage briše jednu poruku iz imenika poruka. Poruka se briše tako da se pošaljeReceiptHandle parametar koji pripada poruci koja se želi obrisati. Napomena 1: Ako potrošač primi više puta jednu te istu poruku onda mora biti i svjestan daće ReceiptHandle parametar svaki puta biti promjenjen. Ako se za brisanje poruke koristiprijašnji ReceiptHandle parametar tada će se zahtjev za brisanjem izvršiti bez bacanja greške, aliporuka neće biti obrisana. Napomena 2: Ponekad (ali rijetko) se može dogoditi da poruka nije obrisana iako jepotrošač poslao ispravan ReceiptHandle parametar. Zato potrošač poruka mora biti osmišljen natakav način da kada bude obrađivao neobrisanu poruku ne utječe na poslovnu logiku sustava. Tablica 5.16: DeleteMessage parametri zahtjeva Ime parametra Opis Obavezno ReceiptHandle Oznaka koja služi kao parametar kod brisanja DA poruke. Tip podatka: StringDeleteMessage parametri odgovora nisu prikazani jer usluga vraća samo standardni requestIdparametar.RequestId primjer: <RequestId>9b6d88ef-14bb-4618-8b8d-abe724cdf0b8</RequestId> 87
  • /** Zahtjev za brisanje jedne poruke iz imenika poruka.*/public function deleteMessage(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS ključ"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.endpoint = "sqs.eu-west-1.amazonaws.com"; clientConfig.protocol = ProtocolEnum.HTTPS; clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; (optional parameter - only for AIR Runtime) var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials, clientConfig); var request:DeleteMessageRequest = new DeleteMessageRequest(); // 123456789012 – korisnikov broj AWS računa (neobavezan parametar). request.setQueueUrl("https://sqs.eu-west-1.amazonaws.com/123456789012/TestQueue"); request.setReceiptHandle("MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+Cw Lj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QE auMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0="); client.deleteMessage(request, resultHandler, faultHandler);}/** Asinkroni pozitivni odgovor.*/private function resultHandler(event: CompleteActionEvent): void { var result: DeleteMessageResult = event.result as DeleteMessageResult; var requestId: String = result.getRequestId();}/** Asinkroni negativni odgovor.*/private function faultHandler(event: IOErrorActionEvent): void { var result: AmazonWebServiceErrorResult = event.result as AmazonWebServiceErrorResult; var type: String = result.getType(); var code: String = result.getCode(); var message: String = result.getMessage(); var detail: String = result.getDetail();} Izvorni kod tankog klijenta 5.10: Primjer korištenja akcije DeleteMessage 88
  • 5.12. Izmjena vidljivosti porukeAkcija ChangeMessageVisibility mijenja vrijeme vidljivosti poruke (VisibilityTimeout) uimeniku poruka u novu vrijednost. Najveće dopušteno vrijeme koje se može postaviti je 12 sati.U tome vremenskom periodu vrši se obrada i brisanje poruke. Ako je vrijeme prekratko zaobradu i brisanje poruke tada se koristi ChangeMessageVisibility akcija da produlji vrijemevidljivosti poruke. Tablica 5.17: ChangeMessageVisibility parametri zahtjeva Ime parametra Opis Obavezno ReceiptHandle Oznaka koja služi kao parametar kod promjene DA vidljivosti poruke. Tip podatka: String VisibilityTimeout Nova vrijednost za vidljivost poruke u DA sekundama. Tip podatka: Integer [ 0 - 43200 (12 sati)]ChangeMessageVisibility parametri odgovora nisu prikazani jer usluga vraća samo standardnirequestId parametar.RequestId primjer: <RequestId>9b6d88ef-14bb-4618-8b8d-abe724cdf0b8</RequestId> 89
  • /** Zahtjev za promjenom vidljivosti poruke.*/public function changeMessageVisibility(): void { var awsCredentials: BasicAWSCredentials = new BasicAWSCredentials("javni AWS ključ", "tajni AWS ključ"); var clientConfig: ClientConfiguration = new ClientConfiguration(); clientConfig.endpoint = "sqs.eu-west-1.amazonaws.com"; clientConfig.protocol = ProtocolEnum.HTTPS; (optional parameter) clientConfig.signatureExpires = 60; clientConfig.userAgent = "Amazon SQS service tool 1.0.0"; var client: AmazonSQSClient = new AmazonSQSClient(awsCredentials, clientConfig); var request:ChangeMessageVisibilityRequest = new ChangeMessageVisibilityRequest(); // 123456789012 – korisnikov broj AWS računa (neobavezan parametar). request.setQueueUrl("https://sqs.eu-west-1.amazonaws.com/123456789012/TestQueue"); request.setReceiptHandle("MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+Cw Lj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QE auMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0="); request.setVisibilityTimeout(uint(30)); client.changeMessageVisibility(request, resultHandler, faultHandler);}/** Asinkroni pozitivni odgovor.*/private function resultHandler(event: CompleteActionEvent): void { var result: ChangeMessageVisibilityResult = event.result as ChangeMessageVisibilityResult; var requestId: String = result.getRequestId();}/** Asinkroni negativni odgovor.*/private function faultHandler(event: IOErrorActionEvent): void { var result: AmazonWebServiceErrorResult = event.result as AmazonWebServiceErrorResult; var type: String = result.getType(); var code: String = result.getCode(); var message: String = result.getMessage(); var detail: String = result.getDetail();} Izvorni kod tankog klijenta 5.11: Primjer korištenja akcije ChangeMessageVisibility 90
  • 5.13. Usporedba ukupnog broja linija koda između službenih programskih zbirki tvrtke Amazon i as3awsSDK.swc zbirkeSLOC je programska metrika koja služi za određivanje fizičke veličine programske podrške takoda broji linije izvornog koda. Najčešće se koristi kao intuitivna tehnika za predviđanje radnih satipotrebnih da se razvije programska podrška, prognozu produktivnosti i održavanja nakonpuštanja programske podrške u korištenje.Metriku SLOC ne treba doslovno shvatiti kao pokazatelj kvalitete programske podrške. Iskusni ikvaliteni razvojni inženjeri mogu napisati programsku podršku sa puno manje linija izvornogkoda u odnosu na prethodnu programsku podršku. Ako se uspoređuje SLOC metrika izmeđurazličitih programskih jezika treba imati da se programski jezici razlikuju u gramatici što značida se ista funkcionalnost ne može napisati sa istim brojem linija koda.Tablica 5.18: Rezultat usporedbe SLOC metrike između programskih sučelja Amazon SDK i as3awsSDK. Usporedba seodnosi na izvorni kod prisutan u „com.amazonaws.services.sqs.*“ paketu. Za mjerenje korišten je Apache CLOC 1.53. Datoteke Prazne Linije Linije izvornog izvornog linije komentara koda koda Amazon Java SDK 1.2.2 52 628 3704 1885 (Android) Amazon Java 52 628 3704 1885 SDK 1.2.2 as3awsSDK 1.2 36 559 2513 1829 Amazon iOS 55 849 756 1800 SDK 0.2.3SLOC metrika brojanja linija koda se primjenila da bude intuitivni pokazatelj fizičke veličineprogramske zbirke Amazon SQS, ali ne i kvalitete izrade. Pod pretpostavkom da se službenaprogramska zbirka Amazon SQS razvija od programera sa višegodišnjim iskustvom ias3awsSDK.swc od strane autora magistarskog rada bilo je poželjno napraviti usporedbu.Usporedba je pokazala da se veličina as3awsSDK.swc zbirke ne razlikuje previše u broju linijaizvornog koda (do ~3%) u odnosu na službene Amazon SQS zbirke. Najveća razlika je u broju 91
  • datoteka. Može se zaključiti da zbirka as3awsSDK.swc prati fizičku veličinu službenih zbirkitvrke Amazon te da je složenost izrade manje-više jednaka. 92
  • 6. ZAKLJUČAKU ovom radu izvršen je pregled i usporedba tehničkih svojstava dvaju sustava za razmjenuporuka: tradicionalni JMS sustav kao sastavni dio današnjih aplikacijskih poslužitelja i uslugeAmazon SQS koja se nalazi u računalnom oblaku. Kao rezultat usporedbe tehničkih svojstavaizrađena je tablica koja ukazuje na razlike između dvaju sustava. Namjena tablice je da pomognerazvojnim inženjerima uvid u tehničke mogućnosti usluge Amazon SQS u odnosu natradicionalni sustav razmjene poruka JMS. Na taj način pomaže se razvojnim inženjerima dadonesu odluku koji od sustava koristiti u rješavanju projektnih zadataka ako postoji potreba zaprijenosom poruka između udaljenih heterogenih SOA računalnih sustava.Isto tako ne treba zaboraviti da korištenje računalnih usluga ima svoju ekonomsku cijenu. Svakaračunalna usluga troši određenu količinu električne energije, potrebno je plaćati licencu poprocesoru, tehničko osoblje da održava sustav, zamjenjivati dotrajale računalne komponente. Udanašnjem svijetu svakodnevnih zahtjeva za smanjenjem cijene održavanja sustava kao rješenjese nude računalni oblaci sa svojom novom filozofijom naplate. Tvrtke (među njima i Amazon)koje su vlasnici računalnih oblaka naplaćuju samo potrošenu količinu računalnih sredstava. Zatoje bilo potrebno napraviti usporedbu troška održavanja tradicionalnog sustava za razmjenuporuka u vlasništvu korisnika i sustava za razmjenu poruka u računalnom oblaku. Za usporedbukorišteni su rezultati istraživanja tvrtke Crimson Consulting Group iz svibnja 2011 godine iizrada cjenika usluge Amazon SQS na primjeru Livemocha projekta. Usporedba troškova jepokazala da je korištenje usluge Amazon SQS povoljnije za više od 99%. Pretpostavka je bila dasu sva računalna sredstva (5 poslužitelja - svaki poslužitelj ima 2 procesora) bila potrebna dazadovolji potrebe Livemocha projekta. Da je bio dovoljan i jedan poslužitelj usluga AmazonSQS bi bila povoljnija više od 50% za jednogodišnje razdoblje korištenja. Razlika u cijeni jepokazala da se male i srednje velike tvrtke u budućnosti mogu uključiti u stvaranje složenihsustava sa priuštivim troškovima.U današnje doba tanki klijenti su postali moćni računalni uređaji po pitanju poslužiteljske snage,pohrane podataka i mogućnošću korištenja Internet veze (npr. pametni mobilni telefoni,dlanovnici, prijenosna kućna računala). Da bi tanke klijente razvojna zajednica mogla koristiti zastvaranje novih i međusobno povezanih heterogenih SOA usluga preko sustava poruka bilo jepotrebno provjeriti koju količinu poruka jedan takav klijent može primiti-poslati u kratkomvremenskom razdoblju Internet vezom. Rezultat višestrukog mjerenja sa posebno izrađenimalatom pokazuje da je moguće primati i slati više od 100 poruka u minuti sa prosječnim 93
  • kašnjenjem 500 ms – 2000 ms po poruci. Rezultat navodi do zaključka da je usluga AmazonSQS sposobna uslužiti nekoliko stotina klijenata istovremeno u kratkom vremenskom razdobljubez smanjenja kvalitete usluge.Zbog sve većeg širenja različitih tipova tankih klijenata koji su upogonjeni na različitimoperativnim sustavima pojavio se problem da je potrebno za svaki od njih naučiti jezikprevodioca. Za iPhone i iPad potrebno je učiti Objective C, dok je za Android potrebno učitiJavu. Tvrtka Adobe Inc. je odlučila stati na kraj toj praksi 20.06.2011 i omogućiti da preko FlexSDK Actionscript 3.0 prevodioca razvojni inženjeri mogu napisati računalni kod samo jednom, aprevodioc će ga prevesti za određene računalne sustave kao što su iOS, Android i BlackBerry.Temeljem takve buduće prakse stvorila se potreba za stvaranjem programske zbirkeas3awsSDK.swc koja omogućava razvojnoj zajednici da izrađuje programsku podršku za sučeljatankih klijenata koja su povezana sa uslugom Amazon SQS, ali bez potrebe da se izvorni kodpiše posebno za svaki tip tankog klijenta. U trenutku pisanja ovoga rada zbirka broji više od 160javno potvrđenih korisnika. Njena najveća prednost je jednostavnost korištenja i brza uzlaznakrivulja učenja.Zbog stalnog nadograđivanja usluge Amazon SQS (trenutna verzija 2009-02-01) i zahtjevakorisnika razvojne zajednice u budućnosti se planira nadogradnja zbirke na javno najavljenuverziju 2011-10-01 koja sadrži nekoliko novih Amazon SQS akcija. Jedna od zanimljivihmogućnosti je slanje više od 10 poruka prema uslugi Amazon SQS u jednom HTTP(s) zahtjevu.To znači da cijena slanja poruka može biti i do nekoliko puta niža uz optimalnu izraduprogramske podrške. 94
  • 7. LITERATURA [1] Brumec, Slaven, Društvene znanosti, informacijske znanosti, informacijski sustavi i informatologija, Fakultet organizacije i informatike, Varaždin, Croatia, Phd Thesis June 20, 2011. [2] Amazon Web Services LLC. (2011, October) Amazon Web Services. [Online]. http://aws.amazon.com/sqs/ [3] Wikimedia Foundation, Inc. (2011, October) Wikipedia. [Online]. http://en.wikipedia.org/wiki/Thin_client [4] W3C. (2011, October) W3C. [Online]. http://dev.w3.org/html5/spec/Overview.html [5] Pierre de Leusse, Panos Periorellis, Paul Watson, and Andreas Maierhofer, "Secure & Rapid composition of infrastructure services in the Cloud," , Cap Esterel, France, 2008, pp. 770 - 775. [Online]. http://www.cs.ncl.ac.uk/publications/inproceedings/papers/1160.pdf [6] Linthicum, David S.;, Cloud Computing and SOA Convergence in Your Enterprise - A Step- by-Step Guide. USA: Addison-Wesley, 2009. [7] Kontogiannis, Kostas; Lewis, Grace A.; Smith, Dennis B.; Chapin, Ned, "A Research Agenda for Service-Oriented: Maintenance and Evolution of Service-Oriented Systems," in 30th International Conference on Software Engineering, Leipzig, Germany, 2008, pp. 1 - 41, Research, Technology, and System Solutions Program. [Online]. http://www.sei.cmu.edu/reports/10sr004.pdf [8] Vitharana, P; Bhaskaran, K; Jain, H; Wang, H; Zhao, L., "Service-Oriented Enterprises and Architectures: State of the Art and Research Opportunities," in AMCIS, Toronto, Canada, 2007, p. 343. [9] Asit Dan, Robert Johnson, and Ali Arsanjani, "Information as a Service: Modeling and Realization," in Proceedings of the International Workshop on Systems Development in SOA Environments (SDSOA07, ICSE Workshops 2007), Mineapolis, USA, 2007, pp. 1-6.[10] Yefim V. Natis, "Applied SOA: Transforming Fundamental Principles Into Best Practices," Gartner, Research Note G00147098, 2007.[11] Armbrust, Michael; Fox, Armando; Griffith, Rean; Joseph, Anthony D; Katz, Randy; Konwinski, Andy; Lee, Gunho; Patterson, David; Rabkin, Ariel; Stoica, Ion; Zaharia, Matei, "Above the Clouds: A Berkeley View of Cloud Computing," UC Berkeley Reliable Adaptive Distributed Systems Laboratory, Berkeley, USA, pdf grant COM07-10240, grant #CNS- 0509559, 2009. [Online]. http://d1smfj0g31qzek.cloudfront.net/abovetheclouds.pdf 95
  • [12] European Network and Information Security Agency (ENISA). (2009, November) Benefits, risks and recommendations for information security. [Online]. http://www.enisa.europa.eu/act/rm/files/deliverables/cloud-computing-risk- assessment/at_download/fullReport[13] European Network and Information Security Agency (ENISA). (2009, November) Secure Applications and Services. [Online]. http://www.enisa.europa.eu/act/application-security[14] Mather, Tim; Kumaraswamy, Subra; Latif, Shahed;, Cloud Security and Privacy, First Edition ed., Loukides Mike, Ed. Sebastopol, California, USA: O’Reilly Media, Inc., 2009. [Online]. http://my.safaribooksonline.com[15] Rittinghouse, John W.; Ransome, James F.;, Cloud Computing: Implementation, Management and Security, Taylor & Francis Group, Ed. New York, USA: CRC Press, 2009.[16] Selim R. Mohammad , Goto Yuichi , and Jingde Cheng, "A Low Cost and Resilient Message Queuing Middleware," International Journal of Computer Science and Network Security, vol. 8, no. 5, pp. 225 - 237, August 2008. [Online]. http://paper.ijcsns.org/07_book/200808/20080833.pdf[17] Kupsys, Arnas; Ekwall, Richard;, "Architectural Issues of JMS Compliant Group Communication," in 4th IEEE International Symposium on Network Computing and Applications (IEEE NCA 2005), 2005, pp. 139-148. [Online]. http://dl.acm.org/citation.cfm?id=1097873.1098303[18] Robert Lafore, Data Structures & Algorithms in Java, Second Edition ed., Michael Stephens (Executive Editor), Ed. Indianapolis, USA: Sams Publishing, 2003.[19] Java Community Process JSR 914. (2002, March) Java Community Process. [Online]. http://www.jcp.org/en/jsr/detail?id=914[20] JBoss Messaging. (2010) JBoss Messaging. [Online]. http://www.jboss.org/jbossmessaging[21] HornetQ. (2011) http://www.jboss.org/hornetq/. [Online]. http://www.jboss.org/hornetq/[22] ActiveMQ. (2011) Apache ActiveMQ. [Online]. http://activemq.apache.org/[23] IBM Corporation. (2011) WebSphere MQ. [Online]. http://www- 01.ibm.com/software/integration/wmq/#[24] Oracle Corporation. (2011) Oracle WebLogic Server. [Online]. http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html[25] TIBCO Software Inc. (2011) TIBCO Enterprise Message Service. [Online]. http://www.tibco.com/products/soa/messaging/enterprise-mesage-service/default.jsp 96
  • [26] RabbitMQ. (2011) Robust messaging for applications. [Online]. http://www.rabbitmq.com/[27] Oracle Corporation. (2011) Java Naming and Directory Interface (JNDI). [Online]. http://www.oracle.com/technetwork/java/overview-142035.html[28] Oracle Corporation. (2008) Configuring Advanced JMS System Resources. [Online]. http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jms_admin/advance_config.html[29] Amazon AWS Services LLC. (2011) Amazon Simple Queue Service (SQS) Documentation - API Reference. [Online]. http://awsdocs.s3.amazonaws.com/SQS/latest/sqs-api.pdf[30] Network Working Group. (1996) DEFLATE Compressed Data Format Specification version 1.3. [Online]. http://www.ietf.org/rfc/rfc1951.txt[31] Amazon Web Services LLC. (2011) Forum: Amazon Simple Queue Service - Announcement. [Online]. https://forums.aws.amazon.com/ann.jspa?annID=1140[32] W3C. (1997, September) Date and Time Formats. [Online]. http://www.w3.org/TR/NOTE- datetime[33] Wikipedia. (2011, September) Secure Hash Algorithm. [Online]. http://en.wikipedia.org/wiki/Secure_Hash_Algorithm[34] Network Working Group. (1997) HMAC: Keyed-Hashing for Message Authentication. [Online]. http://www.ietf.org/rfc/rfc2104.txt[35] Leonard Richardson and Ruby Sam , RESTful Web Services - Web services for the real world. USA: OReilly Media, 2007.[36] Amazon Web Services LLC. (2011) Amazon Simple Queue Service (SQS) Documentation - Developer Guide. [Online]. http://awsdocs.s3.amazonaws.com/SQS/latest/sqs-dg.pdf[37] Network Working Group. (2005, January) Uniform Resource Identifier (URI): Generic Syntax. [Online]. http://www.ietf.org/rfc/rfc3986.txt[38] Marko Dugonjić. (2003) UTF-8 entities. [Online]. http://webdesign.maratz.com/lab/utf_table/[39] Network Working Group. (2006, October) The Base16, Base32, and Base64 Data Encodings. [Online]. http://www.apps.ietf.org/rfc/rfc4648.html[40] Amazon Web Services LLC. (2011) AWS Identity and Access Management (IAM). [Online]. http://aws.amazon.com/iam/[41] Crimson Consulting Group, Inc., "Application Server Cost of Ownership: Oracle WebLogic and Coherence versus IBM WebSphere Application Server and eXtreme Scale," Los Altos, USA, Business White Paper 2011. [Online]. 97
  • http://www.oracle.com/us/products/middleware/crimson-weblogic-websphere-tco-402458.pdf[42] searchitchannel.techtarget.com. (2008, June) Oracle rolls out price hikes on app server, database. [Online]. http://searchitchannel.techtarget.com/news/1317954/Oracle-rolls-out- price-hikes-on-app-server-database[43] Amazon Web Services LLC. (2011, July) Pricing. [Online]. http://aws.amazon.com/sqs/#pricing[44] Amazon Web Services LLC. (2011, December) AWS Case Study: LiveMocha. [Online]. http://aws.amazon.com/solutions/case-studies/livemocha/[45] Amazon Web Services LLC. (2011, December) Amazon Elastic Compute Cloud (Amazon EC2). [Online]. http://aws.amazon.com/ec2/[46] Kresimir Popović. (2011, January) Atlassian Bitbucket. [Online]. https://bitbucket.org/Kresimir/awsadmintool[47] Amazon Web Services LLC. (2011, May) Forum. [Online]. https://forums.aws.amazon.com/thread.jspa?threadID=66440&tstart=0[48] Krešimir Popović. (2011, October) Atlassian Bitbucket. [Online]. https://bitbucket.org/Kresimir/awsadmintool/changesets[49] Scott M. Fulton. (2011, October) Amazon Adds SQS Queue Administration to AWS Console. [Online]. http://www.readwriteweb.com/cloud/2011/10/amazon-adds-sqs-queue-administ.php[50] Adobe Systems Inc. (2011, November) ActionScript® 3.0 Reference for the Adobe® Flash® Platform. [Online]. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/class- summary.html[51] Symantec. (2008) Symantec Global Internet Security Threat Report - Trends for 2008. [Online]. http://eval.symantec.com/mktginfo/enterprise/white_papers/b- whitepaper_internet_security_threat_report_xiv_04-2009.en-us.pdf[52] Adobe Systems Inc. (2011, July) Statistics : PC penetration. [Online]. http://www.adobe.com/products/flashplatformruntimes/statistics.html[53] Adobe Systems Inc. (2011) Statistics : Mobile penetration. [Online]. http://www.adobe.com/products/flashplatformruntimes/statistics.displayTab2.html[54] Kresimmir Popovic. (2011, May) as3awsSDK Actionscript 3.0 library. [Online]. https://bitbucket.org/Kresimir/as3awssdk/overview[55] ECMA International. (2011, June) ECMAScript Programming Language. [Online]. 98
  • http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf[56] Adobe Systems Inc. (2011, May) Application Development - AsDoc. [Online]. http://livedocs.adobe.com/flex/3/html/help.html?content=asdoc_1.html[57] FlexUnit.org. (2011, October) FlexUnit tests. [Online]. http://www.flexunit.org/[58] Wireshark. (2011, October) Wireshark 1.6.2 version. [Online]. http://www.wireshark.org/[59] Amazon Web Services LLC. (2011, May) Amazon AWS SDK library (actionscript 3.0). 99
  • SAŽETAKUsluga za razmjenu poruka Amazon SQS nudi pouzdan, korisnički jednostavan i vrlo podesivsustav za pohranu poruka koje putuju između udaljenih heterogenih računalnih sustavakorištenjem HTTP(s) protokola. Tekst magistarskog rada organiziran je na slijedeći način: Uprvom poglavlju izrečena je motivacija, objašnjena opravdanost istraživanja, postavljeni suciljevi rada i plan istraživanja. U drugom poglavlju predstavljen je tradicionalni JMS sustav zarazmjenu poruka i usluga Amazon SQS kao nova alternativa na tržištu. U trećem poglavljunapravljena je usporedba ukupnih troškova održavanja postojećeg komercijalnog sustavaposlužitelja Oracle WebLogic sa uslugom Amazon SQS za jednogodišnje i petogodišnjerazdoblje korištenja. U četvrtom poglavlju opisan je posebno izrađeni alat za mjerenje ukupnekoličine poslanih/primljenih HTTP(s) zahtjeva – odgovora u višenitnom načinu rada izmeđukućnog računala spojenog na javnu mrežu Internet i usluge Amazon SQS. U petom poglavljuopisana je posebno izrađena programsko sučelje koje se može iskoristiti na različitim vrstamatankih klijenata (kućna računala, mobilni uređaji i dlanovnici).Ključne riječi: Oblačno računarstvo, upravljanje porukama, HTTP(s) protokol, troškoviodržavanja, usluga Amazon SQS, actionscript zbirka, univerzalna prenosivost, sigurnost. 100
  • ABSTRACTMessage exchange service Amazon SQS offers reliable, user friendly and scalable messagestorage system between distant computer systems using the HTTP(s) protocol. Text in this thesisis organized in the following way: In the first chapter motivation is stated, justification ofresearch is explained, goals are set and work plan of research is shown. The second chapterpresents the traditional JMS messaging system and Amazon SQS as new alternative in themarket. In the third chapter the total cost of ownership of an existing commercial OracleWebLogic server is compared with the Amazon SQS for one year and five year period of use.The fourth chapter describes the specially designed tool in the Java programming language formeasuring the total amount of sent/received HTTP(s) requests/responses in multithreaded modebetween the computer connected to a public internet network and Amazon SQS cloud service.The fifth chapter describes the specially designed Actionscript library that can be used ondifferent types of thin clients (personal computer, smartphones and PDAs) to connect to theAmazon SQS service.Key words: Cloud computing, message management, HTTP protocol, total cost of ownership,Amazon SQS service, actionscript library, universal portability, security. 101
  • ŽIVOTOPISKrešimir Popović je rođen 29.09.1980 godine u Osijeku, država Hrvatska. U razdoblju od 1995do 1999 godine pohađao je Matematičku gimnaziju gdje je studirao predmete poput matematike,fizike i informatike. Upisivanjem na Elektrotehnički fakultet u Osijeku 1999 godine pohađao jenekoliko predmeta iz područja računarstva kao što su: digitalna elektronika, arhitektura računala,relacijske baze podataka i objektno-orijenirano programiranje. Nakon stjecanja akademske tituledipl.ing.el 2005 godine zaposlio se kao inženjer programske prodrške u tvrtki Siemens PSE(Program and System Engineering) u Osijeku. U svom dnevnom inženjerskom poslu bavi sedizajniranjem programske podrške, programiranjem, testiranjem i dokumentiranjem softverskihusluga u području telekomunikacijskih poslovnih rješenja za telekomunikacijske poslužitelje.Poslovna rješenja obuhvaćaju klijentske aplikacije za zaposlenike podrške usluga, sustave zanaplatu prepaid bonova, povezivanje i obrada podataka između više heterogenih sustava i obukamlađih uposlenika. Od 2010 godine intenzivno se bavi proučavanjem oblačnog računarstva,automatizacijom poslovnih procesa i pridonosi zajednici otvorenog koda. Autor je nekolikoIEEE znanstvenih i tehničkih konferencijskih radova. Najznačajniji radovi napisani su na temuoblačnog računarstva i upravljanja projektima. U svrhu daljnjeg tehničkog napredovanja iprilagođavanja svjetskim potrebama tržišta rada planira se certificirati kao Java razvojni inženjer. X Krešimir Popović 102
  • BIOGRAPHYKrešimir Popović was born in Osijek, state Croatia, on the September 29, 1980. Krešimirattended the Mathematical gymnasium in Osijek from 1995 - 1999, studying a wide range ofsubjects such as mathematics, physics and informatics. Entering the Faculty of ElectricalEngineering Osijek in 1999 he took a wide range of subjects, especially computer sciencesubjects including digital electronics, computer architecture, relational databases and object-oriented programming. After gaining his academic degree title dipl.ing.el in 2005 he got the jobas a software engineer at Siemens PSE (Program and System Engineering) in Osijek. In his dailyengineering work he is doing software design, programming, testing and documenting businesssoftware solutions and services for telecommunication providers. Business solutions and servicesinclude client applications for Customer Care agents, voucher management systems and mobilepayment, data integration between several heterogeneous systems, training of new employees.Since 2010 he is intensively studying cloud computing, business process management and alsocontributing to the community of open source code. He is also the author of several internationalIEEE scientific and technical conference papers. The most significant papers are written on thetopic of cloud computing and project management. In the future he is planning to get certified asa Java software engineer to adjust to the constant market shifts and the need for highly skilledJava technical people. X Krešimir Popović 103