Metodologije za razvoj web usluga – razvoj mobilnih aplikacija, web usluga, SOA arhitektura - tehnologija
Preskoči na sadržaj

Metodologije za razvoj web usluga – razvoj mobilnih aplikacija, web usluga, SOA arhitektura

Oglasi

Coulouris je definirao distribuirane sustave kao "sustave u kojima hardverske i/ili softverske komponente koje postoje u računalnoj mreži komuniciraju i koordiniraju svoje akcije razmjenom poruka".

Ovaj je koncept postao popularan posljednjih godina zbog nekoliko čimbenika. Prvi čimbenik koji je potaknuo razvoj distribuiranih sustava bila je pojava lokalnih mreža velike brzine. Drugi važan čimbenik bio je tehnološki napredak u performansama osobnih računala i razvoj softvera za podršku distribuiranim aplikacijama. Distribuirani sustavi povezani su s konceptom Weba i Interneta. S evolucijom weba i pojavom novih područja, interakcija, potreba i aplikacija, pojavljuje se koncept weba 2.0. Ovaj je izraz skovao Tim O'Reilly 2004. kako bi označio drugu generaciju u povijesti weba koja se temelji na zajednicama korisnika i posebnom nizu usluga, poput društvenih mreža, blogova, wikija ili folksonomija, koje potiču suradnju i brzu razmjena informacija između korisnika.

Prve arhitekture koje se mogu smatrati servisno orijentiranima (SOA) bile su temeljene na CORBA-i (Common Object Request Broker Architecture), koja je djelovala kao sloj apstrakcije za međusobno povezivanje različitih elemenata arhitekture i izgradnju usluga. Druge ranije tehnologije bile su DCOM (Distributed Component Object Model) ili RPC (Remote Procedure Protocol). S potrebom za učinkovitim dizajnom i implementacijom distribuiranih sustava na webu, pojavljuje se nekoliko izazova, neki usmjereni na sam razvoj (performanse, korisničko iskustvo, itd.) i drugi komplementarni, koji se temelje na ponovnoj upotrebi i kompatibilnosti usluga. Iz ovih potreba proizlaze web usluge koje pružaju standardizirane mehanizme za međusobno povezivanje različitih korisnika s informacijskim poslužiteljima.

ARHITEKTURE ORIJENTIRANE NA USLUGE

Prema SOA-i (Service Oriented Architecture) su softverske arhitekture koje definiraju korištenje usluga za podršku poslovnim zahtjevima, čiji je cilj postići najmanju moguću spregu između softverskih agenata. Usluga je jedinica rada koju obavlja pružatelj usluge kako bi postigao krajnji rezultat koji želi korisnik usluge. I pružatelj usluge i korisnik usluge uloge su koje igraju softverski agenti, a ne vlasnici softvera. U općenitom smislu, uslužno orijentirana arhitektura je softversko rješenje namijenjeno poduzeću omogućiti organiziranje i korištenje različitih procesa. Uz SOA, softverske aplikacije više nisu masivni blokovi funkcija i procesa. Umjesto toga, te se aplikacije sastoje od sastavljenih modularnih usluga. Ne zaboravite da je usluga jednostavna softverska funkcija (poput otkazivanja CD-a). Može se pokrenuti na zahtjev bilo kojeg sustava, bez obzira na operativni sustav, platformu, programski jezik ili geografsku lokaciju.

Ono što je revolucionarno kod SOA-e nije sam koncept, koji je već dugo prisutan, već činjenica da se može implementirati preko WWW-a (World Wide Web). Na isti način na koji se web stranice učitavaju na bilo kojoj platformi, web usluge rade na sličan način bez obzira na platformu na kojoj su izgrađene
univerzalni standardi.

FotografiratiIdeja SOA-e proizlazi izravno iz objektno orijentiranog programiranja, što sugerira odnos između podataka i njihove obrade. Stoga formalno definiraju usluge kroz sučelja koja su neovisna o temeljnoj platformi i programskom jeziku. Ova sučelja skrivaju osobitosti svoje implementacije, što ih čini neovisnima o razvojni i programski jezik. Kroz ove arhitekture moguće je dizajnirati i implementirati visoko skalabilne sustave koji odražavaju poslovnu logiku i istovremeno olakšavaju interakciju između različitih vlasničkih sustava ili sustava trećih strana. Razlog zašto želimo da netko drugi obavi posao za nas je taj što su stručnjaci. Korištenje usluge obično je jeftinije i učinkovitije nego da to radite sami. Stoga većina nas razumije da ne možemo biti stručnjaci za sve. Isto pravilo može se primijeniti na izgradnju softverskih sustava.

Sučelja su vrlo važna, ako nisu dobro definirana ili ne rade, sustav ne radi. Integracija više sučelja je skupa i također povećava mogućnost grešaka u distribuiranim aplikacijama. Udaljena sučelja su najsporiji dio većine distribuiranih aplikacija. Uz sve to, umjesto izgradnje novih sučelja za svaku aplikaciju, ima više smisla ponovno koristiti generička sučelja za sve aplikacije.

Dakle, budući da imamo samo nekoliko dostupnih generičkih sučelja, moramo uključiti semantiku specifičnu za aplikaciju u poruke. Možemo poslati bilo kakvu poruku putem naših sučelja, ali postoje neka pravila koja se moraju slijediti da bi se moglo reći da je arhitektura orijentirana na usluge.

– Prije svega, poruke moraju biti opisne, a ne poučne jer je za rješavanje problema odgovoran davatelj usluge. Na primjer, to bi bilo slično situaciji da odete u restoran i konobaru kažete što želite popiti i što želite, ali ne bismo trebali objašnjavati kuharu kako da vam pripremi jela, korak po korak.

‐ Drugo, pružatelji usluga neće moći razumjeti vaš zahtjev ako njihove poruke nisu napisane u formatu, strukturi i vokabularu razumljivima za sve uključene. Stoga je ograničavanje vokabulara i strukture poruka a
neophodnih za učinkovitu komunikaciju. Što je poruka uža, to ju je lakše razumjeti.

- Treće, mogućnost produženja je od vitalnog značaja. Svijet je mjesto koje se stalno mijenja, kao i okruženje u kojem softver živi. Ove promjene zahtijevaju odgovarajuće promjene u softveru sustava, potrošačima usluga, pružatelja i poruka koje razmjenjuju. Ako poruke nisu proširive, korisnici i davatelji vezani su za određenu verziju usluge. Ograničenje i proširivost duboko su povezani, potrebno vam je oboje, a povećanje jednog znači smanjenje drugog. Idealno je postići ispravnu ravnotežu.

– Četvrto, SOA mora imati mehanizam koji potrošaču omogućuje otkrivanje pružatelja usluga u kontekstu usluge koju potrošač traži. Mehanizam bi trebao biti fleksibilan, a ne centralizirani registar.

- Peto, usluga bez državljanstva: Svaka poruka koju potrošač pošalje pružatelju mora sadržavati sve informacije potrebne da bi je pružatelj mogao obraditi. Ovo ograničenje pružatelja usluga čini prilagodljivijim jer pružatelj ne treba pohranjivati podatke o stanju između zahtjeva. To se može nazvati "uslugom masovne proizvodnje" budući da se sa svakim zahtjevom može generički postupati. Ovo ograničenje također pruža veću vidljivost, jer bilo koji softver za praćenje može neovisno pregledati zahtjev i izdvojiti njegovu namjeru. Ovo također omogućuje lak oporavak od djelomičnih kvarova budući da nema međustanja, što uslugu čini pouzdanijom.

- Šesto, idempotentni zahtjevi (bez promjena): dvostruki zahtjevi koje primi softverski agent imaju isti učinak kao pojedinačni zahtjev. Ovaj zahtjev pružateljima i potrošačima omogućuje povećanje ukupne pouzdanosti uslugu, jednostavno ponavljajući zahtjev ako je bilo kvara.

Stoga možemo reći da SOA nije alat, već skup standarda za izgradnju novih aplikacija, dinamičnijih i manje ovisnih. SOA olakšava pristup poslovnoj logici i informacijama preko višestrukih usluga na sustavan način, a također može orkestrirati višestruke udaljene usluge da sastave jednu. većina definicije identificiraju korištenje web usluga, što ćemo vidjeti u sljedećem poglavlju, u implementaciji servisno orijentirane arhitekture. Međutim, može se implementirati pomoću bilo koje druge tehnologije koja se temelji na uslugama.