1 UVOD V današnjem času je programska oprema v večini poslovnih sistemov ključno sredstvo, ki omogoča izvajanje poslovnih procesov. Poleg tega razpoložljivost in stabilnost programske opreme tudi neposredno vplivata na prihodke podjetja in zadovoljstvo strank. Razvoj programske opreme je v marsikaterem podjetju eden kritičnih procesov za zagotavljanje uspešnosti poslovanja, saj zahteva veliko truda v zvezi z zagotavljanjem ustreznih finančnih virov in samih virov za razvoj programske opreme (ustrezna strojna in programska oprema). Pri razvoju programske opreme se v zadnjem času dogajajo velike spremembe. Čedalje več neodvisnih izdelovalcev programske opreme se preoblikuje v ponudnike, ki svoje aplikacije ponujajo uporabnikom v obliki storitev, ki se nahajajo v oblaku [1, 2, 3]. Aplikacije za upravljanje financ, davkov in investicij so tipičen primer programske opreme, ki je bila še pred kratkim na voljo le za strežnike in namizne računalnike, zdaj pa je na voljo tisočem sočasnih uporabnikov v obliki varnih spletnih storitev v oblaku. Poslovni uspeh ponudnikov storitev v oblaku je odvisen od zmanjševanja časa, potrebnega za razvoj prej omenjenih storitev, oziroma od pospeševanja njihovega vstopa na trg. Vsak dodatni mesec ali četrtletje, v katerem je storitev v oblaku na voljo uporabnikom, neposredno vpliva na povečanje prihodkov, kar vpliva na končni finančni izkaz podjetja. Model ponujanja programske opreme v obliki storitev (angl. Software-as-a-Service) sam po sebi pospešuje vstopanje programske opreme na trg, saj je sredstvo za dostavo programske opreme svetovni splet in ne tradicionalni paketi z namestitvenimi mediji ali moduli, ki si jih morajo uporabniki prenesti s spleta. Pravočasna izdelava programske opreme zelo močno vpliva na poslovanje. V proizvodnih podjetjih lahko razvoj programske opreme vključuje izdelavo dizajna ali simulacijo izdelka, ki ga je treba poslati na trg. V oglaševalski in zabavni industriji lahko razvoj znamke ali spletne strani za poseben dogodek pospeši spletni promet, ki ga generirajo končni uporabniki. To omogoči izvedbo oglaševanja na takih straneh, kar neposredno vpliva na prihodke. Pri finančnih storitvah ima zagotavljanje novih storitev za podporo elektronskega poslovanja in upravljanja portfeljev ter premoženja vpliva na privabljanje in ohranjanje strank. Iz vsega naštetega lahko vidimo, da je hitrost, s katero se razvijejo aplikacije, testirajo in pošljejo v produkcijo enega kritičnih dejavnikov uspeha za številna podjetja. Zato ima vsaka rešitev, ki skrajša čas za vstop aplikacije na trg, takojšen in merljiv učinek na donosnost naložbe v razvoj. V prispevku bomo v drugem razdelku predstavili težave, ki nastajajo pri klasičnem razvoju programske opreme, in sicer z vidika priprave ustreznega razvojnega okolja in problematike testiranja. V tretjem poglavju bomo predstavili prednosti, ki jih ponuja uporaba oblaka pri razvoju programske opreme, in kaj vpliva na skrajšanje časa, potrebnega za vstop aplikacije na trg. V četrtem razdelku bomo predstavili dejavnike, ki vplivajo na donosnost naložbe uporabe računalništva v oblaku, v Prejet 28. december, 2010 Odobren 18. februar, 2011 124 ZRNEC sklepu pa bomo podali sklepne misli in predlog nadaljnjega dela. 2 TEŽAVE PRI RAZVOJU PROGRAMSKE OPREME Glede konfiguracije programske in strojne opreme zahtevajo razvijalci za svoje delo zelo dinamično okolje. Pri tem po navadi vse prevečkrat naletijo na odpor administratorjev [4], ki si prizadevajo vzpostavljati bolj toga okolja, s čimer zagotavljajo večjo stabilnost v delovanju računalniške infrastrukture. Tako si različne zahteve razvijalcev in administratorjev glede pogledov na prilagodljivost računalniškega okolja v poslovnem sistemu že vrsto let nasprotujejo, kar ključno vpliva na zmanjševanje produktivnosti razvoja programske opreme. 2.1 Razvojno okolje Razvijalci aplikacij se pri svojem delu redno srečujejo z zahtevo po vzpostavitvi posebnega okolja za razvijanje, razhroščevanje in prevajanje, ki zagotavlja ustrezne programske knjižnice in orodja za izdelavo programske kode. Po navadi se omenjena razvojna okolja vzpostavijo za določen čas, največkrat za nekaj ur, nakar se lahko odstranijo. Dostop do ustrezno konfiguriranih virov za procesiranje in hrambo podatkov na zahtevo v okviru računalniškega centra v nekem poslovnem sistemu je zato ključnega pomena za kreiranje prej omenjenih razvojnih okolij in za zagotavljanje produktivnosti razvoja. Programerji morajo imeti pri izvajanju svojih nalog možnost hitro pripraviti ustrezne konfiguracije strežnikov, diskovnih zmogljivosti in mrežnih povezav. Žal v številnih razvojnih okoljih prav omenjena hitrost priprave ustreznih virov zavira ali celo onemogoča izvajanje programerjevih nalog, saj je priprava računalniških virov v poslovnem sistemu v domeni oddelka za informatiko (administratorjev) ali pa so viri, ki so dodeljeni razvoju, že v naprej omejeni na določeno raven. Omenjene razmere silijo razvijalce v izvajanje aktivnosti na tradicionalen – slapovni način, kar onemogoča vzporedno izvajanje aktivnosti in upočasnjuje razvojni proces. Tako je nezmožnost razvijalcev, da bi lahko hitro pripravili, odstranili ali klonirali ustrezno konfigurirana razvojna okolja, pomeni množico dejavnikov, ki zavirajo produktivnost in s tem tudi čas vstopa programske opreme na trg. 2.2 Testiranje Razvojni proces vsebuje tudi aktivnosti testiranja, ki za uspešno izvedbo testov največkrat zahtevajo več virov, kot jih je v okviru računalniških zmogljivosti v poslovnem sistemu dodeljenih razvoju. Testno okolje je po svoji naravi zelo dinamično. Vzpostavi se za izvedbo množice testnih primerov, sledita pregled in analiza rezultatov, nato pa se testno okolje do naslednje iteracije ne uporablja več. Opisani postopek poteka testiranja kaže na potrebo po bolj prilagodljivih računalniških virih, ki bi omogočali testna okolja kreirati na zahtevo. Najbolj idealno bi bilo, če bi lahko razvijalec, ki mu je naloženo testiranje, na zahtevo sam kreiral ustrezno testno okolje. 2.3 Zagotavljanje kakovosti 2.3.1 Testiranje performans Proces zagotavljanja kakovosti (ang. Quality Assurance) postavlja še posebne dodatne zahteve, ki vplivajo na izvajanje testiranja, in zahteve, ki se tičejo pravočasne priprave in zadostne količine računalniških virov. Proces zagotavljanja kakovosti poleg izvedbe funkcionalnih in regresijskih testov po navadi zahteva tudi izvedbo testiranja performans in nadgradljivosti (skalabilnosti) sistema. Zaradi zadnjih dveh zahtev je okolje za izvedbo procesa zagotavljanja kakovosti edinstveno v primerjavi s klasičnim razvojnim okoljem za izvajanje iterativnega pristopa. Za izvedbo performančnih testov mora biti okolje za zagotavljanje kakovosti vzpostavljeno tako, da omogoča testiranje aplikacije s toliko računalniškimi viri, kolikor jih bo na voljo v realnem produkcijskem okolju. Pri tem mislimo predvsem na: • ustrezno število strežnikov, • ustrezno število procesorjev v strežnikih, • ustrezno količino RAM pomnilnika, • hitre komunikacijske povezave, ki zagotavljajo ustrezno raven kakovosti storitev (QoS), in • ustrezne diskovne zmogljivosti s podatkovno prepustnostjo in latencami, s kakršnimi bomo imeli opravka pozneje v produkcijskem okolju. Cilj vzpostavitve okolja za testiranje performans v okviru zagotavljanja kakovosti je torej, da v čim večji meri odraža dejansko stanje produkcijskega okolja. To pa je v okviru računalniškega centra v poslovnih sistemih pogosto zelo težko izvedljivo, ker je priprava okolja, ki odraža dejansko stanje v produkciji, celo v zmanjšanem obsegu, zelo kompleksna naloga. Tudi če poslovni sistem ima na voljo ustrezne računalniške vire za vzpostavitev takega okolja, je smiselnost izvedbe te aktivnosti izključno za namene testiranja performans zelo dvomljiva z vidika samih stroškov in časa. Zato se aktivnost testiranja performans v okviru zagotavljanja kakovosti po navadi prelaga kar v fazo produkcije. 2.3.2 Testiranje skalabilnosti Testiranje skalabilnosti je s prihodom storitev postala ena pomembnejših aktivnosti v okviru postopka testiranja. Za današnje aplikacije, ki jih ponudniki ponujajo v obliki storitev, je značilna zelo velika obremenitev, to je več tisoč hkratnih uporabnikov. Število sočasnih uporabnikov storitve lahko namreč zelo RAZVOJ PROGRAMSKE OPREME V OBLAKU ZA SKRAJŠEVANJE ČASA VSTOPA NA TRG 125 hitro naraste zelo visoko, kar lahko vpliva na degradacijo performans omrežja, strežnikov in diskovnih zmogljivosti ponudnika storitve. Pri programski opremi, ki pri desetih sočasnih uporabnikih deluje povsem normalno, lahko pri obremenitvi s sto ali tisoč uporabniki nastanejo številna ozka grla in tudi napake v sami programski kodi. Zato je potreba v okviru zagotavljanja kakovosti, po razpolaganju z računalniškimi viri na zahtevo, najpomembnejši dejavnik pospeševanja vstopanja novih storitev na trg. Poleg tega imajo razvijalci, če se testiranje kakovosti izvede, tudi zagotovilo, da so bili skalabilnost in performanse nove programske opreme temeljito stestirani. 3 RAZVOJ PROGRAMSKE OPREME S POMOČJO OBLAKA IT-okolja, v katerih poteka razvoj, morajo biti danes bolj prilagodljiva, saj so okolja za razvoj programske opreme zelo dinamična in zahtevajo veliko več računalniških virov. Z novimi storitvami, ki jih ponuja oblačno računalništvo, je omenjene zahteve mogoče rešiti, saj uporaba storitev omogoča naslednje: • pripravo potrebnih računalniških virov na zahtevo v manj kot eni uri, prek vmesnika, ki ga lahko uporablja razvijalec sam, • uporabo različnih ravni kakovosti zagotavljanja storitev za podporo širokega obsega zahtev v okviru življenjskega cikla aplikacije, • hitro povečevanje in zmanjševanje obsega potrebnih virov, ki se obračunavajo na podlagi dejanske uporabe, • podporo navideznim razvojnim okoljem in večnivojski arhitekturi, • selitev obstoječih navideznih strežnikov vključno z delovnimi obremenitvami v oblak. Razvijalci lahko sami, brez posredovanja IT- administratorjev v poslovnem sistemu uporabljajo navedene zmožnosti oblaka, kar jim pri razvoju posredno omogoča pospešiti čas vstopa aplikacije na trg. 3.1 Priprava virov na zahtevo V drugem razdelku smo omenili, da je priprava ustreznih virov za razvoj aplikacij v okviru računalniškega centra poslovnega sistema lahko zelo kompleksna in draga naloga. Pri tem morajo sodelovati administratorji, ki na zahtevo razvijalcev pripravijo ustrezna razvojna okolja. Priprava razvojnih okolij po navadi zahteva veliko časa in veliko napora pri medsebojni komunikaciji med razvijalci in administratorji, saj zadnji niso naklonjeni poseganju v vire računalniškega centra, za katerega delovanje so neposredno odgovorni. Z uporabo storitev, ki jih ponuja oblak, je mogoče na zahtevo pripraviti ustrezne računalniške vire (razvojno okolje) v oblaku, ki se uporabljajo pri različnih aktivnostih razvoja. Z uporabo teh virov je mogoče pospešiti razvojni cikel tako, da se v oblaku vzpostavi več razvojnih okolij hkrati. Zato je razvojne aktivnosti mogoče izvajati vzporedno, na primer sočasno z razvojem programske kode se že testira koda v vzporednih testnih okoljih. Idejo priprave potrebnih virov prikazuje slika 1. Razvijalci, ki uporabljajo storitve oblaka, si lahko sami pripravljajo ustrezna razvojna okolja na podlagi zahtev posameznih aktivnosti razvojnega procesa. Zato je mogoče sprostiti nekatere ključne vire računalniškega centra, ki bi lahko bili ozko grlo pri izvajanju aktivnosti razvojnega procesa. Tako se lahko produktivnost razvijalcev poveča. Poleg tega se tudi administratorjem ni več treba bati, da bi spreminjanje konfiguracije virov Slika 1: Priprava potrebnih virov v oblaku na zahtevo 126 ZRNEC v računalniškem centru poslovnega sistema lahko ogrozilo delovanje poslovnega informacijskega sistema. 3.2 Uporaba različnih ravni kakovosti zagotavljanja storitev v oblaku Uporaba storitve, ki se nahaja v oblaku, je vezana na raven kakovosti zagotavljanja storitve (QoS - Quality of Service). Čim višja raven kakovosti zagotavljanja storitve je zahtevana, tem boljše so njene performanse in dražja je njena uporaba. Razvijalci lahko pri svojem delu uporabljajo različne ravni kakovosti zagotavljanja storitev, tako da za vsako razvojno stopnjo v življenjskem ciklu aplikacije optimizirajo razmerje med performansami in ceno uporabljene storitve. Na primer, razvijalec v oblaku vzpostavi okolje, ki je optimizirano za kodiranje in funkcionalno testiranje, pri čemer uporabi nižjo raven kakovosti zagotavljanja storitev, kar posledično vodi k nižjim stroškom uporabe storitev oblaka na časovno enoto. Ko se življenjski cikel aplikacije, ki se razvija, pomika proti aktivnostim procesa zagotavljanja kakovosti (glej razdelek 2.3), je treba raven kakovosti zagotavljanja storitev dvigniti, tako da bo razvojno okolje odražalo dejansko stanje produkcijskega okolja. To pomeni, da mora biti v okviru razvojnega okolja na voljo več virov, hkrati pa morajo uporabljene oblačne storitve zagotavljati višje performanse, višjo stopnjo varnosti in višjo raven razpoložljivosti, kar zviša urno postavko uporabe teh storitev. Tudi zagotavljanje kakovosti ima koristi od pripravljanja in sproščanja oblačnih virov na zahtevo, saj se tako lahko izvajajo testi aplikacije v velikem obsegu, hkrati pa ni treba rezervirati in plačevati virov računalniškega centra tudi v času, ko ti niso uporabljeni. Z uporabo oblaka se je mogoče izogniti vnaprejšnjim rezervacijam in plačevanju neuporabljenih virov klasičnih računalniških centrov, saj uporabniki plačujejo v oblaku samo za tiste vire, ki jih uporabijo. 3.3 Uporaba navideznih okolij in podpora večnivojski arhitekturi Storitve v oblaku podpirajo vzpostavitev različnih navideznih okolij. Najbolj klasična uporaba oblaka obsega vzpostavitev okolja navideznih strežnikov, na katerih se izvajata razvoj in testiranje aplikacije ter testiranje njene kakovosti. Nekateri oblaki pa ponujajo storitve, ki omogočajo kreirati okolja, ki že privzeto podpirajo moderne večnivojske arhitekture [5]. Po navadi gre tukaj za podporo treh nivojev, in sicer predstavitvene, aplikacijske in podatkovne plasti. Tako je neposredno podprta možnost razvoja klasičnih spletnih aplikacij, tako da se za vsako plast v oblaku kreira ustrezno število navideznih strežnikov, na katerih poteka razvoj. Ko se razvoj v vzpostavljenem okolju konča, se lahko slike navideznih strežnikov iz razvojnega okolja preprosto prenesejo v produkcijsko okolje. Produkcijsko okolje se prav tako lahko nahaja v oblaku, torej bo treba slike navideznih strežnikov le prenesti v drugo okolje oblaka, ki je namenjeno produkciji. Druga možnost pa je, da se slike navideznih strežnikov namestijo lokalno na strežnike v računalniškem centru poslovnega sistema. Prednost obeh primerov je, da se izognemo problemom v zvezi s konfiguriranjem nove aplikacije zaradi prenosa iz razvojnega v produkcijsko okolje, kar ponovno vpliva na hitrost vstopa aplikacije na trg. Storitve v oblaku omogočajo tudi prenos slik strežnikov v nasprotni smeri, torej z zasebnih strežnikov poslovnega sistema ali iz njegovega zasebnega oblaka v oblak določenega ponudnika spletnih storitev. V tem primeru začetne aktivnosti razvoja aplikacije potekajo na lastni računalniški infrastrukturi, ko pa je treba testirati performanse in skalabilnost pri velikem številu uporabnikov, za kar poslovni sistem nima ustreznih lastnih virov, se celotno razvojno okolje prenese v oblak. 4 DONOSNOST NALOŽBE RAZVOJA PROGRAMSKE OPREME V OBLAKU Za izračun donosnosti naložbe (ang. Return on Investment - ROI) uporabe računalništva v oblaku so številni avtorji predlagali več različnih modelov [6]. Predlagani modeli upoštevajo številne ekonomske in tehnološke kazalnike, zato je izračun donosnosti naložb po navadi zelo kompleksen. Poenostavljen model izračuna donosnosti naložbe uporabe oblaka za potrebe razvoja programske opreme in s tem zmanjševanja časa, potrebnega za vstop aplikacije na trg, upošteva različne tehnološke in ekonomske prednosti uporabe storitev v oblaku, ki vplivajo na ceno razvojnega procesa. Tehnološke prednosti so: • razvoj računalništva v oblaku je v zadnjem času pripomogel k nastanku storitev, ki že omogočajo vzpostavitev razvojnega okolja v oblaku, • razvijalci lahko na zahtevo zelo hitro vzpostavijo potrebno razvojno okolje, • uporabljeni viri oblaka v okviru navideznega razvojnega okolja se lahko dinamično prilagajajo trenutnim razvojnim potrebam, • navidezna razvojna okolja neposredno podpirajo uporabo več nivojskih arhitektur, • možnosti migracije navideznih razvojnih okolij med različnimi oblaki in lastno računalniško infrastrukturo. Ekonomske prednosti so naslednje: • stroški uporabe storitev v oblaku so obračunani samo za vire, ki so bili dejansko uporabljeni, in sicer samo za čas, ko so se dejansko uporabljali, • pri uporabi storitev v oblaku ni nikakršnih vnaprejšnjih stroškov, RAZVOJ PROGRAMSKE OPREME V OBLAKU ZA SKRAJŠEVANJE ČASA VSTOPA NA TRG 127 • uporaba storitev v oblaku ni pogojena z dolgoročno vezavo na določenega ponudnika storitev v oblaku. Tehnološke prednosti uporabe oblaka vplivajo predvsem na možnost vzporednega izvajanja razvojnih aktivnosti in zagotavljanje kakovosti razvite aplikacije ter s tem na pohitritev razvojnega procesa in nižjo ceno. Ekonomske prednosti uporabe storitev v oblaku pa vplivajo na močno znižanje stroškov razvojnega procesa. Pohitritev izvajanja aktivnosti razvojnega procesa in znižanje stroškov, povezanih z izvajanjem le- teh, neposredno vpliva na hitrost vstopa aplikacije na trg in s tem na zelo hitro donosnost naložbe. Slika 2 prikazuje povezavo med razvojnimi aktivnostmi, prenesenimi v oblak, in trajanjem razvoja aplikacije ter donosnostjo naložbe razvoja programske opreme v oblaku. Slika 2: Donosnost naložbe Vidimo, da se donosnost naložbe razvoja programske opreme s številom aktivnosti, ki jih razvijalci izvajajo v oblaku, povečuje. Na povečanje še posebej vplivata aktivnosti testiranja performans in skalabilnosti aplikacije pod veliko obremenitvijo. Ti dve aktivnosti je z uporabo oblaka mogoče izvesti hitro in z nizkimi stroški. Obe aktivnosti lahko tudi zelo pospešita izvedbo razvojnega procesa. Tako se skupni čas, potreben za razvoj aplikacije, skrajša in naložba lahko postane hitreje donosna. 5 SKLEP Uporaba storitev v oblaku za potrebe razvoja programske opreme je z vidika hitrosti razvoja in donosnosti naložb v razvoj smiselna. Seveda to ne pomeni, da mora poslovni sistem, ki že ima računalniški center z ustreznimi viri, takoj prestaviti vse svoje aktivnosti razvoja programske opreme v oblak. Poslovni sistem mora najprej proučiti svoje zmožnosti in identificirati, katerih aktivnosti ne more podpreti s svojo računalniško infrastrukturo. Na podlagi identificiranih aktivnosti se mora nato odločiti, ali se bo določena aktivnost izvajala v oblaku in kako bo uporaba storitev oblaka vplivala na hitrost izvajanja razvojnega procesa. Pri tem je treba upoštevati številne kriterije za izvajanje razvojne aktivnosti v oblaku, kot na primer ceno uporabe storitve, varnost in performanse [7]. Vsekakor lahko rečemo, da je v oblaku smiselno izvesti testiranje performans in skalabilnosti aplikacije pod veliko obremenitvijo, ker poslovni sistemi po navadi nimajo ustreznih virov, da bi lahko izvedle te aktivnosti v zahtevanem obsegu. Zato se bomo v nadaljevanju dela posvetili prilagajanju razvoja programske opreme z uporabo storitev v oblaku. Izdelali bomo model postopka, ki bo na podlagi več meril omogočal odgovoriti na vprašanje, ali naj se določena razvojna aktivnost izvede lokalno v poslovnem sistemu ali z uporabo oblaka. Pri tem bomo izhajali iz teorije o prilagajanju procesa razvoja programske opreme konkretnim potrebam projektov [8, 9], ki temelji na uporabi odločitvenih pravil.