18
52 listopad 2014. MREŽA Dosad smo se više puta bavili trendovima u IT industriji pa vam vjerojatno već na uši izlaze kovanice poput „big data“, „cloud“ ili primjerice „Internet of things“. Ne želimo tu stati, ali ovaj put se usredotočujemo na temu razvoja informacijskih sustava, i to ponajprije aplikacija, ponešto s tehnološkog, a ponešto i s metodološkog stajališta Quo vadis, development? Piše: Dalibor Uremović TRENDOVI SOFTVERA

Trendovi u razvoju sofTvera - AlterInfoalterinfo.hr/userfiles/Media/Trendovi u razvoju IS - Mreza 10 2014.pdf · TEMA BROJA Trendovi u razvoju softvera O va tema broja planira upotpuniti

  • Upload
    vanthuy

  • View
    227

  • Download
    3

Embed Size (px)

Citation preview

52 listopad 2014. MREŽA

Dosad smo se više puta bavili trendovima u IT industriji pa vam vjerojatno već na uši izlaze kovanice poput „big data“, „cloud“ ili primjerice „Internet of things“. Ne želimo tu stati, ali ovaj put se usredotočujemo na temu razvoja informacijskih sustava, i to ponajprije aplikacija, ponešto s tehnološkog, a ponešto i s metodološkog stajališta

Quo vadis, development?Piše: Dalibor Uremović

Trendovi u razvojusofTvera

MREŽA listopad 2014. 53

Trendovi u razvojuTEMA BROJA

TEMA BROJA

Trendovi u razvoju softvera

Ova tema broja planira upotpuniti područje trendova u IT industriji, uz već obrađene teme „The Next Big Thing“ , „Big Data“, „Trendo-vi u web dizajnu“ i „Trendovi u

globalnom IT-u“ koje su krasile naslovnice časopisa Buga i Mreže posljednjih nekoliko mjeseci. Naime, vjerujem da je došao red i na pokušaj sveobuhvatnog pogleda na tren-dove u metodologijama razvoja aplikacija i poboljšanja učinkovitosti operativnih IT procesa koje prepoznajemo u svakoj orga-nizaciji. Ne zamjerite ako nešto nedostaje, jer kad govorimo o trendovima, moguće je ispisati cijelu knjigu o njima, da ne govorimo o raznim podjelama i stajalištima s kojih promatramo rad s IT sustavima. Cilj teme je dati širu sliku područja razvoja aplikacija i potaknuti čitatelje na dodatno istraživanje prezentiranih područja te prepoznavanje koristi i potreba za njihovom provedbom unutar svojih organizacija.

Za našu informatičku scenu jedni govore pozitivne stvari - kako imamo pametne ljude, dovoljan broj IT stručnjaka koji zbog nedo-statka posla u domovini (ili drugih razloga) traže posao u inozemstvu, napredne projekte u javnoj upravi i dijelu privatnog sektora. Drugi, pak, tvrde da je to kriva percepcija te da numerički pokazatelji govore sasvim drugačije. Nedavna studija o inteligenciji stanovništva pojedinih država nas, primjerice, ne svrstava baš na povoljno mjesto. Bilo kako bilo, ako i želimo biti pri vrhu na globalnom tržištu, moramo slijediti i koristiti trenutne

trendove u IT industriji i povremeno ih i probijati. Premda imamo lijepe primjere tvrtki koje ovo čine te je dio njih i razvio prepo-znatljivost svojih brendova na svjetskoj razini, susrećući se s raznim IT tvrtkama mogao sam primijetiti i dobar dio onih koji još rade na zastarjelim tehnologijama i s napuštenim metodologijama kojima jednostavno više nisu konkurentni na današnjem tržištu IT usluga.

Život na staroj slaviDobar dio njih čine „stare“ tvrtke koje

postoje već duže vrijeme na tržištu i koje su nekad davno izradile aplikacije po mje-ri za svoje korisnike te godinama čame u poslovima održavanja tih starih aplikacija i sustava. Pritom se za poslove održavanja i nadograđivanja informacijskih sustava i dalje koriste iste metodologije i isti stari alati, bez

Neki od trendova u današnjem razvoju informacijskih sustava

Trenutni status raznih specifikacija vezanih uz HTML 5, koji postaje nezaobilazan u razvoju budućih web aplikacija

54 listopad 2014. MREŽA

MREŽA listopad 2014. 55

ulaganja dijela istraživanja u nove metode rada ili sistemske i razvojne alate. Valja tu svakako napomenuti da se stari alati i metode ne trebaju odmah odbaciti (kao što NASA zbog sigurnosnih i drugih razloga koristi staru i provjerenu tehnologiju), ali živjeti se na staroj slavi ne može dovijeka.

Ono što mora biti prisutno u svakoj IT tvrtki jest konstantna promjena, ulaganje u razvoj i edukaciju, zamjena starih alata novima, razvoj novih proizvoda, poboljšanje procesa rada, uz primjenu najboljih praksi i standarda u IT industriji, a sve se to radi na temelju praćenja trendova. Analizirajući trenutačno tržište razvoja informacijskih su-stava s fokusom na razvoj aplikacija, moguće je primijetiti bujicu „buzzworda“ u ovom području. Premda nisam pristalica prihva-ćanja svega novoga što je trenutno „IN“, jer dobar dio toga je napumpan marketinškim akcijama te konstantnom potrebom za što većom prodajom, „buzzworde“ je potrebno provjeravati, odnosno analizirati, i nikako ne na prvu odbacivati. Naime, od mnoštva novih pojmova kojima nas zasipaju, dobar dio njih zaista predstavlja smjer o kojem treba razmišljati pri unaprjeđeniju svog poslovanja i bez kojeg se u budućnosti neće moći opstati.

Agilan do sržiOva tema broja daje kratki osvrt na dio njih

koji već i nisu novost, postoje na tržištu već neko vrijeme pa o njima možemo govoriti kao o trendu s kojim nećete pogriješiti ukoliko ga odlučite pratiti. Jedan od definitivno naj-korištenijih govori o metodološkom aspektu razvoja informacijskih sustava, a odnosni se na prihvaćanje principa agilnog razvoja, pri

kojem prihvaćamo stanje konstantnih promjena u odnosu na definirane zadatke kao nešto uo-bičajeno, čak i poželjno. Surađujući s brojnim našim tvrtkama, primjećujem veliku želju za primjenom agilnih metoda u razvoju, ali i velike probleme pri implementaciji. Neka vam članak i intervju s g. Zvonimirom Križem, predsjedni-

kom udruge Agile Hrvatska, da dodatan motiv i izvor informacija o tome. Uz ovu temu, DevOps je tema koja se sve više nameće na IT konferencijama, a čiji principi pokušavaju olakšati komunikaci-ju developera i sistemaša i prije svega proces isporuke proizvoda (engl. release management).

Od ostalih tema, nisam mo-gao ne dotaknuti se „clouda“, vezanim uz razvoj aplikacija pa je tu moguće naći i trend razvoja aplikacija na platfor-mama u oblaku (što dotiče jedan drugi trend koji možete naći u literaturi kao „trash your infrastructure“), razvoj više-klijentskih (engl. multitenant) aplikacija te upotrebu „Freemi-um“ modela, kako u igricama tako i u poslovnom svijetu. Za tvrtke koje imaju vlastitu informatičku podršku svakako preporučujem i odabir nekog od RAD (engl. Rapid Applica-tion Development) alata, što će im ubrzati stvaranje novih aplikacija koje imaju standar-dne funkcionalnosti i temelje se na višekorisničkom radu. Dio

ostalih trendova sadržan je u zadnjem članku teme broja pod nazivom „Buzz svuda oko nas“. Ovdje nije kraj jer temom broja nisu obuhvaćeni svi mogući trendovi koji su danas prisutni pri razvoju informacijskih sustava. Zato, istražujte, educirajte se, analizirajte te primijenite nešto od svega toga.

Ova infografika jasno pokazuje smjer u kojem se razvijaju buduće aplikacije

(Izv

or: I

DC)

novi brojevi dostupni istodobno s tiskanim izdanjima kupujte pojedinačna izdanja pretplatite se na 1 / 3 / 6 / 12 mjeseci BESPLATNO za pretplatnike tiskanog izdanja

Dosadašnje meto-dologije stalno su pokušavale mate-matički, procesno odnosno sustavno

definirati načine kako razvijati softver pa je iz toga proizašlo i nekoliko poznatih metoda po-put SSADM, Rational Unified Process ili, primjerice, našeg RIS-a. Svaka od njih nastala je nakon dugog promišljanja o postupcima razvoja te anali-tički pokušala dati set koraka, odnosno aktivnosti, koje su tipične u razvoju softvera. Nije to loše, iskustveno je i raznim istraživanjima dokazano da ne smijemo zanemariti analitički pristup i planiranje prilikom

TEMA BROJA

razvoja softvera, ali i pored to-ga, opet se susrećemo s nizom problema za koje pokušavamo naći odgovor. Neki od njih odnose se na nemogućnost detaljnog planiranja vremena razvoja pojedinog proizvoda, nerazumijevanje potreba i očekivanja krajnjih korisnika, velike troškove generiranja zapisa tijekom procesa razvoja i tako dalje.

Iz promišljanja o ovim pro-blemima, nastao je i skup principa, metoda i tehnika koje zajedničkim imenom može-mo nazvati agilnim razvojem. Temeljna značajka agilnog razvoja jest prihvaćanje činje-nice da „samo mijena stalna

jest“, odnosno da uz aktivnost planiranja razvoja nekog pro-izvoda (ne mora čak biti niti softver) prihvaćamo promjene kao nešto što je normalno i u konačnici dobro za proizvod. Naime, ukoliko promotrite bilo koju situaciju iz svoga života, primijetit ćete sličan obrazac. Nešto isplanirate, definirate vremenski okvir, troškove te ono što želite dobiti, ali se tijekom vremena neke od tih stvari i promjene. Nije da ni stare metodologije nisu imale uključenu komponentu uprav-ljanja promjenama u sebi, ali metode agilnog razvoja na ovo stavljaju glavni fokus.

Kaiiii zen!Današnje metode agilnog

razvoja izvorište nalaze u Ka-izen principu. Riječ Kaizen usvojena je iz japanskog jezi-ka, a odnosi se na filozofiju ili praksu usmjerenu kontinuira-nom poboljšanju proizvoda ili procesa proizvodnje. Kaizen, što zapravo znači „promjena je dobra“, korišten je u nekoliko japanskih tvrtki nakon Drugog svjetskog rata te je postigao

izvrsne rezultate kojima su japanske tvrtke stekle konku-rentsku prednost u odnosu na slične tvrtke iz SAD-a ili Euro-pe. Ovaj princip pretpostavlja kontinuirano poboljšanje u bilo kojoj aktivnosti procesa proizvodnje i bilo kada, od-nosno svakodnevno. Naravno da se ljudi, koliko god žele promjene, tome i odupiru te je najveći problem uvođenja Kaizen principa naučiti ljude prihvatiti kulturu svakodnevnog promišljanja o poboljšanju te prihvaćanjem promjena. U razgovoru s korisnicima koji žele implementirati neku od agilnih metodologija razvoja, ovo se pokazuje kao glavni i često nerješivi problem. Naj-gora je situacija u državnim, odnosno javnim, tvrtkama u kojima voditelji informatičkih organizacijskih jedinica nemaju niti mrkve niti batine, odnosno mehanizama kojima bi pota-kli usvajanje ovog „teškog“ principa.

Ukoliko se tvrtka i odluči na implementaciju nekih od agil-nih metoda, jedno od pitanja će biti i koju od postojećih me-toda koristiti, odnosno pokušati li izmisliti toplu vodu i agilne principe implementirati na „svoj“ način. Neke od poznatih metoda koje se pritom nude su, primjerice, Scrum ili Kanban te niz tehnika poput Extreme Programminga. Jedan članak je premalo za temu poput ove te je najbolje utipkati pojam „agil-ni razvoj“ u web preglednik te se tako o tome više informirati. U nastavku teksta donosimo i intervju s voditeljem udruge Agile Hrvatska koji daje još poneku informaciju više o tome kakvi su dojmovi pri upotrebi jedne od ovih metoda.

Ovaj „buzzword“ na kvadrat svima je poznat jer se o njemu mogu već čuti glasi i po kavanama, a kamoli ne u informatičkim kružocima. Na svakoj konferenciji u barem nekoliko prezentacija, zdušni zagovaratelji ovog principa rada pokušavaju nas uvjeriti da je to ono što napokon rješava goleme probleme koje danas susrećemo pri „tradicionalnom“ razvoju softvera

Živahno po kodu

Trendovi u razvoju sofTvera Agilni razvoj

MREŽA listopad 2014. 57

Agilne metode koje se danas često koriste pri razvoju softvera

Kanban metoda koristi „žive“ papiriće na crtaćoj ploči za upravljanje projektom. Softverski alati temeljeni na Kanbanu obično iscrtavaju papiriće kakvi bi bili na ploči

TEMA BROJA

Trendovi u razvoju sofTvera Agilni razvoj

Agilno ugovaranje

Ukoliko pokušavate uvesti metode agilnog razvoja u „internu“ informatiku, to i ne mora biti tako veliki problem. U tom slučaju imate jednog korisnika (po-slovni sektori vaše tvrtke) kojeg polako navikavate na nove procese koje ćete pritom uvesti. Problem nastaje ukoliko ste informatička tvrtka koja svoje uslu-ge razvoja softverskih proizvoda nudi na tržištu većoj skupini korisnika (npr. „custom development“ razvoj). Svaki od potencijalnih korisnika naučio je raditi na određeni način, često prema tradicionalnom “vodopad” principu te je vrlo teško nekome nametnuti svoj stil razmišljanja, pogotovo kad se radi o novim metodama koje još nisu potpuno prepoznate među širom sku-pinom korisnika. Još jedan problem je i sadržaj ugovora, u koji treba uglaviti Kaizen princip, a čije sastavljanje može predstavljati pravi izazov. Naime, kod tradicionalnog “vodopad” modela jasno se znaju tri glavne komponente ugovora: cijena (resursi), funkcionalnosti (opseg) i vrijeme.

Kod agilnog ugovaranja, često se kao fiksni parametar navode cijena i vrije-me, a funkcionalnosti se samo okvirno dogovaraju te su podložne stalnim pro-mjenama kako ih i zahtijeva metodolo-gija agilnog razvoja. Agilnim ugovorom ne specificiraju se detalji razvoja, već se mnogo toga ostavlja na upravljanje projektnom timu. Kontrola se osigurava kontinuiranom komunikacijom u strogo definiranom načinu odlučivanja, suklad-no dogovorenoj strukturi tima. Možemo reći da su neki od ključnih preduvjeta da bi se s korisnikom ugovorila agilna metodologija razvoja - dobro pozna-vanje infrastrukture korisnika, visoka razina međusobnog povjerenja te struč-nost ljudi koji će raditi s obje strane, a koji su donekle upoznati s prednostima agilnog razvoja.

58 listopad 2014. MREŽA

Toyotin princip - odavde je sve krenulo. Mnogi su pokušavali kopirati ustrojstvo Toyote, iz čega su proizašle mnoge agilne metode

InTervju ZvoniMiR KRiŽ

Scrum metoda se lako može pretočiti u

softversku aplikaciju za lakše upravljanje. Na slici

je prikazana samo jedna od mnogo njih

Razgovarali smo s jednim od zdušnih promicatelja agilnog razvoja u Hrvata, g. Zvonimirom Križom, predsjednikom udruge Agile Hrvatska. Dobili smo zanimljive odgovore na pitanja koja muče većinu IT voditelja, a prije svega - kako uspostaviti proces agilnog razvoja u svojoj organizaciji. Kao ni za sve drugo u životu, ni ovdje nema jednostavnog odgovora osim - polako, ustrajno, metodološki, uz veliku podršku uprave

Kako biste opisali ustrojstvo razvojnog odjela u vašoj organizaciji (nap.a. Privredna banka Zagreb) i može li se reći da koristite agilne principe razvoja?

U dijelu organizacije koji se bavi razvojem većih aplikacija poput šalterske, internetskog bankarstva i sl., organizirani smo po timovima, i to tako da svaki tim pokriva po jednu aplikaciju. Radi se o timovima sa 4-10 članova. Kod ovakve organizacije osobito je važno pobrinuti se da vam struktura tima omogućuje što veću autonomiju tima pri obavljanju poslova iz svog djelokruga, jer je to važan preduvjet primjene nekih agilnih principa i metoda.

Timovi su također i samoorganizirajući. Ovako, na brzinu, ne može se objasniti puno značenje tog pojma, ali moglo bi se reći da se radi o načinu organizacije posla kada članovi tima na sebe potpuno preuzimaju poslove mikro managementa tijekom razvoja softvera.

Dakle, temelj naše sadašnje organizacije su agilni, autonomni, samoorganizirajući timovi. Trenutno imamo 6 takvih timova. Koordinacija posla između tih timova, na razini portfelja, također se temelji na agilnim metodama.

Vraćajući se unazad, kako je došlo do tog ustrojstva i zašto?Naš put je bio evolutivan. Negdje krajem 2009. godine, uočili

smo kako su intenzitet i brzina promjena na koje treba reagirati narasli u tolikoj mjeri da nam dotadašnji način rada više nije bio dovoljno dobar. Počeli smo istraživati postoje li rješenja za te situacije, pa smo shvatili da je agilni razvoj upravo i nastao zbog problema kakve smo mi imali i kako nam primjena tih načela i metoda možda može pomoći.

Odlučili smo tih dana na jednom našem proizvodu tijekom tri mjeseca isprobati Scrum i usporediti rezultate iz prethodna tri mjeseca. Rezultat je nakon tog pilot-projekta bio odličan, pa smo jednostavno nastavili u tom smjeru. S vremenom smo na takav način rada prebacivali sve više timova, intenzivno smo učili, prilagođavali se, itd. Ta tranzicija na agilni razvoj događala se postupno i prirodno.

Ne želim reći da je ovakav, evolutivan način bolji od nekog sveobuhvatnog projekta tranzicije cijele organizacije, nego samo konstatiram da se kod nas tako događalo. Rekao bih da oba načina mogu biti uspješna, ali također i neuspješna, ako im se ne pristupi ispravno.

Zašto koristite Scrum, a ne neku drugu metodu, i je li to bitno?Ne koristimo samo Scrum. U posljednjih godinu dana uspješno

koristimo i metodu Kanban u upravljanju portfeljom razvoja za sve retail aplikacije. Dakle, taj Kanban dio na je neki način organizacijski iznad ovih Scrum timova koje sam spominjao. Također, dijelove Kanbana koristimo i unutar Scrum procesa.

Općenito, vodimo se idejom da poznajemo i primjenjujemo agilne principe, a tek potom biramo odgovarajuće prakse. Izbor

MREŽA listopad 2014. 59

između pojedinih metoda, poput Scruma ili Kanbana ili neke treće metode, važan je kao što je važno da ako želite nešto prerezati izaberete nož, a ne žlicu. No, kao preduvjet odabira metode nužno je dubinsko poznavanje agilnih principa i onoga što nam njihova implementacija donosi.

Možete li nabrojati pet najvećih koristi koje ste dobili otkad koristite agilne metode razvoja?Bilo je tu mnogo koristi, ali ako bih se baš morao odlučiti za pet najvažnijih, onda ovako:

brža i bolja reakcija na promjene zahtjeva

veća kvaliteta krajnjeg proizvoda

veća produktivnost i učinkovitost

bolja suradnja između poslovnog dijela organizacije i IT-a

ugodnija radna atmosfera

Pored koristi, sigurno postoje i problemi prilikom njenog korištenja. Koje su bile najveće zapreke prilikom njenog uvođenja te na kakve probleme nailazite sada?

Može zvučati čudno, ali najveća zapreka uvođenju agilnosti u proces razvoja softvera neke organizacije je organizacija sama. Preciznije rečeno, najveća zapreka smo mi, ljudi koji činimo tu organizaciju. Nipošto ovo ne govorim u nekom optuživačkom smislu, nego zato što se ljudi prirodno odupiru promjenama u načinu rada. Kao i kod svake važne promjene, boje se potencijalnih negativnih posljedica za njih same i za organizaciju. Organizacijske i kulturološke promjene korporacije koja usvaja principe agilnog razvoja su često vrlo korjenite, pa je onda i otpor često velik.

Ako ćete biti predvodnik uvođenja takvih promjena, morate što prije shvatiti da je otpor na koji ćete nailaziti potpuno očekivan i normalan. Što prije to shvatite, lakše ćete se s tim otporom boriti. Vaša glavna oružja u toj borbi moraju biti argumenti, mjerenja, prilagodljivost i osobno prakticiranje onoga što želite od drugih. S vremenom će organizacija postajati zrelija i agilnija, pa će otpor slabiti, ali će ga uvijek u nekoj mjeri biti.

Osim toga, postojat će i neke prepreke na koje nećete moći utjecati (npr. neke regulative i sl.), pa ćete se morati prilagoditi. Postoji izreka Agile is an art of possible. Dakle, agilnost neke organizacije nikad ne treba shvatiti kao sve ili ništa, nego se truditi postići što više u uvjetima koji postoje.

Čelnik ste udruge Agile Hrvatska. Koliko članova imate i koji su temeljni ciljevi te udruge? Kako Hrvatska stoji s implementacijom agilnih metoda u odnosu na zemlje u okruženju?

Udruga Agile Hrvatska (nap.a. Agile Croatia u internacionalnoj komunikaciji) osnovana je prije nešto više od tri godine, s ciljem promicanja agilnih i lean principa u Hrvatskoj, ali i u cijeloj regiji. Organizacijom raznih događaja pružamo zainteresiranima mogućnost da o agilnom razvoju uče međusobnom suradnjom i od najvećih svjetskih autoriteta s tog područja. Posebno smo ponosni na našu Agile Adria godišnju konferenciju, koja je najveća konferencija toga tipa u jugoistočnoj Europi. Na posljednjoj našoj konferenciji, u travnju ove godine, imali smo ljude iz 15-tak zemalja.

Grupa ljudi koja prati aktivnosti Udruge u trenutku ovog intervjua broji 404 člana i stalno se povećava. To je jedna solidna zajednica iz koje crpimo povratne informacije i ideje za daljnje akcije.

Što se tiče usporedbi s regijom, to je malo nezahvalno jer možda nemamo svi isto poimanje što ta regija obuhvaća :). Imamo vlastito istraživanje za Hrvatsku koje pokazuje značajan napredak u primjeni agilnih metoda, ali nemamo slične podatke za okolne zemlje, pa se u usporedbi nemamo za što konkretno uhvatiti. Jedino što na kraju preostaje je neka subjektivna procjena, a moj je dojam da smo, prema zrelosti i količini primjene agilnih metoda, jedna od vodećih ili vodeća zemlja u regiji.

Navedite ukratko nekoliko savjeta za sve one koji tek kreću u implementaciju agilnih metoda razvoja softvera! Na što trebaju obratiti najviše pozornosti?

Vjerojatno je dosta vaših čitatelja to već čulo, ali ponovit ću: Ne možete kupiti agile. Istinsko razumijevanje agilnih principa postiže se njihovom primjenom. Dakle, morat ćete se odvažiti i krenuti. Budući da iskustvo igra iznimno važnu ulogu u ovom slučaju, bit će od velike koristi ako možete angažirati nekoga da vas savjetuje i korigira na tom putu. No, budite oprezni pri izboru konzultanta. Takva osoba mora imati dubinsko poznavanje agilnih principa i praksi te iskustvo u primjeni.

Neću reći niti ništa novo ako kažem da vam treba i podrška managementa. Mi u PBZ-u imali smo tu sreću da smo imali i imamo zaista punu podršku u tom smislu. U uvjeravanju managementa ne morate im nužno objašnjavati detalje implementacije pojedinih agilnih metoda, nego se koncentrirajte na objašnjavanje koje konkretne probleme želite riješiti te na koji način agilni principi i prakse pozitivno utječu na rješavanje tih vaših problema. Također, tijekom tranzicije, intenzivno dijelite pozitivna iskustva s managementom koji vas podržava, tako da zadržite ili ojačate tu podršku.

I na kraju - treba znati da je tranzicija na agile primarno promjena ljudskog ponašanja i djelovanja, a tek potom promjena procesa. Kako bi stvar u potpunosti funkcionirala, bit će potrebno većinu ljudi uvjeriti da radite ispravnu stvar.

60 listopad 2014. MREŽA

TEMA BROJA

Trendovi u razvoju sofTvera DevOps

Kako pomiriti vječno suparništvo među

developerima i sistemašima, ključno je

pitanje mnogim voditeljima informatike. Kako će

desnica znati što mu radi ljevica i obrnuto, odnosno

kako glatko napraviti prijelaz u aktivnostima koje rade

developeri i sistemaši, trudi se pojasniti DevOps,

kovanica koju sve češće čujemo na konferencijama

kojima je glavna tema razvoj softvera

Svi u ‘đuture’D

evOps je još jedna od riječnih tvorbi koja se trudi zadobiti svoje mjesto pod suncem ra-zvoja informacijskih sustava, a jednostavno se radi o skraćenici

od procesa razvoja i operacija (engl. Deve-lopment & Operations). Uz ova dva procesa, ako ćemo ih promatrati kao procese, dolazi i treći koji ulazi u ono što podrazumijevamo pod DevOpsom, a to je osiguranje kvalitete (engl. Quality Assurance). Tko je smislio ovu tvorbu i o čemu se zapravo radi? Početke DevOps pravca (nećemo više govoriti o „ri-ječnoj tvorbi“) možemo naći kod Belgijca g. Patricka Deboisa koji je radeći u svojoj tvrtki kao IT stručnjak zatekao mnoge probleme u razvoju informacijskih sustava, od kojih je veliki broj otpadao na komunikacijske te probleme nerazumijevanja ciljeva među razvojnim i sistemskim inženjerima. Od tada je cijelo vrijeme pokušavao naći način kako da te probleme smanji te je u suradnji s još jednim kolegom 2009. pokrenuo konferen-ciju DevOpsDays koja se održala u Belgiji te okupila mnogo IT stručnjaka baš oko tog problema. Nakon toga DevOps pojam širio se velikom brzinom te ćete danas, ukoliko u Google utipkate pojam DevOps, dobiti oko 2,5 milijuna referentnih web stranica.

Najkraća definicija ovog pravca govori o DevOpsu kao softverskoj razvojnoj metodi koja naglašava komunikaciju, kolaboraciju i integraciju između razvojnih softverskih inženjera (nap.a. programera) i sistemskih inženjera (nap.a. sistemaša). Radi se o skupu tehnika koje rezultiraju kvalitetnim kontinui-ranim razvojem i isporukama. Od 2009. pa do danas na ovu temu je napisano mnogo članaka, blogova te osnovano mnogo udruga koje promiču DevOps pravac. Kako će se moći zapaziti u ovoj temi broja, niti jedan od opisanih pravaca ili metoda ne treba promatrati kao odvojeni proces koji nema dodirnih točaka s drugima. Zapravo je dosta tehnika u DevOpsu nastalo korištenjem agil-nih metoda razvoja i strateškog pogleda na razvoj informacijskih sustava (engl. Enterprise Systems Management).

Promicanje komunikacije i automatizacije

DevOps promovira skup procesa i tehnika kako po-boljšati komunikaciju među raznim organizacijskim IT jedinicama, odnosno radnim mjestima. Danas je čest slu-čaj da programeri i sistemaši ne sjede zajedno u istom

prostoru, i premda ih se može skupiti u okviru nekog projektnog tima, komunikacija je nerijetko spora i slaba, nepotpomognuta zajedničkim razvojnim i operacijskim ala-tima. DevOps ovdje vidi veliki prostor za poboljšanje te forsira upotrebu kolaboracij-skih alata i zajedničkih razvojnih alata (vidi okvir uz tekst) čije parametre prate i jedni i drugi. Zbog ovoga su svađe među raznim projektnim ulogama rjeđe, a prekovremeni rad znatno smanjen, što rezultira češćim isporukama s osjetno manje pogrešaka nego što je uobičajeno (uoči sličnost s agilnim metodama razvoja).

Ovakav način rada podrazumijeva da se mnoge razvojne aktivnosti, koje bi se inače ručno radile, automatiziraju. Ovo su pre-poznale mnoge tvrtke te počele izbacivati razne softverske alate koje se diče DevOps funkcionalnostima, a većina njih pomaže u automatiziranju procesa isporučivanja (engl. release management), upravljanju konfigu-racijama (engl. configuration management) i nadzoru rada isporučenih proizvoda. Kako bi se komunikacijski problemi sveli na nulu, neki su se dosjetili programere i sistemaše smjestiti u istu osobu - tzv. DevOps inženjera. Ovo je, čini se, sudeći prema broju traženih radnih mjesta, novi naziv zanimanja koje će se uskoro pojaviti na našim portalima za zapošljavanje. Ovo nije ništa drugo nego nešto specifičniji naziv za nekoga tko je bio „IT mali od kuži-ne“, odnosno osoba koja zna mnogo toga o razvoju informacijskih sustava, ali tehnički vrlo potkovan u radu s mnogim platformama. Neke od uloga koje takvoj osobi dodjeljuje DevOps su razvoj novih softverskih funkcionalnosti, in-stalacija i konfiguriranje virtualnih poslužitelja, nadzor rada aplikacija i operativnih sustava u obliku praćenja performansi i kapaciteta, uloga help-desk operatera i prve linije odgovora na greške i zahtjeve u softveru i sl. Ovakav način podjele uloga i odgovornosti otežava usposta-vu IT procesa sukladno dobrim praksama kako ih definiraju mnogi poznati ICT standardi, ali mnogo utječu na učinkovitost i kvalitetu ispo-ruka, što je zapravo i temeljni cilj IT podrške u bilo kojoj organizaciji.

Tri ključne komponente DevOps pravca su razvoj, operacije i osiguranje kvalitete

Prepoznajete li se među sljedećim tvrdnjama? Ako da, budite DevOps!

Jedan od ključnih problema koje naglašava DevOps. Napomena: Uloge je moguće slično zamijeniti!(I

zvor

: CA)

MREŽA listopad 2014. 61

AlAt Web NApomeNA

Hudson

http://hudson-ci.org/

Hudson se predstavlja kao open source “continuous integration” (CI) poslužitelj. To znači da može raditi razne stvari poput:

“check-out/in“ izvornog koda automatska gradnja (build) i testiranja softvera dokumentacija rezultata komuniciranje rezultata među raznim članovima

tima i još puno toga

Cucumber

http://cukes.info/

Cucumber omogućuje razvojnim timovima da u čistom tekstu opišu kako bi se njihov softver trebao ponašati. Tekst se piše u jeziku razumljivom poslovnim korisnicima i služi kao dokumentacija, automatizirani testovi i podrška razvojnom timu, sve u jednom.Cucumber radi s raznim jezicima: Ruby, Java, .NET, Flex ili web aplikacije pisane u bilo kojem jeziku.

puppet

http://puppetlabs.com/solutions/devops

Alat za automatizaciju koji definira i osigurava konzistentno stanje IT infrastrukture tijekom cijelog životnog ciklusa razvoja softvera. Osim toga, moguće ga je koristiti i za simulacije rada informacijskog sustava jednostavnim izmjenama parametara.

Chef

http://www.getchef.com/

Chef je platforma za automatizaciju koja transformira infrastrukturu u softverski kod. Pri upotrebi Chefa prestajete razmišljati o fizičkim i virtualnim poslužiteljima te jednostavno pišete konfiguracijske „recepte“ za IT servise poput Apachea, MySQL-a ili Hadoopa. Koriste ga brojne velike tvrtke poput Facebooka ili Amazona.

Flapjack

http://flapjack.io/

Flapjack „sjedi“ povrh postojećih nadzornih alata poput Nagiosa ili Sensua, obrađuje događaje i utvrđuje pogreške. Pruža vrlo jak sustav za dojavu događaja odgovornim djelatnicima. Konfigurabilan je preko dobro definiranog API-ja, čime se lako integrira s vašim postojećim platformama.

Alati za DevOpsDevOps područje danas pokriva mnogo alata, od kojih je velika većina besplatna, odnosno pokrivena nekom od „open-source“ licenci. U tablici je navedeno nekoliko alata koji čak i ne pokrivaju potpuno iste funkcio-nalnosti te je neke od njih moguće koristiti u radu i zajedno (npr. Hudson, Puppet i Cucumber). U osnovi, radi se o alatima koji uvode automatizam u proces isporuke rješenja „release management“ s jače razrađenom dokumenta-cijskom stranom te mogućnošću komunikacije developera i sistemaša.

62 listopad 2014. MREŽA

TEMA BROJA

Trendovi u razvoju sofTvera Rapid Application Development

Zaboravite na papirnate obrasce i kolanje

papirnate dokumentacije! Ubrzajte poslovne

procese upotrebom softvera! Kako biste

to postigli, trebate isprogramirati veći broj

aplikacija/modula. Ništa lakše uz upotrebu alata za

brzi razvoj aplikacija

Kada govorimo o razvoju apli-kacija s alatima (okvirima) za njihov brzi razvoj (engl. RAD - rapid application de-velopment), nisam siguran

možemo li baš govoriti o novom trendu u razvoju informacijskih sustava, s obzirom na to da takvi alati na tržištu postoje već duže vrijeme. Možda ne o novome, ali trendu svakako. S pojavom sve većeg broja raznih regulatornih obveza i normi u po-dručju informacijskih sustava, uočavaju se

pojedini IT procesi koje tvrtke moraju implementirati, a koje dosad najčešće nisu imale podržane softverskom aplika-cijom. Pa kad još dođu i kon-zultanti koji „istovare“ brdo pisanih pravilnika, procedura, radnih uputa i obrazaca u Word obliku, tvrtka se vrlo brzo nađe zatrpana papirolo-gijom, koja nešto što je prije funkcioniralo dobro, pretvori u spore, neučinkovite i muč-ne aktivnosti za sve korisnike. A sve u svrhu kreiranja zapisa koji će poslužiti kao dokaz revizorima. Naravno, vjero-jatno prepoznajete o kojim se procesima radi: upravlja-nje promjenama, upravljanje incidentima, upravljanje kori-sničkim pravima pristupa i sl.

Svi ovakvi, ali i drugi „po-slovni“ procesi poput uprav-ljanja putnim nalozima, ter-minima godišnjih odmora, nabavkom potrošnog i/ili marketinškog materijala i slič-ni, a koji imaju relativno jed-nostavne tijekove podataka (zahtjev, analiza, odobrenje, zatvaranje zahtjeva, izvješta-vanje) idealni su kandidati za preseljenje u baze podataka, a njihove aktivnosti čim prije

bi trebalo podržati nekom softverskom aplikacijom. Premda postoji brdo aplika-cija za ove tipične procese, tvrtke često imaju neke specifičnosti koje je teže implementirati u okviru gotovih rješenja, pa je stoga najbolji način izrada vlastitih. Za ovu potrebu sve se više koriste alati odnosno okviri (engl. framework) za brzu izradu aplikacija s kojima u praktički neko-liko dana, često bez ijedne ručno tipkane linije koda, dobijete potpuno funkcionalnu aplikaciju.

Dizajner za kreiranje formi za unos podataka - AlphaFive

CodeOnTime jedan je od alata koji autor teme broja koristi za izradu svojih aplikacija

Brzina je vrlina

MREŽA listopad 2014. 63

Nacrtaj i koristiTeško je generalizirati i unificirati RAD

alate jer se pod ovom skraćenicom po-drazumijevaju alati koji koriste različite metode i platforme za kreiranje krajnjeg proizvoda - aplikacije. Podjela ima mnogo i prema različitim kriterijima, a u okviru ove teme broja istaknut ćemo samo dvije vrste koje se danas najčešće koriste: oni kojima „crtamo“ proces na temelju kojeg alat ručno generira kod, sučelje i bazu podataka („process driven RAD“) te oni koji na temelju definiranog relacijskog modela baze kreiraju kod i sučelje („database driven RAD“).

Temeljna značajka prve grupe je da sadržavaju radnu plohu na kojoj crtate procese u obliku aktivnosti, podataka koji će se unositi u okviru pojedine aktivnosti, zahtjeve nad validacijom podataka, tijek procesa i uloge u obav-ljanju pojedine aktivnosti, nakon čega alat sam kreira forme za unos, relacijski model baze podataka (ili neki drugi temelj za pohranu podataka, ako nije u pitanju relacijska baza) i kod koji uprav-lja tijekom podataka. Nakon kreirane aplikacije, vaše je da ju samo postavite na neki od poslužitelja i možete početi s radom. Za neke jednostavnije proce-se praktički je moguće imati aplikaciju gotovu u roku jednog dana, ali ukoliko postoje neke veće specifičnosti, bit će potrebno doprogramirati kod. Ovi alati Nacrtajte proces te ga pretvorite u aplikaciju s BizAgi alatom

Poslovni procesi idealni kandidati za korištenje RAD alata

definiramo u relacijskoj bazi podata-ka (npr. ukoliko već koristite MS SQL Server, Oracle, MySQL ili neku drugu bazu), a alat sam kreira generičke forme za temeljne aktivnosti rada s podacima

pokušavaju preslikati praksu u softver jer ne krećete od tehnološke platforme, već od dizajniranja samog procesa.

Kod druge vrste ne krećemo od modela procesa, već od modela podataka koji

NOVO

Čitajte Mrežu na osobnim računalima i tabletimas Windows 8.1 operacijskim sustavom!

novi brojevi dostupni istodobno s tiskanim izdanjima kupujte pojedinačna izdanja pretplatite se na 3 / 6 / 12 mjeseci BESPLATNO za pretplatnike tiskanog izdanja

www.bug.hr/winstore

MREŽA listopad 2014. 65

TEMA BROJA

Trendovi u razvoju sofTvera Rapid Application Development

AlAt Web NApomeNA

Alpha Five http://www.alphasoftware.com/Brzi razvoj aplikacija temeljenih na relacijskom modelu baze. Izrađuje HTML 5 kod za web aplikacije.

DaDabIK http://www.dadabik.org/

Namijenjen brzoj izradi sučelja za temeljne aktivnosti nad tablicama (CRUD) bez potrebe za kodiranjem. Podržane baze su: MySQL, PostgreSQL and SQLite.

nubuilder https://www.nubuilder.net/Alat za brzi razvoj web aplikacija korištenjem tehnologija PHP, Javascript, SQL, AJAX, JQuery i JSON.

bizAgi http://www.bizagi.com/Automatiziranje procesa tako da nacrtate procese, a alat sam kreira forme za unos te kod koji osigurava tijek procesa.

bonita http://www.bonitasoft.com/Bonita poboljšava operativne procese kreirajući aplikacije na temelju dizajna procesa.

ZoHo http://www.zoho.com/

Cloud bazirani paket koji koristi razne predloške kreiranja web aplikacija („word processing, spreadsheets, presentations, databases, note-taking, wikis, customer relationship management, project management, invoicing“) koje je razvila ZOHO korporacija.

WinDevWebDev http://www.windev.com/

Ova dva alata kreiraju desktop i web aplikacije na temelju relacijske baze podataka. Aplikacije su kreirane u Javi te na .Net platformi.

CodeCharge Studio http://www.codecharge.com/index2.php

Brzi razvoj aplikacija uz pomoć integriranog razvojnog sučelja baziranih na relacijskim bazama podataka. Sadrži velik broj predložaka.

Caspio http://www.caspio.com/„Platform-as-a-service“ okvir koji koristi „čarobnjake“ za kreiranje punokrvnih web aplikacija.

Codeontime http://codeontime.com/

Brzo razvijanje „line-of-business“ web aplikacija za mobilne i desktop korisnike na temelju baze podataka. Koristi ASP.NET, Windows Azure, SharePoint, and DotNetNuke temelj za izradu aplikacija.

Iron Speed http://www.ironspeed.com/

Iron Speed Designer kreira vizualno lijepe i bogate .NET Web aplikacije koje je lako doraditi i parametrizirati. Kreira C# i Visual Basic kod.

Alati za RADSljedeća tablica daje brzi uvid u neke od RAD alata koje sam i ja imao prilike kori-stiti. U tablici nema popularnih razvojnih alata koji nisu usko vezani uz ovaj članak, premda sadrže funkcionalnosti brzog ra-zvoja alata (npr. Oracle APEX, MS Visual

Studio, IBM Rational Business Developer i sl.). Također, nema ni alata, odnosno okvi-ra, koji ne kreiraju gotove aplikacije za korištenje, već se koriste kao međufaza za kreiranje dijelova koda (npr. CodeSmith, MyGeneration i sl.).

(unos, izmjena, brisanje) temeljene na tablicama u bazi, pritom uzimajući u obzir definirane referencijalne integri-tete nad podacima i sl. Tijek podataka često nije moguće „nacrtati“, već ćete to morati naknadno postići kombiniranjem raznih parametara unutar alata ili dodat-nim programiranjem kreiranoga koda. Prednost ovakvih alata u odnosu na prvu grupu je to što imate veću kontrolu nad relacijskim modelom u bazi i pro-gramskim kodom, ali zato imate manje opcija prilikom kreiranja tijeka podataka te su općenito teži za korištenje običnim korisnicima. Također je nešto lakše do-programirati specifičnosti, što kod prve grupe alata nekad nije moguće izvesti.

Klik tu, klik tamo, aplikacija gotova

Temeljno načelo na kojima ovi alati počivaju jest da za izradu softverske aplikacije nije potrebno imati većeg pro-gramerskog znanja. Zbog ove premise, ovi alati moraju biti napravljeni tako da podržavaju najčešće scenarije korište-nja pa su stoga idealni za jednostavne, tipične procese, ali padaju na testu kompliciranih procesa koje je potrebno dodatno programirati. Kako ovi alati imaju svoje metodologije prema kojima rade te su vrlo parametrizirani, osoba koja ih koristi treba potrošiti malo duže vremena da nauči sve trikove, odnosno parametre koje su zamislili tvorci alata, što često nije trivijalno. Stoga je za upo-trebu ovakvih alata potrebna strateška odluka tvrtke koja će u obzir uzeti više faktora. Jedan od njih svakako je broj aplikacija/procesa koji se misle pokriti. Premda će se za prvu aplikaciju/proces potrošiti malo više vremena za učenje i testiranje, već sljedeća će biti gotova u vrlo kratkom vremenu. Drugi faktor je novac. Neki od alata su besplatni, ali imaju ograničenja na besplatnu verziju te će biti potrebno nešto i platiti kako bi se mogle iskoristiti sve opcije koje se nude. Treći faktor je arhitektura/plat-forma tako kreiranih aplikacija. Mora se uzeti u obzir da će ove aplikacije trebati održavati, pa je stoga potrebno

vidjeti kolika se ovisnost stvara o samim alatima i njihovim proizvođačima. Neki alati kreiraju kod koji je dalje moguće održavati i bez samog alata.

Osobno koristim jedan od takvih alata već neko vrijeme, a isprobao sam ih do-sta u proteklih nekoliko godina. Premda ponekad ograničavaju u pojedinim zami-slima, nakon početnog razdoblja učenja korištenja, oni su idealni za pretvaranje raznih Excelica i sličnih datoteka koje na-dilaze početnu svrhu za koju su korištene,

u punokrvne višekorisničke aplikacije. Glavna ideja je to da se maknemo od papirologije i zapise prenesemo u bazu, a proces ubrzamo te eliminiramo temeljne nedostatke „Excel-like“ datoteka, poput otežanog višekorisničkog rada, verzio-niranja podataka, brzog izvještavanja iz relacijskog modela i sl. Premda jedna od mojih krilatica „Excel rulez“, potreb-no je na vrijeme prepoznati probleme neučinkovitosti procesa te ih pokušati automatizirati.

66 listopad 2014. MREŽA

TEMA BROJA

Trendovi u razvoju sofTvera Cloud

Jednostavno ne možemo a da ne dotaknemo

oblake. Koliko god se trudili ostaviti to za

neku drugu temu broja, oblak se jednostavno

proteže kroz sve pore IT industrije. Ovaj i sljedeći

članak govore o tome što cloud paradigma donosi u

svijet razvoja aplikacija

Uletite u oblakU neka prošla vremena, aplikacije

su se češće radile za pozna-tog korisnika prema njegovim specifičnim željama, odnosno potrebama (tzv. „custom deve-

lopment“). Pritom je nakon završetka izrade aplikacije nju jednostavno trebalo instalirati na korisnikovu infrastrukturu i konfigurirati. Ukoliko je proizvod pokrivao neko područje ili procese koji su slični i u ostalim organiza-cijama, mogli smo ga jednostavno doraditi (parametrizirati) tako da se može prodati na više mjesta uz sitnije dorade i podešavanje konfiguracijskih parametara. Ali i tada se radi-lo o instalaciji na infrastrukturu korisnika, bila ona desktop ili web aplikacija. Tada nismo morali previše razmišljati o situaciji da će tu aplikaciju na istoj infrastrukturi morati koristiti više različitih korisnika (tvrtki).

Danas je situacija takva da pri razvoju apli-kacija unaprijed razmišljamo o tome da će ju moći koristiti više korisnika (tvrtki), i to iz cijeloga svijeta, a ona bi se izvodila na našim ili možda zakupljenim poslužiteljima koji su pod našom kontrolom. Ovaj model zovemo „Software as a Service“ i sve je popularniji među korisnicima koji polako zapažaju sve prednosti koje ovakav model donosi. Kako vrijeme odmiče, softverske tvrtke sve manje aplikacija razvijaju kao “standalone” aplikacije koje će se koristiti samo na infra-strukturi korisnika (neke aplikacije ipak zbog specifične primjene ne mogu ići u cloud), već pokušavaju uvijek misliti na globalno tržište kao ogromnog potencijalnog kupca. Pri tome mogu biti jeftiniji, a zakonom velikih brojki mogu doći do značajne zarade koju možda ne bi mogli ostvariti prodajom aplikacije na ograničenom broju mjesta. Gotovo možemo reći da je danas nuđenje takvih aplikacija „must-have“. Uostalom, pogledajte koliki novac zarađuju tvrtke s proizvodima poput Facebooka, Google appsa, Microsoft Officea 365 i sl.

Uzmi besplatno pa se navuci

Drugi trend koji je danas sve više prisutan velik je uspjeh doži-vio poplavom mobil-nih aplikacija (najviše

igara) za razne vrste mobilnih uređaja, bilo da su oni na Androidu, IOS-u ili nekoj drugoj platformi, a svodi se na besplatno preuzimanje osnovne inačice aplikacije te mogućnost nadogradnje i kupovanja ostalih funkcionalnosti prema potrebi. Premda je ovakav pristup bio poznat i ranije, relativno nedavno je postao poznat pod pojmom freemium. Naime, cilj je korisnika navući da instalira aplikaciju, počne ju koristiti i onda mu suptilno nuditi funkcionalnosti i prečace za korištenje po sitnijim iznosima koje korisnik neće osjetiti kao veliki udar na njegov džep. Ovome modelu su definitivno kumovali brojni psiholozi koji proučavaju čovjekovo ponašanje i koji su kao konzultanti prisutni prilikom razvoja takvih aplikacija. Ovaj model se masovno koristi u igricama, ali sve više prelazi i u domenu poslovnih aplikacija, čiji su proizvođači shvatili kako tu i nema neke velike razlike i da se taj model bez problema može koristiti i u njihovom slučaju. Kako bi se model dodatno razradio, nije zgorega koristiti i još jednu psihološku odliku ljudskog ponašanja, tzv. „skupi ih sve“ frazu, po kojoj čovjek jednostavno ima nagon da nešto skuplja. Probajte razlomiti aplikaciju na više modula ili podaplikacija, zašarenite ih ikonama i raznim bojama te ih prodajte odvojeno za više novca nego što biste ih prodavali skupno. Stvar jednostavno funkcionira.

Arhitektura višeklijentske aplikacije

Jedan od problema u slučaju nuđenja aplikacije u oblaku za više korisnika (tvrtki/klijenata) jest koji arhitekturalni model uzeti prilikom razvoja aplikacije. Ovo je poznato pod pojmom multi-tenant arhitektura pri kojoj moramo odlučiti na koji ćemo način razdvajati podatke i pristupe podacima raznih korisnika koji koriste našu „SaaS“ aplikaciju. Naime, nekad davno stvar je bila jednostav-na, jedan korisnik - jedna baza. Danas se moramo odlučiti za jedan od modela multi-tenant arhitekture pri kojoj se odlučujemo gdje odvajamo korisnike - na razini instance aplikacije, instance baze, instance pojedine

Danas razvijamo aplikacije tako da ih mogu koristiti svi korisnici na globalnom tržištu i sa svih mogućih platformi

Modeli multi-tenant arhitekture aplikacije pri kojima moramo odabrati kako ćemo odvajati podatke i pristup podacima raznih korisnika/klijenata(I

zvor

: E-C

om C

anad

a In

c.)

RAzvOj u clouduKako bi priča o cloudu bila zaokružena, osim samih aplikacija koje nudimo korisniku, danas je prisutan i razvoj aplikacija direktno u cloudu (npr. koristeći platformu Zoho) ili koristeći razvojne okoline koje su u cloudu. Posljednji primjer takve okoline je i Microsoftov Visual Studio Online, kojem se pristupa web preglednikom te ga je time moguće pokrenuti s raznih lokacija, a ne samo na jednom računalu. Ne moramo ni

MREŽA listopad 2014. 67

tablice u bazi podataka itd. Slika u prilogu daje primjer razdvajanja podataka i pristupa podacima na razini baza, shema baza i samih tablica.

Osim razdvajanja na razini baza, trebamo razmotriti i razdvajanje na razini sučelja pa je, primjerice, moguće web aplikacije raz-dvojiti na posebne instance „sajta“ aplikacije (npr. posebni „sajtovi“ za svakog korisnika), na razini aplikacije unutar istog „sajta“ ili ko-risteći istu aplikaciju unutar koje programski rješavamo pristup korisnika samo njihovim podacima. Sve opcije je potrebno pažljivo razmotriti, a posebno sa stajališta povjerlji-vosti podataka. Najmanje što želimo je to da se naši korisnici zbog greške u programiranju „slučajno“ zakače za tuđe podatke!

Responzivni dizajnResponzivni dizajn je već bio obrađen u

jednoj od prošlih tema broja ovog časopisa, ali u sklopu ove teme nemoguće ga je zaobići te je bitno ponoviti nekoliko napomena ve-zanih uz ovaj termin. Kako je i prije rečeno, unificirano sučelje s fiksnom razlučivosti i rasporedom elemenata sučelja u doba da-našnje diverzificiranosti korištenih uređaja i platformi, jednostavno više nije dovoljno. Ukoliko će aplikaciju koristiti veći broj ljudi, pri čemu nema ograničenja na tip uređaja preko kojeg se aplikacija koristi, moramo razmisliti o izgradnji sučelja tako da se ono automatski prilagođava tipu uređaja koji aplikaciju koristi. Nije isto gledati tablicu s gomilom podataka na velikom uredskom monitoru ili manjem mobilnom uređaju, te je u tom slučaju potrebno prilagoditi prikaz vodeći računa o razlučivosti i funkcionalnosti uređaja.

Ukoliko govorimo o razlučivosti i veličini ekrana, moguće je, primjerice, za mobilne uređaje promijeniti broj kolona tablice ili veličinu fonta kako se korisnik ne bi trebao naprezati čitajući ili pogađati mjesto gdje prstom treba kliknuti na neku od tipki. Osim toga, pametni mobilni uređaji i tableti konstruirani su da se skrol po ekranu radi povlačenjem prstima po ekranu, za razliku od ekrana monitora, gdje moramo klikati mišem na elemente sučelja (npr. treba maknuti pa-ging komponentu tablice u slučaju pametnih uređaja). Način na koji je najbolje izgraditi aplikaciju čije je sučelje responzivno na tip uređaja zavisi od korištene platforme za razvoj te se za detalje treba obratiti literaturi specifičnoj za pojedinu platformu, odnosno programski jezik.

visual studio online omogućuje kreiranje aplikacija bez potrebe za instalacijom okoline na lokalnu radnu stanicu

zOHO je još jedan od alata za razvoj aplikacija koji se koristi u cloudu. Nije potrebno imati lokalno instaliranu okolinu

Responzivni dizajn -

Nova generacija

web aplikacija mora sučeljem odgovarati bilo kojem uređaju,

odnosno razlučivosti

RAzvOj u cloudugovoriti koliku prednost daje ovakav način pristupa, posebno u vrijeme kada je sve manje developera vezano uz fiksno radno mjesto i jedno računalo, odnosno radnu stanicu. Primjer MS Visual Studija jasno daje do znanja u kojem pravcu će se dalje kretati nove inačice razvojnih okolina, premda ova inačica nema sve funkcionalnosti koju nudi ona koja se instalira na infrastrukturu korisnika.

Freemium model s elementom ‘skupi ih sve’ na izmišljenom primjeru aplikacije razvojnog integriranog sučelja

68 listopad 2014. MREŽA

TEMA BROJA

Trendovi u razvoju sofTvera Buzzwordi

Trend ili buzz?

Neka nam oproste svi oni koji su očekivali čuti nešto više o “big data”, “wearable computing”, Internetu svega, BYOD-u, 3D printerima i sl.

Premda su sve ovo pojmovi koji su apso-lutni trend u razvoju informacijskih susta-va, o njima je u okviru ovog časopisa već više puta pisano, a i namjera je teme broja više se orijentirati na trendove “u razvoju” informacijskih sustava, pri čemu onda više dotičemo tehnike analize poslovnih pro-cesa, programiranja, metodologija razvoja i sl. nego informacijsko-komunikacijske tehnologije općenito. U nastavku teksta ukratko o nekim buzzwordima koji već jesu ili će tek postati trend u razvoju IS-a. Za detaljnije informacije o svakoj od navedenih tema konzultirajte Internet, a možda se neka od njih uskoro nađe kao jedna od budućih tema broja.

nim parametrima mrežnih postavki, a ne kao dosad, spajanjem na sučelja pojedine mrežne opreme ili sučelja administrativnih alata pojedine mrežne opreme. Zamislimo mrežu u kojoj imamo nekoliko stotina komada mrežne opreme uključujući usmjernike, preklopnike, vatrozide i sl. te svim onim konfiguracijskim podacima o međusobnim pravilima prometa među njima, rutama, konfiguraciji portova, osiguranju kvalitete prometa i ostalim koji se često moraju mijenjati, što zbog rasta tvrtke i njene infrastrukture, gomili novih politika i pravilnika koje kreiraju IT odjeli, ili sve jačoj upotrebi virtualizacije, gdje novi poslužitelji i nove aplikacije sa svojim zahtjevima niču kao gljive poslije kiše. Način na koji se to pokušava riješiti je centralnim upravljanjem svim ovim podacima preko kontrolera (vidi sliku) koji dinamički mijenja konfiguraciju s ob-zirom na gore navedene zahtjeve. Koristi od ovakvog pristupa su brojne (vidi okvir sa strane), a s obzirom na to da podršku ovom konceptu daju svi veći proizvođači mrežne opreme i operativnih sustava, od njega u bližoj budućnosti očekujemo da stane rame uz rame s cloudom, big data i ostalim mega popularnim buzzwordima.

Integracija socijalnih mrežaJeste li primijetili na web stranicama

tvrtki brojne male sličice u obliku logoa poznatih društvenih mreža poput Facebo-oka, LinkedIna ili Twittera? Ovo najčešće možemo vidjeti na poznatim blogovima gdje pojedini blog, ukoliko vam se svi-dio, možete podijeliti svojim kontaktima klikanjem na te sličice. Osim ovoga, ni prijave na web stranice tvrtki nisu više što su nekad bile. Često više ne morate imati pojedinačni korisnički račun i lozinku za svaku od tih stranica, već se možete

Za pokrivanje svih trendova u okviru teme broja ne bi nam bile dovoljne ni sve stranice ovog broja. Ipak, osim dosad obrađenog, ukratko ćemo spomenuti još nekoliko buzzworda kojima nas zasipaju u posljednje vrijeme, a koji dosad uglavnom nisu bili detaljnije obrađeni u člancima ovog časopisa

Softverski definirana mreža omogućuje centralizirano upravljanje svom mrežnom opremom preko kontrolera (I

zvor

: Plix

er.c

om)

Softverski definirane mrežePotreba za softverski definiranim mreža-

ma (engl. Software Defined Networking) pojavila se uslijed raznih problema uprav-ljanja sve kompleksnijim mrežnim sustavi-ma, koji su podložni kojekakvim komplici-ranim zahtjevima koje pred njih postavlja okruženje. Neki od tih zahtjeva, odnosno problema, odnose se na smanjene pro-račune za novom mrežnom opremom, različitim implementacijama mrežnog sklopovlja i protokola od raznih vendora, još vrlo čestom ručnom radu konfiguriranja mrežne opreme, mnoštvu sigurnosnih po-litika te hrpi aplikacija koje koriste mrežne servise u svojem radu. Zapravo, može se reći da mrežni administrator kao IT uloga postaje najopterećenija osoba za rješava-nje sve većeg broja zahtjeva koji stižu s raznih strana. Kako bi se doskočilo ovim problemima, industrija se pobrinula za to

da se definira novi koncept pod imenom softverski defi-nirano mrežno upravljanje.

Grubo reče-no, ideja je da se softverski s jednog mjesta upravlja osnov-

Hadoop okvir u jednoj slici. Cilj je omogućiti skalabilnost aplikacija s obzirom na količinu podataka i kompleksnost obrade podataka

MREŽA listopad 2014. 69

prijaviti svojim Facebook, Gmail ili nekim sličnim korisničkim računom. Ovo je samo primjer integracije socijalnih mreža prili-kom razvoja novih softverskih proizvoda te će uskoro postati „must-have“, čak i u internim poslovnim aplikacijama. Osim gore navedena dva primjera, moguće je integrirati i brojne druge funkcije, poput razmjene poruka ili automatskog objav-ljivanja sadržaja na vašoj stranici neke od socijalnih mreža. Ukoliko razvijate novi softver, počnite razmišljati u ovom smjeru jer trenutno ove funkcionalnosti rade ra-zliku od softvera sličnih vašem.

HadoopPremda je o Hadoopu već bilo riječi u

jednom od prethodnih brojeva Mreže, nije zgorega ponoviti da se radi o open-source okviru za obradu i skladištenje velikog broja podataka (opet big data) na različitim hardverskim komponentama. Glavna pretpostavka zbog koje je Hado-op nastao, osim da podrži rad s velikom količinom podataka, jest to da su greške na hardveru na kojem skladištimo i obra-đujemo podatke uobičajena pojava te da njihova obrada mora biti prepuštena automatizmu samog softverskog okvira. Ovaj okvir je licenciran u okviru Apache licenci te implementiran preko nekoliko sada već poznatih platformi poput Apache Hive, HBase ili Spark. U osnovi ovaj okvir prepoznaje 4 modula: Hadoop Common je set biblioteka koje koriste svi ostali moduli; HDFS (Hadoop Distributed File System) je sustav za upravljanje skladištenjem datoteka na hardverskim komponentama s ugrađenom podrškom za klastere; YARN se odnosi na platformu za upravljanje resursima okvira među raznim aplikacija-ma; te na kraju Hadoop MapReduce kao programski model za upravljanje velikim količinama podataka.

Kada ćete koristiti Hadoop okvir? Ukoliko radite na proizvodu koji će s vremenom raditi s ogromnom količinom podataka, bolje je ne koristiti standardne alate i plat-forme za razvoj jer ćete se kad tad sresti sa situacijom da vam ni najjači poslužitelj neće biti dovoljan za obradu ili skladište-nje podataka koji će rasti brzo i u velikom broju. Možete biti sigurni da Yahoo traži-lica ili Facebook servis ne koriste jedan moćni poslužitelj, već moraju koristiti neki od ovakvih okvira; ne iznenađuje da je to upravo Hadoop. Svijetom trenutno kola informacija da više od pola “Fortune 50” tvrtki koriste sustave koji su razvijeni na Hadoop okviru. Glavna karakteristika ovog okvira je da je skalabilan s obzirom na hardverske zahtjeve. Ukoliko vam je u početku dovoljan jedan poslužitelj, za godinu dana lako dodate novih deset bez potrebe za dodatnim programiranjem.

Funkcijsko programiranjeZa kraj sam ostavio temu koja još nije

potpuno uspjeli buzzword, ali se silno nameće u sve širem krugu razvojnih in-ženjera. Ponovno imamo situaciju poput one u kojem dva tabora žestoko rasprav-ljaju i brane svoja stajališta o tome je li

bolji ZX Spectrum ili Commodore 64, Windowsi ili Linux. Ovaj put riječ je o dva načina programiranja - imperativnom i deklarativnom. Premda ovakve rasprave postoje već duže vrijeme, nastankom nekoliko deklarativnih programskih jezi-ka koji promiču funkcionalno (odnosno

funkcijsko) programiranje poput Haskella, Pythona, ML-a, Mirande ili LISP-a, sve je više onih koji misle da je budućnost programiranja isključivo u deklarativnom načinu programiranja. Da pokušam po-jednostaviti: deklarativni programi izvode se vrednovanjem izraza, a imperativni programi izvode se slijednim izvođenjem naredbi. Funkcijsko programiranje, kao oblik deklarativnog programiranja, način je programiranja u kojem se sve svodi na izračunavanje funkcija.

Zašto bi netko prešao s, primjerice, objektno orijentiranog programiranja na funkcijsko programiranje? Zagovornici funkcijskog programiranja daju nekoliko prednosti: kôd je “čistiji” i kraći, nije po-trebno brinuti o stanjima u programu, kôd je manje podložan pogreškama, lakše se testira te je ovakvo programiranje pogodno za paralelizaciju. Premda sve ovo stoji, i za-govornici imperativnog programiranja imaju svojih aduta te nalaze mane u gore nave-denim prednostima. Primjer jednostavnog kôda za izračun rekurzivne funkcije možete vidjeti u slici pored, ali isto tako, kôd pisan funkcijskim načinom često izgleda potpu-no nerazumljivo i daleko ljudskom načinu razmišljanja (vidi drugu sliku). Autor teksta definitivno se neće prikloniti niti jednoj strani (barem zasad), a da bi se to učinilo, svakom „taboru“ bih preporučio da utroše određeno vrijeme na isprobavanje alterna-tivnog načina programiranja onom koji su dosad koristili. Vjerojatno je najpoznatiji predstavnik funkcionalnog programiranja jezik Haskell pa je on dobra početna točka za hvatanje u koštac s matematičkim nači-nom pogleda na svijet.

Ista stvar napisana u deklarativnom

programskom jeziku i imperativnom programskom

jeziku. U prvom se poziva rekurzivna funkcija, a u

drugom se implicitno stanje izračunava naredbom pridruživanja (izračun

faktorijela x)

Primjer kôda u Haskellu. Mora se priznati da nije lako razumljiv i čitljiv kao imperativni jezici

-- file: ch05/Prettify.hs

pretty width x = best 0 [x]

where best col (d:ds) =

case d of

Empty -> best col ds

Char c -> c : best (col + 1) ds

Text s -> s ++ best (col + length s) ds

Line -> ‘\n’ : best 0 ds

a `Concat` b -> best col (a:b:ds)

a `Union` b -> nicest col (best col (a:ds))

(best col (b:ds))

best _ _ = “”

nicest col a b | (width - least) `fits` a = a

| otherwise = b

where least = min width col

Neke od očekivanih koristi koje donosi implementacija SDN koncepta

Jeftinije održavanje Moguće je kupiti jeftiniju mrežnu opremu koja ne zahtijeva na sebi kompliciranu softversku podršku, tj. sučelje

Centralizacija Svom mrežnom opremom upravlja se s centralnog mjesta, a ne kao dosad spajanjem na sučelja pojedinačne mrežne opreme

Dinamičko konfiguriranje Konfiguracija mrežne opreme dinamički odgovara zahtjevima pojedinih aplikacija (npr. različiti zahtjevi za QoS)

Automatska optimizacija Centralni kontroler automatski optimizira pravila na pojedinim mrežnim uređajima prema trenutnom stanju cijele mreže

Filtriranje SDN može filtrirati pakete kako se kreću mrežom te tako svaki pojedini mrežni uređaj postaje pravi mali vatrozid

Automatsko preusmjeravanje prometa

Kontroler automatski preusmjerava promet prema procjeni sigurnosnog rizika (npr. u slučaju indikacije putem IPS/IDS sustava)

load balancing S obzirom na dinamičku konfiguraciju u odnosu na trenutno stanje mreže, SDN služi i kao jednostavni load balancer

tolerancija na greške SDN se može konfigurirati kao klaster (dva kontrolera u failoveru) te tako osigurati kontinuitet rada mrežnog servisa

ZašTo nam TrebaJu SofTverSKi definirane mreže