OTS 2018
Sodobne informacijske tehnologije in
storitve
Zbornik triindvajsete konference
Maribor, 19. in 20. junij 2018
Urednika:
red. prof. dr. Marjan Heričko
dr. Katja Kous
Junij 2018
Naslov:
OTS 2018 Sodobne informacijske tehnologije in storitve
Podnaslov:
Zbornik triindvajsete konference, Maribor, 19. in 20. junij 2018
Urednika:
red. prof. dr. Marjan Heričko
(Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko)
dr. Katja Kous
(Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko)
Tehnična urednica:
asist. Lucija Brezočnik (Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko)
Oblikovanje ovitka:
asist. Lucija Brezočnik (Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko)
Grafične priloge:
Avtorji prispevkov
Konferenca:
OTS 2018 23. konferenca sodobne informacijske tehnologije in storitve
Datum konference:
19. – 20. junij 2018
Kraj konference:
Maribor
Programski odbor OTS 2018:
prof. dr. Marjan Heričko (vodja), prof. dr. Tatjana Welzer Družovec, dr. Tomaž Domanjko, dr. Boštjan Grašič, dr. Dean Korošec, dr. Luka Pavlič, dr.
Boštjan Šumak, dr. Boštjan Kežmah, mag. Bojan Štok, mag. Ivan Lah in Milan Gabor.
Organizacijski odbor OTS 2018:
dr. Katja Kous (vodja), Lucija Brezočnik, Boris Lahovnik, Tina Beranič, dr. Maja Pušnik, Miha Strehar, Gregor Jošt, dr. Sašo Karakatič, Mateja Kocbek Bule, Blaž Podgorelec, Alen Rajšp, Patrik Rek, Viktor Taneski.
Izdajateljica:
Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko
Koroška cesta 46, 2000 Maribor, Slovenija
http://feri.um.si, feri@um.si
Založnik:
Univerzitetna založba Univerze v Mariboru
Slomškov trg 15, 2000 Maribor, Slovenija
http://press.um.si, zalozba@um.si
Izdaja:
Prva izdaja
Vrsta publikacije:
e-publikacija
Dostopno na:
http://press.um.si/index.php/ump/catalog/book/338
Izid:
Maribor, junij 2018
© Univerzitetna založba Univerze v Mariboru
Vse pravice pridržane. Brez pisnega dovoljenja založnika je prepovedano reproduciranje, distribuiranje, predelava ali druga uporaba tega dela ali njegovih delov v kakršnemkoli obsegu ali postopku, vključno s fotokopiranjem, tiskanjem ali shranjevanjem v elektronski obliki.
CIP - Kataložni zapis o publikaciji
Univerzitetna knjižnica Maribor
004.946.5:004.7(082)
KONFERENCA Sodobne informacijske tehnologije in storitve (23 ; 2018 ; Maribor)
Sodobne informacijske tehnologije in storitve [Elektronski vir] : OTS 2018 : zbornik triindvajsete konference, Maribor, 19. in 20. junij 2018 / urednika Marjan Heričko in Katja Kous. - 1. izd. - Maribor : Univerzitetna založba Univerze, 2018
Način dostopa (URL): http://press.um.si/index.php/ump/catalog/book/338
ISBN 978-961-286-162-9 (pdf)
doi: 10.18690/978-961-286-162-9
1. Heričko, Marjan
COBISS.SI-ID 94690049
ISBN:
978-961-286-162-9 (PDF)
978-961-286-163-6 (Tiskana izdaja)
DOI:
https://doi.org/10.18690/978-961-286-162-9
Cena:
Brezplačen izvod
Odgovorna oseba založnika:
red. prof. dr. Žan Jan Oplotnik, prorektor Univerze v Mariboru
http://www.ots.si
Prispevki predstavljajo stališča avtorjev, ki niso nujno usklajena s
stališči organizatorja, programskega odbora in urednikov
zbornika, zato ne sprejemajo nobene formalne odgovornosti zaradi
morebitnih avtorjevih napak, netočnosti in neustrezne rabe virov.
Spoštovane in spoštovani,
tudi tokrat prispevki, zbrani v zborniku že 23. strokovne konference Sodobne informacijske tehnologije
in storitve, naslavljajo izjemno aktualne izzive, s katerimi se informatiki, programski inženirji,
računalničarji, podatkovni znanstveniki, arhitekti, razvijalci ter upravljalci informacijskih rešitev in
storitev srečujemo pri svojem vsakdanjem delu. Avtorji predstavljajo inovativne rešitve in skozi
konkretne projekte pridobljene izkušnje:
z uporabo tehnologij in platform veriženja blokov,
oblikovanjem novih ekosistemov, poslovnih modelov in storitev ter digitalno preobrazbo,
vpeljavo in udejanjanjem mikrostoritvenih arhitektur,
zagotavljanjem varnosti, zaupnosti in zasebnosti ter s tem povezanimi tehnikami obvladovanja
tveganj,
popolno virtualizacijo in izkoriščanjem infrastrukture,
posodobitvijo in nadgradnjo obstoječih informacijskih sistemov,
integracijo algoritmov strojnega učenja in inteligentnih storitev ter platform za upravljanje in
obdelavo velepodatkov,
spletnimi komponentami in tehnologijami ter
agilnimi pristopi, ki omogočajo hiter in učinkovit razvoj tako prototipov kot produkcijskih
uporabniško usmerjenih rešitev v sklopu avtomatiziranih in neprekinjenih procesov razvoja,
integracije in dostave.
Kar še posebej veseli in navdušuje, je dejstvo, da se še v preteklem letu zgolj nakazane namere in v
sklopu pilotnih projektov preizkušane tehnologije in pristope, sedaj že manifestirajo v rezultatih
konkretnih projektov in rešitvah, namenjenih svetovnemu trgu. Porajajoče tehnologije in pristopi pa že
prinašajo nove izzive!
Zato je toliko bolj pomembno, da skozi izmenjavo spoznanj ter izkušenj skupaj oblikujemo dobre prakse
in prispevamo k njihovi uveljavitvi v svojih okoljih.
dr. Katja Kous
prof. dr. Marjan Heričko
vodja organizacijskega odbora OTS 2018
predsednik 23. konference OTS 2018
KAZALO
Sledenje ukradenim bitcoinom po verigi blokov
Marko Gašparič in Boštjan Vesnicer _________________________________________________ 1
Implementacija nadgradljivosti in zamenljivosti pametnih pogodb na platformi Ethereum
Blaž Podgorelec in Muhamed Turkanović ____________________________________________ 8
Razvoj programskih rešitev veriženja blokov za energetsko poslovno domeno
Andrej Bregar, Ciril Kafol, Jure Trilar in Matej Nosan _________________________________ 20
Uporaba tehnologije veriženja blokov za upravljanje ekosistema podatkov o vozilih
Jaka Jenko, Andrej Meh in Ambrož Stropnik _________________________________________ 37
Building an open-source blockchain ecosystem with ARK
Kristjan Košič, Rok Černec, Alex Barnsley, and Francois-Xavirer Thoorens ________________ 45
Kako načrtovati sodobno arhitekturno rešitev za kompleksne informacijske sisteme
Ervin Lemark, Tjaša Šoster, Damijan Kavs in Vid Bevčar _______________________________ 56
IT integracije v sodobnih elektroenergetskih omrežjih z uporabo modela CIM
Nikola Risteski ________________________________________________________________ 65
Informacijska rešitev za upravljanje odjema električne energije gospodinjskih odjemalcev
Gašper Lakota in Tomaž Buh _____________________________________________________ 72
Micro-amnesia – how microservices in a message-oriented architecture solve the GDPR
challenge
Tomaž Lukman and Norman Seibert _______________________________________________ 82
Varnostne ranljivosti pametnih pogodb platforme Ethereum
Marko Hölbl in Blaž Podgorelec ___________________________________________________ 96
Data protection in a hyper-converged world: our story
Damijan Bačani _______________________________________________________________ 106
Zapiranje in odpiranje podatkov v državnih informacijskih sistemih
Samo Maček, Franci Mulec in Franc Močilar ________________________________________ 112
Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za upravljanje velikih
količin podatkov
Marko Polak in Gregor Slokan ___________________________________________________ 117
Civilizacija dobrih slabih programov
Matej Šprogar ________________________________________________________________ 129
Družinsko centrična zasnova spletne aplikacije MyFamily
Vid Čermelj, Jure Trilar, Veronika Zavratnik in Emilija Stojmenova Duh _________________ 136
Platforma za enostavno prototipiranje mobilnih aplikacij
Blagoj Soklevski, Bojan Brumen, Uroš Pernat in Gregor Plavčak ________________________ 146
Neprekinjena dostava v vzporednem kritičnem poslovnem okolju
Tadej Justin, Žiga Ciglar in Andrej Orešnik _________________________________________ 152
Primerjava odprtokodnih podatkovnih mrež
Bojan Štok, Ciril Petr, in Andrej Krajnc ____________________________________________ 164
Umetna inteligenca za telebane – platforme strojnega učenja
Sašo Karakatič, Grega Vrbančič, Jernej Flisar in Vili Podgorelec ________________________ 175
Analiza inteligentnih oblačnih storitev na primeru prepoznave obrazov
Grega Vrbančič in Vili Podgorelec ________________________________________________ 189
Razvoj inteligentne rešitve Watson Zlitine
Sara Hmelak, Matic Strajnšak in Gregor Kovačevič ___________________________________ 202
Spletne komponente in knjižnica X-TAG
Viktor Taneski in Gregor Jošt ___________________________________________________ 215
API kot stičišče angular obličja in na pametnih pogodbah temelječega zaledja
Patrik Rek, Blaž Podgorelec, Luka Hrgarek in Muhamed Turkanović _____________________ 229
1 leto časa – 20 let zgodovine – 300×10^4 vrstic kode. Transformiraj zdaj!
Robert Kristanc in Marjan Kaligaro _______________________________________________ 242
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
SLEDENJE UKRADENIM BITCOINOM PO VERIGI
BLOKOV
MARKO GAŠPARIČ IN BOŠTJAN VESNICER1
Povzetek: Mešanje bitcoin kovancev z drugimi se pogosto uporablja za
prikrivanje izvora kovancev. Pri kripto-valutah, kjer so vse transakcije
javne, se ta metoda uporablja za legitimne namene, npr. za zaščito
zasebnosti, in za nelegitimne namene, npr. kot pranje denarja. Razvili smo
orodje za zaznavo menjav bitcoin kovancev na spletnih menjalnicah za
kripto-valute in pologe ukradenih kovancev na NiceHash platformi. Orodje
temelji na seznamu "pomembnih" transakcij, na katerega je transakcija
uvrščena, če vsebuje dovolj "umazanih" kovancev. Analiza kovancev deluje
dovolj hitro, da se seznam transakcij osveži z vsakim novim bitcoin blokom
in tako omogoča sprotno preverjanje transakcij.
Ključne besede: • veriga blokov • sledenje • transakcija • bitcoin • NiceHash
NASLOVA AVTORJEV: Marko Gašparič, MaG IT d.o.o., Volkmerjeva cesta 56a, 2250 Ptuj, Slovenija, e-pošta:
m.gasparic@gmail.com. Boštjan Vesnicer, H-BIT d.o.o., Obrežna ulica 3, 2312 Orehova vas, Slovenija, e-pošta:
bostjan@nicehash.com.
DOI https://doi.org/10.18690/978-961-286-162-9.1
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
2
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Gašparič in B. Vesnicer: Sledenje ukradenim bitcoinom po verigi blokov
1. UVOD
NiceHash1 je spletna tržnica za trgovanje s procesno močjo, ki se uporablja za rudarjenje različnih
kripto-valut. Ponudniki procesne moči so ponavadi lastniki zmogljivih grafičnih kartic ali drugih naprav,
namenjenih za rudarjenje kripto-valut. Kupci procesne moči so investitorji, ki so pripravljeni vložiti
določen znesek za nakup ponujene procesne moči, ki jo nato uporabijo za rudarjenje specifične kripto-
valute, v želji, da se jim bo vložek obrestoval. Osnovni namen NiceHash platforme je enostavna
povezava ponudnikov in kupcev, ki lahko svoja sredstva na platformi tudi hranijo. Za trgovanje na
tržnici se uporablja kripto-valuta bitcoin (BTC).
Šestega decembra 2017 se je zgodil sofisticiran napad na NiceHash platformo. Med napadom je bilo
ukradenih več kot 4700 bitcoinov; večina jih je bila v lasti uporabnikov NiceHasha. Z zlorabo sistema
za izplačevanje so se sredstva najprej prenesla iz interne denarnice na pet različnih bitcoin naslovov.
Nato pa se je majhen del teh kovancev razpršil po različnih naslovih, večji del pa je še isti dan končal
na enem naslovu, ki pred napadom ni bil še nikoli uporabljen. Oznaka tega centralnega naslova je
1EnJHhq8Jq8vDuZA5-ahVh6H4t6jh1mB4rq.
En
teden
po
napadu,
13.12.2017,
se
je
zgodila
prva
izhodna
transakcija
iz
1EnJHhq8Jq8vDuZA5ahVh6H-4t6jh1mB4rq. Na naslov 1EXvoGyYsbazaejgQPFrSKu8nh2joU6mdm
je bilo prenesenih 614,24212398 BTC, na naslov 1P1bSFBeuWy7PPLk6nKEkWHx4qAc8safLi pa točno
50
BTC.
Ta
transakcija
ima
oznako
b82dc-
42650688bee5f67273adb3f224ea2c96b71ebeaf6c4411d09f3903c4d69.
14.12.2017 smo zaznali prvo združevanje ukradenih bitcoin kovancev, ki so se nahajali na
1EnJHhq8Jq8v-DuZA5ahVh6H4t6jh1mB4rq naslovu, z bitcoini kovanci iz drugega naslova. V
transakciji z oznako 23dc3-1e528d3c4cde2e4dcd298f08b0366ee3f901f7c795782ba8baa6da15544 je
bilo združenih 72,1737975 BTC iz 1EnJHhq8Jq8vDuZA5ahVh6H4t6jh1mB4rq in 614,24212398 BTC
iz
1EXvoGyYsbazaejgQPFrSKu8nh2jo-U6mdm
naslovov,
nakazani
pa
so
bili
na
19pufhHX37EM2aDawtr4mp5zqiRkVEArSk in 1FQwzBR6X-pzCmULZHZ16NUBHi5W9cHA7u2. Tej
transakciji so sledile še štiri transakcije v vrednosti 1000 BTC, izključno iz
1EnJHhq8Jq8vDuZA5ahVh6H4t6jh1mB4rq naslova, po katerih je bil ta naslov praktično izpraznjen;
22.12.2017 je 1EnJHhq8Jq8vDuZA5ahVh6H4t6jh1mB4rq vseboval manj kot 0,0002 BTC. Preostanek
je bil porabljen v štirih transakcijah, ki so se zgodile leta 2018 in so vsebovale tudi naslove, ki so pred
tem že prejeli večje količine ukradenih bitcoinov, tudi preko 1EnJHhq8Jq8vDuZA5ahVh6-
H4t6jh1mB4rq. Z vidika sledenja bitcoinov po naslovih je to ustvarilo cikle, ki močno otežijo sledenje.
Ko so ukradeni bitcoini zapustili centralni naslov, so se razpršili, napadalci pa so jih na različne načine
združili z drugimi bitcoini ali zamenjali za bitcoine, ki niso direktno povezani z NiceHash denarnico.
Tej metodi se reče "mešanje", pogosto pa se uporablja za prikrivanje izvora kovancev. Na spletu
obstajajo tudi ponudniki storitev, ki opravljajo mešanje kripto-valut v zameno za plačilo [1]. Pri kripto-
valutah, kjer so vse transakcije javne, se ta metoda uporablja za legitimne namene, npr. za zaščito
zasebnosti, in za nelegitimne namene, npr. kot pranje denarja. Do določene mere poteka mešanje tudi
spontano: kot je razvidno iz zgornjih opisov transakcij, lahko transakcije v verigi blokov vsebujejo
izhode več transakcij, ki se lahko razdelijo po več naslovih; vse to pa znatno oteži sledenje.
Kljub vsemu je za okradeno podjetje vzpostavitev ali uporaba obstoječega sistema za sledenje bitcoinom
obvezna. Prvi razlog je dejstvo, da je pri kraji bitcoinov najbolj verjetno, da se bo ugotovilo identiteto
roparja pri izplačilu. Drugi razlog je nujnost detekcije uporabe ukradenih kovancev na lastni platformi.
Čeprav lastnik naslova ne more preprečiti nakazila na svoj naslov, je potrebno takšne dogodke
nadzorovati, saj bi v nasprotnem primeru lahko stranke domnevale, da se napad v resnici ni zgodil oz.
je podjetje samo ukradlo kovance, kar bi očrnilo ugled podjetja.
1 https://www.nicehash.com
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
3
M. Gašparič in B. Vesnicer: Sledenje ukradenim bitcoinom po verigi blokov
V tem prispevku bomo najprej predstavili kako izgleda pošiljanje in mešanje bitcoinov. Nato bomo
opisali problem sledenja bitcoinom po verigi blokov in predstavili orodje, ki smo ga razvili za zaznavo
menjav kovancev na spletnih menjalnicah za kripto-valute in pologe ukradenih kovancev na NiceHash
platformi. To orodje temelji na seznamu "pomembnih" transakcij, na katerega je transakcija uvrščena,
če vsebuje dovolj "umazanih" kovancev. Analiza deluje dovolj hitro, da se seznam transakcij osveži z
vsakim novim bitcoin blokom in tako omogoča sprotno preverjanje transakcij, ki prihajajo na naš sistem.
Možno je tudi dokaj hitro preverjanje poljubnih transakcij, npr. takšnih, ki bi lahko bile izvedene na
menjalnicah za kripto-valute. V zaključku prispevka bomo primerjali naš pristop z določenimi
obstoječimi orodji in metodami.
2. POŠILJANJE IN MEŠANJE BITCOINOV
Bitcoin temelji na tehnologiji veriženja blokov. Vsak prenos kovancev je predstavljen z unikatno
transakcijo, ki je vključena v blok. Če blok z določeno transakcijo ni vključen v javno objavljeno in
splošno sprejeto verigo blokov, se smatra, da ta transakcija ni bila izvedena. Zato mora biti blok, ki
vsebuje množico transakcij, vedno povezan s predhodnim blokom. V povprečju je nov bitcoin blok
ustvarjen vsakih deset minut. Vsi bloki in vse transakcije pa so kriptografsko zaščiteni.
V tabeli št. 1 je predstavljen primer transakcije, kjer smo izvorni heksadecimalni zapis pretvorili v
berljivo obliko s pomočjo Blockchain.info2. Kot primer je uporabljena transakcija z oznako
3b5e91d24baf8a91b-f2f6af5c6a2db9f3307158d445cbabb7996072beb7fd91e. Ta transakcija vsebuje
prenos zadnjih 0,0000235 BTC iz 1EnJHhq8Jq8vDuZA5ahVh6H4t6jh1mB4rq naslova, ki so bili
pomešani s 499,984557 BTC iz 1HJWcM9o5D8aRSbeeAZ5G5E1f9gToATTFn naslova. Od skupno
499,9845805
BTC
je
bilo
100
BTC
nakazanih
na
naslov
z
oznako
1GqmHHy2uF3cZ6gHshuFSFZJeo9binA1AR, preostalih 399,98394214 BTC pa na naslov z oznako
1qbfx8J9xnhpMA6FbRmny86UWKkgL2xX9.
Tabela 1. Primer transakcije v izvorni obliki
{"lock_time":0,"size":520,
"inputs":[
{"prev_out":{"index":0,"hash":"5a49179cfc9f277de5b6abc51a71e24140131b757321ee4a6de8a06ff4b1e20c"
},
"script":"4730440220230896b58a27985a1058159255376e219076dfcd9d906b8db802a2845383b29402200a9e
3fef1ec4e95cb72170348d33c8a12dabd00daab9d9bfd4a2d549cfff7f56012103d15bc50e9a1309642f1673619c4
60b0b6fbb716940d2bd6c8c15e363f80feea3"},
{"prev_out":{"index":0,"hash":"66ed56f516bd6c40dd1df751b3044de4a21164a4bfde37a3112700c9298dbfd0
"},
"script":"473044022063a46df0e614b41d8937af821c8b883bf55388343fa8d20ea2d2fb5778c0e1d5022061d7fd
6a1a9d11f6e7818fe06af80726dce494a0ec14338c6b20f5dae2625696012103d15bc50e9a1309642f1673619c46
0b0b6fbb716940d2bd6c8c15e363f80feea3"},
{"prev_out":{"index":1,"hash":"e5cfd70c1134cb7bc0eaec6a9b7b112ac33cabb70de46a42de08b1ce737f274c"
},
"script":"483045022100b49d23b8fd59749d9f3370489c61aeefae5aa815aacd506483526f644e04be2902205f3e
57e4b3760b8d844b6ac6d254460b866e673d3e0c996f3cb1a64ae9b76e6d012103c0d8a5b75364981b87842505
3e57060e512aebd0499913621c34c5d8547a50f2"}],
"version":1,
"vin_sz":3,
"hash":"3b5e91d24baf8a91bf2f6af5c6a2db9f3307158d445cbabb7996072beb7fd91e",
2 https://blockchain.info/decode-tx
4
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Gašparič in B. Vesnicer: Sledenje ukradenim bitcoinom po verigi blokov
"vout_sz":2,
"out":[
{"script_string":"OP_DUP
OP_HASH160
adc2d1173f363b6eaad2a50bc827a26a58b0399f
OP_EQUALVERIFY OP_CHECKSIG",
"address":"1GqmHHy2uF3cZ6gHshuFSFZJeo9binA1AR","value":10000000000,
"script":"76a914adc2d1173f363b6eaad2a50bc827a26a58b0399f88ac"},
{"script_string":"OP_DUP
OP_HASH160
0930e8952b3dbaa306f3363cc552bdc825ff93ff
OP_EQUALVERIFY OP_CHECKSIG",
"address":"1qbfx8J9xnhpMA6FbRmny86UWKkgL2xX9","value":39998394214,
"script":"76a9140930e8952b3dbaa306f3363cc552bdc825ff93ff88ac"}]}
Kot je razvidno iz primera, ima dejanska transakcija tri vhodne elemente (glej: "prev_out"). To je zato,
ker vhodni elementi transakcij niso kovanci, ki se nahajajo na določenem naslovu, temveč izhodi
izbranih predhodnih transakcij. Bitcoin kovanec je v resnici metafora za prenos vrednosti, sam koncept
pa v verigi blokov ni udejanjen. V bistvu je naslov 1EnJHhq8Jq8vDuZA5ahVh6H4t6jh1mB4rq prvi
izhod
("index":0)
transakcije
("hash")
5a49179cfc9f277de5b6abc51a71e24140131b757321ee4a6de8a06ff4b1e20c. Takrat je ta naslov prejel
786 satoshijev oz. 0,00000786 BTC. Ista vrednost se je zdaj prenesla naprej; skupaj s 1564 satoshiji, ki
so prvi izhod transakcije z oznako 66ed56f516bd6c40dd1df751b3044de4a21164a4bfde37a311-
2700c9298dbfd0, in s 49.998.455.700 satoshiji, ki so drugi izhod transakcije z oznako
e5cfd70c1134cb7-bc0eaec6a9b7b112ac33cabb70de46a42de08b1ce737f274c.
Iz primera v tabeli št.1 se tudi vidi, da je naslov 1GqmHHy2uF3cZ6gHshuFSFZJeo9binA1AR prvi izhod
transakcije 3b5e91d24baf8a91bf2f6af5c6a2db9f3307158d445cbabb7996072beb7fd91e, njen drugi
izhod pa je naslov 1qbfx8J9xnhpMA6FbRmny86UWKkgL2xX9 (glej: "out").
Mešanje bitcoinov je metoda, ki se uporablja za prekinitev povezave med resničnim pošiljateljem
bitcoinov in resničnim prejemnikom. Pri tej metodi se kovanci pošiljajo na različne naslove, ki so na
novo ustvarjeni ali že obstoječi, hkrati pa se jim dodajajo kovanci iz drugih virov. Ta postopek traja tako
dolgo, da se sled zabriše in končni prejemnik dobi na svoj bitcoin naslov kovance, za katere je nemogoče
ugotoviti natančen izvor. Kako rezultat mešanja zgleda od blizu, je prikazano na sliki št. 1. Kako mešanje
zgleda od daleč, je prikazano na sliki št. 2.
Slika 1. Primer mešanja bitcoinov od blizu
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
5
M. Gašparič in B. Vesnicer: Sledenje ukradenim bitcoinom po verigi blokov
Slika 2. Primer mešanja bitcoinov od daleč
V prvem primeru so v obliki krogov in s črtkano obrobo prikazani samo naslovi in množice naslovov
ter povezave med njimi. V drugem primeru so v obliki kvadratov in s polno obrobo prikazane tudi
transakcije, ki še niso razširjene, saj bi bil sicer graf prevelik. Na dnu slike št. 2 se vidi kaj se zgodi v
primeru, da transakcija vključuje naslov, ki je pogosto uporabljan, npr. naslov menjalnice za kripto-
valute. Za ponazoritev naj omenimo, da smo samo dva tedna po napadu na NiceHash zaznali 3,139,890
naslovov, ki bi lahko prejeli vsaj en ukraden satoshi.
3. OPIS PROBLEMA SLEDENJA
Prav ogromno število možnih naslovov in vhodnih transakcij je največja težava sledenja bitcoinom po
verigi blokov. Teoretično lahko to število raste eksponentno, v praksi pa je omejeno s hitrostjo izvajanja
nakazil. Končno število transakcij, ki se bodo zgodile pred dejanskim izplačilom, je predvsem odvisno
od taktike napadalcev in od tega koliko sredstev so pripravljeni vložiti v zakrivanje sledi, saj transakcije
niso brezplačne.
Implementacija naše rešitve za sledenje bitcoinom mora biti predvsem hitra, saj drugače sprotno
preverjanje pologov na NiceHash platformi ni mogoče. Osnovni pogoj je, da se ena transakcija preveri
v roku nekaj milisekund. Na podlagi te analize se potem sistem odloči ali bo dovolil uporabo naloženih
kovancev ali ne. Drugi pogoj je, da v kolikor je potrebna analiza novega bitcoin bloka, ta ne sme trajati
več kot 10 minut, saj bi se v nasprotnem primeru bloki dodajali hitreje kot bi jih analizirali, torej bi se
zaostanek povečeval.
Ker se določen izhod bitcoin transakcije lahko uporabi samo enkrat kot vhod v drugo transakcijo, je
struktura transakcij dejansko usmerjen acikličen graf. Sledenje prenosom ukradenih sredstev po takšni
strukturi je precej enostavnejše in hitrejše kot bi bila navigacija po naslovih. Slabost takšnega pristopa
je, da v primeru, ko se lastništvo bitcoinov na določenem naslovu zamenja, se tudi sled za roparji izgubi,
saj sistem prenosom, ki jih izvajajo roparji ne sledi več; namesto tega pa sledi prenosom, ki jih izvajajo
novi lastniki ukradenih kovancev.
4. PREDLAGANA REŠITEV ZA SLEDENJE
Po našem mnenju obstajata dva osnovna, naivna pristopa k analizi izvora kovancev, če za sledenje
uporabimo graf transakcij. Pri prvem pristopu opazujemo transakcije, ki izhajajo iz začetne množice in
shranimo seznam končnih transakcij. V tem primeru se po grafu, oz. po verigi blokov, premikamo
"naprej". Izhodiščni seznam bi vseboval vse transakcije, ki so bile izvedene med krajo, seznam končnih
transakcij pa bi se osvežil z vsakim novim blokom. Ko bi želeli preveriti ali določena nova transakcija
vsebuje ukradene kovance, bi samo pogledali ali so njeni vhodni elementi že na našem seznamu. Npr.,
če opazujemo transakcijo ccee1babda611f244aafafe-3b9efd9cb2d8fa9633fea012697d25dc7b1f3b3cd,
ki je ena od začetnih transakcij, potem v določenem trenutku njen celoten graf izgledal tako kot prikazuje
slika št. 3, končne transakcije pa so prikazane na dnu slike.
6
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Gašparič in B. Vesnicer: Sledenje ukradenim bitcoinom po verigi blokov
Pri drugem pristopu je izhodiščna točka transakcija, ki jo analiziramo, zanimajo pa nas vhodi v to
transakcijo. Po grafu transakcij, oz. po verigi blokov, bi se premikali "nazaj" in sproti preverjali, če je
katera od vhodnih transakcij bila izvedena med krajo ali če smo že prispeli do transakcije, ki se je zgodila
pred vdorom.
Za prvi pristop je potrebno veliko prostora za hrambo seznama, s povečevanjem števila transakcij, ki so
na seznamu, pa se povečuje tudi čas potreben za analizo. Drugi pristop ni prostorsko zahteven, vendar
je izjemno počasen. Ker je pri pologih potrebno hitro analizirati vsako vhodno transakcijo, je bila za nas
edina možnost nadgradnja prvega pristopa.
Slika 3. Primer prostorsko intenzivnega naivnega pristopa k sledenju bitcoinov
Kot smo že omenili, število naslovov, po katerih se prenašajo ukradeni NiceHash kovanci, narašča zelo
hitro. Število vseh transakcij, ki vključujejo vsaj kakšen ukraden satoshi, pa raste še hitreje. Posledično
smo morali sprejeti kompromis, da je določena transakcija uvrščena na seznam "pomembnih" transakcij
le v primeru, da vsebuje dovolj "umazanih" kovancev. Koncept "umazanih" kovancev predstavlja vsoto
vhodnih vrednosti transakcij, ki so že na seznamu "pomembnih" transakcij. V primeru, da je delež teh
kovancev v novi transakciji dovolj visok, je tudi ta transakcija uvrščena na seznam, vsi njeni izhodi -
vključno s "čistimi" kovanci, ki so bili primešani k "umazanim" - pa se smatrajo kot "umazani". Npr.,
če bi bil prag za uvrstitev transakcije na seznam določen pri 10% "umazanih" kovancev in transakcija
e5cfd70c1134cb7bc0eaec6a9b7-b112ac33cabb70de46a42de08b1ce737f274c ne bi bila na seznamu,
potem tudi transakcija 3b5e91-d24baf8a91bf2f6af5c6a2db9f3307158d445cbabb7996072beb7fd91e ne
bi bila uvrščena na seznam (glej: tabela št. 1 in sekcija št. 2). Glede na to, da transakcija
e5cfd70c1134cb7bc0eaec6a9b7b112ac33-cabb70de46a42de08b1ce737f274c je na seznamu, saj v
resnici vsebuje veliko količino ukradenih kovancev, poleg tega pa sta na seznamu tudi drugi dve vhodni
transakciji,
bo
posledično
tudi
3b5e91d24baf8a91-
bf2f6af5c6a2db9f3307158d445cbabb7996072beb7fd91e uvrščena na seznam "pomembnih" transakcij.3
Moser et al. ta pristop k označevanju transakcij imenujejo "strup" [2].
Manjšanje deležev "umazanih" kovancev v transakcijah je povezano z večjimi stroški za napadalce.
Tudi zamenjava večjih količin kovancev ni enostavna, saj je bilo število ukradenih bitcoinov zelo veliko.
3 V tem članku ne moremo razkriti dejanskega deleža "umazanih" kovancev, ki se uporablja kot prag za uvrstitev
transakcije na seznam "pomembnih" transakcij.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
7
M. Gašparič in B. Vesnicer: Sledenje ukradenim bitcoinom po verigi blokov
Določitev praga za uvrstitev transakcije na seznam nam je omogočila fokusiranje na pomembnejše
transakcije in zmanjšanje velikosti seznama iz nekaj milijonov zapisov na nekaj tisoč. Takšen seznam
je dovolj majhen, da je iskanje po njem hitro. Preverjanje, če je določena transakcija že na seznamu,
traja le nekaj milisekund, osvežitev seznama, ko je nov blok priključen verigi blokov, pa je tudi dovolj
hitra, da je aktualni seznam vedno ažuren. Preverjanje, katere transakcije na seznamu predstavljajo
pologe na kripto-menjalnicah ali podobnih platformah, z uporabo javno dostopnih spletnih storitev, kot
je na primer WalletExplorer4, traja le nekaj minut.
5. ZAKLJUČEK
V tem prispevku smo predstavili potrebo po uporabi ali razvoju orodja za sledenje bitcoinom po verigi
blokov. Opisali smo, kako poteka pošiljanje in mešanje bitcoinov in kakšne so zahteve za analizo
transakcij na NiceHash tržnici. Nazadnje smo predstavili našo rešitev, ki je tudi implementirana, v obliki
spletne storitve, in omogoča sprotno preverjanje depozitov ter hitro analizo poljubnih transakcij.
Hitrost analize je dosežena na račun njene natančnosti. Pri poglobljenih analizah gibanja kovancev se
ponavadi uporabljajo metode, ki grozdijo naslove, ki se uporabljajo pri prenosih opazovanih kovancev
[3][4]. Te metode so bolj natančne, vendar tudi prepočasne za potrebe NiceHasha. Pri našem pristopu
se zanašamo na hevristiko označevanja transakcij, ki se imenuje "strup". Temelji na predpostavki, da se
lahko označi vse izhode določene transakcije kot "umazane", se pravi kot predstavnike ukradenih
kovancev, če je takšen tudi dovolj velik delež vhodov v transakcijo. Obstajajo tudi drugačne hevristike,
npr. "prvi-noter-prvi-ven" [5], kjer se opazuje pologe in dvige kovancev iz določenega bitcoin naslova,
kot ukradene pa se vedno označi točno določen del kovancev, odvisno od tega kdaj se je zgodil ustrezen
polog in kdaj ustrezen dvig. V kolikor se bodo v prihodnosti določila natančna pravila označevanja
kovancev, nameravamo naš sistem ustrezno prilagoditi.
6. LITERATURA
[1] MOSER Malte, BOHME Rainer, BREUKER Dominic "Inquiry into Money Laundering Tools in
the Bitcoin Ecosystem", eCrime Researchers Summit 2013
[2] MOSER Malte, BOHME Rainer, BREUKER Dominic "Towards Risk Scoring of Bitcoin
Transactions", International Conference on Financial Cryptography and Data Security 2014
[3] ERMILOV Dmitry, PANOV Maxim, YANOVICH Yury "Automatic Bitcoin Address Clustering",
IEEE International Conference on Machine Learning and Applications 2017
[4] HARRIGAN Martin, FRETTER Christoph "The Unreasonable Effectiveness of Address
Clustering", IEEE Conferences on Ubiquitous Intelligence & Computing, Advanced and Trusted
Computing, Scalable Computing and Communications, Cloud and Big Data Computing, Internet
of People, and Smart World Congress 2016
[5] ANDERSON Ross, SHUMAILOV Ilia, AHMED Mansoor, Making Bitcoin Legal, 2018
4 https://www.walletexplorer.com
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
IMPLEMENTACIJA NADGRADLJIVOSTI IN
ZAMENLJIVOSTI PAMETNIH POGODB NA
PLATFORMI ETHEREUM
BLAŽ PODGORELEC IN MUHAMED TURKANOVIĆ5
Povzetek: Pametne pogodbe se trenutno nahajajo v fazi zasnove koncepta,
kar proži veliko zanimanja javnosti. Tehnologija veriženja blokov je
omogočila oživitev in razvoj pametnih pogodb, ki sedaj predstavljajo
dodano vrednost tej tehnologiji. Zaradi omenjene zgodnje faze razvoja
pametnih pogodb se z njimi povezani vzorci in dobre prakse šele oblikujejo.
Za pametne pogodbe, nameščene v omrežje Ethereum, velja, da jih je zaradi
tehnologije veriženja blokov nemogoče naknadno spreminjati, kar lahko v
primeru napačne implementacije privede do nepredvidenih anomalij v
delovanju le teh. S tem se odpirajo vprašanja, kako je z nadgradnjo ali
spremembo že definiranega poslovnega procesa. Namen prispevka je
predstaviti arhitekturo in s tem predlog dobre prakse razvoja pametnih
pogodb, ki omogoča učinkovito zamenljivost in nadgradljivost že
nameščenih pametnih pogodb v omrežje verig blokov Ethereum. Predstavili
bomo modelirane koncepte in podali primere v visokonivojskem
programskem jeziku Solidity.
Ključne besede: • verige blokov • pametne pogodbe • Ethereum •
nadgradljivost • zamenljivost
NASLOVA AVTORJEV: Blaž Podgorelec, Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in
informatiko, Koroška cesta 46, 2000 Maribor, Slovenija, e-pošta: blaz.podgorelec@um.si. dr. Muhamed
Turkanović, docent, Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko, Koroška
cesta 46, 2000 Maribor, Slovenija, e-pošta: muhamed.turkanovic@um.si.
DOI https://doi.org/10.18690/978-961-286-162-9.2
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
9
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
1. UVOD
Pametne pogodbe (angl. Smart Contracts) se glede na poročilo Gartnerjevega grafa navdušenja za
tehnologijo veriženja blokov (angl. Hype Cycle for Blockchain Technologies) iz leta 2017, prikazanem
na Sliki 1, nahajajo v fazi zasnove koncepta, kar proži veliko zanimanja javnosti.
Slika 1: Gartnerjev graf navdušenja za tehnologijo veriženja blokov [1].
Osnovni koncepti pametnih pogodb (v nadaljevanju PP) so bili predstavljeni že leta 1997 s strani Nick
Szaboja [2]. Definiral jih je kot računalniško transakcijski protokol, ki avtomatizirano izvršuje
pogodbene pogoje in zmanjšuje potrebo po posrednikih, ki imajo vlogo izvrševalca pravil pogodb [3].
Predlagani koncepti zaradi neobstoja ustrezne tehnologije v preteklosti niso imeli možnosti ustreznega
razvoja. Vzpostavitev soglasja med neznanimi deležniki, ki ga ponuja tehnologija veriženja blokov
(angl. Blockchain), je omogočila oživitev in razvoj že predlaganih konceptov, ki sedaj predstavljajo
dodano vrednost tej tehnologiji. Tako je leta 2013, za razliko od platforme verig blokov Bitcoin,
platforma Ethereum ponudila možnost razvoja PP na verigi blokov omejeno zgolj s Turingovo
polnostjo. Omenjena platforma ni edina, ki ponuja možnost razvoja in uporabe PP na verigah blokov,
vendar še danes velja za najbolj priljubljeno in uporabljeno platformo za razvoj le teh [4]. Pojmovanje
»pametna pogodba« je lahko zavajajoče, saj je programska logika PP predpisujoča in nima nikakršnih
lastnosti umetne inteligence. Zaradi že omenjene zgodnje faze razvoja PP so izoblikovani vzorci dobrih
praks in arhitektur decentraliziranih aplikacij, ki temeljijo na PP, zelo okrnjeni. Posledica tega je, da
razvijalci PP prevzemajo veliko odgovornost, ki zahteva skoraj ničelno toleranco do napak v sami
implementaciji PP. Odgovornost je toliko večja zaradi domorodne kriptovalute Ether, katere skupna
vrednost je več milijard dolarjev [4]. V nadaljevanju bomo predstavili osnovne gradnike tehnologije
veriženja blokov, pametne pogodbe in platformo Ethereum, kot najbolj uporabljeno platformo za razvoj
PP na verigah blokov [4]. Predstavili bomo izzive zamenljivosti in nadgradljivosti PP platforme
Ethereum. Za konec bomo kot osrednji del prispevka predstavili predlog koncepta dobrih praks razvoja
PP z namenom učinkovitega doseganja zamenljivosti in nadgradljivosti že nameščenih PP v omrežje
Ethereum.
10
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
2. PAMETNE POGODBE NA VERIGAH BLOKOV
Tehnologija veriženja blokov omogoča vzpostavitev decentraliziranega in porazdeljenega omrežja
vozlišč, ki hranijo vse transakcije, izvedene znotraj omrežja, v med seboj povezanih blokih, ki jih
poimenujemo glavna knjiga (ang. ledger) [5]. Doseganje varnosti s pomočjo kriptografskih mehanizmov
je tisto, kar ob prenosu izvajanja PP znotraj omrežja, temelječega na tehnologiji veriženja blokov,
omogoča uporabo PP znotraj porazdeljenega in decentraliziranega okolja [3]. Kljub nepoznavanju
nasprotne strani lahko zaupamo transakciji, ki izvira z druge strani, saj je le ta podpisana s pomočjo
njenega zasebnega kriptografskega ključa. Z vidika tehnologije veriženja blokov pomemben gradnik za
doseganje enotnosti deležnikov omrežja v porazdeljenem okolju predstavljajo algoritmi soglasja.
Vozlišča s pomočjo algoritmov porazdeljenega soglasja potrjujejo nove, še nepotrjene transakcije ter
tako ustvarjajo kronološki vrstni red ustvarjenih transakcij in podatkov v obliki medsebojno povezanih
blokov [5]. Omogočanje oddaljenega decentraliziranega dogovora, zagotavljanje varnosti v
porazdeljenem okolju in povečevanje učinkovitosti z avtomatizacijo procesov so poglavitne prednosti
PP. Cilj PP je doseganje vnaprej programljivih transakcij, ki manipulirajo z vrednostmi ali stanji znotraj
le teh [3]. Pametne pogodbe, ki so zasnovane na principih programljivosti ter kriptografskih varnostnih
mehanizmih, tako nudijo možnost prenosa izvajalske in pogojne logike realnega problema v
avtomatizirano obliko, ki se bo izvedla ob točno definiranih pogojih. Pametne pogodbe na verigi blokov
si lahko predstavljamo kot instanco računalniškega programa, ki se izvaja na vseh vozliščih znotraj
omrežja verig blokov, kot prikazuje Slika 2 [6].
Slika 2: Shema decentraliziranega sistema in pametnih pogodb [6].
Slika 2 prikazuje interakcijo zunaj-lastniškega računa s PP, nameščeno znotraj omrežja verige blokov.
Klic funkcije, definirane znotraj PP, lahko rezultira v premik določenih sredstev domorodne kripto
valute Ether v ali izven PP in izvrševanje računskih operacij glede na vhodne parametre funkcij [7].
2.1. PLATFORMA ETHEREUM
Ethereum je porazdeljena računalniška platforma, ki uporablja tehnologijo veriženja blokov za
shranjevanje, ne samo stanja zunaj-lastniških računov (angl. External Owned Accounts), ampak tudi
stanj, povezanih s posebno vrsto pogodbenih računov (angl. Contract Accounts). Platformo Ethereum
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
11
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
si lahko predstavljamo kot transakcijsko temelječ stroj stanj, ki svoje delovanje začne z izvornim
stanjem, ki ga s postopnim izvajanjem transakcij spreminja v neko končno stanje. Iz tega razloga in
zaradi porazdeljenosti sistema se omrežje Ethereum imenuje tudi svetovni računalnik [8]. Pametne
pogodbe na platformi Ethereum vsebujejo trenutno vrednost stanja računa v domorodni kripto valuti
Ether, shrambo podatkov in programsko kodo. Programska koda omogoča branje in pisanje v shrambo
računa, pošiljanje sporočil in ustvarjanje novih PP [9]. Vsa vozlišča znotraj omrežja Ethereum poganjajo
Ethereum virtualni stroj (angl. Ethereum Virtual Machine – EVM), ki služi kot izvajalno okolje PP na
platformi Ethereum. EVM omogoča izvajanje PP, ki so skupek spremenljivk in funkcij. PP so najbolj
pogosto kodirane z visokonivojskim programskim jezikom Solidity [10] [3]. Klici funkcij PP, ki
spreminjajo stanje v verigi blokov, se prožijo s pomočjo transakcij, ki se procesirajo znotraj EVM. Za
procesiranje takšnih funkcij PP vozlišča v omrežju porabljajo določeno računsko moč, ki je odvisna od
zahtevnosti definiranih operacij znotraj funkcije PP. Izvajanje takih funkcij je potrebno plačati s t.i.
gorivom (angl. gas), katero ima znotraj omrežja definirano konverzno vrednost z Ethereum domorodno
kripto valuto Ether. Klic funkcije znotraj PP, ki ne spreminja stanja v omrežju verige blokov, ampak po
stanju samo poizveduje, se izvede na najbližjem vozlišču v omrežju in za procesiranje ne zahteva plačila.
Slika 3: Primer delovanje funkcije tranzicije stanja [11].
Slika 3 prikazuje vpliv klica transakcije na spremembo stanja, zapisanega na omrežju verige blokov z
delovanjem funkcije tranzicije stanja. Po izvedbi transakcije se z računa z naslovom »14x5f8ba« na
račun »bb75a980« prenese vrednost pet Etherjev. Transakcija hkrati vsebuje dva podatka »2« in »B«,
ki prožita izvedbo programske kode, definirane v PP z naslovom »bb75a980«. Programska koda preveri,
ali je mesto z indeksom dve v shrambi zasedeno. Ker je omenjeno mesto prosto, se na tem mestu nastavi
vrednost B, definirana v poslanih podatkih transakcije.
Pametne pogodbe v celoviti arhitekturi informacijskih sistemov, temelječih na verigah blokov,
predstavljajo zaledni sistem, ki je tako zamenjal centralizirane strežnike v tradicionalnih rešitvah.
Oblični del nove arhitekture predstavljajo t.i. decentralizirane aplikacije (dApp), ki so komunikacijo s
strežnikom zamenjale s komunikacijo s pametnimi pogodbami na verigah blokov. Da decentralizirana
aplikacija zaganja programljivo poslovno logiko znotraj pametnih pogodb, mora ob sklicevanju na
naslov pametne pogodbe uporabiti tudi sklicevanje na definirane funkcije (imena) znotraj le teh. Na ta
način lahko razvijalci decentraliziranih aplikacij uporabniku ponudijo uporabniško prijazen vmesnik, ki
v ozadju s pomočjo EVM izvaja poslovno logiko proženih funkcij pametnih pogodb. Na ta način
12
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
omogočimo uporabo pametnih pogodb oz. natančneje spreminjanje definiranih stanj znotraj pametnih
pogodb.
3. IZZIV
Ključna lastnost tehnologije veriženja blokov je nespremenljivost zapisov, kar obenem predstavlja
dodano vrednost same tehnologije. Z vidika PP na verigah blokov omenjena dodana vrednost lahko
predstavlja izvedbene ter varnostne težave. Izvorna koda PP z namestitvijo v omrežje verige blokov
(transakcija s programsko kodo je del potrjenega bloka) postane nespremenljiva, kar pomeni, da je v
primeru napačno implementirane programske logike le ta tudi nezamenljiva [6]. Nepredvidljiva
obnašanja PP z napakami v programski logiki so v preteklosti že rezultirala v poslovni škodi
udeležencev poslovnega procesa, implementiranega s pomočjo PP na verigah blokov. Eden izmed
uspešnih napadov na programske napake v implementaciji PP je bil t.i. napad TheDAO [12]. Pametna
pogodba TheDAO je izvajala decentraliziran avtonomni sklad tveganega kapitala in je napadalcem
zaradi programske napake v implementaciji PP omogočila krajo več kot 50 milijonov dolarjev [13]. Iz
podobnih razlogov razvijalci tako prevzemajo veliko odgovornosti pri razvoju programske logike PP,
saj je zahtevana skoraj ničelna toleranca do napak. Težava nespremenljivosti PP znotraj platforme
Ethereum se pojavlja ne samo na javnih omrežjih verig blokov, temveč tudi na omrežjih, uporabljenih
za zasebno in konzorcijsko rabo. Zaradi nezmožnosti zamenljivosti PP znotraj verige blokov se prav
tako pojavljajo tudi izzivi, do katerih prihaja v primeru nadgradnje ali spremembe definiranega
poslovnega procesa z vidika PP, kot osnovnih gradnikov decentraliziranih aplikacij. Zaradi nezmožnosti
zamenljivosti in nadgradljivosti PP, nameščenih znotraj omrežja verig blokov, so potrebni drugačni
načini in pristopi gradnje arhitekture ekosistema PP, ki bodo sestavljale decentralizirano aplikacijo, kot
v primeru tradicionalnih aplikacij. V primeru tradicionalnih aplikacij je morebitne napake v delovanju
brez vpliva na izgubo podatkov mogoče odpraviti ob samem odkritju. Prav tako se pojavi težava s
sklopljenostjo obličnega dela z zalednim delom, temelječim na verigah blokov, saj smo v primeru napak
primorani nameščati nove pametne pogodbe v verigo blokov, ki bodo zamenjale stare, nakar porušimo
povezavo med prej omenjenima komponentama celotne arhitekture decentraliziranih aplikacij. Osnovne
koncepte in gradnike predlagane arhitekture, ki omogoča zanesljivost in nadgradljivost, bomo v
nadaljevanju predstavili z osnovnim primerom PP Parkomat.
4. OPIS PREDLAGANEGA KONCEPTA
V tem poglavju bomo predstavili osnovne koncepte in gradnike predlagane arhitekture, ki omogoča
zanesljivost in nadgradljivost na osnovi primera PP Parkomat, katere naloga bo beleženje dodeljenih
dovoljenj vozilom za parkiranje na določenem parkirišču. Pomembno poslovno pravilo, ki ga mora
implementirati pogojna logika PP, je tudi omejitev, ki implementira možnost dodeljevanja pravic
parkiranja samo lastniku PP. Izvorna koda 1 prikazuje implementacijo PP Parkomat v visokonivojskem
programskem jeziku Solidity.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
13
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
contract Parkomat {
mapping (string => bool) private voziloDovoljenje;
function dodajDovoljenje(string reg) external {
voziloDovoljenje[reg] = true;
}
function odvzemiDovoljenje(string reg) external {
voziloDovoljenje[reg] = false;
}
function dobiStanjeVozila(string reg) external view returns(bool) {
return voziloDovoljenje[reg];
}
}
Izvorna koda 1: Pametna pogodba Parkomat.
Pametna pogodba Parkomat definira spremenljivko podatkovnega tipa preslikave, imenovano
voziloDovoljenje, ter tri funkcije:
dodajDovoljenje, ki kot vhodni argument sprejme registrsko številko vozila, kateremu dodeli
pravico do parkiranja, in le to zapiše v podatkovno strukturo voziloDovoljenje.
odvzemiDovoljenje, ki kot vhodni argument sprejme registrsko številko vozila, ki se mu
odvzame pravica do parkiranja, in le to zapiše v podatkovno strukturo voziloDovoljenje.
dobiStanjeVozila, ki kot vhodni argument sprejme registrsko številko vozila in iz podatkovne
strukture voziloDovoljenje prebere stanje dovoljenja parkiranja.
Stanje zapisov podatkovne strukture voziloDovoljenje v shrambi PP Parkomat, nameščene v omrežje
verig blokov, po vnosu petih vozil s pomočjo funkcije dodajDovoljenje vsebuje pet zapisov, prikazanih
na Sliki 4.
Slika 4: Stanje zapisov v shrambi PP Parkomat.
Če podrobneje pogledamo Programsko kodo 1, lahko ugotovimo, da ima prav vsak uporabnik sistema
možnost dodajanja in odvzemanja dovoljenj za parkiranje posameznim vozilom. Implementacija tako
ne sovpada z našim poslovnim pravilom, ki zahteva, da ima možnost dodajanja in odvzemanja dovoljen
za parkiranje posameznim vozilom samo lastnik parkomata. Glede na opisano je nujno potreben
popravek izvorne kode PP Parkomat. Kot smo predhodno omenili, pametnih pogodb, nameščenih v
14
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
omrežje, ni mogoče spreminjati, zato smo primorani implementirati novo PP, ki bo v implementaciji
programske logike upoštevala, da lahko samo lastnik parkomata dodaja in odvzema dovoljenja za
parkiranje vozil. Programska koda 2 prikazuje novo implementacijo PP Parkomat2, ki ob namestitvi v
omrežje verige blokov v shrambo PP zapiše naslov tistega, ki PP namešča v omrežje in se smatra za
lastnika parkomata.
import "./Lastnik.sol";
contract Parkomat2 is Lastnik {
mapping (string => bool) private voziloDovoljenje;
function dodajDovoljenje(string reg) external samoLastnik {
voziloDovoljenje[reg] = true;
}
function odvzemiDovoljenje(string reg) external samoLastnik {
voziloDovoljenje[reg] = false;
}
function dobiStanjeVozila(string reg) external view returns(bool) {
return voziloDovoljenje[reg];
}
}
Programska koda 2: Popravljena implementacija PP Parkomat2.
Posodobljena PP Parkomat2 deduje od novo ustvarjene PP Lastnik, katere implementacija je prikazana
v Programski kodi 3. Pametna pogodba Lastnik definira funkcijski modifikator, ki preveri, ali je klicatelj
funkcije določen kot lastnik PP Lastnik, ter zaradi dedovanja posledično tudi PP Parkomat2. V primeru,
da temu ni tako, funkcijski modifikator vrača napako pri izvajanju funkcije. S pomočjo funkcijskega
modifikatorja dosežemo, da lahko klice funkcij izvaja samo vnaprej določen uporabnik sistema, ki je v
našem primeru lastnik parkomata.
contract Lastnik {
address public lastnikParkomata;
constructor() public {
lastnikParkomata = msg.sender;
}
modifier samoLastnik() {
require(msg.sender == lastnikParkomata);
_;
}
}
Programska koda 3: Pomožna PP, ki definira lastništvo PP.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
15
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
Pametno pogodbo Parkomat2 namestimo v omrežje verige blokov, pri čemer lahko ugotovimo, da je
spremenljivka oz. podatkovna struktura voziloDovoljenje v shrambi PP Parkomat2 prazna, saj je
nameščena PP Parkomat2 popolnoma neodvisna PP v omrežju, ki nima logične povezave s PP
Parkomat. Pametna pogodba Parkomat2 tako vsebuje popravljeno implementacijo programske logike,
vendar nima dostopa do podatkov PP Parkomat, ki je implementirala poslovni proces pred uvedbo
popravkov izvorne kode.
Z namenom ponovne uporabe spremenljivk oz. podatkovnih struktur, ki se nahajajo v shrambi
posameznih PP, predlagamo koncept ločevanja programske logike PP in shrambe PP, kar privede do
dveh neodvisnih PP. Z ločevanjem programske logike PP in shrambe PP dosežemo šibko sklopljenost
programske logike PP in podatkov, s katerimi le ta operira, kar omogoča možnost implementacije
popravkov programske logike brez izgube podatkov, shranjenih v shrambi PP. Vzorec ločevanja
programske logike in podatkovnih struktur smo povzeli iz mikrostoritvene arhitekture.
Slika 5 prikazuje predhodno PP Parkomat, sedaj razdeljeno na dve neodvisni pametni pogodbi
ParkomatLogika in ParkomatPodatki. Pametna pogodba ParkomatPodatki tako definira podatkovno
strukturo voziloDovoljenje in funkcije, s katerimi je omogočena manipulacija podatkovne strukture (set,
get). Pametna pogodba ParkomatLogika definira funkcije, s katerimi dosežemo funkcionalnosti,
definirane s poslovnimi pravili.
Slika 5: Ločevanje programske logike od shrambe podatkov na primeru PP Parkomat.
Kot smo že omenili, sta pametni pogodbi ParkomatLogika in ParkomatPodatki v primeru namestitve v
omrežje verig blokov popolnoma neodvisni, za implementacijo poslovnega procesa pa je potrebno
povezovanje prej omenjenih pametnih pogodb na način, da bodo podatki v primeru morebitnih hroščev
v programski logiki ostali neodvisni in na voljo za uporabo pametni pogodbi, ki bo implementirala
popravke programske logike.
Za doseganje povezovanja pametnih pogodb v ekosistemu arhitekture, ki omogoča zamenljivost in
nadgradljivost pametnih pogodb v omrežju Ethereum se pojavlja potreba po neodvisnem gradniku,
katerega namen je hramba vseh imen in naslovov pametnih pogodb, nameščenih v omrežje, ki so
relevantne za gradnjo decentralizirane aplikacije. Predlagan gradnik smo poimenovali upravitelj
16
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
odvisnosti (ang. dependency manager). Konceptualna shema predlaganega gradnika je prikazana na
Sliki 6.
Slika 6: Upravitelj odvisnosti v ekosistemu PP.
Omenjen gradnik je PP, ki ob namestitvi v omrežje kreira dve ločeni pametni pogodbi, imenovani
UpraviteljOdvisnostiLogika
in
UpraviteljOdvisnostiPodatki.
V
shrambo
PP
UpraviteljOdvisnostiPodatki se ob kreiranju zabeležita imeni in naslova novo kreiranih pametnih
pogodb. Za doseganje povezovanja je potrebno omenjen gradnik vključiti v prav vsako PP, ki bo del
ekosistema pametnih pogodb, ki bodo tvorile decentralizirano aplikacijo. Če se navežemo na primer PP
ParkomatLogika in PP ParkomatPodatki, je potrebno naslov PP UpraviteljOdvisnostiLogika vključiti v
prej omenjeni pametni pogodbi kot parameter konstruktorja, ki se proži ob namestitvi PP v omrežje
verige blokov in s tem ustvari povezavo med omenjenima pametnima pogodbama in PP
UpraviteljOdvisnostiLogika. Prav tako se v seznam odvisnosti dodata pametni pogodbi, ki vključujeta
PP UpraviteljOdvisnostiLogika. Na ta način je omogočena komunikacija med PP ParkomatLogika in
PP ParkomatPodatki preko funkcij, ki jih omogoča PP UpraviteljOdvisnostiLogika. Omenjena
visokonivojska shema nameščenih PP v omrežje verige blokov je vidna na Sliki 7.
Slika 7: Shema ekosistema pametnih pogodb po namestitvi v omrežje verige blokov z gradnikom upravitelj
odvisnosti.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
17
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
Funkcije PP ParkomatLogika v svoji programski logiki kličejo funkcijo getNaslovIme, definirano
znotraj PP UpraviteljOdvisnostiLogika, ki glede na podano ime PP vrača naslov PP, nameščene v
omrežje verige blokov. Na Sliki 8 je prikazano delovanje funkcije dodajDovoljenje: ParkomatLogika v
navezavi s PP UpraviteljOdvisnostiLogika in PP ParkomatPodatki. V primeru napačne implementacije
programske logike PP ParkomatLogika opisan koncept razdelitve programske logike ter shrambe PP in
uporabe gradnika UpraviteljOdvisnosti omogoča zamenljivost PP ParkomatLogika. Namestitev nove
PP ParkomatLogika v verigo blokov bo povzročila kreiranje novega naslova omenjene PP, katerega
sprememba se bo ob vključitvi naslova PP UpraviteljOdvisnostiLogika v konstruktorju PP
ParkomatLogika odražala tudi v PP UpraviteljOdvisnostiPodatki. Na ta način bo novo implementirana
programska logika PP ParkomatLogika preko PP UpraviteljOdvinostiLogika lahko dostopala do
shrambe podatkov, ki jo je pred tem uporabljala starejša različica PP ParkomatLogika.
Slika 8: Delovanje funkcije dodajDovoljenje:ParkomatLogika.
Visokonivojska predstavitev zamenjave PP ParkomatLogika in rezultat proženja funkcije
dodajDovoljenje:ParkomatLogika je vidna na Sliki 9.
Slika 9: Delovanje funkcije dodajDovoljenje:ParkomatLogika v zamenjani PP ParkomatLogika.
18
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
Za konec poudarimo še, da so funkcije, ki omogočajo manipulacijo spremenljivk v shrambah PP, javne,
kar pomeni, da obstaja možnost klica PP s strani za to neavtoriziranega računa. Zaradi tovrstnega
problema predlagamo dodaten gradnik v ekosistem zamenljivosti in nadgradljivosti PP, ki služi kot
hramba prej definiranih zaupanja vrednih povezav s strani lastnika ekosistema PP. Predlagan gradnik je
prav tako PP, ki definira funkcijo, s katero pametne pogodbe, namenjene hrambi podatkov, pred vsako
manipulacijo podatkov preverijo pravico računa klicatelja funkcije do spremembe le te. Dodajanje
dovoljenj za komunikacijo je možno implementirati že v konstruktorju PP pred namestitvijo v
arhitekturo ekosistema PP ali pa s klicem funkcije, ki jo za to namensko definira PP. Zaradi
kompleksnosti dodatnega gradnika bomo podrobnosti le tega izpustili in predstavili v drugih prispevkih.
5. ZAKLJUČEK
Pametne pogodbe so s tehnologijo veriženja blokov, natančneje s platformo Ethereum, v tehničnem
smislu polno zaživele. Razlog temu je tudi možnost uporabe takšnih pametnih pogodb za namen
začetnih ponudb kovancev (ang. initial coin offering – ICO), ki so v zadnjih letih v razmahu, saj so
omogočile zbiranje več milijard evrov ustanovnega kapitala za različne projekte. Čeprav jih poznamo
že več kot 20 let, so njihova tehnična izvedljivost in koncepti, na katerih temeljijo, še zelo sveži. Zaradi
omenjene zgodnje faze razvoja pametnih pogodb se vzorci in dobre prakse razvoja pametnih pogodb
šele oblikujejo in vzpostavljajo. Hkrati prevzemajo razvijalci pametnih pogodb odgovornost, ki zahteva
skoraj ničelno toleranco do napak, kar je neizvedljivo v popolnosti. Ker temeljijo na konceptih
tehnologije veriženja blokov, kot so decentralizacija, porazdeljenost, nespremenljivost, se te lastnosti
prenašajo tudi na delovanje pametnih pogodb. Posledica je nezmožnost spreminjanja pametnih pogodb,
kar lahko v primeru napačne implementacije privede do nepredvidenih anomalij v delovanju le teh. V
svojem delu smo se lotili raziskovanja omenjene problematike ter predstavili način gradnje pametnih
pogodb, ki bi v primeru zahtev po spremembah poslovne logike ali ugotovljenih hroščev v
implementaciji posameznih že nameščenih pametnih pogodb, omogočal nadgradnjo oz. odpravo le teh.
V prispevku smo na kratko predstavili arhitekturo in s tem predlog dobre prakse gradnje pametnih
pogodb, ki omogoča učinkovito zamenljivost in nadgradljivost že nameščenih pametnih pogodb omrežja
Ethereum. Zaradi obširnosti same tematike smo izpostavili le del ključnih gradnikov predlagane
arhitekture in le te, za namene lažjega razumevanja, podkrepili s predstavitvijo in kratkimi primeri. V
nadaljnjih delih bomo arhitekturo razširili in vzpostavili ogrodje (ang. framework), ki bo razvijalcem še
dodatno olajšalo uporabo predstavljenih dobrih praks.
6. LITERATURA
[1]
D. Furlonger, R. Valdes, and R. Kandaswamy, “Hype Cycle for Blockchain Technologies,
2017,” Gartner, Julij, p. 3775165, 2017.
[2]
N. Szabo, “Formalizing and Securing Relationships on Public Networks,” First Monday, vol. 2,
no. 9, Sep. 1997.
[3]
M. Turkanović, A. Kamišalić, and B. Podgorelec, “DSI 2018 - Pametne pogodbe na verigah
blokov,” Dnevi Slov. Inform. , April 2018, pp. 1–8, 2018.
[4]
www.coinmarketcap.com, Cryptocurrency Market Capitalizations | CoinMarketCap, obiskano
12.5.2018.
[5]
M. Hölbl, L. Hrgarek, M. Kompara, and M. Turkanović, “Varnostni koncepti tehnologije
veriženja blokov,” no. april 2018, pp. 1–10, 2018.
[6]
K. Delmolino, M. Arnett, A. E. Kosba, A. Miller, and E. Shi, “Step by Step Towards Creating a
Safe Smart Contract: Lessons and Insights from a Cryptocurrency Lab.,” IACR Cryptol. ePrint
Arch. , vol. 2015, p. 460, 2015.
[7]
S. Luck, “Design and Implementation of a Smart Contract Creator Framework for IoT Devices,”
no. August, 2017.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
19
B. Podgorelec in M. Turkanović: Implementacija nadgradljivosti in zamenljivosti pametnih
pogodb na platformi Ethereum
[8]
M. Dameron, “Beigepaper: An Ethereum Technical Specification,” pp. 1–24.
[9]
G. Wood, “Ethereum: a secure decentralised generalised transaction ledger,” Ethereum Proj.
Yellow Pap. , pp. 1–32, 2014.
[10]
www.solidity.readthedocs.io/en/latest/index.html, Solidity — Solidity 0.4.21 documentation,
obiskano 15.5.2018.
[11]
V. Buterin, “A next-generation smart contract and decentralized application platform,” Etherum,
no. Januar, pp. 1–36, 2014.
[12]
N. Atzei, M. Bartoletti, and T. Cimoli, “A Survey of Attacks on Ethereum Smart Contracts
(SoK),” vol. 10204, no. Marec, 2017, pp. 164–186.
[13]
K. Bhargavan et al. , “Formal Verification of Smart Contracts Short Paper,” Proc. 2016 Acm
Work. Program. Lang. Anal. Secur. , pp. 91–96, 2016.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
RAZVOJ PROGRAMSKIH REŠITEV VERIŽENJA
BLOKOV ZA ENERGETSKO POSLOVNO DOMENO
ANDREJ BREGAR, CIRIL KAFOL, JURE TRILAR IN MATEJ NOSAN6
Povzetek: Ena aktualnejših tehnologij zadnjega časa je veriženje blokov, ki
zagotavlja sledljiv in zaupanja vreden konsenz glede velikih množic
transakcij. Ta tehnologija pridobiva vse več privržencev in primerov
uporabe v različnih poslovnih domenah. V prispevku analiziramo in
predstavimo možnosti in scenarije celovite uporabe mehanizmov veriženja
blokov v povezavi s poslovnimi ter reguliranimi procesi energetskih
sistemov. Kot enega prvih vzorčnih primerov v tej domeni realiziramo
predlog pilotskega projekta razvoja in uvedbe programske rešitve veriženja
blokov v izbranem procesu transparentnega, varnega ter sporazumnega
prenosa merilnih podatkov na trgu z električno energijo. Prototipna rešitev
je razvita na platformi Ethereum in zajema vse ključne elemente veriženja
blokov, kot so poslovna pravila na osnovi pametnih pogodb, zapisovanje in
persistenca transakcijskih podatkov v blokih, porazdeljena večvozliščna
arhitektura, uporabniška identiteta, varnostni mehanizmi na podlagi
certifikatov in podpisovanje z žetoni. Varen uporabniški vmesnik je razvit
kot decentralizirana aplikacija. Model je zaseben, kar pomeni, da končni
odjemalci dostopajo s svojimi identitetami, ki se vodijo z javnimi ključi,
prek varnega spletnega uporabniškega vmesnika do vozlišč distributerjev,
na katerih infrastrukturo so vezana merilna mesta. V prispevku opišemo
implementirani poslovni scenarij, pametne pogodbe s procesnimi pravili,
podatkovni model, arhitekturo sistema, varnostne mehanizme in
uporabniški vmesnik. Ker temelji programska rešitev na specifični izbrani
platformi, opravimo tudi primerjavo razpoložljivih tehnologij veriženja
blokov in izbiro najprimernejše tehnologije za aplicirani scenarij v
energetski domeni. Članek zaključimo z analizo pridobljenih izkušenj z
uporabo in zrelostjo tehnologije. Izpostavimo tako prednosti in priložnosti
kakor tudi pomanjkljivosti in dvome.
Ključne besede: • veriženje blokov • platforma Ethereum • primerjalna
študija • informatizacija poslovnih procesov energetske domene • razvoj
decentraliziranih aplikacij
NASLOV AVTORJEV: dr. Andrej Bregar, Informatika d.d., Vetrinjska ulica 2, 2000 Maribor, Slovenija, e-pošta:
andrej.bregar@informatika.si. dr. Ciril Kafol, Informatika d.d., Vetrinjska ulica 2, 2000 Maribor, Slovenija, e-
pošta: ciril.kafol@informatika.si. Jure Trilar, Informatika d.d., Vetrinjska ulica 2, 2000 Maribor, Slovenija, e-
pošta: jure.trilar@informatika.si. Matej Nosan, Informatika d.d., Vetrinjska ulica 2, 2000 Maribor, Slovenija, e-
pošta: matej.nosan@informatika.si.
DOI https://doi.org/10.18690/978-961-286-162-9.3
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
21
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
1. UVOD
Podobno kot v vseh kompleksnejših poslovnih in reguliranih okoljih, se tudi v (elektro)energetski
domeni izvajajo številni temeljni procesi, kot so postopki priključevanja odjemalcev električne energije,
izbire in menjave dobaviteljev na energetskem trgu ter pridobivanja, obdelave in izmenjave merilnih
podatkov. Ti procesi so aplikativno-informacijsko podprti, praviloma pa tudi standardizirani, na primer
po priporočilih foruma ebIX [32]. Za tovrstne poslovne procese je ključno, da ustrezno zaščitimo
podatke in podatkovne transakcije ter da dosežemo konsenz glede veljavnosti podatkov s strani številnih
akterjev, ki so udeleženi v procesih. V ta namen lahko posežemo po zelo aktualni tehnologiji veriženja
blokov [12]. V zadnjem času so se pojavile prve ideje o uporabi veriženja blokov v energetiki [13],
vendar je dejanskih raziskav in praktičnih aplikacij razmeroma malo, zaradi česar ostaja odprtih veliko
možnosti. Namen pričujočega prispevka je tako raziskati možnosti uporabe ustreznih mehanizmov
veriženja blokov za podporo poslovnim, informacijskim in tehničnim procesom v energetski domeni ter
izpeljati realizacijo pilotskega projekta uvedbe veriženja blokov v procesih zagotavljanja merilnih
podatkov s trga električne energije.
Tehnologija veriženja blokov je v zadnjem času po zaslugi pretežne rasti cene kriptovalut, kot so
Bitcoin, Ether in množica ostalih alternativnih kriptovalut ( altcoins), na vrhu pričakovanj glede
bodočega razvoja in uporabnosti [8]. Vendar pa smo šele v stopnji pred dejansko komercializacijo, na
kar nakazuje dejstvo, da gre v veliki meri za nekritično prevzemanje novosti kot takšnih in ne
prevzemanje tehnologije po načelu uporabnosti, kar je značilnost kasnejših stopenj krivulje
življenjskega cikla proizvoda ali storitve. Zato je v tem trenutku edini res oprijemljivi koncept
kriptovalutni trgovalni ekosistem, medtem ko so drugi primeri uporabe precej omejeni, zlasti z vidikov
ergonomije in umestitve v obstoječe procese. Zakaj omenjamo umestitev v obstoječe procese, če naj bi
blokovne verige prinašale popolnoma nove, boljše procese? Ker je sprejemanje tehnologije širše v
družbi precej verjetno bolj odvisno od zmožnosti za umestitev v obstoječe procese kot pa od nekritične
zamenjave le-teh. Še kako velja maksima, da »so blokovne verige več kot le tehnologija, so strategija«,
kajti uporaba tehnologije predvideva tudi pravila, standarde in procese, ki so specifični zgolj zanjo. Zato
je ena naših dodatnih nalog ugotoviti, katera platforma omogoča poleg tehnične učinkovitosti tudi
prilagoditev obstoječim procesom. Samo tako bo sčasoma tehnologija veriženja blokov postala bolj
zrela in uporabna za širšo javnost.
Preostanek članka sestoji iz petih poglavij. V 2. poglavju opišemo možnosti uporabe tehnologije
veriženja blokov v energetski poslovni domeni. V 3. poglavju opravimo primerjavo nekaterih ključnih
razpoložljivih platform in izberemo tisto, za katero menimo, da je najprimernejša za razvoj pilotske
rešitve. Poglavje 4 predstavi pilotsko aplikacijo veriženja blokov v energetski domeni ter tehnološke,
metodološke in razvojne rešitve, po katerih smo posegli. V 5. poglavju povzamemo pridobljene izkušnje
ter izpostavimo prednosti in slabosti tehnologije. Članek zaključimo s 6. poglavjem, v katerem ocenimo
potenciale in zmožnosti za uporabo in nadgradnjo tehnologije v prihodnosti.
2. MOŽNOSTI UPORABE TEHNOLOGIJ VERIŽENJA BLOKOV V
INFORMACIJSKIH IN POSLOVNIH DOMENAH ENERGETSKIH SISTEMOV
Aplikacije in tehnologije veriženja blokov dobivajo v zadnjem času vse več primerov uporabe v
različnih poslovnih domenah, tudi v energetiki [13]. (Elektro)energetska domena ima nekatere
specifične značilnosti. Vzpostavljenih je veliko poslovnih in reguliranih procesov [14, 32] ter tržnih
modelov in storitev, v katerih so v medsebojnih pogodbenih odnosih številni deležniki na energetskem
trgu, kot so distributerji, regulatorji, dobavitelji, odjemalci, proizvajalci in drugi. Ti deležniki v sklopu
standardiziranih in lastniških procesov shranjujejo, obdelujejo in izmenjujejo velike množice zaupnih
elementarnih, agregiranih ter transakcijskih podatkov. V zadnjem času dobivajo pomembno vlogo tudi
pametne naprave, pametna omrežja, integracije informacijskih in operacijskih tehnologij ter koncepti
interneta stvari, ki so podvrženi nezanemarljivim kibernetskim varnostnim tveganjem [3]. Za razliko od
22
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
finančnega sektorja, ki je primarno osredotočen na transakcije kot informacijske entitete, trži energetski
sektor energijo v obliki fizičnega proizvoda, katerega na osnovi transakcij dobavlja odjemalcem prek
infrastrukture energetskega omrežja.
Tehnologija veriženja blokov skuša zagotoviti zaupanja vreden in sledljiv konsenz glede množic
transakcij, shranjenih v dokončnih blokih v mreži vozlišč. Bloki so replicirani med različnimi lastniki,
kar omogoči porazdeljeno persistenco transakcij. Sklenjene so tudi pametne pogodbe, ki vzpostavijo
zaupanje in pravila med udeleženimi partnerji. Z decentralizacijo in pametnimi pogodbami je vsaj
teoretično možno izboljšati nivo varnosti ter zagotoviti večjo neodvisnost od osrednje avtoritete. Za
energetsko domeno to pomeni, da lahko zmanjšamo potrebo po posrednikih in regulatorjih. S
kriptovalutami lahko udejanjimo tudi modele neposrednega plačevanja porabe energije na podlagi
pravil, ki jih določajo členi pogodb.
Kljub predpostavkam o tehnološki in konceptualni primernosti je zlasti v ožjem regionalnem okolju
veliko konceptov in potencialov nepreverjenih ter neizkoriščenih. Ocenjujemo, da bi bilo mogoče na
področju energetike aplicirati mehanizme veriženja blokov v več scenarijih v povezavi s poslovnimi in
reguliranimi procesi. Osnovni scenariji uporabe so zbrani v tabeli 1, v kateri so za reprezentativnejše
med njimi podana tudi dodatna pojasnila.
Tabela 1. Scenariji uporabe veriženja blokov v energetiki
Scenarij uporabe
Dostop
Obnašanje
Domena
Aplikativni
deležnikov
model
Izmenjava podatkov na energetskem trgu
Zaprt/zaseben
Sodelovalno
Regulirana
Pogodbeni,
Zasebni pogodbeni dogovor med deležniki
ali
upravljanje
Regulirane storitve
odprt/javen
lastništva
Varna posredna izmenjava podatkov
Registracija podatkov o lastništvu virov (merilne Zaprt/zaseben Sodelovalno
Regulirana
Upravljanje
naprave, proizvodne naprave)
ali
lastništva
odprt/javen
Certifikacija in garancije (obnovljivi viri energije,
Zaprt/zaseben
Sodelovalno
Regulirana
Upravljanje
emisije)
ali
lastništva
odprt/javen
Optimizacija modelov nakupa in trženja energije
Zaprt/zaseben
Tekmovalno
Poslovna
Transakcijski
Odobritev dostopa do merilnih podatkov
ali
Persistenca transakcij o proizvodnji in dobavi
odprt/javen
Optimizacija pri oblikovanju ponudb
Optimizacija pri iskanju ponudnikov
Pogajanja med ponudniki in odjemalci
Plačevanje s kriptovalutami
Upravljanje in optimizacija kapacitet energetskega
Zaprt/zaseben
Sodelovalno,
Regulirana,
Pogodbeni,
omrežja na podlagi ponudbe in povpraševanja
ali
tekmovalno
poslovna
transakcijski
Odobritev dostopa do merilnih podatkov
odprt/javen
Persistenca transakcij o proizvodnji in dobavi
Dinamično načrtovanje topologije omrežja
Dinamično planiranje obsega proizvodnje
Dinamično planiranje hrambe presežne
energije
Pogodbe o proizvodnji in hrambi energije
Neposredno decentralizirano trženje in distribucija Odprt/javen
Sodelovalno,
Poslovna
Pogodbeni,
energije
tekmovalno
transakcijski
Odprt energetski trg ali pametne skupnosti s
proizvodnimi napravami na osnovi obnovljivih
virov energije
Proizvajalci neposredno tržijo energijo
Ni posredniških dobaviteljev
Ni reguliranega procesa menjave dobavitelja
Pogodbene relacije o dobavi in hrambi energije
Shranjevanje presežne proizvedene energije
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
23
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
Persistenca transakcij o proizvodnji in dobavi
Plačevanje s kriptovalutami
Merjenje in obračun porabe energije
Odprt/javen
Sodelovalno,
Poslovna
Pogodbeni,
tekmovalno
transakcijski
Obračun energije za mobilnost (polnilnice električnih Odprt/javen
Sodelovalno,
Poslovna
Transakcijski
vozil)
tekmovalno
Enkratne tržne storitve
Persistenca transakcij odjema za vpogled
Komunikacija pametnih naprav
Odprt/javen
Sodelovalno
Poslovna
Transakcijski
Glede na trenutno stanje in stopnjo razvitosti tehnologije veriženja blokov vsi identificirani scenariji še
niso neposredno in v celoti izvedljivi ali so izvedljivi z omejitvami. Poglavitni težavi sta skalabilnost in
hitrost transakcij, o čemer podrobneje pišemo v petem poglavju članka. Prav tako bo večina scenarijev
zahtevala regulativne spremembe na energetskem trgu, ki jih ne bo zlahka zagotoviti, čeprav so se
nekatere aktivnosti in pobude v tej smeri tako na nacionalni kot mednarodni ravni že pričele [15]. Te
spremembe bodo morale upoštevati regulirane procese, standardizacijo podatkovnih struktur in model
vlog na energetskem trgu. Ker pa je tehnologija veriženja blokov še v fazi razvoja, velikih pričakovanj
in pridobivanja aplikativne zrelosti, lahko pričakujemo za večino identificiranih scenarijev višjo stopnjo
izvedljivosti v prihodnjih letih.
Scenariji se razlikujejo po stopnji kompleksnosti. Najpreprostejši za izvedbo so tisti, ki urejajo lastništvo
podatkov, naprav, dokumentov in certifikatov. Ti scenariji ne izkoriščajo nujno vseh potencialov
veriženja blokov, še zlasti ne v duhu udejanjanja inovativnih in aktivnih poslovnih modelov. Veliko
možnosti se pokaže, če podpremo tekmovalne in sodelovalne modele med dobavitelji in/ali distributerji,
neposredno shranjevanje agregiranih merilnih podatkov v verige blokov ali pa javne modele, v katerih
lahko tudi proizvajalci in odjemalci od centralne avtoritete pridobijo certifikate ter vzpostavijo svoja
vozlišča. V slednjem primeru bi bilo možno oblikovati odprt energetski trg, na katerem lahko odjemalci
proizvajalci (tako imenovani »prosumerji«) neposredno tržijo proizvedeno energijo brez posredniških
dobaviteljev, pri čemer ta koncept razmeroma enostavno in naravno nadgradijo v smeri plačevanja s
kriptovalutami.
Prvi primer aplikacije odprtega decentraliziranega sistema trženja in distribucije električne energije je
bil s pilotskim projektom v okviru manjše pametne samooskrbujoče energetske skupnosti že udejanjen
v praksi [6]. Gre za mikroomrežje v newyorški soseski Brooklyn, ki obratuje neodvisno od centralnega
regionalnega omrežja, tako da je samostojno odgovorno za celotno proizvodnjo in porabo energije, ki
je pridobljena iz obnovljivih virov. Odjemalci, ki nimajo lastnih proizvodnih kapacitet, tako kupujejo
energijo neposredno od sosedov proizvajalcev, pri čemer niso potrebni vmesni dobavitelji. Cene se
oblikujejo dinamično glede na ponudbo in povpraševanje. Vsi transakcijski podatki se shranjujejo v
blokovni verigi na platformi Ethereum, ki omogoča tudi sklepanje pogodb med lokalnimi proizvajalci
in odjemalci. Takšen decentralizirani sistem ima več temeljev [13]:
Pametne pogodbe uravnovešajo ponudbo in povpraševanje ter tako nadzirajo energetska
omrežja v smislu proizvodnje, odjema in shranjevanja energije.
Transakcijski podatki se shranjujejo v decentralizirani varni blokovni verigi, do katere deležniki
dostopajo s svojimi digitalnimi identitetatmi.
Transakcije se udejanjajo samodejno na osnovi pametnih pogodb in vplivajo na dobavo energije
prek fizičnega energetskega omrežja.
Odjemalci lahko plačujejo transakcije s kriptovaluto.
V blokovni verigi so shranjeni tudi lastniški podatki, kot so potrdila o lastništvu proizvodnih
virov, certifikati itd.
Spremljajoča infrastruktura energetskih sistemov, ki delujejo na osnovi blokovnih verig,
vključuje pametne merilne naprave, pametne električne naprave, senzorje, mobilne aplikacije
itd.
24
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
Eden od možnih izzivov je konsolidacija konceptov veriženja blokov ter teorije večkriterijskega
odločanja in pogajanj. Veriženje blokov namreč v svoji zasnovi ne obravnava konfliktnih transakcij
tekmovalnih strani, večkriterijskih preferenčnih struktur, pogajanj in popuščanj za maksimizacijo ali
minimizacijo koristnosti sodelujočih partnerjev v situacijah tipa »win-win« ali nasprotujočih si entitet v
situacijah tipa »win-lose«, prav tako pa tudi ne drugih konceptov, ki jih podpirajo mehanizmi
tradicionalnih večkriterijskih pogajalskih procesov. Konsolidacija teh dveh področij odpira vrata za
inovativne poslovne modele, v katerih ponudniki storitev na podlagi zmožnosti vpogleda v zaščitene
transakcijske podatke dinamično maksimizirajo svoje večkriterijske koristnosti, oblikujejo in ponudijo
optimalne storitve in storitvene strategije, izberejo najboljše razpoložljive stranke ali odjemalce ter
presežejo svoje tekmece. Hkrati pa stranke ali odjemalci prav tako dinamično maksimizirajo svoje
koristnosti z izbiro najboljših razpoložljivih storitev in ponudnikov storitev.
3. PRIMERJAVA RAZPOLOŽLJIVIH TEHNOLOGIJ VERIŽENJA BLOKOV IN
IZBIRA NAJPRIMERNEJŠE TEHNOLOGIJE ZA APLICIRANI SCENARIJ
3.1. Primerjava tehnologij
Pri določitvi nabora platform za primerjavo smo izhajali iz subjektivne ocene priljubljenosti posameznih
platform v razvijalski skupnosti. V danem obdobju (prva četrtina leta 2018) se je ta priljubljenost
odražala tudi na lestvici tržne kapitalizacije primarne kriptovalute posamezne platforme [30], z izjemo
tehnologije Hyperledger Fabric [35], ki ne uporablja enotne primarne valute. Bitcoin [28] je kljub
tehnološki zastarelosti v določenih parametrih upoštevan kot orientacija, saj gre za najbolj prepoznavno
in prvo kriptovaluto, ki je v javnosti sinonim za veriženje blokov.
Pri primerjavi je zajet širši nabor lastnosti, ki so pomembne v okviru tehničnih, konceptualnih, razvojnih
in stroškovnih okvirov posamezne platforme blokovnih verig. Primerjavo podaja tabela 2, v kateri
poskušamo prikazati tiste vidike, ki so pomembni za produkcijske izvedbe decentraliziranih aplikacij,
kot tudi tiste, ki so relevantnejši za uspešno prototipiranje in preizkušanje konceptov, na katerih temeljijo
posamezne platforme. Realna ocena je, da so tiste platforme, ki so najbolj primerne za produkcijo, zaradi
svoje nazivne hitrosti in ostalih želenih lastnosti, še v razvoju, tiste, ki so primerne za prototipiranje, pa
so bolj robustne in počasne. Menimo, da to pri prototipih ne predstavlja težav, saj se bo v naslednjih
nekaj letih bržkone dalo prenesti koncepte in izvedbene načrte decentraliziranih aplikacij iz manj
zmogljivih na bolj zmogljive platforme.
Pri nekaterih primerjalnih kriterijih je uporabljena subjektivna kvalitativna lestvica, pri kateri pa smo
skušali ocene objektivizirati na osnovi preseka zaupanja vrednih virov. Prav tako smo pri oceni hitrosti
transakcij upoštevali povprečje različnih virov, pri čemer v tabeli ni navedena absolutna hitrost, saj je
prepustnost pogojena tudi z obremenitvami omrežij. Omrežja, ki se intenzivneje uporabljajo, npr.
Ethereum ob večjih zbiranjih prispevkov ( ICO – Initial Coin Offering [18]), večkrat doživijo
upočasnitve. Platforma Bitcoin zato v zadnjem času uvaja izboljšavo v obliki protokola » lightning
network«, ki pohitri in poceni transakcije tako, da le-te niso javne v verigi blokov [19].
Tabela 2. Primerjava lastnosti platform za veriženje blokov
Bitcoin [28]
Ethereum
Hyperled
NEO [27]
IOTA
EOS [20]
Cardano
[33]
ger Fabric
[36]
[29]
[35]
Lastna
Da (BTC)
Da (ETH)
Ne
Da (NEO,
Da
Da (EOS)
Da (ADA)
kriptovaluta
GAS)
(IOTA)
Pametne
Omejeno
Da
Da
(Go,
Da
(C#,
Ne
Da (C++)
Da (CCL,
pogodbe
(RSK)
(Solidity)
Java,
Java,
REPL)
Chaincode
Python)
)
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
25
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
Tip konsenza in
PoW
PoW,
PoS
Modularn
dBFT, PoS
Tangle,
PoS
PoS
nagrajevanja
(Casper)
o
PoW
(Ouroboros
)
Nosilec razvoja,
Skupnost,
Skupnost,
IBM
OnChain
IOTA
Block.One
Cardano
upravljanje
Bitcoin
Ethereum
ltd, CoZ
foundatio
foundation,
foundation
foundation
n
IOHK,
Emurgo
Stroški
Da – veliki
Da – srednji
Ne
Da – majhni
Ne
Ne
Da
–
transakcij
majhni
Hitrost
7 tx/s
25 tx/s
3500 tx/s
1000 tx/s
500 tx/s
1mio tx/s
260 tx/s
transakcij
Decentralizacija
Večja
Večja
Minimalna
Manjša
Večja
Manjša
Večja
Tip omrežja
Javno
Javno
ali
Zasebno
Javno
ali
Javno
Javno
Javno
ali
zasebno
zasebno
zasebno
Dostop
Odprt (per-
Odprt (per-
Zaprt (per-
Oboje
Oboje
Odprt (per-
Oboje
missionless)
missionless)
missioned)
missionless
)
Anonimni računi Da
Da
Ne
Oboje
Oboje
Da
Da
Hitri
kanali
Lightning
Raiden,
Ne
Trinity
Off
Ne
Ne
(state channels)
Network
Generalized
potrebuje
Tangle
mo
Primerno za IoT,
Ne
Da,
z
Da
Da,
z
Da
Da,
z
Da
M2M
omejitvami
omejitvami
omejitvami
Primerno
za
Ne
Da
Da
Da
Da
Da
Da
decentralizirane
aplikacije
Obratovalni
Ne
Ne
Veliki
Ne
Ne
Ne
Ne
stroški
Podpora
razvi-
Velika
Zelo velika
Srednja
Velika
Manjša
Manjša
Manjša
jalske skupnosti
Komentar
Ni primerno
Primerno za
Visoki
Centralizira
Še
v Še
v Še
v
za
lastne
prototipiranj
stroški
-nost
razvoju
razvoju
razvoju
odjemalce
e
(TCO)
3.2. Izbira tehnologije
Na podlagi opravljene primerjave tehnologij, analize virov, pregleda razvojne dokumentacije ter
razvojnih in tržnih vizij ocenjujemo, da v tem trenutku nobena platforma tehnologij blokovnih verig še
ni v zadostni meri pripravljena za produkcijske rešitve zaradi tehničnih kot tudi netehničnih značilnosti.
Zadržki se nanašajo predvsem na težave s preformančnimi parametri posameznih platform, kot so
število transakcij na sekundo (v realnih scenarijih) in skalabilnost, ter na konceptualne izzive, kakršni
so centraliziranost, dostopnost in odprtost razvojne podpore ter tržni vidiki. Med slednje spada odsotnost
pristopov z dokazljivo uporabnostjo v prihodnosti (»future-proof«), saj se lahko potrebe trga hitro
spreminjajo, zaradi česar obstaja tveganje, da postanejo koncepti, ki so trdno določeni v posameznih
platformah, zastareli. Pri izbiri najprimernejše platforme tehnologije blokovnih verig za izvedbo
prototipnih rešitev smo tako upoštevali naslednje kriterije:
zadosten dostop do razvojnih virov, velikost in odzivnost aktivne razvijalske skupnosti,
dostopnost dokumentacije in dobri primeri obstoječih izdelkov, na osnovi česar lahko
minimiziramo možnost, da se razvoj ustavi, ker temeljne infrastrukturne rešitve niso dobro
dokumentirane ali morebitne težave še niso bile obravnavane, ter se izognemo kritičnim
tehničnim oviram, ki nastanejo v primeru napak na jedrni platformi, in težavam z vzpostavitvijo
lastne informacijske hrbtenice, ki bi podpirala to platformo;
možnost prototipiranja in testiranja širokega nabora uporabniških scenarijev, česar ne
omogočajo vse platforme, saj so nekatere med njimi specializirane zgolj za specifične tehnične
in poslovne pogoje;
možnost prenosa realiziranih konceptov in uporabne vrednosti na druge platforme, ko bodo le-
te bolj zrele za produkcijsko uporabo;
26
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
uporaba javnega okolja, pri čemer se za shranjevanje podatkov in procesne potrebe integracije
lahko zanašajo na javno infrastrukturo, ki je ni potrebno vzdrževati.
Javno okolje resda omogoča manjšo prilagodljivost različnih tehničnih parametrov, vendar primerjava
z zasebnimi (lastniškimi) integracijami tehnologije blokovnih verig pokaže, da je potrebno upoštevati
tudi stroške vzpostavitve, predvsem pa vzdrževanja takega sistema, ki zahteva specialistična znanja in
stroškovno manj učinkovite pristope. Bržkone ni potrebno posebej izpostaviti javnega značaja
informacij in zapisovanja v porazdeljeno bazo podatkov, ki sama po sebi omogoča nadzor ter s tem
vzbuja zaupanje uporabnikov in širše javnosti tako do aplikacije kot tudi do ponudnika storitve.
Marsikateri avtor opaža, da je tehnologija blokovnih verig začetek protokolov zaupanja in konsenza, ki
bodo temelj bodočim (bolj) decentraliziranim omrežjem.
Na osnovi kriterijev smo za potrebe razvoja prototipne rešitve izbrali tehnologijo Ethereum [25, 33].
Specifikacija protokola za varen prenos podatkov v tehnologiji blokovnih verig na omrežju Ethereum
omogoča:
hitro pridobitev podatkov iz platform Ethereum, ki praviloma ne presega 300 milisekund;
manjšo hitrost zapisovanja in potrjevanja zapisov, ki praviloma zahteva od 3 do 5 minut;
bolj konstantno generiranje blokov v primerjavi z omrežjem Bitcoin;
uporabo različnih razvojnih okolij in knjižnic, kot so Truffle, Remix Web IDE itd.;
procesiranje programske logike v izvajalnem okolju Ethereum Virtual Machine [10], ki
omogoča visoko decentralizacijo na 27.500 vozliščih po vsem svetu;
razvoj pametnih pogodb v namenskem jeziku Solidity [10];
integracijo s pametnimi pogodbami iz spletnih aplikacij na osnovi aplikacijskega programskega
vmesnika Ethereum JavaScript API (Web3.js) [23], kar predstavlja široko razvojno okolje;
domorodno sredstvo za potrjevanje transakcij v obliki kriptovalue Ether v »agregatnem stanju«
Gas [31], kar predstavlja mikro enote primarne valute in se nanaša na obremenitev »največjega
in najpočasnejšega« računalnika za svetu, pri čemer so v praksi stroški transakcij manjši kot
provizije za transakcije Bitcoina;
transformacijo iz energetsko potratnega protokola nagrajevanja PoW ( Proof-of-Work) v
protokol PoS ( Proof-of-Stake) [17, 24];
razvoj v različnih razvojno-testnih omrežjih (Ropsten, Rinkeby, Kovan ali RPC po meri), v
katerih se za testiranje ne porablja prava vrednost Ethra, kot je to na glavni hrbtenici ( main-net);
največji konzorcij podpornikov iz industrije ( Enterprise Ethereum Alliance) [21].
4. RAZVOJ PILOTSKE REŠITVE VERIŽENJA BLOKOV V ENERGETSKI
DOMENI
4.1. Scenarij uporabe
Scenarij uporabe rešitve veriženja blokov smo oblikovali na dveh internih delavnicah. Prve delavnice
se je udeležilo večje število domenskih strokovnjakov. Na njej smo identificirali scenarij in opredelili
njegove osnovne značilnosti. Delavnico smo izvedli s pomočjo polstrukturiranih intervjujev in
ustvarjalnega zbiranja idej s tehniko možganske nevihte [9]. Analizirali smo pričakovanja in potrebe
ciljnega sistema ter zmožnosti tehnologije. Pri tem smo upoštevali številne vidike in kriterije:
Splošno uredbo o varstvu osebnih podatkov (GDPR) [16], katere implikacija je omejevanje na
obdelavo domenskih podatkov, ki niso kritični s stališča pravne varnosti;
umestitev v obstoječe procese v energetski domeni;
preprečevanje manipulacij procesov, vpogleda v poslovanje organizacij in kibernetskih tveganj;
tehnično izvedljivost, zlasti z vidikov obsega podatkov za obdelavo in persistenco, hitrosti in
števila transakcij ter števila samostojnih vozlišč omrežja;
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
27
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
neposredno uporabnost v sklopu obstoječe informacijske podpore poslovanju energetskega
sektorja;
primernost za demonstracijske namene krepitve internih kompetenc ter predstavitve tehnoloških
in konceptualnih zmožnosti in potencialov v okviru širšega okolja;
relativno enostavno in hitro izvedljivost;
primernost za hitro prototipiranje in implementacijo na javni platformi (Ethereum).
Druge delavnice se je udeležila omejena skupina domenskih strokovnajakov. S tehniko sortiranja kartic
[11] smo oblikovali natančen nabor konceptov, na katerih temelji aplikacija, ter definirali splošno
arhitekturno zasnovo sistema, osnovne podatkovne strukture, temeljna pravila pametne pogodbe in
deležnike procesa.
Na podlagi identificiranih omejitev in neizpolnjevanja definiranih pogojev smo izločili vse scenarije, ki
vključujejo neposredno shranjevanje in obdelavo merilnih podatkov, pridobljenih na posameznih
merilnih mestih odjemalcev električne energije, čeprav predstavljajo nekateri od teh scenarijev
tehnološki, regulativni, funkcionalno-konceptualni in razvojno-inovativni izziv. Kot enega prvih realnih
primerov smo tako v okviru predloga pilotske rešitve uvedli koncepte veriženja blokov v procesih
zagotavljanja posrednega dostopa do merilnih podatkov dobaviteljem električne energije. V pristojnosti
naprednega merilnega centra je možnih več scenarijev dostopa do merilnih podatkov odjemalca in/ali
proizvajalca električne energije prek storitev za izmenjavo podatkov [15]. Izbrali smo podmnožico
scenarijev, ki jih opredeljujejo členi pogodbe o uporabi podatkovnih storitev dostopa do merilnih
podatkov odjemalca/proizvajalca električne energije. Členi so povzeti v tabeli 3.
Tabela 3. Pogodba o uporabi podatkovnih storitev dostopa do merilnih podatkov
1. člen:
Dobavitelju električne energije X bo omogočen spletni dostop do četrturnih merilnih in obračunskih podatkov za merilno mesto
št. Y podpisanega odjemalca/proizvajalca električne energije za obdobje zadnjih 12 mesecev. Zajeti bodo mesečni četrturni
podatki o odjemu in/ali prevzemu delovne in jalove energije ter mesečni količinski podatki po tarifah.
2. člen:
Dobavitelju električne energije X bo omogočen spletni dostop do četrturnih merilnih podatkov za merilno mesto št. Y
podpisanega odjemalca/proizvajalca električne energije za pretekli mesec. Zajeti bodo mesečni četrturni podatki o odjemu in/ali
prevzemu delovne in jalove energije.
3. člen:
Dobavitelju električne energije X bo omogočeno zagotavljanje statističnih merilnih in obračunskih podatkov za merilno mesto
št. Y podpisanega odjemalca/proizvajalca električne energije za obdobje zadnjih 24 mesecev. Zajeti bodo mesečni količinski
podatki o odjemu in/ali prevzemu delovne in jalove energije po tarifah.
Merjeni podatki o porabi električne energije pripadajo posameznim končnim odjemalcem in so v lasti
distribucijskih podjetij. Dostop do teh podatkov je za dobavitelje elektrike posledično omejen, hkrati pa
zanje predstavlja neprecenljiv vir informacij za oblikovanje optimalnih storitev in utrditev konkurenčne
sposobnosti na trgu. Informacijska rešitev na temelju veriženja blokov v skladu z zakonodajo omogoča
odjemalcu, da posredno prek distributerja odobri dobavitelju vpogled v osebne merilne podatke, s čimer
pridobi dobavitelj možnost analize 15-minutnih odbirkov in na osnovi le-teh tudi možnost oblikovanja
najustreznejše poslovne ponudbe. S pametno pogodbo so pri tem določena pravila, ki so sprejemljiva za
vse udeležene strani.
Ustvarjalec pogodbe je dobavitelj ali distributer električne energije. Končni odjemalci ne morejo
vzpostaviti svojih lastnih vozlišč, temveč dostopajo s svojimi identitetami, ki se vodijo z javnimi ključi,
prek varnega spletnega uporabniškega vmesnika do vozlišč dobaviteljev ali vozlišč distributerjev, na
katerih infrastrukturo so vezana merilna mesta. Ko odjemalec z zasebnim ključem podpiše enega ali več
opredeljenih členov pametne pogodbe, se v bloku ustvari nova transakcija, ki je ni mogoče spreminjati
in je kadarkoli na voljo za vpogled tako temu odjemalcu kakor tudi lastnikom vozlišč (administratorjem
28
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
sistema). Podatki transakcije identificirajo merilno mesto, distributerja, dobavitelja in časovno obdobje
merilnih podatkov. Dobavitelj lahko pridobi odobrene podatke od distributerja na osnovi storitveno
usmerjene integracije in jih uporabi za potrebe poslovnih analiz.
Ustvarjalec pogodbe ima še nekaj dodatnih možnosti. Lahko dodaja nove člene pogodbe, razporeja
žetone med uporabnike in vidi, katere identitete so podpisale posamezne člene. Možna razširitev je, da
podpisovanje členov ni dovoljeno vsem uporabnikom, temveč le tistim, ki imajo zadostno število
žetonov. Pri tem ima ustvarjalec pogodbe oziroma administrator sistema nadzor, komu lahko dodeli
pravice dostopa.
4.2. Tehnična izvedba
Prototip sestoji iz zalednega ( back-end) dela, katerega osnova je pametna pogodba, ki ureja glavno
logiko in zapis podatkov o uporabnikih in potrjenih členih pametne pogodbe v strukture polj, ter
začelnega ( front-end) uporabniškega vmesnika, ki skrbi za prijazno interakcijo med uporabnikom in
blokovno verigo Ethereum. Programska koda je javno objavljena na portalu GitHub na naslovu
http://www.github.com/juretrilar/dapp-informatika. Upoštevani so nekateri uveljavljeni vzorci zasnove
decentraliziranih aplikacij [1, 2].
4.2.1.
Avtentifikacija uporabnika
Avtentikacija uporabnika, ki ima lahko tudi vlogo lastnika (administratorja) pogodbe, se vrši prek
denarnice platforme Ethereum, natančneje vtičnika MetaMask. Ta omogoča prijazno komuniciranje z
blokovno verigo, saj ga uporabniki preprosto dodajo v brskalnik. To je najbolj splošno sprejet način
interakcije med spletnimi aplikacijami in platformo Ethereum. Predpostavka je, da se samo edinstveni
uporabnik lahko avtenticira in podpisuje transakcije s svojim zasebnim ključem. En vidik takšne oblike
avtentikacije, ki je v nasprotju s tradicionalnimi, kot so certifikati ali kombinacija uporabniškega imena
in gesla, je, da izključujemo osebne podatke, tako iz denarnice kot tudi iz vseh transakcij. Seveda je
možno povezati javni ključ denarnice z bazami osebnih podatkov, vendar se v luči uredbe GDPR temu
izogibamo, s čimer zagotovimo skladnost z uredbo ter ustvarimo nastavke za z GDPR skladne rešitve
drugih ponudnikov, ki bodo lahko bolje prilagajali svoje nišne pristope za identifikacijo (KYC/AML
[26]), da bodo pravno ustrezni. Ti nastavki bodo v obliki interakcije med javnim in zasebnim ključem
uporabnikove denarnice ter ponudnikom storitve identifikacije.
4.2.2.
Zaledje – pametna pogodba za shranjevanje podatkov
Za implementacijo in testiranje pametne pogodbe, ki upravlja z logiko in shranjuje zapise, smo uporabili
spletno razvojno okolje Remix (remix.ethereum.org), ki je dostopno na glavni strani združenja
Ethereum. Omogoča relativno hitro testiranje in objavo pametnih pogodb na testnem omrežju Ropsten
[7], s čimer smo se izognili precej bolj kompleksnemu postopku objave pametne pogodbe iz lastnega
razvojnega vozlišča. Ko podatke zapisujemo, traja potrditev zapisa od 3 do 5 blokov, kar pomeni nekaj
minut. Če želimo podatke brati, pa je čas za to zanemarljiv, praviloma pod 300 milisekund.
Struktura pametne pogodbe je relativno razumljiva vsakomur, ki pozna osnove programiranja. V prvem
delu so definirane spremenljivke in polja ( array) ter podatkovne strukture ( struct), ki se nanašajo na
globalne zunanje lastnosti pogodbe, objekte uporabnikov, ki vsebujejo podpisane člene in stanje
žetonov, ter objekte posameznih členov pogodbe, ki zajemajo besedilo in rezultate zgoščevalnih funkcij
za napredno preverjanje. Sledijo funkcije, ki se nanašajo na uporabniške operacije. To so funkcije
zasebnega (samo za uporabo znotraj pogodbe) ali javnega tipa (za zunanje klice), ki vračajo podatke
uporabnikov in omogočajo uporabniško podpisovanje členov. Nazadnje so implementirane še funkcije
za upravljanje z vsebinskimi členi pogodbe ter upravljanje identitet, ki podpisujejo posamezene člene.
Del implementacije pogodbe je razviden iz izseka programske kode.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
29
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
Programska koda 1. Izsek pametne pogodbe
contract FinalContract {
/* Definicije */
address public contractCreatorAddress = msg.sender;
string public contractName = "Pogodba o uporabi podatkovnih storitev dostopa do merilnih podatkov";
struct User {
bytes32[] activeArticles; /* Cleni pogodbe, ki jih podpise uporabnik */
uint balanceOf; /* Stanje zetonov */
}
mapping (address => User) public users; /* Preslikava uporabnikov */
address[] private usersList;
mapping(bytes32 => string) articles; /* Preslikava clenov pogodbe */
bytes32[] private articleList;
/* Funkcije */
function userSignArticles(address _address, bytes32[] _articles) public {
for (uint i = 0; i < _articles.length; i++) userSignArticle(_address, _articles[i]);
usersList.push(_address);
}
function setUserTokenBalance(address _address, uint _value) public {
users[_address].balanceOf = _value;
usersList.push(_address);
}
function addHashValue(string value) public returns(bool) {
articleList.push(keccak256(value));
return addKeyValueByHash(keccak256(value), value);
}
function addKeyValueByHash(bytes32 hash, string value) private returns(bool) {
if(bytes(articles[hash]).length != 0) {
return false;
}
articles[hash] = value;
return true;
} }
Ko pogodbo objavimo, pridobimo njen unikaten naslov in vmesnik ABI ( Application Binary Interface),
s katerim lahko to pogodbo povežemo z uporabniško aplikacijo. Sedaj je pogodba dovzetna za proženje
njenih funkcij iz zunanjega sveta. Čim nekaj shranimo v pogodbo, tega ni moč izbrisati. Pogodba deluje
samostojno na unikatnem naslovu in če jo želimo dopolniti, jo lahko shranimo samo na nov naslov,
vendar pri tem izgubimo podatke, ki se nanašajo na prejšnjo verzijo. Tako zagotovimo, da sta pogodba
in obstoj podatkov vezana na unikaten naslov, kar zaznamo v primeru preusmeritve administratorja ali
tretje osebe na morebitno alternativno pogodbo. Unikaten naslov se nahaja samo na omrežju (npr.
Ropsten), na katerem smo pogodbo objavili. Če bi objavili produkcijsko verzijo na glavnem omrežju
( mainnet), ki dejansko porablja sredstva s pravimi vrednostmi, nas aplikacija na to opozori.
4.2.3.
Začelje – uporabniški del decentralizirane aplikacije
Uporabniški odjemalec temelji na osnovnih gradnikih spletnih aplikacij (HTML5, CSS3) z razširitvijo
Materialize CSS, ki mu daje modernejši izgled. Za manipulacijo z vmesnikom DOM ( Document Object
Model) služi knjižnica jQuery, vse pa je nameščeno v ogrodju Express [22], ki se izvaja na mini
strežniku Node.js za lokalno testiranje. Za javno objavo v spletu smo vzpostavili odlagališče Github, ki
je povezano s platformo HerokuApp [34] in prikaže prototip na javnem spletnem naslovu.
Uporabnik lahko nastopa v dveh vlogah – kot navadni uporabnik ali kot ustvarjalec pametne pogodbe.
S tem ima na voljo dva različna vmesnika. Ponazorjena sta v naslednjem podpoglavju.
4.3. Uporabniška izkušnja
Navadni uporabnik z aktivirano denarnico v vtičniku MetaMask obišče decentralizirano aplikacijo
( dApp), v kateri vidi svojo identiteto in stanje sredstev (žetonov) ter aktivnosti omrežja s prikazom
30
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
pisanja v zadnje bloke. Tiste člene pogodbe, ki jih ni že prej podpisal, potrdi, če se z njimi strinja. To
prikazuje slika 1. Kot dodaten varnostni ukrep je zraven posameznega člena dodan tudi zgoščen zapis
tega člena ( keccak256). Ko želi uporabnik oddati označene člene, to stori v dialogu za podpis členov. V
potrdilu o transakciji so zapisani pomembni podatki o členih, identifikaciji transakcije ter identiteti
lastnika in podpisovalca pametne pogodbe, kot je razvidno iz slike 2. Uporabnik ob kasnejših obiskih
aplikacije vidi tudi že podpisane člene pogodbe, katerih pa ne more spremeniti.
Slika 1. Spletni vmesnik za navadnega uporabnika s prikazom pametne pogodbe
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
31
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
Slika 2. Podpisovanje členov pametne pogodbe z vtičnikom MetaMask
Ustvarjalec, lastnik, ponudnik oziroma administrator pogodbe je tista identiteta, ki pogodbo objavi v
omrežju Ethereum. Pozoren mora biti na to, da unikaten naslov pametne pogodbe skopira v aplikacijo,
ki jo objavi na želenem javno dostopnem spletnem naslovu. Ko odpre aplikacijo, ta zazna njegovo
identiteto. V kolikor se ta sklada z identiteto ustvarjalca pogodbe, dobi na voljo tudi upravljanje v
administrativnem načinu, ki ga kaže slika 3. Tu lahko dodaja člene pogodbe in spremlja, katere identitete
so podpisale posamezne člene, ne more pa jih spreminjati ali brisati. Kadar je za dostop do členov
zahtevano določeno število žetonov, ki jih mora imeti navadni uporabnik v lasti, lahko določa te količine
in dodeljuje žetone. Ker s tem zagotovimo nadzor nad dostopom, ni predvidena funkcija, da si
uporabniki med seboj pošiljajo žetone.
32
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
Slika 3. Uporabniški vmesnik za dobavitelja električne energije
5. ANALIZA IZKUŠENJ Z UPORABO IN ZRELOSTJO TEHNOLOGIJE
Z uporabo tehnologije blokovnih verig na platformi Ethereum smo razmeroma hitro in brez večjih težav
implementirali izbrani scenarij. V okviru tega scenarija se je tehnologija izkazala kot primerna in
uporabna. Kljub temu bi lahko hitro naleteli na ovire, če bi za implementacijo izbrali katerega od
kompleksnejših scenarijev, ki so identificirani v drugem poglavju članka. Kot kaže tabela 4, ki je delno
povzeta iz literature [5, 13] in delno oblikovana na osnovi pridobljenih lastnih izkušenj, je ob
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
33
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
upoštevanju trenutne stopnje zrelosti uporaba tehnologije blokovnih verig kompromis med številnimi
prednostmi in slabostmi.
Tabela 4. Prednosti in slabosti uporabe tehnologije veriženja blokov v energetskih informacijskih sistemih
Prednosti
Slabosti
Nižji stroški transakcij in nižji računi za odjem energije Popolna izguba podatkov v primeru izgube identitete
zaradi možnosti trženja brez posredniških dobaviteljev
Nizka skalabilnost, počasnost in visoki stroški transakcij
Padanje tržnih cen zaradi boljše transparentnosti transakcij
na nekaterih platformah veriženja blokov
v okviru veljavnih regulativ
Neprimernost tehnologije za nekatere scenarije uporabe
Boljši in širši vpogled v transakcijske podatke o Neustrezen oziroma omejujoč regulativni okvir za
proizvodnih virih in odjemu zaradi decentralizacije v
nekatere scenarije uporabe
okviru regulativ
Funkcionalne pomanjkljivosti in varnostna tveganja
Poenostavitev poslovnih domen, pravil in procesov v
zaradi nezadostne standardizacije in regulative
modelih blokovnih verig, ki temeljijo na porazdeljenih
transakcijah in pametnih pogodbah, v primerjavi z
Pomanjkanje razvojnih izkušenj in dokumentacije
obstoječimi reguliranimi domenami in procesi
Možnost tehničnih težav pri vpeljavi tehnologije in
Poenostavitev in krepitev vloge odjemalcev proizvajalcev
uvedbi aplikativnih rešitev
kot ponudnikov energije na trgu zaradi zmanjšanja Morebitna slaba sprejetost tehnologije pri uporabnikih
pristojnosti posredniških dobaviteljev kot vmesnih členov
zaradi kompleksnosti, nerazumevanja in nezaupanja
Boljši modeli samooskrbe v pametnih energetskih Ni osrednje avtoritete, ki bi reševala nesporazume
skupnostih
Zahtevana je večja fleksibilnost omrežij
Boljši in enostavnejši modeli dobave energije za Kibernetska tveganja zaradi možnosti zlorab na
mobilnost
omrežnem nivoju, npr. pri upravljanju s pametnimi
Fleksibilnejši tržni modeli in storitve
merilnimi napravami
Preverljivost, varnost, redundantnost in integriteta
podatkov ter nezmožnost njihovega ponarejanja
Uvedba mehanizmov za splošni konsenz in opustitev
potrebe po zaupanju osrednji avtoriteti
Ker je tehnologija blokovnih verig v zadnjih letih pridobila na popularnosti, se pogosto uporablja kot
sinonim za univerzalno rešitev za vse probleme v širokem naboru industrij. Vendar moramo pri tem biti
pozorni, saj je tehnologija v zgodnji fazi razvoja, obenem pa ima številne pomanjkljivosti, ki se jih
entuziasti sicer zavedajo, a vseeno premalo upoštevajo pri načrtovanju razvoja aplikacij in reševanju
problemov. Frisby [4] in Marr [5] sta izpostavila nekaj ključnih pomanjkljivosti, na katere moramo biti
pozorni pri razmisleku o reševanju problemov s pomočjo tehnologije blokovnih verig.
Tehnologija ne more biti vse, kar od nje zahtevamo. Kot vsaka tehnologija, je tudi ta ujeta med tremi
ključnimi cilji, in sicer: hitrostjo, nizko ceno in decentraliziranostjo. Od tehnologije se pričakuje
pokrivanje vseh treh kriterijev, kar pa ni mogoče. Največja težava je zagotavljati hitrost transakcij v
distribuiranem okolju, kar je izjemno težko izpolnjiva zahteva, saj je decentraliziranost kot princip
časovno zahtevna (hitre transakcije » one-to-many« in » many-to-one« zahtevajo izjemne
komunikacijske in procesne zmogljivosti). Če bi želeli transakcijsko zmogljivost rešitev s tehnologijo
blokovnih verig približati trenutnim sistemom, bi bilo potrebno zagotoviti visoko zmogljivo
komunikacijsko in procesno okolje za nekaj deset tisoč transakcij v sekundi, kar pa bi vplivalo na
proizvodno ceno transakcije. Uporabnost v okolju, v katerem je potrebno zagotavljati veliko število
transakcij v kratkem času, je torej vprašljiva ali cenovno zahtevna.
V fazi načrtovanja je tako potrebna previdnost. Morebitne oglaševane hitrosti prenosa in zapisa v
blokovne verige posameznih platform je potrebno ustrezno oceniti glede na dejanske zmožnosti
platform v realnih scenarijih. Kadar je hitrost delovanja tehnologije bistven del poslovnega modela
uporabe, je z veliko verjetnostjo pričakovati, da bo to največja težava pri izvedbi, saj tehnologija danes
zanjo morda še ni zrela. Temu se kaže izogniti, tako da predvidimo uporabniške scenarije, ki niso
popolnoma odvisni od pogostega in hitrega zapisovanja v bazo podatkov. Večino nazivnih hitrosti pri
34
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
novejših platformah so namreč dosegli pri testiranju v zaprtih omrežjih, z izredno majhnim številom
vozlišč, z optimiziranimi zapisi z večjim številom transakcij na blok in neposredno povezavo.
Tehnologija je neučinkovita na področju podpore uporabnikom. Enostavni problemi, s katerimi se
srečujemo ob uporabi programskih rešitev, kot je npr. izguba ali pozaba gesla, so trenutno rešljivi v
nekaj minutah. Tehnologija blokovnih verig pa predvideva uporabo personaliziranih denarnic, ki so
vezane na strojno opremo, npr. na trdi disk, in s tem posledično na uporabnika. Izguba ali pozaba gesla
tako pomeni, da nimamo več dostopa do virov. Ni namreč nadrejene ali paralelne centralizirane
avtoritete, ki bi zagotavljala podporo uporabnikom. Prav tako še ni izdelanih principov, ki so osnova
zaupanja, kakršni so zahtevki po povračilu denarja, obravnava kraj in ukradene identitete ipd.
Tehnologija blokovnih verig torej predpostavlja uporabnike, ki ne potrebujejo podpore in so nevtralni
do vprašanj zaupanja, kar ni stvarna domneva.
Tehnologija uvaja težave v procese, ki trenutno delujejo brez težav. Internetna prodaja in kartično
poslovanje sta skupaj z obstoječimi komunikacijskimi tehnologijami dosegla zadovoljivo raven ugodja
uporabnikov in hitrosti, pri čemer lahko s transakcijami, ki trajajo med 2 in 10 sekundami, opravimo
praktično vse, kar potrebujemo za operativno poslovanje ali življenje. Nekaj poizkusov, s katerimi so
testirali alternativne rešitve na platformi Ethereum, pa je pokazalo, da hitrost in obseg transakcij še
zdaleč ne dosegata željenega oziroma obstoječega nivoja, še zlasti zato, ker rastejo sistemske zahteve
eksponencialno s številom uporabnikov. Iz tega lahko zaključimo, da iščemo alternativno rešitev za
upravljanje s procesi, ki trenutno delujejo dobro. Kako torej najti vzvod za uporabo tehnologije?
Pomanjkanje regulative in nadzora ustvarja tvegano okolje. To okolje je izpostavljeno znatnim
možnostim za kibernetske napade. Dokumentirani so številni primeri vdorov in zlorab, katerih posledica
so nemalokrat tudi nezanemarljive finančne izgube. Prav tako se lahko zgodi, da so zakonodajna in
vladna telesa prisiljena sprejti ukrepe proti posameznim platformam in aplikacijam veriženja blokov
zaradi kibernetskih groženj ali poslovnih modelov, ki niso skladni z regulativo.
Kompleksnost tehnologije lahko povzroči, da uporabniki ne prepoznajo njenih prednosti. Za uporabnike
so koncepti enkripcije, decentraliziranosti in porazdeljenosti, ki so temelj tehnologije blokovnih verig,
pogosto zapleteni za razumevanje. Posledično ne dojamejo potencialov uporabnosti tehnologije.
Marsikdo v modelu porazdeljenih transakcij in pametnih pogodb, ki odpravlja posredniške vloge,
kakršne so finančne ustanove ali dobavitelji na energetskem trgu, ne razpozna prednosti. Brez
zadostnega sprejemanja tehnologije pa le-ta težko v popolnosti zaživi in se dolgoročno obdrži.
Vse zapisano pomeni, da je potrebno pred uporabo tehnologije blokovnih verig resneje razmisliti o
temeljnih problemih, ki jih poskušamo reševati z njo, in o omejitvah tehnologije. Sklepamo lahko, da
tehnologija blokovnih verig ni univerzalen odgovor za vse probleme.
6. ZAKLJUČEK
Razvoj pilotske rešitve je pokazal, da je možno tehnologijo veriženja blokov razmeroma koristno
uporabiti v različnih domenah, ki niso neposredno vezane na princip plačevanja s kriptovalutami, tudi v
energetiki. Pri tem je na voljo zadovoljiva podpora večjega nabora obstoječih platform, ki omogočajo,
da aplikacije dokaj hitro in enostavno implementiramo ter namestimo v produkcijsko okolje. Kljub temu
je tehnologija zaenkrat še podvržena določenim omejitvam, zaradi katerih nekateri scenariji uporabe
niso izvedljivi ali so izvedljivi le pogojno. Pri v popolnosti izvedljivih scenarijih se poraja vprašanje, ali
ima njihova informatizacija na osnovi tehnologije veriženja blokov kakršnekoli bistvene konceptualne,
tehnološke in razvojne prednosti pred bolj tradicionalnimi spletnimi, podatkovnimi, integracijskimi ter
varnostnimi pristopi in tehnologijami. Za uvedbo rešitev z višjo inovativno in uporabno vrednostjo bo
zato potrebno odpraviti pomanjkljivosti in omejitve tako na nivoju tehnologije, zlasti v smislu zrelosti
in skalabilnosti, kot tudi na regulativno-poslovni ravni ter z vidika splošne sprejetosti. Če se bo v
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
35
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
naslednjih nekaj letih izkazalo, da so problemi predvsem tehnološke narave in je veriženje blokov
resnično konceptualno ustrezno za širšo uporabo, za premostitev problemov morda ni večjih ovir. Tako
so npr. tudi tehnologije inteligentnih sistemov, ki jih Gartner uvršča med nekaj najbolj aktualnih trendov
v tem trenutku [8], v več desetletjih prehodile dolgo, sicer razmeroma uspešno razvojno in raziskovalno
pot, pa so šele v zadnjem času zaradi dosežene ravni zrelosti, splošnega napredka informacijske
tehnologije in širše sprejetosti dosegle bistven preskok in razcvet v poslovnem svetu.
7. LITERATURA
[1] BARTOLETTI Massimo, POMPIANU Livio »An empirical analysis of smart contracts: Platforms,
applications, and design patterns«, Financial Cryptography and Data Security, Springer, 2017.
[2] BONTJE Joris »DApp design patterns: Emerging best practices in the world of Decentralized
Applications«, 2015, www.slideshare.net/mids106/dapp-design-patterns, obiskano 18. 5. 2018.
[3] BREGAR Andrej, KAFOL Ciril »Sistematičen pristop h kibernetski varnosti v IT/OT-integriranem
elektroenergetskem okolju na osnovi sektorskega varnostnega operativnega centra in tehnologij
veriženja blokov«, Dnevi slovenske informatike DSI 2018: Zbornik 25. konference, Slovensko
društvo Informatika, Portorož, 2018.
[4] FRISBY
Adam
»Why
blockchain
isn't
ready
for
primetime«,
venturebeat-
com.cdn.ampproject.org/c/s/
venturebeat.com/2018/03/11/why-blockchain-isnt-ready-for-
primetime/amp/, obiskano 15. 4. 2018.
[5] MARR Bernard »The 5 big problems with blockchain everyone should be aware of«, Forbes,
februar
2018,
www.forbes.com/sites/bernardmarr/2018/02/19/the-5-big-problems-with-
blockchain-everyone-should-be-aware-of/#5adf0c661670, obiskano 16. 5. 2018.
[6] MEARIAN Lucas »5 ways blockchain is the new business collaboration tool«, Computerworld,
februar 2018, www.computerworld.com/article/3197695/blockchain/5-ways-blockchain-is-the-
new-business-collaboration-tool.html, obiskano 14. 5. 2018.
[7] MOSES Sam Paul »Deploy smart contracts on Ropsten Testnet through Ethereum Remix«, The
Startup, marec 2016, medium.com/swlh/deploy-smart-contracts-on-ropsten-testnet-through-
ethereum-remix-233cd1494b4b, obiskano 18. 5. 2018.
[8] PANETTA Kasey »Gartner’s top 10 strategic technology trends for 2017«, Gartner, oktober 2018,
www.gartner.com/smarterwithgartner/gartners-top-10-technology-trends-2017, obiskano 17. 5.
2018.
[9] PEČJAK Vid, Poti do idej: tehnike ustvarjalnega mišljenja v podjetjih, šolah in drugje, 1989.
[10] PRUSTY Narayan, Building Blockchain Projects: Building Decentralized Blockchain Applications
with Ethereum and Solidity, Pack Publishing, 2017.
[11] SPENCER Donna, Card Sorting: Designing Usable Categories, Rosenfeld Media, 2009.
[12] SWAN Melanie, Blockchain: Blueprint for a New Economy, O'Reilly, 2015.
[13] »Blockchain – an opportunity for energy producers and consumers?«, PwC global power &
utilities,
november
2016,
www.pwc.com/gx/en/industries/energy-utilities-
resources/publications/opportunity-for-energy-producers.html, obiskano 10. 5. 2018.
[14] »Energetski zakon (uradno prečiščeno besedilo)«, Uradni list RS, št. 27/2007, 26. 3. 2007,
www.uradni-list.si/glasilo-uradni-list-rs/vsebina?urlid=200727&objava=1351, obiskano 15. 5.
2018.
[15] »Regulativne spremembe za vzpostavitev nove vloge na trgu aktivni odjemalec«, Agencija za
energijo, oktober 2017, www.agen-rs.si/documents/10926/106759/Regulativne-spremembe-za-
vzpostavitev-nove-vloge-na-trgu-Aktivni-odjemalec/6a00e54d-e9c8-419f-99a4-e7e2dcf0c3b9,
obiskano 14. 5. 2018.
36
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
A. Bregar, C. Kafol, J. Trilar in M. Nosan: Razvoj programskih rešitev veriženja blokov za
energetsko poslovno domeno
[16] »Uredba 2016/679/EU: Splošna uredba o varstvu osebnih podatkov«, Evropski parlament in Svet,
27. 4. 2016, eur-lex.europa.eu/legal-content/SL/TXT/?uri=CELEX%3A32016R0679, obiskano
18. 5. 2018.
[17] bitcoinexchangeguide.com/proof-of-work-vs-proof-of-stake-mining, Proof of Work vs Proof of
Stake – What is POW & POS mining?, obiskano 13. 5. 2018.
[18] en.wikipedia.org/wiki/Initial_coin_offering, Initial coin offering, obiskano 11. 5. 2018.
[19] en.wikipedia.org/wiki/Lightning_Network, Lightning network, obiskano 11. 5. 2018.
[20] eos.io, EOS.IO, obiskano 12. 5. 2018.
[21] entethalliance.org, Enterprise Ethereum Alliance, obiskano 13. 5. 2018.
[22] expressjs.com, Express framework for Node.js, obiskano 18. 5. 2018.
[23] github.com/ethereum/web3.js, Ethereum JavaScript API, obiskano 13. 5. 2018.
[24] github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ, Proof of Stake FAQ, obiskano 14. 5. 2018.
[25] github.com/ethereum/wiki/wiki/White-Paper,
A
Next-Generation
Smart
Contract
and
Decentralized Application Platform, Ethereum Whitepaper, obiskano 14. 5. 2018.
[26] hackernoon.com/kyc-aml-and-cryptocurrencies-4e4cf929c151,
KYC,
AML,
and
Cryptocurrencies, obiskano 18. 5. 2018.
[27] neo.org, NEO – An open network for smart economy, obiskano 12. 5. 2018.
[28] www.bitcoin.com, Bitcoin, obiskano 12. 5. 2018.
[29] www.cardano.org, Cardano, obiskano 12. 5. 2018.
[30] www.coinmarketcap.com, Top 100 cryptocurrencies by market capitalization, obiskano 11. 5.
2018.
[31] www.cryptocompare.com/coins/guides/what-is-the-gas-in-ethereum/, What is the »Gas« in
Ethereum?, obiskano 13. 5. 2018.
[32] www.ebix.org, European forum for energy Business Information eXchange, obiskano 15. 5. 2018.
[33] www.ethereum.org, Ethereum, obiskano 12. 5. 2018.
[34] www.heroku.com, Heroku, obiskano 18. 5. 2018.
[35] www.hyperledger.org/projects/fabric, Hyperledger Fabric, obiskano 12. 5. 2018.
[36] www.iota.org, IOTA, obiskano 12. 5. 2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
UPORABA TEHNOLOGIJE VERIŽENJA BLOKOV
ZA UPRAVLJANJE EKOSISTEMA PODATKOV O
VOZILIH
JAKA JENKO, ANDREJ MEH IN AMBROŽ STROPNIK7
Povzetek: Prispevek opisuje eno od možnosti uporabe tehnologij veriženja
blokov v okviru lastne rešitve IT Optitech za upravljanje podatkov o vozilih
in sicer za potrebe hrambe podatkov o stanju vozila in sicer konceptualne
vidika. V same tehnične podrobnosti implementacije ne zahajamo. Poleg
uporabe tehnologije veriženja blokov, v prispevku predstavimo še platformo
Optitech, katere osnovni namen je pridobivanje, ter obdelava podatkov iz
vozil preko OBD II naprav v realnem času in je bistvena za razumevanje
umestitve uporabe tehnologije veriženja blokov. Pri tem se dotaknemo še
teoretičnega ozadja tehnologije veriženja blokov, vendar le toliko, da
podamo vpogled, kaj smo pri implementaciji platforme Optitech uporabili.
Ključne besede: • tehnologija veriženja blokov • ekosistem podatkov o
vozilih • register vozil
NASLOV AVTORJEV: Jaka Jenko, Kivi Com d.o.o., Kidričeva 3a, 2380 Slovenj Gradec, Slovenija, e-pošta:
jaka.jenko@kivi.si. Andrej Meh, Kivi Com d.o.o., Kidričeva 3a, 2380 Slovenj Gradec, Slovenija, e-pošta:
andrej.meh@kivi.si. dr. Ambrož Stropnik, Kivi Com d.o.o., Kidričeva 3a, 2380 Slovenj Gradec, Slovenija, e-
pošta: ambroz@kivi.si
DOI https://doi.org/10.18690/978-961-286-162-9.4
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
38
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
J. Jenko, A. Meh in A. Stropnik: Uporaba tehnologije veriženja blokov za upravljanje
ekosistema podatkov o vozilih
1. UVOD
Digitalizacija procesov, inteligentni sistemi, tehnologije veriženja blokov (angl. blockchain) in
poslovanje s kriptovalutami so področja brez katerih si ne znamo več predstavljati sodobnih
informacijskih sistemov in informacijskih storitev. Njihovo praktično uporabo zasledimo na vseh
področjih, od uporabe v proizvodnih informacijskih sistemih, v zdravstvu in nenazadnje tudi v različnih
sistemih namenjenih za obdelavo podatkov iz vozil.
V prispevku predstavljamo naš pogled na uporabo tehnologije veriženja blokov v okviru lastne rešitve
za upravljanje ekosistema podatkov o vozilih imenovana Optitech, ki je sposobna pridobivati podatke o
statusu vozila različnih proizvajalcev. Bistveni del uporabe tehnologij veriženja blokov pri upravljanju
ekosistema podatkov Optitech o vozilih predstavlja potreba po beleženja statusa vozila (npr. opravljen
servis vozila, beleženi prevoženi kilometri ob servisnih posegih, status vozila…). V osnovi lahko
tehnologijo veriženja blokov označimo kot porazdeljeno podatkovno bazo, ki ima shranjene podatke na
različnih strežnikih in onemogoča brisanje ali spreminjanje podatkov. Kot takšna je tehnologija
veriženja blokov primerna za vodenje zgodovine prej omenjenih dogodkov vozil (npr. servisni posegi
itd.), ki pa so v fazi prodaje rabljenega vozila bistvenega pomena (npr. vidna so odstopanja, če so bili
na vozilu nazaj prevrteni kilometri). Preverljiva zgodovina vozila prodajalcu omogoča prodajo vozila
po višji ceni, na drugi strani pa kupec točno ve kakšno vozilo kupuje, v kakšnem stanju je in kaj lahko
od vozila pričakuje (npr. kdaj je naslednji veliki servis vozila).
Omenjeni način uporabe tehnologije veriženja blokov za potrebe beleženja stanja vozil ima tudi širši
vpliv, saj lahko močno vpliva na sam trg rabljenih vozil. Konkretno, v Sloveniji namreč ni zakonsko
obvezno beleženje statusa vozil pri servisnih posegih v centralni register (npr. stanja števca kilometrov
– medtem, ko je v nekaterih državah Evropske unije zakonsko obvezno) in posledično tudi ni možno na
enostaven način preveriti stanje rabljenega vozila. To omogoča prodajalcem rabljenih vozil prodajo
vozil vprašljive kvalitete oz. stanja vozila (npr. prevrteni kilometri vozila itd.).
Uporaba tehnologije veriženja blokov v okviru ekosistema podatkov o vozilih Optitech za potrebe
beleženja stanja vozil, vsekakor predstavlja novost na trgu tovrstnih IT rešitev in je tudi bistvo tega
prispevka. V poglavju 2 najprej predstavimo stanje sorodnih IT rešitev. Poglavje 3 je namenjeno
predstavitvi tehnologij veriženja blokov, ki so uporabljene kot del naše IT rešitve Optitech. Jedro
prispevka predstavlja poglavje 4, kjer je predstavljena IT rešitev Optitech.
2. SORODNE IT REŠITVE
Področje sistemov za obdelavo podatkov iz vozil je v zadnjih nekaj letih naredilo ogromen korak naprej,
saj dandanes že težko najdemo vozilo, ki ne komunicira s podatkovnim centrom proizvajalca vozila ali
v nekaterih primerih tudi z drugimi vozili. Posledično se uporabniki sodobnih vozil srečujejo s
storitvami kot so: elektronska servisna knjiga, elektronsko spremljanje servisnih intervalov, sledenje
lokacije vozila, upravljanje vozila preko mobilnega telefona (npr. aktivacija gretja, odpiranje/zapiranje
oken vozila…), delna diagnostika vozila – napake/opozorila (nepripet pas), naročilo na servis itd…
[1][2][3] Pri tem je potrebno opozoriti, da so vse omenjene funkcionalnosti v različnem obsegu na voljo
v odvisnosti od proizvajalca vozila, ki so znana pod različnimi znamkami, kot so: BMW
ConnectedDrive [1], Škoda Connect [2], Volkswagen Connect [3]… Še več, nekateri proizvajalci vozil
so šli tako daleč, da za dostop do podatkov ponujajo tudi integracijske API-je (angl. Application
Programming Interface) preko katerih je omogočen dostop oz. izmenjava podatkov o vozilih z drugimi
aplikacijami [4][5].
Obstajajo pa tudi IT rešitve za zajemanje podatkov iz vozil (in kasneje tudi njihovo obdelavo), ki so
neodvisne od proizvajalca vozil kot tudi letnika izdelave vozila. Ena najbolj znanih in najbolj popularnih
aplikacij je Munic.io [6], ki omogoča spremljanje statusa vozila neodvisno od proizvajalca vozila, pri
čemer je za uspešno delovanje aplikacije potrebno uporabljati njihovo napravo za branje podatkov o
vozilu preko OBD II vtičnika vozila (angl. OBD II Reader). Tako naprava nameščena v vozilu preko
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
39
J. Jenko, A. Meh in A. Stropnik: Uporaba tehnologije veriženja blokov za upravljanje
ekosistema podatkov o vozilih
mobilnega omrežja pošilja podatke o vozilu na strežnik, tam pa se potem ti podatki ustrezno obdelajo in
na skladen način tudi predstavijo uporabniku [6].
V zadnjih dveh do treh letih je moč zaznati velik porast zagonskih projektov (angl. Start-up), ki sredstva
za izvedbo projekta pridobivajo z izdajo lastne kriptovalute (angl. ICO - Initial Coin Offering). V tem
segmentu je kar nekaj projektov s področja upravljanja podatkov o vozilih, ki so še na idejni ravni oz.
še nerealizirani (npr. Gluon [7]).
Opažamo pa, da na trgu manjkajo IT rešitve, ki bi omogočale pridobivanje telemetričnih podatkov iz
različnih vozil in omogočale raznovrstne obdelave teh podatkov, ki bi nudile uporabnikom in lastnikom
vozil dodano vrednost (npr. celotno zgodovino vozila, vključno z dogodki).
3. TEHNOLOGIJA VERIŽENJA BLOKOV
Tehnologija veriženja blokov (ang. blockchain) je javen zapisnik transakcij. Transakcije se dodajajo v
bloke (angl. block), ki se povezujejo med seboj, in tako tvorijo verigo urejeno po času nastanka
posameznega bloka oz. transakcije [8]. Tehnologija uporablja kriptografijo za zagotavljanje
nespremenljivosti dodanih blokov.
Vsak blok je s svojim predhodnikom povezan z uporabo kriptografskega »hash-a« predhodnega bloka.
Tako povezana, neprekinjena veriga blokov zgotavlja, da bloka, po tem, ko je enkrat dodan v verigo, ni
več moč spremeniti. Vsaka sprememba bi namreč spremenila kriptografski hash (angl. cryptographic
hash), in na ta način prekinila povezavo z naslednikom in vsemi sledečimi bloki [8].
Slika 1: Shema veriženja blokov
Tehnologija veriženja blokov je načrtovana z namenom zagotavljanja visoke varnosti in je kot taka
idealna za vodenje registra transakcij. Omogoča izvajanje transakcij med anonimnimi strankami, brez
potrebe po zaupanju oz. po zaupanja vrednemu mediatorju. Vsak računalnik v P2P povezanem omrežju
(vozlišče, angl. node) k sebi prenese kopijo verige blokov. Nobeno od vozlišč nima osrednje vloge
nadzora ali avtoritete [8]. Vsako od sodelujočih vozlišč neodvisno od drugih potrdi novo dodane bloke,
zato ni potrebe po zaupanju.
Omenjene lastnosti tehnologije veriženja blokov delajo tehnologijo idealno za uporabo v tehnoloških
rešitvah, ki morajo zagotavljati sledljivost in zasebnost, kot so obdelava transakcij, medicinske kartoteke
ali dokumentacija procesov, saj omogočajo delovanje brez centralizirane avtoritete, kateri je potrebno
zaupati. Delovanje na globalnem trgu, brez potrebe po centralizirani avtoriteti, ter z omogočanjem
transakcij in izvajanjem pogodb je velika prednost.
40
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
J. Jenko, A. Meh in A. Stropnik: Uporaba tehnologije veriženja blokov za upravljanje
ekosistema podatkov o vozilih
3.1. Platforma Ethereum
Ethereum je ena od najbolj popularnih platform v kripto-svetu. Gre za odprtokodno, javno porazdeljeno
platformo. Ima močno podporo s strani razvijalcev, med drugim tudi za projekte zbiranja sredstev.
Na Ethereum platformi je osnovni žeton (angl. token) za izmenjavo vrednosti imenovan »ether« oz.
krajše ETH. Z ETH se trguje na večini kripto-borz, kot so Coinbase, BitStamp, Coinspot in številne
druge. Na borzah se lahko ether kupi s FIAT valutami ali zamenja za druge kripto-valute. Etherum žeton
je drugi po vrsti po skupni vrednosti trga.
Najpomembnejša razlika platforme Ethereum od ostalih kriptovalut oz. platform je v omogočanju
pametnih pogodb (angl. smart contracts) [9]. Druga pomembna razlika je krajši interval dodajanja novih
blokov transakcij (ang. block time) kar omogoča hitrejše potrjevanje opravljenih transakcij. Ethereum
platforma je bila prva oz. ena od prvih z idejo izvajanja uporabniške kode na porazdeljenem omrežju in
kot taka predstavlja globalno porazdeljen računalnik ali “the world computer”. Možnosti, ki se odpirajo
s takšnim konceptom niti ni potrebno naštevati.
Hkrati pa se pojavlja tudi učinek snežne kepe, saj veliko število razvijalcev in posledično tudi vse več
virov za pomoč olajša vstop novim razvijalcem, in jih tako pritegne še več.
3.2. Pametne pogodbe in tehnologija veriženja blokov
Pametne pogodbe so v programsko kodo zapisane pogodbe, ki natančno določajo pogoje po katerih si
stranki določita sodelovanje oz. medsebojni odnos. Ko je pametna pogodba potrjena s strani vseh
udeležencev, je ni možno več spreminjati – to je zagotovljeno s strani tehnologije veriženja blokov.
Pogodba se izvrši samodejno, ko so vsi v pogodbi določeni pogoji tudi izpolnjeni. Koda pametne
pogodbe se izvaja na decentraliziranem Ethereum omrežju. Transakcije, ki jih izvede pametna pogodba
so varovane in zaščitene brez potrebe po neodvisni zunanji entiteti, ki bi posegala v delovanje. Vse
izvedene transakcije so nepovratne in povsem transparentne.
3.3. Standard ERC20
ERC 20 je široko sprejet in podprt standard, z uporabo katerega zagotovimo, da je izdan žeton
kompatibilen z veliko večino obstoječih denarnic, borz, in aplikacij. Standard definira pravila katerih se
mora držati žeton na Ethereum omrežju.
Pravila definirajo šest standardnih metod, ki jih mora podpirati žeton za uspešno delovanje v Ethereum
ekosistemu. Te metode predstavljajo vmesnik preko katerega okolica izvaja operacije z žetoni [10].
Trenutno je to najbolj razširjen standard, in kot tak skoraj obvezen za uspešno delovanje znotraj omrežja.
4. EKOSISTEM UPRAVLJANJA S PODATKI O VOZILIH – OPTITECH
Platforma Optitech je lastni produkt, ki je namenjen pridobivanju in obdelavi podatkov iz vozil različnih
proizvajalcev preko OBD II naprav različnih ponudnikov, ki temelji na tehnologiji veriženja blokov.
Razviti produkt je v celoti plod lastnega več letnega razvoja in je trenutno v fazi obširnega testiranja in
verificiranja delovanja v povezavi z našimi poslovnimi partnerji.
Platforma Optitech sestoji iz naslednjih komponent:
OBD II "plug & play" naprava v vozilu (Onboard Diagnostic connector), ki je povezana s
platformo Optitech preko mobilnega omrežja in sproti zajema podatke o vožnji in vozilu ter jih
posreduje v procesni center Optitech,
analitični sistem, ki obdeluje in pripravlja podatke za potrebe različnih skupin uporabnikov
ekosistema in
portal Optitech, ki omogoča preglede podatkov in upravljanje vseh delov sistema,
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
41
J. Jenko, A. Meh in A. Stropnik: Uporaba tehnologije veriženja blokov za upravljanje
ekosistema podatkov o vozilih
integracijski API, ki omogoča povezljivost platforme Optitech z drugimi aplikacijami in zunanjimi
sistemi (npr. mobilna aplikacija…) .
Slika 2: Ekosistem OPTITECH
Platforma Optitech je namenjena različnim ciljnim skupinam uporabnikom in sicer:
poslovnim subjektom za upravljanje in nadzor lastnega voznega parka,
fizičnim osebam za nadzor nad svojim(i) vozilom,
servisnim hišam in serviserjem vozil za lažjo diagnostiko vozil in spremljanje statusa vozila
(ustrezno predvidevanje in načrtovanje vzdrževanja vozila, beleženje prevoženih kilometrov,
opravljen servis vozila…),
drugi potencialne uporabniške skupine, ki pri svojem delu operirajo s podatki vozil (npr.
zavarovalnice, prodajalci vozil itd…).
Na spodnji sliki (slika 3) je prikazan primer zaslonske maske portala namenjenega fizičnim osebam, ki
zajema prikaz vseh podatkov, ki jih platforma Optitech zajema iz vozila in na ustrezni način obdela, ter
prikaže uporabniku na zaslon. Podatki, ki jih ima uporabnik na zaslonu so sledeči:
dnevnik vožnje,
ocenjevanje voznika glede na podatke o vožnji in uporabi vozila (angl. Drive Score),
učinkovitost vožnje in porabe
diagnostika avtomobila (kode DTC – angl. Diagnostic Trouble Code),
predvidevanje in načrtovanje vzdrževanja vozila.
Dostop do omenjenih podatkov imajo vse omenjene ciljne skupine uporabnikov. Razlika je samo v
načinu prikaza teh podatkov, ki je odvisen od uporabniških pravic in načina dostopa (npr. poročila,
agregirani podatki v primeru voznih parkov…).
42
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
J. Jenko, A. Meh in A. Stropnik: Uporaba tehnologije veriženja blokov za upravljanje
ekosistema podatkov o vozilih
Slika 3: Uporabniški vmesnik portala Optitech
4.1. Arhitektura IT rešitve
Arhitektura ekosistema Optitech je klasično tri slojna. Slika spodaj (slika 4) prikazuje sistemsko shemo
arhitekture ekosistema Optitech.
Slika 4: Arhitektura IT rešitve
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
43
J. Jenko, A. Meh in A. Stropnik: Uporaba tehnologije veriženja blokov za upravljanje
ekosistema podatkov o vozilih
Predstavitvena logika ekosistema Optitech je implementirana kot spletna aplikacija, temelječa na
tehnologiji Angular in BootStrap, ter je preko ustreznih API-jev, temelječih na JSON tehnologiji (angl.
JavaScript Object Notation), integrirana z zalednim sistemom (angl back-end).
Zaledni sistem, natančneje poslovna logika sistema (angl. Business Logic) temelji na Microsoftovih
tehnologijah. Celotni zaledni sistem je implementiran s pomočjo programskega jezika C#. Za potrebe
integracije z Ethereum blockchain omrežjem, je uporabljena programska knjižnica Nethereum.
Podatkovni nivo (angl. Data Logic) tvorijo trije podatkovni sistemi in sicer primarni podatkovni sistem
predstavlja Microsoft SQL Server 2017, v katerem so shranjeni bistveni podatki za delovanje sistema
Optitech (npr. uporabniki, razni šifranti itd.). Drugi podatkovni sistem predstavlja Ethereum blockchain
omrežje, ki predstavlja bistveni del sistema Optitech, saj se vanj shranjujejo podatki o statusu vozil.
Tretji podatkovni sistem pa predstavlja datotečni sistem strežnika v okviru katerega so shranjeni različni
dokumenti v fizični obliki (npr. pdf).
Zelo pomemben del arhitekture sistema Optitech predstavlja integracijski vmesnik (API), ki je namenjen
integraciji z drugi aplikacijami in sistemi (npr. mobilna aplikacija, analitični sistem, diagnostični sistem
itd…). Slednji omogoča izmenjavo podatkov tako z uporabno JSON tehnologije, kot z uporabo klasičnih
spletnih storitev (angl. web service). V okviru integracijskega API-ja je implementiran tudi integracijski
vmesnik za izmenjavo podatkov med sistemom Optitech in OBD II napravo, ki je nameščena v vozilu.
Pri tem se za potrebe integracije uporablja tehnologija omrežnih vtičnikov (angl. network socket).
4.2. Uporaba tehnologije veriženja blokov v projektu Optitech
Tehnologija veriženja blokov poleg povezljivosti z različnimi OBD II napravami za zajem telemetričnih
podatkov iz vozil, predstavlja ključno tehnologijo platforme Optitech. Vsi podatki vezani na vozilo se
shranijo v Ethereum BlockChain omrežje, ki zagotavljala decentralizirano in porazdeljeno hranjenje
podatkov o vozilu. V Ethereum BlockChain omrežje se ne shranijo nobeni osebni podatki, ampak
izključno podatki vezani na vozilo in sicer:
prevoženi kilometri vozila (t.i. odometer),
opravljeni posegi na vozilu (npr. opravljen redni servis – kaj je bilo opravljeno, kateri deli so bili
zamenjani, katero motorno olje uporabljeno itd. - t.i. elektronska servisna knjiga),
dogodki vezani na vozilo (katere kode DTC so bile aktivne in kdaj je bila napaka odpravljena),
ocena voznika (kako je bil avto vožen),
dnevnik vožnje (na kakšne razdalje je bil avto vožen).
Na omenjen način dobimo celostni pogled na stanje vozila, ki je izjemnega pomena ob prodaji vozila
ali menjave ponudnika servisnih storitev. Iz tehnološkega vidika, tehnologije veriženja blokov poleg že
znane porazdeljene hrambe podatkov onemogočajo brisanje ali spreminjanje že shranjenih podatkov,
kar pa pri zagotavljanju zgodovine vozila predstavlja bistveno funkcionalnost.
5. ZAKLJUČEK
V prispevku smo predstavili našo IT rešitev za upravljanje ekosistema podatkov o vozilih imenovano
Optitech, ki temelji na tehnologiji veriženja blokov. Predstavili smo predvsem zastavljeno širino IT
rešitve in eno od možnosti uporabe tehnologije veriženja blokov v okviru ekosistema upravljanja s
podatki o vozilih, ki lahko bistveno vpliva na trg rabljenih vozil. Nadaljnje delo bo usmerjeno predvsem
v širjenje različnih storitev v okviru v okviru IT rešitve Optitech (npr. storitve za servisne hiše,
diagnostika vozil itd.), s katerimi je cilj doseči množično uporabo rešitve.
44
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
J. Jenko, A. Meh in A. Stropnik: Uporaba tehnologije veriženja blokov za upravljanje
ekosistema podatkov o vozilih
6. LITERATURA
[1] https://www.bmw-connecteddrive.at/app/index.html#/portal, BMW ConnectedDrive, obiskano
13.5.2018.
[2] https://www.skoda.si/skoda-connect/paketi-skoda-connect, Škoda Connect, obiskano 13.5.2018.
[3] https://www.vwconnect.com/, Volkswagen Connect, obiskano 13.5.2018.
[4] https://www.w3.org/Submission/2016/01/, Volkswagen Infotainment Web Interface, obiskano
3.1.2018.
[5] https://www.w3.org/Submission/viwi-protocol/, Volkswagen Infotainment Web Interface protocol
definition, obiskano 3.1.2018.
[6] https://www.munic.io/, Munic.io, obiskano: 3.1.2018.
[7] https://www.gluon.com/, Gluon, obiskano: 18.3.2018.
[8] Satoshi Nakamoto, Bitcoin: A Peer-to-Peer Electronic Cash System, 2008
[9] Vitalik Buterin, Ethereum white paper - a next generation smart contract and decentralized
application platform, 2013.
[10] Fabian Vogelsteller, Vitalik Buterin, ERC-20 Standard, 2015.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
BUILDING AN OPEN-SOURCE BLOCKCHAIN
ECOSYSTEM WITH ARK
KRISTJAN KOŠIČ, ROK ČERNEC, ALEX BARNSLEY AND FRANCOIS-XAVIRER THOORENS8
Abstract: Ark aims to create an entire ecosystem of linked chains by
providing easy to use tools to deploy your own blockchain. Being highly
flexible and adaptable, it allows products to be adopted by the general public
much quicker and smoother. By having open source code, it is available to
anyone who wants to contribute, or to build their own blockchain based on
Ark technology stack. With a new block created every 8 seconds, its
transactions are incredibly fast! In this paper we will present the building
foundation of ARK Ecosystem, the decentralized organization behind ARK
token, what are the challenges we are currently facing in general with
blockchain technology and what is the role of the open-source community
(ARK community fund, GitHub bounty program). We will also cover basics
about the new ARK Core v2, which is a complete rewrite of the core
blockchain code, addressed to deliver our vision of blockchain technology.
Key words: • ark • blockchain • open-source software • crypto •
programming • javascript • architecture
AUTHORS: Kristjan Košič, core engineer at ARK Ecosystem, e-mail: kristjan@ark.io. Rok Černec, COO and board
member at ARK Ecosystem, e-mail: rok@ark.io. Alex Barnsley, full-stack developer at ARK Ecosystem, e-mail:
alex@ark.io. Francois-Xavier Thoorens CTO at ARK Ecosystem, e-mail: fx@ark.io.
DOI https://doi.org/10.18690/978-961-286-162-9.5
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
46
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
K. Košič, R. Černec, A. Barnsley, and F.-X. Thoorens: Building an open-source blockchain
ecosystem with ARK
1. INTRODUCTION
We are ten years into the decentralisation revolution, since the publication of Satoshi’s paper and the
introduction of the first decentralised solution to solve the problem of double-spending in digital
networks. Currently we are moving through the phase of disillusionment where interest wanes as
experiments and implementations fail to deliver. Producers of the technology shake out or fail. Further
investment continues only if the surviving providers improve their products to the satisfaction of early
adopters[1] [2]. Blockchain project are moving from experimentation around decentralised technologies to complete solutions including consensus mechanisms, identity, data structures, crypto-economic
designs and smart contracts. In their convergence report Outlier Ventures9 stated that: " Most projects
will fail, but the open-source nature of the ecosystem means learnings and code will be available to all".
We can learn and build faster than ever.
There is still a ton of hype around blockchain technology. You can read about how blockchain will erase
global hunger, make world corruption free, end poverty - all with seamless technology delivered out of
the box. Of course, we believe in such promises in the long run, but in order to deliver this with
blockchain technology, we have to make it usable, configurable and seamlessly adjustable. Never before
has a "back-end" technology gotten so much attention in media and well - we can basically read about
it everywhere [3].
Should a common man have heard about blockchain and blockchain technology? We think not, however
the people delivering this technology are still in the so cold "dark-ages" where first tools are still about
to be forged in order to deliver the promise that blockchain technology can be harvested to disrupt and
engage communities with new trustless solutions and business models that are yet to be discovered [4].
We don't want new blockchain solutions just to replace VISA or Mastercard or other payments systems.
Let's be honest, these are optimized and mature solutions doing fastest payments in the traditional
economy space. Many speed comparisons in the form of "TPS - transactions per second" between
current systems and other blockchain platforms [5] can be found. At first, this looks like a very important piece of information, but in order to deliver the trustless promise, via transactions based on P2P (peer-to-peer network communication)[6], we know that it is possible, but in this case the network itself is not decentralized, but already centralized with fast central servers (nodes) delivering and confirming
transactions. These are the models that big corporations will use and we already see them going in this
direction with R3 Corda [7], IBM HyperLedger and similar technology [8].
The most common question we hear is “What can blockchain do that other technologies cannot do?” Is
it fair to expect a 9 year old technology to outperform all other technologies in the world? [9] And yet, it already does on so many levels, the challenge we are facing is how to make this technology properly
architectured and in the end user-friendly in order to deliver mass adoption of this so called "back-end"
technology.
In the next section we present ARK ecosystem and how it contributes to the blockchain landscape today.
1.1 How does ARK add value to the blockchain tech landscape?
ARK[10] is looking to eliminate the barrier to entry in the blockchain space that is caused by the immense complexity of the technology. We want ARK to do for blockchain what WordPress did for
website development. We are making that a reality with our focus on push-button blockchain technology
and by steering our efforts toward meeting the needs of enterprises, start-ups, and developers as our
prime customer base first and foremost. ARK will enable simplified deployment of custom blockchains
while allowing the deployment of a wide array of services.
9 Convergence Ecosystem report by Outlier ventures https://outlierventures.io/wp-
content/uploads/2018/03/The_Convergence_Ecosystem_Report_Outlier_Ventures_2018.pdf
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
47
K. Košič, R. Černec, A. Barnsley, and F.-X. Thoorens: Building an open-source blockchain
ecosystem with ARK
ARK’s value proposition lies within that core platform and the utility of the services we are building
into the ecosystem. Services such as the capability of connecting to different blockchains via our
SmartBridge technology (see Figure 1). We have successfully connected to Ethereum, Bitcoin, and
Litecoin blockchains with more in development. SmartBridge allows ARK to move data from one
blockchain to another with the use of special Encoded Listener Nodes that can interpret and process data
back and forth between different chains. With the integration of one of our next milestones, ArkVM, all
ARK blockchains will be capable of utilizing smart-contracts as well and we are concurrently working
on an IPFS based blockchain storage solution.
The ARK platform will be a great place for future blockchain developers to get their feet wet in this
budding industry. ARK will allow them to customize a blockchain for their businesses with the features
their companies need right at their fingertips, with an all-in-one ARK blockchain sandbox.
Figure 1: ARK SmartBridge concept Sending BTC to an ARK Address
In the next section we will briefly cover Open-source software (OSS)[11], it's concepts and challenges of developing software solutions out in the open, and how do we use the OSS model to deliver one of
the best blockchain platforms out there.
2. DEVELOPING OPEN-SOURCE SOLUTIONS BASED ON ARK ECOSYSTEM
If we look at the definition of OSS: " Open-source software (OSS) is a type of computer software whose
source code is released under a license in which the copyright holder grants users the rights to study,
change, and distribute the software to anyone and for any purpose" [12] . With open-source software, anyone is allowed to create modifications of it, port it to new operating systems and instruction set
architectures, share it with others or, in some cases, market it.
Free and open source software developing models have made it possible to form new virtual teams, and
enable team work between people, who may have not even been acquainted before, to help each other
and to follow a common goal.
48
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
K. Košič, R. Černec, A. Barnsley, and F.-X. Thoorens: Building an open-source blockchain
ecosystem with ARK
Figure 2. Why Open-source software [13]
According to a study by InfoSys [13] more than 78 percent of enterprises run on open source and fewer than 3 percent indicate they don't rely on open source software in any way. IT companies are in the
phase of a big shift and transformation in the OSS arena with a healthy and positive mindset that Open
Source Software Gains in Strategic Value. Big companies like Walmart, GE, Merck, Goldman Sachs,
Google and Facebook are also analyzing and moving towards open software [14]. OSS is the core engine of innovation and can be seen as a first approach for enterprise architecture.
Of course, there are ups and downs of OSS, and it depends if you are a developer of OSS or a consumer,
as most of the big companies mentioned above. Looking from the consumer side you have more to gain.
Where we see the magic happening and how the value is added by observing and helping OSS teams to
follow a common goal. Of the reasons why ARK is an "ecosystem" is the fact that ARK is a living and
breathing organism. If we look at the definition of an ecosystem: "An ecosystem is a community made
up of living organisms and nonliving components such as air, water, and mineral soil"[15], we can mirror the definition to ARK - where the living organism is our community with more that 12,000
active users. Non-living components are presented in the form of tools we use and the products we
deliver (ARK blockchain and ARK SDKs in more than 20 programming languages). Our work process
is built around distributed best practices, which are promoted and used by GitHub and other big
opensource projects. All our code10 is free, issued under the MIT OSS license.
ARK will continue to support community outreach initiatives through partnerships with college
hackathons, local meetups, and by sponsoring major conferences. We are doing anything we can to
preach the gospel of blockchain to developers, hobbyists, or really anyone who will listen. We will also
be advising and helping new blockchain projects that want to develop their use cases and be powered
by ARK technology. One of the good examples of how the OSS model connects and motivates people
is ARK Community fund.
As mentioned by Richard Burton: "The hardest mental leap for people when they join crypto is the move
from closed to open. Code is worth almost nothing. Community is worth everything. Anyone can fork
the code. Very few people can fork a community. Internalising that reality is just impossible for some
people ."
ARK realized that from the start and defined the building blocks of the ecosystem, together with the
community. The result is one of the strongest communities in crypto space. With more than 12,000 daily
active users you get all the benefits (see Figure 1) of the OSS model delivered to you. Cost reduction,
quality improvement and quicker time to market are just some of the gains you get by joining our
10 GitHub Ark Ecosystem - https://github.com/arkecosystem
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
49
K. Košič, R. Černec, A. Barnsley, and F.-X. Thoorens: Building an open-source blockchain
ecosystem with ARK
community. If you want to develop solutions on top of ARK, there is always someone available and
willing to help you out. It's like a friendly call centre, where everyone helps you and you all work
together, of course help is for free. On the OSS developer side, the code (product) is more secure, as it
is constantly exposed and under eyes of the experts or hackers that want to gain, by harming the network.
2.1 ARK community fund - ACF
The ACF11 is an entirely community owned and operated vehicle for matching developers and
entrepreneurs with potential seed funding through the use of the ARK ecosystem. The ARK Community
Fund (ACF) is a fund that is run by the ARK community members[16]. It can be seen as supplemental to the core development of ARK ecosystem and shall support the ideas and projects of ARK community
members to help promote the advancement of the ARK Ecosystem. The ACF has two main
purposes[16]:
● to provide a possibility to those ARK community members, that would like to support the ARK
Ecosystem with contributions of ARK tokens for community purposes.
● to provide a place for community developers to request funding, for projects to develop tools,
software or hardware which supports the ARK Ecosystem.
Potential projects are able to submit applications to the team running the ACF to be considered for
funding which can range from simple apps to more complex an custom solutions, as well as marketing
efforts to help with recognition of ARK brand across the globe.
3. INTEROPERABILITY AS ONE OF THE BIGGEST BLOCKCHAIN CHALLENGES
Blockchain is HERE! In order for the blockchain technology to be mass adopted we need to deliver
seamless communication between different blockchains. Richard Brown, CTO at R3 Corda, defined this
as: Universal interoperability - business needs the universal interoperability of public networks with the
privacy and power of private networks [17]. Interoperability simply means inter- and cross-blockchain communication.
ARK is at its core defined to address the challenge of interoperability with so called SmartBridge field.
ARK ACES - Aces Contract Execution Services[18] is a perfect example of a solution addressing interoperability issues between different blockchains and is developed as a community project for
anyone to join in and help improve, add new features or report issues faced when using ACES (see
section 3.2).
Interoperability should be addressed at different levels. Looking at ARK technology stack we are
addressing this with ARK ACES for cross-chain communication. As for interchain communication (two
different blockchains with the same technology stack should be able to "talk" with each other - i.e.
enabling atomic swaps, sharing data, using the same consensus mechanism). We don't want to bloat the
main network (the famous CryptoKittes [19] example) by pushing all the stakeholders on the same level of technology - there is no blockchain to rule them all. To address this we deliver options to clone our
technology (by using ARK Deployer) and enable users, local communities, and other value chains to
start their own network where the most of the workload will be done, and when needed the
communication with master chain will be used. By using the master chain, all the bridgechains gain the
benefits, such as being already listed on exchanges, established trust and presence, all the technology in
the back-end can be reused.
3.1 ARK deployer
One of the key tenants of ARK’s business model is the Push-Button blockchain deployment. Our goal
for ARK is to create the core experience and modular ecosystem that does for blockchain what
11ARK community fund - https://arkcommunity.fund/
50
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
K. Košič, R. Černec, A. Barnsley, and F.-X. Thoorens: Building an open-source blockchain
ecosystem with ARK
WordPress has done for websites and blogging. ARK Deployer is a lightweight deployment script for
creating your own ARK based blockchains - bridgechain. By utilizing the ARK Deployer, developers
can create their own blockchain in a matter of minutes. ARK Deployer is just the first step in building a
more robust ecosystem that will be user friendly, customizable, and will feature the same caliber of user
experience you have all come to expect from an ARK project.
The ARK Deployer script is being published for developers, hackers and tech enthusiast to launch their
own blockchain based on ARK technology, start learning how the ARK ecosystem works, and get
accustomed
to
the
code.
Installation
instructions
and
code
can
be
found
at:
https://github.com/ArkEcosystem/ark-deployer.
ARK Chain is launched with preconfigured ARK blockchain parameters and can also be adjusted to fit
your custom needs. ARK Deployer configures, deploys and integrates the following:
1. Deploys ARK node in auto-forging mode on a single computer / server, with 51 forging genesis
delegates ( clones the ARK node and sets their custom parameters, creates their own genesis
file with auto-forging delegates ).
2. Deploys ARK explorer that is already configured and talking with installed ARK node ( clones,
configures, installs and integrates ARK explorer with the ARK node ).
3. Configures ARK API for the developer to start exploring, hacking and developing solutions
based on ARK Ecosystem technology.
A Vagrant[20] script is also available, where we even automated the deployer steps ( read instructions in GitHub repository ).
There are also other blockchain solutions targeting this challenges, blockchain suck as Polkadot, Aion
Network, MultiChain, BlockNet, Stratis and some others. All this blockchain solutions recognized that
in order for a technology to succeed and grow, a strong network needs to be built and value must be
delivered by using supporting protocols talking to each other. While some hybrid blockchain networks
address this challenge successfully, they also take into account that 99% traffic is made off-chain and
1% on-chain for state management only [21].
3.2 ARK contract execution services - ACES
ACES is a community based project solving the problem of interchain transactions and communication.
ACES enables the blockchain economy by allowing micro-chain projects to connect to the liquidity and
functionality of the entire blockchain ecosystem. We cannot achieve this with protocol-specific
interoperability, but protocol-specific interoperability is almost certainly cheaper, faster, and possibly
more trustless than a protocol-agnostic interoperability. ACES focuses on protocol-agnostic
interoperability because it allows us to integrate all potential future developments in the space. Protocol-
agnostic interoperability combined with protocol-specific interoperability is a powerful concept that
adds massive efficiencies to the entire space [18].
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
51
K. Košič, R. Černec, A. Barnsley, and F.-X. Thoorens: Building an open-source blockchain
ecosystem with ARK
Figure 3. ARK ACES concept
Interoperability should be cheap and empower users. That’s where ACES comes in. There are many
possible avenues for implementing trustless and decentralized mechanism into the ACES ecosystem in
the near future. As such, our focus will remain on making tools easy to launch and develop so that even
when decentralized tools are ubiquitous, users and developers can continue to customize software to
their needs and contribute to the success of this ecosystem.
Figure 4. ARK ACES services overview
ACES emphasis is to deliver a marketplace12 directory and customized services which will enable
participants in the blockchain economy to launch interoperability businesses. These businesses could be
viewed similarly to the type of businesses that operate on Amazon. Some may be small and unprofitable,
just experiments or hobbies. Others may be massive multi-million dollar operations squeezing out small
margins on high volume[18].
Building solutions on top of OSS concepts and make a living organism is our promise and our long term
vision. To deliver a sustainable ecosystem, where all stakeholders can flourish and grow - is our common
path to help spread mass adoption of blockchain technology.
Next section will briefly mention the new ARK core v2 and how we used what we learned in the last
year to improve, iterate and deliver a completely rewritten core - that will help all of us to deliver the
vision of ARK, Satoshi and other decentralised solutions out there.
12ARK ACES Marketplace - http://marketplace.arkaces.com
52
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
K. Košič, R. Černec, A. Barnsley, and F.-X. Thoorens: Building an open-source blockchain
ecosystem with ARK
4. ARK CORE V2 - THE NEXT FRONTIER
In order to prepare for the next generation of deployable DPoS blockchains, we understood very quickly
that we had to thoroughly rethink the legacy code and to move to our own, completely rewritten from
scratch. Throughout the current time period of version v1, and with experience gained during the
development of ARK, we have been able to identify several key elements in the core design that could
be optimized. Now, we embark on a new voyage to completely overhaul the ARK core code as well as
the protocol as a foundation of our ambitious roadmap.
The new architecture (see Figure 5) has been completely rethought to decouple delegate forging activity,
transaction pool management, and API interface on separate threads. Transactions will need to pass
complete SPV (Simple Payment Verification)[22] on a separate process or server before hitting the mempool, completely sandboxing the activity of the node against attacks.
ARK-core v2 is completely configurable, meaning you can adjust the blockchain mechanics to your
preferred setup. Users are able to adjust block times, number of delegates, block size, customize fees
and set block rewards. This configuration is a living setup, meaning it can be adjusted when you arkchain
is already running, all you need to provide is the block height parameter - from where the new
configuration will be valid and in use.
Figure 5. ARK core v2 Architecture
The database communication will be decoupled with an interface layer so it will be possible to use your
own favorite technology like MySQL, SQLite, PostgreSQL, or MsSQL (so far). It will also be possible
to override your own database interface and pass it to the node. Initial internal tests are already showing
impressive results with lightning fast rebuilds using SQLite as backend, leveraging the multi-core
capabilities on our test servers. The security will be hyper-enhanced using a completely independent
transaction pool, responsible for keeping a list of unconfirmed transactions that could then be
broadcasted or passed along to the forger, to forge a block. Finally, the forging process will be
completely independent and self contained. It will be architected in a way to switch communications
with other relay nodes if the original relay node is getting attacked or forked.
We have designed the relay nodes to be as light and stable as possible and we recommend these relay
nodes if you are building a business over ARK blockchain (exchanges, smartbridge, etc…) instead of a
light client, since it will allow for more powerful computations such as Complex SPV Proof of Balance,
or Batch Verifications.
4.1 New plugin system
ARK Core v2 will be split into multiple packages using Lerna to manage development and publishing
of those packages. The benefit of this approach is that it is easier to focus on smaller parts of the whole
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
53
K. Košič, R. Černec, A. Barnsley, and F.-X. Thoorens: Building an open-source blockchain
ecosystem with ARK
system in isolation. Each part of the core can be easily replaced by custom implementations, imagine a
core-logger-logstash package that replaces the default logger. All of those plugins are interconnected
via the core-plugin-manager package, which functions as a container to hold all the instances that are
shared across plugins.
The plugin manager allows us to provide different Bootstrap processes for things like starting a relay
node or a forging node. The plugin manager accepts two (2) parameters, the path to a folder that contains
a plugins.json file and an optional parameter that can contain options like including and excluding
plugins from the Bootstrap process or plugin specific options that are not available from the
configuration file.
Figure 6. Plugin registration left and plugin lifecycle hooks on the right
4.2 Listening to blockchain events with webhooks
Webhooks implementation is a realization of Ark Improvement Proposal — AIP15 [23]. Webhooks enable ARK blockchain app developers to listen to blockchain events in a simple manner (by subscribing
to events and waiting for callbacks). Polling is just wasteful and inefficient for both the client and server
side. On average, 98.5% of polls are wasted and increase the workload on the server, making Webhooks
much more efficient.
Best practices and happy developers with efficient tools are all part of our motivation to deliver ARK
Ecosystem as a platform — while providing a stable and efficient base to build blockchain apps.
With ARK’s new API v2 you will also get Webhooks capability, that will call and deliver data based on
event conditions.
4.3 ARK testsuite based on jest technology stack
Test suites are an important part of any serious development environment, more so with blockchain
technologies where each mistake can end up being very costly. As most of software developers are
already aware on how hard it is to get full test coverage over different testing phases (functional tests,
integration tests...) that must take multiple stakeholders into account. Now add blockchain mechanics to
that recipe and think about how to test distributed systems, their mechanics, security, block propagation,
transaction management, transaction pool handling, fork management, client api... - where to start.
With this challenges in mind we had to pick the right tool, that is flexible and enough powerful. We
have chosen Jest Framework[24] as our base testing framework. Jest was developed and is used by Facebook to test all of their JavaScript code including React applications. Jest is also used by Airbnb,
Twitter, Pinterest, Instagram, and Oculus.
54
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
K. Košič, R. Černec, A. Barnsley, and F.-X. Thoorens: Building an open-source blockchain
ecosystem with ARK
With the growth of our team we are establishing a common base (see Figure 7) for developers, delivering
the best possible tools (powerful mocking, snapshot testing, built-in code coverage, zero configuration)
and making cross team collaboration smooth with testing appearing uniform across different sections of
code. By doing so we deliver priceless implementation examples enabling newcomers to learn and
understand the existing code [25].
Figure 7. Parts of the ARK Technology stack
5. CLOSING THOUGHTS
A quick overview of blockchain technology and its top challenges where presented. Inter- and cross-
chain interoperability is the key issue that needs to be addressed for the mass adoption of blockchain
technology, thus enabling business and organization to deliver new business models, delivering true
decentralized nature via trustless networks. Across the plethora of different altcoins/products targeting
specific solutions, there are a few building entire ecosystems or platforms that promise to deliver the
toolset to establish your own blockchain with already existing and tested ARK Technology stack (see
Figure 7). ARK Ecosystem is one of them.
Understanding the power of OSS development model and adjusting it in to a collaborative effort,
together with the community, will enable us to develop trustworthy applications and deliver them faster
to market. We are here to solve a problem and help educate the world on the possible solutions that are
available beyond banks and beyond traditional thinking. We believe a blockchain project should aim to
achieve easier and much more user friendly solutions.
The end goal for any blockchain project should be that consumers don’t even need to know that there is
a blockchain under the hood - it should all be intuitive and easy to use, like email, but just like in email,
there will be a slight learning curve that must be dealt with through education and time and we are doing
our best to play an important role in the future.
6. REFERENCES
[1] Z. Zheng, S. Xie, H. Dai, X. Chen, and H. Wang, “An Overview of Blockchain Technology:
Architecture, Consensus, and Future Trends,” in 2017 IEEE International Congress on Big Data
(BigData Congress), 2017, pp. 557–564.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
55
K. Košič, R. Černec, A. Barnsley, and F.-X. Thoorens: Building an open-source blockchain
ecosystem with ARK
[2] Wikipedia contributors, “Hype cycle,” Wikipedia, The Free Encyclopedia, 06-May-2018. [Online].
Available: https://en.wikipedia.org/w/index.php?title=Hype_cycle&oldid=839918558. [Accessed:
04-Jun-2018].
[3] M. Pisa and M. Juden, “Blockchain and Economic Development: Hype vs. Reality,” Center for
Global Development Policy Paper, vol. 107, 2017.
[4] W. Nowiński and M. Kozma, “How Can Blockchain Technology Disrupt the Existing Business
Models?,” Entrepreneurial Business and Economics Review, vol. 5, no. 3, pp. 173–188, Sep. 2017.
[5] M. Demary and V. Demary, “Blockchain: Down to earth,” IW-Kurzberichte, 2017.
[6] G. F. Coulouris, J. Dollimore, and T. Kindberg, Distributed Systems: Concepts and Design.
Pearson Education, 2005.
[7] R. G. Brown, “Introducing R3 Corda: A Distributed Ledger for Financial Services,” R3, April, vol.
5, 2016.
[8] V. Morris et al. , Developing a Blockchain Business Network with Hyperledger Composer using the
IBM Blockchain Platform Starter Plan. IBM Redbooks, 2018.
[9] R. Nagpal, “Blockchain — hype v/s reality – Blockchain Blog – Medium,” Medium, 15-Apr-2017.
[Online].
Available:
https://medium.com/blockchain-blog/blockchain-hype-v-s-reality-
c33fc1410890. [Accessed: 03-Jun-2018].
[10] “ARK | All-in-One Blockchain Solutions.” [Online]. Available: http://www.ark.io. [Accessed: 03-
Jun-2018].
[11] Wikipedia contributors, “Open-source software,” Wikipedia, The Free Encyclopedia, 02-Jun-2018.
[Online].
Available:
https://en.wikipedia.org/w/index.php?title=Open-
source_software&oldid=844023877. [Accessed: 03-Jun-2018].
[12] A. M. St. Laurent, Understanding Open Source and Free Software Licensing: Guide to Navigating
Licensing Issues in Existing & New Software. “O’Reilly Media, Inc.,” 2004.
[13] “Open
Source Software(OSS) : Wave of the Future.” [Online]. Available:
http://www.infosysblogs.com/infosysdigital/2016/06/open_source_software_wave_of_future.htm
l. [Accessed: 03-Jun-2018].
[14] H. Pickavet, “The next wave in software is open adoption software,” TechCrunch, 20-Jun-2016.
[15] Wikipedia contributors, “Ecosystem,” Wikipedia, The Free Encyclopedia, 02-Jun-2018. [Online].
Available: https://en.wikipedia.org/w/index.php?title=Ecosystem&oldid=844035609. [Accessed:
03-Jun-2018].
[16] “ARK Community Fund.” [Online]. Available: https://arkcommunity.fund/. [Accessed: 04-Jun-
2018].
[17] R. Brown, “Universal Interoperability: Why Enterprise Blockchain Applications Should be
Deployed
to
Shared…,”
Medium,
05-Apr-2018.
[Online].
Available:
https://medium.com/corda/universal-interoperability-why-enterprise-blockchain-applications-
should-be-deployed-to-shared-3d4daff97754. [Accessed: 03-Jun-2018].
[18] A. Aces, “Satoshi Supported the Idea of Alt Coins in 2010 and How That Relates to the ARK
Ecosystem,” Medium, 23-Mar-2018. [Online]. Available: https://medium.com/@arkaces/satoshi-
supported-the-idea-of-alt-coins-and-the-ark-ecosystem-in-2010-827866df2972. [Accessed: 03-
Jun-2018].
[19] A. Ovechkin, Blockchain: The Ultimate Beginners Guide to Understanding Blockchain
Technology. CreateSpace Independent Publishing Platform, 2018.
[20] M. Peacock, Creating Development Environments with Vagrant. Packt Publishing Ltd, 2013.
[21] S. Lessin, “The Future of Hybrid Centralized-Decentralized Apps,” The Information. [Online].
Available:
https://www.theinformation.com/articles/the-future-of-hybrid-centralized-
decentralized-apps?shared=5b152f291c7c6ec1. [Accessed: 04-Jun-2018].
[22] M. Swan, Blockchain: Blueprint for a New Economy. “O’Reilly Media, Inc.,” 2015.
[23] AIPs. Github.
[24] A. Fedosejev and A. Boduch, React 16 Essentials: A fast-paced, hands-on guide to designing and
building scalable and maintainable web apps with React 16. Packt Publishing Ltd, 2017.
[25] BoldNinja, “ARK Core v2 Technical Update Series — New Testing Suite,” ARK.io | Blog, 13-Feb-
2018. [Online]. Available: https://blog.ark.io/ark-core-v2-technical-update-series-new-testing-
suite-a1087cfc8094. [Accessed: 04-Jun-2018].
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
KAKO NAČRTOVATI SODOBNO ARHITEKTURNO
REŠITEV ZA KOMPLEKSNE INFORMACIJSKE
SISTEME
ERVIN LEMARK, TJAŠA ŠOSTER, DAMIJAN KAVS IN VID BEVČAR13
Povzetek: Kot razvijalci in vzdrževalci informacijskih rešitev se vedno
znova vprašujemo, kako in s čim bi se lotili razvoja kompleksnega sistema,
ki bi bil sposoben zadostiti hitro rastočim potrebam, bi se ga dalo enostavno
razširjati z novimi zmožnostmi, bi bil dostopen na različnih napravah, bi se
ga dalo celo klonirati in uporabiti drugje, hkrati pa bi bil varen, bi zadoščal
standardom in zakonskim zahtevam ter še prijazen do uporabnika in
enostaven za vzdrževanje?
V članku vam bomo predstavili arhitekturni model, zasnovan na mikro
storitvah. Hkrati bomo prikazali, s katerimi tehnologijami menimo, da
najbolje izvedemo posamezne dele sestavljanke. Prikazali bomo še primere
iz prakse, kjer mikro storitve s pridom uporabljamo.
Ključne besede: • mikro storitve • modularnost • oblačne storitve •
razširljivost • enostavno vzdrževanje
NASLOV AVTORJEV: Ervin Lemark, tech lead, Comland d.o.o., Litostrojska 58c, 1000 Ljubljana, Slovenija, e-pošta:
jaka.jenko@kivi.si. Tjaša Šoster, senior IT solutions architect programskih rešitev, Comland d.o.o., Litostrojska
58c, 1000 Ljubljana, Slovenija, e-pošta: tjasa.soster@comland.si. Damijan Kavs, senior backend developer,
Comland d.o.o., Litostrojska 58c, 1000 Ljubljana, Slovenija, e-pošta: damijan.kavs@comland.si. Vid Bevčar,
senior full stack developer, Comland d.o.o., Litostrojska 58c, 1000 Ljubljana, Slovenija, e-pošta:
vid.bevcar@comland.si.
DOI https://doi.org/10.18690/978-961-286-162-9.6
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
57
E. Lemark, T. Šoster, D. Kavs in V. Bevčar: Kako načrtovati sodobno arhitekturno rešitev za
kompleksne informacijske sisteme
1. UVOD
Kot razvijalci in vzdrževalci informacijskih rešitev se vedno znova vprašujemo naslednje:
Kako in s čim bi se lotili razvoja kompleksnega sistema, ki bi bil sposoben zadostiti hitro rastočim
potrebam, bi se ga dalo enostavno razširjati z novimi zmožnostmi, bi bil dostopen na različnih napravah,
bi se ga dalo celo klonirati in uporabiti drugje, hkrati pa bi bil varen, bi zadoščal standardom in
zakonskim zahtevam ter še prijazen do uporabnika in enostaven za vzdrževanje?
Seveda, večno Million Dollar vprašanje izdelovalcev informacijskih sistemov.
Zgodi se tudi, da nam to vprašanje zastavi naročnik. Za kar smo mu globoko hvaležni, tudi če se na
koncu odloči za manj sodobno rešitev.
To vprašanje smo si zadnje čase pogosto zastavljali. Z veseljem vam povemo, da smo odgovor našli in
ga zapisali.
Naš odgovor je …
2. ARHITEKTURA, ZASNOVANA NA MIKRO STORITVAH
Nič novega, boste rekli. Mikro storitve [1] so buzzword že nekaj časa. Vsi res veliki informacijski
sistemi jih uporabljajo. Ko skočite na katerokoli globalno spletno aplikacijo (Amazon, Facebook,
Twitter, eBay, …) uporabljate arhitekturo z mikro storitvami.
Kaj pa uporaba mikro storitev v poslovnih informacijskih sistemih, aplikacijah za naročnika, naših
lastnih izdelkih? Tu se še kar oklepamo starejših, z leti preizkušenih pristopov.
Čas je, da gremo naprej. Kako? Tu je recept.
2.1. Model arhitekture (in tehnologije) sodobnega informacijskega sistema
Predstavljamo vam naš arhitekturni recept. Hkrati odgovarjamo tudi, s katerimi tehnologijami menimo,
da najbolje izvedemo posamezne dele sestavljanke.
58
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
E. Lemark, T. Šoster, D. Kavs in V. Bevčar: Kako načrtovati sodobno arhitekturno rešitev za
kompleksne informacijske sisteme
Slika 1. Arhitektura informacijskega sistema z uporabljenimi mikro storitvami
Poslovno logiko delovanja informacijskega sistema razdelimo v več mikro storitev glede na pričakovane
funkcionalnosti. S tem omogočimo zmožnost prilagajanja zmogljivosti ter lažje vzdrževanje in
nadgradnje.
Mikro storitve med seboj povežemo, tako da si (po potrebi) izmenjujejo podatke.
Poleg mikro storitev, ki vsebujejo poslovno logiko, dodamo še namenske mikro storitve, kot so beleženje
dogodkov (log), samodejno odkrivanje storitev (service discovery [2]), revizijska sled, avtorizacija, ...
Komunikacijo uporabnikov in zunanjih storitev z mikro storitvami uredimo preko REST API-ja [3]
(Gateway). Podatke izmenjujemo preko JSON datotek. Za potrebe uporabnikov po dostopu do obličja
informacijskega sistema razvijemo uporabniški vmesnik v tehnologiji Angular [4].
Vsako mikro storitev posebej (in Gateway API) pripravimo v obliki lastnega Docker vsebnika [5]
(container-ja). S tem omogočimo enostavno nameščanje, vzdrževanje in širjenje zmogljivosti.
Za upravljanje z viri in skalabilnost uporabimo rešitev Docker Swarm [6]. S tem omogočimo namestitev
tako na Linux kot na Windows strežnike.
Ob namestitvi v oblak priporočamo uporabo Kubernetes orkestracije [7] za samodejno prilagajanje
obremenitvam ter samodejno zaznavanje in premeščanje izpadlih strežnikov.
2.2. Zgradba posamezne mikro storitve
V arhitekturnem modelu, kot smo ga opisali zgoraj, je posamezna mikro storitev zgrajena iz naslednjih
sestavin:
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
59
E. Lemark, T. Šoster, D. Kavs in V. Bevčar: Kako načrtovati sodobno arhitekturno rešitev za
kompleksne informacijske sisteme
poslovna logika,
controller – predstavitveni sloj, ki sprejema REST klice,
DB Adapter – uporablja se za povezovanje s podatkovno bazo,
REST Adapter – uporablja se za povezovanje z drugimi storitvami,
Queue Management – upravljanje čakalne vrste transakcij, kjer je to potrebno.
Slika 2. Arhitektura posamezne mikro storitve
2.3. Uporaba podatkovnih baz
Mikro storitve se povezujejo s podatkovnimi bazami. Glede na svoj namen (funkcionalnost) v baze
podatke pišejo, jih spreminjajo in jih iz njih berejo. Baze so tehnološko gledano lahko različne. SQL,
NoSQL, … Pač izberemo tehnologijo za optimalno hranjenje in posredovanje podatkov glede na
konkretne potrebe mikro storitve in funkcionalnosti, ki jih le-ta podpira.
Dejansko fizično izvedbo razdelitve baz in njihove vrste tako lahko prilagajamo glede na obremenitev
sistema in na ta način dosežemo popolno prilagodljivost. V zgodbo smiselno vključimo tudi življenjski
tok in namen hranjenih podatkov (produkcijske baze, podatkovna skladišča, revizijska sled, zapisi
delovanja in dostopov, arhiv, …).
2.4. Zagotavljanje varnosti
Za zagotavljanje varnosti podatke, ki se posredujejo med zunanjim svetom in našim informacijskim
sistemom, ustrezno zavarujemo z zgoščevalno funkcijo. S tem preverjamo istovetnost in
nespremenljivost podatkov. Vse povezave potekajo preko HTTPS protokola, s čimer zaščitimo vsebino
prometa in podatke pred vmesnimi opazovalci.
2.5. Avtentikacija in avtorizacija
Za avtentikacijo in avtorizacijo pripravimo posebne mikro storitve, ki imajo skupne vhodne in izhodne
lastnosti, znajo pa se pogovarjati z različnimi zunanjimi storitvami. Tako lahko v istem sistemu
omogočimo več različnih načinov avtentikacije ter tudi več nivojev avtentikacije [8]. V praksi to pomeni
podporo domačim storitvam, kot so Varnostna shema MJU [9], Varnostna shema MDDSZ [10], SI-CAS
[11], in generičnim rešitvam, kot sta Google Authenticator [12] in Google reCAPTCHA [13], ter
naprednim možnostim, kot so biometrične značilke [14] (prstni odtis, obrazne značilnosti, …).
2.6. Decentralizacija na več sistemov in več lokacij
Predstavljeni model lahko nadgradimo in razširimo na dva načina:
60
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
E. Lemark, T. Šoster, D. Kavs in V. Bevčar: Kako načrtovati sodobno arhitekturno rešitev za
kompleksne informacijske sisteme
horizontalno – več vzporednih informacijskih sistemov,
vertikalno – vzpostavimo vrhnje entitete, ki hierarhično vsebujejo enega ali več informacijskih
sistemov.
Ob tem ohranimo obstoječo zgradbo in funkcionalnost ter dodamo višji nivo, ki ga podpremo z
imenikom sistemov. Dodamo storitev za določanje naslovov in usmerjanje prometa. Dodamo poslovno
logiko za izvajanje funkcionalnosti v razširjenem ekosistemu.
S tem pristopom informacijski sistem lahko tudi decentraliziramo.
Pri bazah lahko izberemo tudi verigo blokov in tako decentraliziramo delo s podatki. Seveda verige
blokov prispevajo še dodatne zmožnosti, ki so značilne za njih.
3. KATERE TEHNOLOGIJE PRIPOROČAMO OB DELU Z MIKROSTORITVAMI
Ob sliki 1 smo že zapisali, s katerimi tehnologijami se lotevamo izgradnje nekaterih delov celote. Na
kratko jih ponovimo in dodajmo manjkajoče. Ob tem naj opomnimo, da tak izbor ni dokončen ali edini.
Glede na primer in potrebe ter želje naročnika se odločimo tudi drugače.
Razvojno okolje in hkrati okolje za vodenje postopka razvoja: MS Visual Studio [15] in .NET Core
[16], ker ima to okolje že vsebovano vse, kar potrebujemo za razvoj in ker je rezultat dela neodvisen od
operacijskega sistema.
Programski jezik mikro storitev: C#, razen kjer je zaradi specifičnih potreb bolj primerno kaj drugega.
Ogrodje s povezovalnimi knjižnicami pripravljeno z ASP.NET Core [17].
Uporabniški vmesnik: Angular.
Podatkovne baze: tu pa res ni omejitev – SQL (Oracle [18] in Microsoft [19]), NoSQL[20] (običajno
MongoDB [21]), …)
Tehnologija vsebnikov: Docker.
Tehnologija orkestracije: Kubernetes.
V primerih, ki sledita, poleg naštetih najdemo še kako orodje in tehnologijo, kar bomo posebej poudarili.
4. PRIMERI UPORABE ARHITEKTURNIH MODELOV, ZASNOVANIH Z MIKRO
STORITVAMI
Prikazali bomo dva primera uporabe predstavljenega arhitekturnega modela z uporabo mikro storitev.
Prvi primer prikazuje povezovanje več sistemov preko vsebnikov, ki so nameščeni v oblačne storitve.
Drugi primer pa je namenska aplikacija, ki uporablja tehnologijo računalniškega vida in s pridom
uporablja vse prednosti mikro storitev.
4.1. Zajem podatkov – povezava treh sistemov
Naš prvi primer prikazuje povezavo treh sistemov, kjer je na eni strani sistem za zajem podatkov, na
drugi strani sistem za poslovno inteligenco, kot vmesnik pa smo pripravili sklop mikro storitev, ki ta
sistema na smiseln način povezujejo, in med njima prenašajo podatke.
Povezovanje sistemov predstavlja podoben izziv, kot je povezovanje (mikro) storitev. Dodaten napor
lahko pomeni prilagajanje delov, ki niso neposredno pod našim nadzorom. V lastnem sistemu, ki ga
sestavljajo mikro storitve, imamo sami nadzor nad vsemi deli, ne glede nato, kako kompleksni so. Ob
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
61
E. Lemark, T. Šoster, D. Kavs in V. Bevčar: Kako načrtovati sodobno arhitekturno rešitev za
kompleksne informacijske sisteme
povezovanju z zunanjimi sistemi, ki so izven našega nadzora, pa se v praksi srečujemo z množico
nepredvidenih izzivov, ki lahko pomembno podaljšajo čas izvedbe.
V naslednjem primeru smo povezali dva obstoječa sistema – lastno aplikacijo za zajem podatkov na
terenu in sistem za poslovno inteligenco. Dodali smo namensko razvit modul, ki je iz zalednega sistema
pripravil podatke. Te podatke je nato prevzel sistem za zajem na terenu, ki je dopolnjene podatke vrnil
modulu. Ta pa je zajete podatke prilagodil, da so bili primerni za obdelavo v sistemu za poslovno
inteligenco.
Modul smo pripravili z arhitekturo mikro storitev, kjer smo posamezne dele poslovnega procesa podprli
z namenskimi mikro storitvami. Tako smo dosegli njihovo neodvisnost glede obremenitve iz vidika časa
izvajanja in količine podatkov. Umestitev modula v oblak in orkestracija omogočata prilagodljivost
glede na potrebe in skrbita za stalno dostopnost.
Slika 3. Arhitektura sistema za zajem podatkov z uporabo povezovalnega modula z mikro storitvami
Tehnologije, uporabljene za modul z mikro storitvami: .NET Core, Docker, Kubernetes, Microsoft SQL
baza in Angular uporabniški vmesnik, REST povezave.
4.2. Računalniški vid v akciji
Drugi primer poleg naštetih tehnologij uporablja še tehnologijo računalniškega vida. Mikro storitev, ki
prepoznava video zapis, je napisana v jeziku C++, ker je pri njej izrednega pomena hitrost izvajanja.
Primer prikazuje zahtevno okolje prepoznavanja vzorcev v živo v video zapisu. Število in sočasnost
video zapisov nista znana v najprej. Izziv je torej priprava modularnega sistema, ki je sposoben hitro
pregledati in prepoznati v naprej neznano količino in pogostost video zapisov in vedno pravilno ugotoviti vzorec. V tem primeru je izvedba z mikro storitvami kar sam po sebi umevna.
Pripravili smo arhitekturo v kateri je vhodno izhodni člen vmesnik (proxy), ki skrbi za posredovanje
zahtev za pregled videa ter vrača rezultate. Kot mikro storitve v sistemu nastopajo še moduli za
avtentikacijo, povezovanje (REST API) in administracijo (spletni vmesnik). Najpomembnejši del pa so
mikro storitve »delavci«, na katerih je breme posamezne obdelave in prepoznavanja videa. Tu smo se
odločili za neobičajen pristop, ki je najbolj ustrezal zahtevnosti naloge.
62
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
E. Lemark, T. Šoster, D. Kavs in V. Bevčar: Kako načrtovati sodobno arhitekturno rešitev za
kompleksne informacijske sisteme
V teoriji mikro storitev velja, da se število sočasno delujočih storitev ene funkcionalnosti prilagaja
potrebam. Delo prične N storitev. Po doseženi obremenitvi se jim pridružijo nove. Ko obremenitev pade,
se njihovo število (morda) zmanjša.
V našem primeru smo se odločili za pristop »ena zahteva – en delavec«. Ko prispe zahteva za obdelavo
videa, orkestracija dvigne Docker vsebnik z delavcem, ta video obdela (dejansko v živo gleda video
stream), prepozna vzorec, vrne rezultat in se ugasne. Sočasno torej deluje toliko pojavitev ene mikro
storitve, kolikor je zahtev za obdelavo videa. Ne več in ne manj. Izkoriščenost sistema je tako optimalna.
Arhitekturo takega sistema prikazujemo na naslednji sliki.
Slika 4. Arhitektura mikro storitve pri prepoznavanju videa
Po potrebi lahko predstavljeni sistem vodoravno razmnožimo (v gornji sliki mikro storitve od B do X)
in ga s tem prilagodimo ter zadovoljimo večjim zahtevam. V praksi velja, da vedno sočasno delata vsaj
dva sistema.
Uporabljene tehnologije: C++ [22] za mikro storitve za prepoznavo videa, NodeJS [23] in Angular za
vse druge mikro storitve razen delavcev, Python [24] za povezovanje med storitvami, elasticsearch [25]
za analitiko delovanja sistema.
Prilagamo nekaj številk za ilustracijo hitrosti vzpostavitve Docker vsebnika za prepoznavo videa:
0.00 sekunde za zagon vsebnika,
1,39 s za inicializacijo procesa,
0.23 sekunde za inicializacijo video vira.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
63
E. Lemark, T. Šoster, D. Kavs in V. Bevčar: Kako načrtovati sodobno arhitekturno rešitev za
kompleksne informacijske sisteme
Skupaj torej 1.61 sekunde, da lahko mikro storitev prične s svojim osnovnim delom – prepoznavno
videa. Ker je v video signalu prvih 10 sekund privzeto nepomembnih, je to več kot dovolj hitro, da lahko
storitev uspešno opravi svoje delo.
Orkestracijo sistema v namestitvi pri ponudniku storitev v oblaku upravljamo s pomočjo Kubernetesa.
Enako postavitev lahko izvedemo tudi na fizičnem strežniku, kjer orkestracijo izvedemo s skriptami s
pomočjo Docker compose [26] ukazov.
5. ZAKLJUČEK
Priznajmo, da mikro storitve kot osnovni pristop k izgradnji informacijskih sistemov niso nič novega.
Razvijalci smo vedno stremeli k deljenju izziva na dele in modeliranju teh delov kot čim bolj samostojne
celote. Modularni pristop prinaša veliko prednosti, od katerih bi omenil le dve – razbijanje
kompleksnosti in ponovna uporaba funkcionalnosti.
Ekosistem mikro storitev pa igro dviga na popolnoma nov nivo. Strojna in programska podpora je
končno dozorela in je dovolj zmogljiva, da prevzame delitev in povezovanje modulov ter jih izvaja
namesto programerja in administratorja. Pravzaprav je evolucija informacijskih sistemov tu dohitela
neuradno teorijo in ji ponudila okolje, kjer lahko preide v prakso.
Priča smo prehodu od fizičnih strežnikov preko navideznih strežnikov do oblačnih namestitev in od
monolitnih sistemov preko vodoravno in navpično deljenih sistemov do popolnoma prožnih rešitev.
Na eni strani imamo torej ponudbo. Ponudbo, ki jo pravzaprav potrebuje in jo zahteva povpraševanje.
Vedno več podatkov v kakršnikoli obliki, big data, deep learning, computer vision, IoT, spletna omrežja,
… Brez uporabe arhitekture mikro storitev velika sodobna spletišča, in celotni informacijski sistemi za
njimi, sploh ne bi obstajala.
Ne pozabimo pa, da se orodja in naša uporaba le-teh sproti razvijajo, da standardi sploh še niso dorečeni,
da se učimo in rastemo, da prepoznavamo ozka grla in jih nadomeščamo z boljšimi rešitvami.
Prihodnost mikro storitev je v … še bolj učinkovitih mikro storitvah. Naša dolžnost v vlogi ponudnikov
odličnih informacijskih rešitev je, da jih čim bolje uporabljamo in razvijamo.
V našem prispevku smo z malce teorije in na dveh dokaj enostavnih primerih prikazali, kako se lahko
lotimo rešitev s pomočjo mikro storitev. Čar pristopa je v tem, da z rastjo sistema njegova kompleksnost
ne raste – ker stoji na trdnem temelju mikro storitev.
64
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
E. Lemark, T. Šoster, D. Kavs in V. Bevčar: Kako načrtovati sodobno arhitekturno rešitev za
kompleksne informacijske sisteme
6. LITERATURA
[1] https://en.wikipedia.org/wiki/Microservices,
Microservices
(From
Wikipedia,
the
free
encyclopedia), obiskano 18.05.2018
[2] https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/,
Service
Discovery in a Microservices Architecture, obiskano 18.05.2018
[3] https://en.wikipedia.org/wiki/Representational_state_transfer, Representational state transfer
(From Wikipedia, the free encyclopedia), obiskano 18.05.2018
[4] https://angular.io/, Angular - One framework. Mobile & desktop., obiskano 18.05.2018
[5] https://www.docker.com/, Docker - Build, Ship, and Run Any App, Anywhere, obiskano
18.05.2018
[6] https://docs.docker.com/engine/swarm/key-concepts/, Swarm mode key concepts, obiskano
18.05.2018
[7] https://kubernetes.io/, Production-Grade Container Orchestration, obiskano 18.05.2018
[8] https://en.wikipedia.org/wiki/Multi-factor_authentication, Multi-factor authentication (From
Wikipedia, the free encyclopedia), obiskano 18.05.2018
[9] https://vs.gov.si/VS.web/, Varnostna Shema, obiskano 18.05.2018
[10] https://vs.gov.si/VS.web/, Ministrstvo predstavilo informacijski sistem za odločanje o pravicah iz
javnih sredstev, obiskano 18.05.2018
[11] http://nio.gov.si/nio/asset/centralni+avtentikacijski+sistem+sicas, Centralni avtentikacijski sistem
SI-CAS, obiskano 18.05.2018
[12] https://en.wikipedia.org/wiki/Google_Authenticator, Google Authenticator (From Wikipedia, the
free encyclopedia), obiskano 18.05.2018
[13] https://www.google.com/recaptcha/intro/v3beta.html, reCAPTCHA: Easy on Humans, Hard on
Bots, obiskano 18.05.2018
[14] https://en.wikipedia.org/wiki/Biometrics, Biometrics (From Wikipedia, the free encyclopedia),
obiskano 18.05.2018
[15] https://www.visualstudio.com/, Visual Studio IDE, Code Editor, VSTS, & App Center, obiskano
18.05.2018
[16] https://www.microsoft.com/net/learn/what-is-dotnet, What is .NET?, obiskano 18.05.2018
[17] https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-2.0, Build web APIs with
ASP.NET Core , obiskano 18.05.2018
[18] https://www.oracle.com/database/index.html, Database | Cloud Database | Oracle, obiskano
18.05.2018
[19] https://www.microsoft.com/en-us/sql-server/sql-server-2017, SQL Server 2017 on Windows and
Linux | Microsoft, obiskano 18.05.2018
[20] https://en.wikipedia.org/wiki/NoSQL, NoSQL (From Wikipedia, the free encyclopedia),, obiskano
18.05.2018
[21] https://www.mongodb.com/, MongoDB for GIANT Ideas, obiskano 18.05.2018
[22] https://sl.wikipedia.org/wiki/C%2B%2B, C++ (Iz Wikipedije, proste enciklopedije) , obiskano
18.05.2018
[23] https://nodejs.org/en/, Node.js, obiskano 18.05.2018
[24] https://www.python.org/, Welcome to Python.org, obiskano 18.05.2018
[25] https://www.elastic.co/, Open Source Search & Analytics · Elasticsearch | Elastic, obiskano
18.05.2018
[26] https://docs.docker.com/compose/, Docker Compose, obiskano 18.05.2018
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
IT INTEGRACIJE V SODOBNIH
ELEKTROENERGETSKIH OMREŽJIH Z UPORABO
MODELA CIM
NIKOLA RISTESKI14
Povzetek: Na področju proizvodnje in dobave elektrike se dogajajo korenite
spremembe – zavezani smo k zniževanju ogljičnega odtisa, povečanju
deleža elektrike iz obnovljivih virov, uvajamo električne avte, prehajamo na
distribuirano in manj predvidljivo proizvodnjo elektrike (sončne, veterne
elektrarne). Rešitev za prej omenjene izzive elektroenergetskih omrežij
predstavlja razvoj tako imenovanega pametnega omrežja (angl. “Smart
Grid”). Večina definicij pametnega omrežja izpostavlja uporabo digitalne
izmenjave informacij z namenom zagotavljanja stabilnosti, varnosti,
zanesljivosti in učinkovitosti, kot tudi interoperabilnosti med različnimi
udeleženci znotraj omrežja, kot tudi med različnimi omrežji. Iz tega je
razvidno, da je razvoj pametnega elektroenergetskega omrežje
nepredstavljiv brez integracij nekoč popolnoma nepovezanih sistemov. V
okviru prizadevanj za implementacijo pametnega omrežja, slovenski
sistemski operater prenosnega omrežja ELES izvaja projekt pilotnega
razvoja pametnega omrežja v Sloveniji v sodelovanju z japonsko agencijo
NEDO. V okviru navedenega projekta sodelujemo tudi podjetje Bintegra
d.o.o., kjer smo se osredotočili na zagotavljanje integracij oz.
interoperabilnosti z implementacijo arhitekture storitvenega vodila (angl.
Enterprise Service Bus), oziroma natančneje arhitekturo mikrostoritev.
Tehnologija, ki smo jo izbrali za implementacijo rešitve je Apache
ServiceMix, kar predstavlja skupek različnih odprtokodnih tehnologij za
implementacijo integracijskih projektov. Potreba po interoperabilnosti med
razlinimi operaterji napeljuje k implementaciji splošnih standardov, ki
veljajo za vse operaterje. V tem primeru smo se odločili za uporabo modela
Common Information Model (CIM), ki je namenjen kot osnova za standarde
za izmenjavo komunikacij na področju energetike. Pri integraciji smo
uporabili nabor standardov IEC (International Electrotechnical Commision)
za izmenjavo podatkov med udeleženci elektroenergetskega trga.
Ključne besede: • integracije • mikrostoritve • CIM • Apache ServiceMix •
elektroenergetika
NASLOV AVTORJA: Nikola Risteski, Bintegra d.o.o., Železnikova ulica 4, 2000 Maribor, Slovenija, e-pošta:
nikola.risteski@bintegra.com
DOI https://doi.org/10.18690/978-961-286-162-9.7
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
66
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
N. Risteski: IT integracije v sodobnih elektroenergetskih omrežjih z uporabo modela CIM
1. UVOD
Na področju proizvodnje in dobave elektrike se dogajajo korenite spremembe - zavezani smo k
zniževanju ogljičnega odtisa, povečanju deleža elektrike iz obnovljivih virov, uvajamo električne avte,
prehajamo na distribuirano in manj predvidljivo proizvodnjo elektrike (sončne, veterne elektrarne).
Rešitev za prej omenjene izzive elektroenergetskih omrežij predstavlja razvoj tako imenovanega
pametnega omrežja (angl. “Smart Grid”). Večina definicij pametnega omrežja izpostavlja uporabo
digitalne izmenjave informacij z namenom zagotavljanja stabilnosti, varnosti, zanesljivosti in
učinkovitosti, kot tudi zagotavljanja interoperabilnosti med različnimi udeleženci znotraj omrežja, kot
tudi med različnimi omrežji. Iz tega je razvidno, da je razvoj pametnega elektroenergetskega omrežje
nepredstavljiv brez razvoja informacijskih tehnologij, ki so temelj za komunikacijo in upravljanje le-
tega. Eden izmed ključnih pogojev za doseganje omenjenih ciljev je sodelovanje med različnimi sistemi,
ki so doslej popolnoma neodvisno opravljali svoje naloge.
V okviru prizadevanj za implementacijo pametnega omrežja, slovenski sistemski operater prenosnega
omrežja ELES izvaja projekt pilotnega razvoja pametnega omrežja v Sloveniji v sodelovanju z japonsko
agencijo NEDO. V okviru navedenega projekta sodelujemo tudi podjetje Bintegra d.o.o.
V okviru projekta NEDO smo sodelovali pri implementaciji storitvenega vodila oziroma arhitekture
mikrostoritev, s čimer smo želeli postaviti temelje za nadaljnje integracije na primeru sistemskega
operaterja distribucijskega omrežja Elektro Celje. Pri implementaciji teh nalog smo sodelovali z
Elektroinštitutom Milan Vidmar in podjetjem Iskratel d.d.
2. CIM (COMMON INFORMATION MODEL)
Common Information Model oziroma CIM je standard na področju energetike, ki je sprejet s strani
Mednarodne Komisijje za Elektrotehniko (angl. International Eceltrotechnical Comission oz. IEC), z
namenom izmenjave informacij o energetskem omrežju med različnimi aplikacijami. Potrebno ga je
ločiti od istoimenskega standarda, ki obstaja na področju informacijskih tehnologii, je pa ekvivalenten
glede namena, saj standard, ki je namenjen informacijskim tehnologijam se uporablja za opis
informacijske arhitekture oz. infrastrukture podjetij.
CIM model je predstavljen kot UML (Unified Modelling Language) model. Standard definira skupni
slovar in osnovno ontologijo za posamezne aspekte s področja energetike. CIM model modelira omrežje
z uporabo t. i. “modela žic”. Le-ta opisuje osnovne komponente, ki so v uporabi z namenom transporta
elektrike. [1]
IEC definira različne standarde, ki so namenjeni različnim področjem elektrotehnike. Za nas je bil
relevanten standard IEC-61968 (Application integration at electric utilities – System interfaces for
distribution management), ki je namenjen integraciji aplikacij pri elektropodjetjih in tudi definira
vmesnike za elektrodistribucijska omrežja. [2]
Standard IEC-61968 je dejansko sestavljen iz večih delov, ki spadajo pod to oznako in definirajo
strukturo podatkov za predstavitev različnih segmentov električnih omrežij oziroma področij
poslovanja. Na primer, standard IEC 61968-3 je namenjen mrežnim operacijam (angl. Network
Operations), standard IEC 61968-8 je namenjen podpori uporabnikom (angl. Customer Support), IEC
61968-9 pa je namenjen meritvenim podatkom. [2]
Grafični prikaz zahtevka in odgovora po CIM standardu sta predstavljena spodaj.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
67
N. Risteski: IT integracije v sodobnih elektroenergetskih omrežjih z uporabo modela CIM
Slika 1. Prikaz zahtevka po CIM standardu [3]
Slika 2. Prikaz odgovora po CIM standardu [3]
68
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
N. Risteski: IT integracije v sodobnih elektroenergetskih omrežjih z uporabo modela CIM
3. PROJEKT NEDO
Pri podjetju Bintegra smo se v okviru projekta NEDO osredotočili na zagotavljanje interoperabilnosti z
implementacijo arhitekture storitvenega vodila (angl. Enterprise Service Bus), oziroma natančneje
arhitekturo mikrostoritev. Tehnologije, ki smo jih izbrali za implementacijo rešitve so Apache
ServiceMix, ki je skupek različnih odprtokodnih tehnologij za implementacijo integracijskih projektov.
Pri integraciji smo uporabili standarde IEC (International Electrotechnical Commision) za izmenjavo
podatkov med udeleženci elektroenergetskega trga.
V nadaljevanju so opisane tehnologije in postopke, ki smo jih raziskovali in razvijali tekom projekta.
3.1. Arhitektura mikrostoritev
Pod pojmom “arhitektura mikrostoritev” razumemo različico oziroma nadgradnjo že dobro uveljavljene
storitveno usmerjene arhitekture (angl. Service-oriented architecture, v nadaljevanju SOA). To, kar loči
arhitekturo mirkostoritev od SOA arhitekture, so lastnosti, po katerih je arhitektura pridobila ime:
implementirane storitve so manjše oziroma bolj fino granulirane, protokoli, ki se uporabljajo, pa so prav
tako bolj enostavni (angl. lightweight). Prednost takšne implementacije je večja stopnja modularnosti
rešitve, kar olajša razvoj z razdelitvijo razvoja na več razvojnih ekip, bolj pogosta ponovna uporaba že
implementiranih storitev, lažje lestvičenje (angl. scaling), lažje testiranje in druge prednosti, ki so
posledica fine granulacije storitev. [4]
Pri odločitvi glede orodja, ki bi ga uporabili za implementacijo informacijske arhitekture, ki smo jo
načrtovali, smo obravnavali več popularnih orodij za implementacijo arhitekture mikrostoritev. Glede
na občutljivost rešitve za energetska omrežja in dosedanje navade elektrodistributerjev, da praviloma
imajo vso informacijsko infrastrukturo praviloma lokalno na svojih strežnikih, smo izločili oblačne
rešitve za implementacijo arhitekture mikroservisov. Dodatne želje oziroma zahteve glede splošnosti in
neodvisnosti rešitve od operacijskega sistema so nas pripeljale do ožje izbire treh programskih paketov
namenjene integracijam oziroma implementaciji arhitekture mikrostoritev. Vsi trije paketi temelijo na
programskem jeziku Java: Apache ServiceMix, Mule ESB in Talend ESB.
Po analizi lastnosti vseh treh programskih paketov, smo se odločili za edino popolnoma odprtokodno
rešitev od naštetih: Apache ServiceMix.
3.2. Apache ServiceMix
Apache ServiceMix je odprtokodno storitveno vodilo, ki vključuje različne projekte pod okriljem
organizaije Apache, temelji pa na OSGi specifikaciji. OSGi specifikacija je namenjena modularnosti in
definira standarde, kako se naj implementira modularno delovanje komponent.
Apache ServiceMix je v svojem bistvu skupek Apache projektov, med najbolj pomembnimi pa lahko
omenimo [5]:
-
Apache Karaf (vsebnik za izvedbo OSGi komponent, ki temelji na projektu Apache Felix)
-
Apache Camel (ogrodje za implementacijo integracijskih vzorcev)
-
ActiveMQ (sporočilno-usmerjeno povezovalno programje, ki implementira številne
protokole in standarde, vključno z Java Messaging Service (JMS))
-
Apache CXF (ogrodje za spletne storitve)
Poleg tega pa ServiceMix okolje ponuja možnosti vključitve tudi za številne druge projekte, kot je npr.
podpora za BPM procese z uporabo orodja Activiti [5].
Za implementacijo integracijske logike smo izbrali Apache Camel kot očitno izbiro. Obstajata dva
glavna pristopa pri implementaciji integracijskih “poti” (angl. routes) v Apache Camel: Z uporabo
domensko-specifičnega jezika (angl. domain-specific language, DSL), ali z uporabo tehnologije
Blueprint XML, ki predstavlja izgradnjo integracijske poti s pomočjo namensko oblikovane XML
datoteke.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
69
N. Risteski: IT integracije v sodobnih elektroenergetskih omrežjih z uporabo modela CIM
Primer Blueprint XML implementacije integracijske poti, ki premakne datoteko in objavi JMS sporočilo
na ActiveMQ je spodaj.
FileMovedEvent(file: ${file:name}, timestamp: ${date:now:hh:MM:ss.SSS})
Izvorna koda 1. Prikaz odgovora po CIM standardu
Pri implementaciji integracij za projekt NEDO smo se odločili za uporabo Blueprint XML pristopa
zaradi enostavnosti in preglednosti implementacije integracijskih poti.
3.3. Implementacija za elektroenergetiko
Pri implementaciji arhitekture mikrostoritev, oziroma storitvenega vodila za področje elektroenergetike
smo se soočili z izzivi, s katerimi smo se v preteklosti soočali pri implementaciji podobnih arhitektur na
drugih področjih:
-
Kako pridobiti informacije, ki so potrebne za ustrezno oblikovanje oz. preoblikovanje
podatkov?
-
Najti ustrezne sogovornike, ki so odgovorni za posamezne zaledne sisteme;
-
Poskrbeti za ustrezno monitoriranje in beleženje dogodkov oziroma klicev, ki se izvedejo
preko posameznih storitev;
-
Poskrbeti za varnostne vidike, saj včasih gre za občutljive podatke in sisteme, saj zato doslej
niso bili dostopni od zunaj.
Z implementacijo sodobnih uporabniških scenarijev na področju pametnih omrežij zanesljivost
delovanja je ključnega pomena. Za zagotavljanje zanesljivosti pa je potrebno ustrezno nadzirati in
beležiti dogajanja. Za infrastrukturno okolje, ki smo ga izbrali obstajajo številna orodja za monitoriranje
in logiranje. Mi smo izbrali orodje Hawtio, ki je namenjeno nadzoru vseh javanskih aplikacij.
V skladu s prej omenjenim standardom IEC-61968 smo pripravili SOAP spletno storitev, ki ima vlogo
adapterja za komunikacijo za sistem za upravljanje z meritvenimi podatki (angl. Meter Data
Management System, MDMS). Spletna storitev ima vlogo adapterja, saj sprejme sporočilo, ki je v
skladu s CIM standardi in na ta način zakrije kompleksnost oziroma specifike zalednega sistema
MDMS.
V nadaljevanju je prikazan primer klica SOAP spletne storitve za pridobivanje merilnih podatkov, ki
smo ga pripravili.
70
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
N. Risteski: IT integracije v sodobnih elektroenergetskih omrežjih z uporabo modela CIM
2017-10-11T09:00:00
2017-10-11T12:00:00
skdfgsdiopfzgfseuigipdfzgiauezf8oa7strlaweugfo8a7w
Izvorna koda 2. SOAP sporočilo za zahtevo za merilne podatke
SUCCESS
0
2017-10-11T09:15:00.000+02:00
0
2017-10-11T09:30:00.000+02:00
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
71
N. Risteski: IT integracije v sodobnih elektroenergetskih omrežjih z uporabo modela CIM
…
XML
Izvorna koda 3. SOAP sporočilo za odgovor za merilne podatke
4. ZAKLJUČEK
Področje elektroenergetike doživlja korenite spremembe, s tem pa se odpira pot za informacijski
preporod tega področja. Spremembe, kot so uvedba električnih avtov, povečanje deleža distribuiranih
in obnovljivih virov energija, pojav »prosumerjev« in znižanje ogljičnega odtisa silijo področje v
medsebojno povezovanje med igralci na trgu.
V okviru projekta NEDO smo imeli priložnost odgovoriti tem potrebam in smo v praksi uporabili
izkušnje, ki jih imamo z integracijami na drugih domenskih področjih in s tem pospešili oziroma lažje
vodili pot k vzpostavitvi arhitekture mikrostoritev v okolju, kjer so sistemi dolga leta živeli kot
informacijski monoliti.
5. LITERATURA
[1] https://en.wikipedia.org/wiki/Common_Information_Model_(electricity) Common Information
Model (electricity), nazadnje obiskano: 29. 5. 2018
[2] Application integration at electric utilities - System interfaces for distribution management - Part
1: Interface architecture and general recommendations, International Electrotechnical Commision,
2012.
[3] Report on definition of interfaces and integration patterns, Elektroinštitut Milan Vidmar, Iskratel
d.d., 2017 (interno gradivo projekta NEDO)
[4] https://en.wikipedia.org/wiki/Microservices, Microservices, nazadnje obiskano: 28. 5. 2018
[5] http://servicemix.apache.org/docs/7.x/user/index.html , Apache ServiceMix documentation,
obiskano 24. 5. 2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
INFORMACIJSKA REŠITEV ZA UPRAVLJANJE
ODJEMA ELEKTRIČNE ENERGIJE GOSPODINJSKIH
ODJEMALCEV
GAŠPER LAKOTA IN TOMAŽ BUH15
Povzetek: V okviru slovensko-japonskega sodelovanja na področju
pametnih omrežij, t.i. NEDO projekta, se izvaja pilotni projekt upravljanja
odjema električne energije gospodinjstev. Gre za enega izmed prvih
projektov upravljanja odjema električne energije gospodinjstev v Sloveniji
in je namenjen pridobivanju znanja in izkušenj pri gospodinjskih
uporabnikih in njihovem obnašanju v primeru različnih načinov upravljanja
odjema, prepoznati zahteve in načine integracije različnih informacijskih
sistemov za potrebe vodenja elektrodistribucijskega omrežja ter preveriti,
kako lahko različne vrste naprav za upravljanje odjema povežemo v celoten
sistem upravljanja z energijo v elektrodistribucijskem podjetju.
Ključne besede: • upravljanje odjema • CIM – Common Information Model
• napredni merilni sistem • Demand Response • DRCS – Demand Response
Control System • električna energija • gospodinjski odjem • aktivni
odjemalec
NASLOV AVTORJEV: Gašper Lakota, produktni vodja, Solvera Lynx d.o.o., Stegne 23a, 1000 Ljubljana, Slovenija,
e-pošta: gasper.lakota@solvera-lynx.com. Tomaž Buh, produktni vodja, Solvera Lynx d.o.o., Stegne 23a, 1000
Ljubljana, Slovenija, e-pošta: tomaz.buh@solvera-lynx.com.
DOI https://doi.org/10.18690/978-961-286-162-9.8
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
73
G. Lakota in T. Buh: Informacijska rešitev za upravljanje odjema električne energije
gospodinjskih odjemalcev
1. UVOD
V okviru slovensko-japonskega sodelovanja na področju pametnih omrežij, t.i. NEDO projekta, se
izvaja triletni pilotni projekt pametnih omrežij, v katerem so osnovni partnerji Japonska razvojna
agencija NEDO in njegov pooblaščeni izvajalec Hitachi ter družba ELES. Poleg družbe ELES bo je
slovenski strani v projekt vključenih še veliko število deležnikov, zato ga upravičeno imenujemo
nacionalni projekt, zaradi česar je to tudi edinstven tovrsten projekt v Evropi. Sorodni projekti na
območju celotne Evropi so osredotočeni na ožje področje ali skupnosti, v našem primeru pa lahko z
integriranimi in centralno vodenimi rešitvami v oblaku dejansko govorimo o uvajanju pametnega
omrežja na ravni celotne države [1].
Solvera Lynx koordinira enega od 4 sklopov projekta NEDO, in sicer WG3, v katerem sodelujemo z
elektrodistribucijskim podjetjem Elektro Maribor, EIMVjem, TECESom, Lokalno energetsko agencijo
Ptuj, Kreativnim laboratorijem ter več kot 800 končnimi uporabniki omrežja (, ki so pristopili k projektu
Premakni porabo. Gre za enega izmed prvih projektov upravljanja odjema električne energije
gospodinjstev v Sloveniji in je namenjen pridobivanju znanja in izkušenj pri gospodinjskih uporabnikih
in njihovem obnašanju v primeru različnih načinov upravljanja odjema (angl.: »Demand Response«) v
času, ko je v omrežju obdobje visoke porabe energije. Prav tako je cilj prepoznati zahteve in načine
integracije najrazličnejših informacijskih sistemov za potrebe vodenja elektrodistribucijskega omrežja
ter preveriti, kako lahko različne vrste naprav za upravljanje odjema povežemo v celoten sistem
upravljanja z energijo v elektrodistribucijskem podjetju.
V okviru projekta je Solvera Lynx zagotovila tudi razvoj programske opreme, sistema za upravljanje
vodenega odjema (Deman Response Control System) ter koordinirala namestitev ComBox.L DLC
naprav, ki z DRCS sistemom komunicirajo preko LoRaWAN brezžičnega omrežja in namestitev opreme
za upravljanje rabe z energijo v gospodinjstvih (Home energy Management System) dveh slovenskih
ponudnikov, in sicer podjetja Entia in Robotina. Omenjene naprave služijo za neposredni odklop
električnih porabnikov. V projekt Premakni porabo pa je vključenih tudi nekaj več, kot 800 končnih
uporabnikov omrežja, ki imajo nameščen zgolj obračunski števec za merjenje pretokov električne
energije (v nadaljevanju sistemski števec) in so vključeni v sistem naprednega merilnega sistema. S
spodbudo, ki je bila pripravljena s strani Agencije za energijo RS za t.i. aktivnega odjemalca je bila
pripravljena shema prilagajanja odjema. Doseženo je bilo, da se končni uporabniki omrežja lahko
aktivno vključijo v programe prilagajanja odjema ter tako prispevajo k razvoju naprednih storitev
elektroenergetskega sistema [2].
Z vstopom v shemo prilagajanja odjema, odobreno s strani Agencije za energijo RS, so končni
uporabniki omrežja za obdobje enega leta postali del skupine aktivnih odjemalcev na območju 10 občin
na desni strani Drave, ki jih pokriva razdelilna transformatorska postaja (RTP) Breg. Obenem pa so
navedeni aktivni odjemalci postali tudi del pomembnega mednarodnega projekta, ki zajema tako
slovenska kot japonska podjetja in bo podal usmeritve za razvoj naprednih tarif za celotno Slovenijo.
Projekt pokriva občine Cirkulane, Hajdina, Kidričevo, Majšperk, Makole, Podlehnik, Ptuj, Starše,
Videm in Žetale, kot to prikazuje Slika 1.
Slovensko-japonski projekt omogoča zanesljivejšo oskrbo, predstavlja priložnost za domačo industrijo,
na podlagi pridobljenih izkušenj pa bo podal usmeritve za celotno Slovenijo.
74
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
G. Lakota in T. Buh: Informacijska rešitev za upravljanje odjema električne energije
gospodinjskih odjemalcev
Slika 1: Območje projekta [1]
2. ZASNOVA REŠITVE DRCS
2.1. Izhodišča
V sklopu projekta je bila razvita rešitev Demand Response Control System, ki je zmožna sprejemati in
izvajati zahtevke za prilagajanje odjema vseh gospodinjstev in malih poslovnih odjemalcev (priključne
električne moči <= 43 kW), ki so vključeni v shemo prilagajanja odjema. Prilagajanje odjema se izvaja
na avtomatsko zahtevo iz iDMS sistema ali ročno preko uporabniškega vmesnika. Rešitev DRCS izvaja
izračun napovedi odjema aktivnih odjemalcev in izračun napoved t.i. potencial, ki pove kolikšno
količino odjema je v določenem času je možno prilagodit (zmanjšati) v nizkonapetostnem
distribucijskem omrežju. Aktivni odjemalci so obveščeni o želeni prilagoditvi odjema preko SMS in e-
mail sporočil, kjer prejmejo informacijo o času in trajanju želene prilagoditve odjema. Del aktivnih
odjemalcev je opremljen z napravami za avtomatsko prilagajanje odjema preostali del aktivnih
odjemalcev pa mora odjem prilagoditi sam v kolikor le-to lahko stori.
2.2. Zasnova
Rešitev je bila zasnovana, kot sistem za centralno upravljanje odjema (ang. Demand Response Control
System - DRCS) gospodinjstev in malih poslovnih odjemalcev, katerih priključna moč ne presega ≤ 43
kW. Zasnovo sistema DRCS prikazuje Slika 2 in koordinira sprejemanje in izvajanje zahtevkov za
znižanje odjema električne energije (EE), ki jih DRCS lahko prejme s strani distribucijskega sistema
vodenja (angl.: »Distribution Management System - iDMS«) preko CIM podatkovnega vodila ali pa
preko uporabniškega vmesnika operaterja DRCS na strani distribucijskega ali prenosnega operaterja
omrežja.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
75
G. Lakota in T. Buh: Informacijska rešitev za upravljanje odjema električne energije
gospodinjskih odjemalcev
Slika 2: Zasnova sistem za centralno upravljanje odjema (DRCS)
DRCS je zasnovan na način, da zajema števčne podatke, katere na podlagi analitičnih modelov obdeluje
in pripravlja napoved odjema električne energije vseh aktivnih odjemalcev ter hkrati ocenjuje potencial
za znižanje odjema. Tako imenovane kazalnike napovedi odjema in potenciala za znižanje odjema
DRCS, sproti preko CIM podatkovnega vodila, izmenjuje z iDMS. iDMS tako lahko na podlagi
trenutnih razmer v distribucijskem omrežju in njegovih karakteristik lahko poda zahtevo za znižanje
odjema električne energije v trenutku, ko je predvideno, da bo distribucijsko omrežje preobremenjeno.
DRCS sistem je avtomatiziran sistem, ki samodejno spremlja razmere v distribucijskem sistemu in
skupaj z MDM in iDMS samodejno prilagaja odjem električne energije, kar še kako pripomore k
zanesljivejšemu delovanju elektroenergetskega sistema, nižjim obratovalnim stroškom in zanesljivejši
oskrbi z električno energijo.
Čas, ko je zaznana potreba po znižanju odjema električne energije v distribucijskem omrežju pravimo
najava Aktivacije, trenutku, ko se le-ta dejansko izvede pa zgolj Aktivacija. Po prejetem zahtevku za
aktivacijo (iDMS ali operater DRCS) se izvede proces najave aktivacije in posredovanja t.i. urnikov
(časa v trenutku, ko odklopi priključenega porabnika) vsem ComBox.L DLC ter HEMS napravam.
Proces najave aktivacije DRCS sproži klic funkcije na strani Gospodarske javne službe Elektro Maribor
(v nadaljevanju Elektro Maribor) za posredovanje najave (SMS ali e-pošta) aktivacije vsem aktivnim
odjemalcem. Klic funkcije se prav tako izvede preko CIM podatkovnega modela.
Znižanje odjema porabe električne energije pri aktivnih odjemalcih dosežemo na način, da vse, ki so
vključeni v shemo prilagajanja odjema (tako tiste, ki imajo vgrajen zgolj sistemski števec, kot tudi tiste,
ki imajo nameščene ComBox.L DLC ali HEMS naprave), obvestimo preko SMS in e-pošte o:
tipu t.i. aktivacije, ki je lahko izvedena iz strani:
o operaterja distribucijskega omrežja ali
o operaterja prenosnega omrežja (sistemska rezerva),
datumu aktivacije,
času aktivacije in
času trajanja aktivacije.
Pri aktivnih odjemalcih, kjer ni nameščenih ComBox.L DLC in HEMS naprav so tako le-ti zgolj pisno
obveščeni in se morajo sami angažirati, da znižajo svoj odjem električne energije v času napovedane
aktivacije. Aktivnim odjemalcem, ki pa imajo nameščene ComBox.L DLC naprave in HEMS naprave
pa se priključeni porabniki v času aktivacije samodejno izključijo in nato po zaključku aktivacije zopet
priključijo. Slika 3 prikazuje omenjene naprave za upravljanje odjema.
76
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
G. Lakota in T. Buh: Informacijska rešitev za upravljanje odjema električne energije
gospodinjskih odjemalcev
Slika 3: Naprava za upravljanje odjema (ComBox.L DLC, HEMS tip 1, HEMS tip 2)
3. IZVEDBA
3.1. DRCS
DRCS je namenjen za avtomatsko izvajanje funkcij proženja aktivacij znižanja odjema električne
energije aktivnih odjemalcev in periodično izvaja naslednje funkcije:
pridobivanje merilnih podatkov iz MDM
izdelava napovedi odjema in napovedi potenciala znižanja odjema za celoten sistem in
vsakega odjemalca posebej
komunikacija z napravami za avtomatsko vodenje odjema
o Prejemanje statusov
o Pošiljanje urnikov za prilagajanje odjema
DRCS ComBox.L DLC in HEMS napravam v času najave aktivacije posreduje urnik odklopa
priključenega porabnika. Naprave morajo tako v danem trenutku sprejeti zahtevo in le-to tudi potrditi.
DRCS tako spremlja odziv naprav in beleži odziv, kot:
0#SENT
1#SENT_FAILED
2#CONFIRMED
3#REJECT
DRCS nadalje spremlja odziv vseh aktivnih odjemalcev, kar se odraža v merjenem diagramu katerega
meritve zajamemo iz MDM Elektro Maribor. Na podlagi multipla linearne regresije preteklih (obdobje
enega leta) merilnih podatkov DRCS izračunava napoved odjema električne energije za posameznega
aktivnega odjemalca. Napoved odjema električne energije se izvaja na 15 minutnem merilnem intervalu
za nadaljnjih 48 ur. Prav tako števčne (merilne) podatke agregiramo na skupen nivo na podlagi katerih
se nato ponovno izvaja skupna multipla linearna regresija preteklih merilnih podatkov, kar nam nadalje
poda skupno napoved odjema električne energije vseh vključenih aktivnih odjemalcev. DRCS hkrati
izračunava tudi potencial prilagoditve odjema električne energije na podlagi preteklim merilnih
podatkov. Primer aktivacije je prikazan na sliki 4, kjer nam sivo okno prikazuje čas napovedane
aktivacije, rdeča krivulja nam prikazuje napoved odjema , modra pa merilne podatke vseh odjemalcev,
kjer vidimo, da se je dejanski odjem električne energije v času aktivacije znižal za približno 20%. Hkrati
ocenjujemo, da se je v danem trenutku poraba električne znižala za približno 150kWh od predvidene
napovedi odjema.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
77
G. Lakota in T. Buh: Informacijska rešitev za upravljanje odjema električne energije
gospodinjskih odjemalcev
Slika 4: Primer pregleda aktivacije
Aktivni odjemalci, ki so vključeni v DRCS sicer delimo v tri skupine:
skupina A – brez avtomatizacije - informacije o sodelovanju pri izvajanju sistemskih storitev so
aktivnim odjemalcem sporočene preko mobilnega telefona (SMS), e-pošte in družbenih
omrežij;
skupina B - uporaba Nadzornega sistema za prilagajanje odjema za pošiljanje informacij
odjemalcem. Tistim odjemalcem, ki imajo doma nameščeno hišno avtomatizacijo (Home
Energy Management System - HEMS) se avtomatizacija upravljanja odjema izvaja s
pošiljanjem signala direktno napravi HEMS;
skupina C - uporaba Nadzornega sistema za prilagajanje odjema za namen direktnega
upravljanja naprav pri odjemalcu ( grelniki sanitarne vode , toplotne črpalke , hladilne naprave,
...). Izkoristilo se bo obstoječe sisteme in iskalo sinergije s projektom NEDO.
3.2. Programski vmesniki
Za potrebe komunikacije z drugimi sistemi so bili implementirani vmesniki
CIM 61968-100 za
Komunikacijo z MDM
Komunikacijo z iDMS
HEMS API – RESTful, JSON
Notification API – SOAP, XML
Na nivoju komunikacije med napravami za upravljanje odjema in DRCS sistemom ločimo dva nivoja
komunikacijske poti, kot tudi prikazuje Slika 5. Na prvem spodnjem nivoju med napravami za
upravljanje odjema in sistemom za zajem in obdelavo podatkov navedenih naprav poteka komunikacija
preko brezžičnega LoRaWAN protokola ali pa omrežne Ethernet komunikacije lokalnega TK
ponudnika. Proizvajalci naprav so sistem za zajem in obdelavo podatkov postavili v t.i. oblačno storitev
(angl.: »Cloud services«) do katere pa nato na drugem nivoju dostopa DRCS. Komunikacija na nivoju
med DRCS in t.i. oblakom proizvajalca (v nadaljevanju oblak) poteka preko spletnih storitev (angl.: »–
78
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
G. Lakota in T. Buh: Informacijska rešitev za upravljanje odjema električne energije
gospodinjskih odjemalcev
Web Services - WS«), kot so REST/JSON ali SOAP/XML. DRCS za potrebe vodenja naprav za
upravljanje odjema podatke zajema in posreduje torej preko spletnih storitev v oblak, kot to tudi
prikazuje primer na Sliki 5. Naprave svoje podatke v oblaku zajamemo in obdelajo ter nadalje
posredujejo do končne naprave za upravljanje odjema. Za potrebe zajema in obdelave podatkov je v
DRCS implementiran t.i. DLC API in HEMS API. Frekvenca osveževanja podatkov na nivoju
ComBox.L DLC naprav je 15 minut ter na nivoju HEMS naprav 1 minuta. CIM integracijsko vodilo, ki
skrbi za komunikacijo z MDM in iDMS pa je je implementirano na ESB platformi, ki za komunikacijo
z integriranimi sistemi uporablja SOAP/XML komunikacijo. Za vsakega aktivnega odjemalca je dnevno
na voljo 96 novih 15 minutnih števčnih (merilnih) podatkov.
Slika 5: Vmesnik za zajem in obdelavo podatkov naprav za upravljanje odjema
3.3. Meter Data Management - MDM
Gospodarsko javna služba Elektro Maribor (v nadaljevanju Elektro Maribor) ima pri svojih končnih
uporabnikih nameščene obračunske števce, ki omogočajo daljinski zajem števčnih podatkov. Za potrebe
zajema števčnih podatkov končnih uporabnikov omrežja smo tako v sklopu projekta vzpostavili
povezavo med DRCS in obstoječim informacijskim sistem t.i. Meter-Data-Management (v nadaljevanju
MDM), ki se nahaja v merilnem centru podjetja Elektro Maribor. MDM združuje množico funkcij, kot
je:
-
VEE (validacija, ocenjevanje in urejanje),
-
povezava z eIS (»MetaData«),
-
priprava podatkov za obračun (»Billing«),
-
izdelava poročil in
-
izmenjava podatkov z drugimi informacijskimi sistemi npr. DRCS.
Del MDM je tudi t.i. Head-End-System (v nadaljevanju HES), ki pa pravzaprav skrbi za potrebe zajema
števčnih podatkov na fizičnem nivoju. Za zajem števčnih podatkov je tako uporabljena Power-Line-
Carrier (v nadaljevanju PLC) komunikacija s frekvenčno S-FSK modulacijo, ki poteka preko
energetskih vodov in omogoča komunikacijo med obračunskimi števci in podatkovnim zbiralnikom
(koncentratorjem) v transformatorski postaji. Od podatkovnega zbiralnika do HES pa je uporabljena
optična komunikacija. Zajem števčnih podatkov se izvaja tekom celega dneva, HES pa zajem števčnih
podatkov iz podatkovnega zbiralnika izvede enkrat dnevno. Celotnemu sklopu pa bi lahko rekli tudi
napredni merilni sistem, ki je prikazan na Sliki 6.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
79
G. Lakota in T. Buh: Informacijska rešitev za upravljanje odjema električne energije
gospodinjskih odjemalcev
Slika 6: Primer naprednega merilnega sistema
Za potrebe zajema števčnih podatkov na nivoju med DRCS in MDM pa je bil uporabljen CIM
podatkovni model, kjer prav tako enkrat dnevno izvajamo zajem števčnih podatkov.
3.4. LoRa DLC
DLC oziroma Direct Load Control je ime za naprave, ki električne porabnike izključijo ali vključijo po
prejemu signala ali urnika iz DRCS. V projektu je bila pri 50 odjemalcih nameščena oprema, ki je za
komunikacijo z nadzornim sistemom uporabila brezžični LoRaWAN (Long Range, low power Radio)
protokol. Končne naprave DLC se brezžično povežejo preko bazne postaje (slika 5), nato pa preko
oblačnega Network Management Sistema preko DLC API le-te podatke izmenjujejo z DRCS.
Zahtevki za znižanje/urniki
HEMS/DLC
DRCS
oblaki
Stanje naprav
Slika 7: Potek komunikacij med DRCS in HEMS/DLC oblak
DRCS je torej standardno povezan preko vmesnika DLC API in zajema naslednje statusne podatke:
daljinsko vodenje [vključeno/izključeno],
stanje aktivacije releja LoRa [DA/NE],
stanje aktivacije releja [DA/NE],
stanje potrjenosti urnika [POSLANO/POTRJEN/NEPOTRJEN].
Na podlagi prejeti podatkov nato DRCS obdela statuse in le-te zapiše v enoten zapis, kot le-te tudi
obdelujemo na nivoju HEMS API.
Aktivni odjemalec ima možnost izbire ali v trenutku najave želi sodelovati v aktivaciji s premikom
stikala Daljinsko vodenje v položaj vključeno ali izključeno. Na ta način se njegov priključeni porabnik
bo ali pa ne bo izključil, kar je torej pogojeno z njegovo izbiro.
3.5. HEMS
HEMS oziroma Home Energy Management System so sistemi za upravljanje z energijo v domu.
Njihova primarna naloga je omogočiti udobje in pametno porabo energije. Pomemben del HEMS
sistema je PLC krmilnik, ki omogoča krmiljenje stikal in naprav, ter zajem meritev in signalov iz
merilnih naprav ter senzorike. V projektu so bili pri 50 odjemalcih nameščeni sistemi HEMS, ki so bili
80
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
G. Lakota in T. Buh: Informacijska rešitev za upravljanje odjema električne energije
gospodinjskih odjemalcev
za potrebe projekta razširjeni s funkcionalnostjo sprejemanja signalov in urnikov iz nadzornega sistema.
Naprave HEMS so preko komunikacijskega kanala (internet) povezane v ponudnikov HEMS cloud –
od tam naprej pa preko HEMS API v DRCS. HEMS API je implementiran z REST/JSON. (slika 5).
DRCS torej preko vmesnika HEMS API zajema en statusni podatek, ki je pravzaprav spremenljiv
podatek in tako podaja naslednje statuse:
0#READY
1#NOT_READY
2#USER_DISABLED
3#ACTIVATION_PENDING
4#ACTIVATION_RUNNING
5#ERROR
Aktivni odjemalec ima možnost izbire ali v trenutku najave želi sodelovati v aktivaciji s premikom
stikala Daljinsko vodenje v položaj vključeno ali izključeno. Na ta način se njegov priključeni porabnik
bo ali pa ne bo izključil, kar je torej pogojeno z njegovo izbiro.
3.6. Odziv na prilagajanje odjema
Iz dosedanjih odzivov uporabnikov na nastop kritično konično tarifo (v nadaljevanju KKT) je razvidno,
da se obremenitev v času KKT zniža za 30 % in več. V soboto, 17.2.2018, je bilo tako ob napovedi KKT
med 11:00 in 12:00 uro doseženo znižanje obremenitve za celo 36%, kar je bilo največ do sedaj. Spodnji
graf prikazuje potek dnevne obremenitve na dan aktivacije v primerjavi s kontrolnima dnevoma brez
aktivacije. Gre za agregirane podatke uporabnikov, vključenih v projekt (828). Kot primer je na Sliki 8
prikazan prilagojen odjem v času aktivacije kritične konične tarife z dne 17.2. 2018 med 11:00 in 12:00
[1]. Ob izvajanju aktivacije kritične konične tarife so vsi odjemalci skupaj dosegli več kot 30% znižanje
odjema, kar je trikratna vrednost pričakovanega odziva oziroma znižanja odjema.
Skupna poraba gospodinjskih odjemalcev vključenih v projekt je v januarju 2018 znašala 338.456 kWh,
od tega 0,1 % v času kritične konične tarife (KKT), 48 % v času večje (VT) in 52 % v času manjše tarife
(MT). Skupna poraba malih poslovnih odjemalcev vključenih v projekt je v januarju 2018 znašala
139.159 kWh, od tega 0,1 % v času KKT, 48 % v času VT in 52 % v času MT.
Slika 8: Odziv na prilagajanje odjema [1]
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
81
G. Lakota in T. Buh: Informacijska rešitev za upravljanje odjema električne energije
gospodinjskih odjemalcev
4. ZAKLJUČEK
Projekt Premakni porabo traja še nadaljnjo leto, kar pomeni, da bodo še naprej potekalo izvajanje
aktivacij testiranje odziva aktivnih odjemalcev. Od začetka projekta in vse do danes je bilo skupno
izvedenih že 25 aktivacij. Pilotni projekt je tako odlična priložnost, da tako distribucijski, kot tudi
sistemski operaterji pridobijo informacijo kako sistem deluje v praksi in hkrati vidijo ali je zasnova shem
in produktov zasnovana na pravilen način ter kaj bi bilo potrebno prilagoditi v prihodnje, da bi lahko
zaživel razvoj novih tržnih produktov.
Analiza odziva prilagajanja odjema je pokazala, da se v času aktivacije število angažiranih aktivnih
odjemalcev presenetljivo visoko, kar daje velik potencial k razvoju in uporabi tovrstnih storitev. Prav
tako je bilo ugotovljeno, da največji izziv predstavlja TK infrastruktura ComBox.L DLC in HEMS
naprav, kjer na strani LoRaWAN omrežja izziv predstavlja čim boljšo pokritost omrežja, HEMS naprav
pa zanesljivost stalne povezave preko javne TK infrastrukture najrazličnejših TK ponudnikov storitev.
V tujini se opaža porast projektov, ki se nanašajo na upravljanje s porabo z uvedbo tarif, podobno kot je
v Sloveniji Agencija za energijo pripravila kritično konično tarifo za pilotne projekte. Iz tega lahko
sklepamo, da bodo zniževanje konične obremenitve imelo pomembno vlogo pri zniževanju stroškov v
omrežjih v prihodnosti, kar je tudi eden od pričakovanih rezultatov celotnega projekta NEDO.
Upravljanje s porabo je že precej razvito pri porabnikih, ki imajo visoke moči odjema in lahko znatno
prispevajo k obremenitvi omrežja, vendar je njihovo število majhno. Prav tako pa je na strani
gospodinjstev veliko število odjemalcev, ki lahko ponudijo nizke moči, vendar so izredno številčni.
Dinamika obratovanja posameznih naprav bo odločilnega pomena pri določitvi, kateri porabniki bomo
smiselni in primerni za obravnavo in aktivno vključenost, z uporabo različnih tehnologij pa bo mogoče
primerjati uporabnost različnih rešitev.
5. LITERATURA
[1] Spletna stran projekta NEDO, Dosegljivo: https://www.eles.si/projekt-nedo. Dostopano 28. 5.
2018.
[2] FATUR, Tomaž, LAKOTA, Gašper, »Upravljanje s porabo v gospodinjstvih«, 13. konferenca
slovenskih elektroenergetikov CIGRE-CIRED, Maribor 2017
[3] Spletna stran Premakni porabo, Dosegljivo: https://premakni-porabo.si/. Dostopano: 28. 5. 2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
MICRO-AMNESIA – HOW MICROSERVICES IN A
MESSAGE-ORIENTED ARCHITECTURE SOLVE
THE GDPR CHALLENGE
TOMAŽ LUKMAN AND NORMAN SEIBERT16
Abstract: The General Data Protection Regulation (GDPR) aims to ensure
the protection of EU residents’ personal data and thus indirectly introduces
requirements on IT systems processing this kind of data. As a development
partner for complex projects we were brought in to end the GDPR nightmare
for a German automotive OEM. The aim was to develop an IT solution for
GDPR in the context of a personalized customer web portal and
corresponding mobile apps. We depict the microservice architecture of the
minimal viable product (MVP) which uses asynchronous messaging via
Apache Kafka, a well-established message broker. This approach allowed
us to broaden the scope of our solution in a short period of time and cover a
growing number of GDPR-related requirements.
Key words: • Microservices • General Data Protection Regulation (GDPR)
• Message-Oriented Architecture • Apache Kafka • Web Portal
AUTHORS: Dr. Tomaž Lukman, iteratec GmbH, St.-Martin-Straße 114, 81669 München, Germany, e-mail:
tomaz.lukman@iteratec.de. Norman Seibert, iteratec GmbH, St.-Martin-Straße 114, 81669 München, Germany,
e-mail: norman.seibert@iteratec.de.
DOI https://doi.org/10.18690/978-961-286-162-9.9
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
83
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
1. INTRODUCTION
As of 25 May 2018, the General Data Protection Regulation (GDPR) [1] applies to all IT systems that
process the personal data of EU residents. GDPR is a massive challenge for most customer-facing
companies and for those burdened with a multitude of legacy systems it is close to a nightmare. In this
paper we describe the development of an IT solution for GDPR in the context of a personalized customer
web portal and corresponding mobile apps. In this context personal data is processed in over seventy
distinct systems/services.
First, we will take a look at the requirements that stem from GDPR and then describe the initial IT
ecosystem of the aforementioned portal. We will describe how we addressed the most important
requirements with a minimal viable product (MVP) created to erase personal data. We will depict the
microservice architecture of the MVP which is based on message-oriented architecture.
We will also show how the architecture of our solution has evolved to cover more and more GDPR-
related requirements. One main architecture requirement was horizontal scalability since it was initially
not clear how many systems/services in the portal ecosystem persist personal data. At the end we
describe how the chosen architecture allowed us to broaden the scope of our GDPR solution in a short
period of time. As a result, all sales-related systems are covered today.
2. REQUIREMENTS
In this section we will first look at GDPR and then look at the desired software requirements derived
from our client and the principles governing GDPR.
2.1. General Data Protection Regulation
GDPR is the most important change in data privacy regulation in 20 years. It regulates many aspects of
handling EU residents’ data and therefore has a vast impact on the processes of customer-facing
organizations and their IT systems. The organizations cannot ignore GDPR because failure to comply
could result in substantial fines of up to 20 million euros or 4% of the worldwide annual revenue of the
prior financial year - whichever is higher.
It is driven by a philosophical approach to data protection, based on the concept of privacy as a
fundamental human right [2]. The following important principles are defined by GDPR [3]:
Art. 13 and Art. 14 “Right to be informed” – individuals have the right to be informed about the
collection and use of their personal data.
Art. 15 “Right of access” – the right for individuals to be provided with a copy of their processed
personal data upon request.
Art. 16 “Right to rectification” – the right for individuals to have inaccurate personal data rectified
or completed if it is incomplete.
Art. 17 “Right to erasure” or the “right to be forgotten” – the right for individuals to have personal
data erased upon request. This right is not absolute and applies only in certain circumstances. Data
that has to be kept to comply with a legal obligation must not be erased.
Art. 18 “Right to restrict processing” – right to request the restriction or suppression of their personal
data.
Art. 20 “Right to data portability” – allows individuals to obtain and reuse their personal data for
their own purposes across different services.
Art. 21 “Right to object” – right to object to the processing of their personal data in certain
circumstances.
Art. 22 “Rights in relation to automated decision making and profiling” – additional rules to protect
individuals if you are carrying out solely automated decision-making that has legal or similarly
significant effects on them.
84
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
Together with the client’s team consisting of members from the sales department responsible for the
web portal and the legal department, we considered the relevance of these principles for our project. In
our analysis we generated a prioritized list of relevant requirements. The “right to be informed” had
already been implemented in the frontend of the portal and demanded only minor text changes. The right
to object (Art. 21) had been taken into account in the right to erasure (Art. 17) so that exercising it would
lead to data erasure. Art. 22 does not apply to the web portal. The following prioritized list was compiled:
1. “Right to erasure” or the “right to be forgotten” – is the first requirement that was implemented and
is the main focus of this paper.
2. “Right of access” and “right to data portability” – was implemented in the second step and is briefly
described in the second part of the article. The gathered personal data is used to comply with both
requirements. The later requirement is being met with a JSON file and the former with a PDF file
that contains a spreadsheet and is derived from the JSON file.
3. “Right to restrict processing” – this is solved in a similar way to data erasure but instead of erasing
the data it is being locked in order to avoid further processing. The personal data of a user can also
be unlocked. This particular point is beyond the scope of this paper.
4. “Right to rectification” – has been initially solved in a manual way via a business process in so far
that tickets are assigned to the support team of a specific system containing the inaccurate data. We
will design and develop an automated IT solution for this requirement soon. It will extend the
solution presented in this paper.
Some IT professionals will be looking at these requirements and saying to themselves “Jeez, that’s
CRUD (Create, Retrieve, Update and Delete) [4] without the Create part, so it is easy to implement”.
This is true if one ignores the various distributed and heterogenous systems that have to be included in
the solution. We will look at the portal’s IT ecosystem in the next section.
2.2. Requirements for the GDPR Solution
In addition to the basic requirements stemming from GDPR, the client and our team defined the
following requirements that had to be met by the GDPR solution for the portal:
Each user has to be able to trigger a GDPR compliant erasure job in the portal by clicking on the
erase account button and also be informed that the erasure process has begun.
All personal data of a user has to be erased within 1 month after the erasure of the account was
requested.
Each erasure job has to be delivered to all relevant systems/services in a reliable and a
comprehensible way.
Success or failure of processing an erasure job has to be trackable for each system (via
acknowledgments).
A job is successful after all relevant systems send an acknowledgment with success within a
configured time.
After the configured time has passed without success or failure acknowledgement, the job has to run
into an auto fail (timeout in one or more systems).
A small group of employees on the client side has to be alerted about each failed job by e-mail.
A small group of employees can review the status of each job using a graphical user interface (GUI)
and see which systems have succeeded and which have failed to process the job.
A small group of employees can create an erasure job for a user over a GUI.
If the personal data that has already been erased is being recovered at one or more of the relevant
systems through restoring a backup it has to be possible to immediately trigger the erasure of this
data again.
3. INITIAL IT ECOSYSTEM
The personalized web portal is built out of more than hundred features for users that own one or more
vehicles and users that are configuring their new vehicle(s). Technically the web portal consists of a
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
85
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
many separate, loosely-coupled systems/services. A fictional example derived from this architecture is
depicted in Figure 1. For our GDPR context, the most important information is that roughly seventy
distinct components i.e. systems/services process and/or are involved in the persisting of personal data.
This fact presents a major challenge for complying with the above mentioned GDPR requirements.
We’ll look at some possible approaches on how to solve this in the next section.
Figure 1. Fictional example of the portal components (highlighted are the ones that persist personal data).
4. ENABLING DIGITAL AMNESIA
In this section we will first take a look at the initial options to develop our GDPR solution and then take
a look at the architecture of our minimal viable product (MVP).
4.1. Design decisions
The classical approach would have been a central solution that has access to all databases and
implements all the logic to erase all connected systems’ personal data in one place. This approach was
appealing to some “old-school” IT architects at our client’s central IT department. However, a detailed
knowledge of all personal data across all of the systems would have been required which would have
taken years to develop and cost a small fortune. Even these architects agreed that such an approach was
not suitable since access to various persistence mechanisms would have had to have been made available
or all existing systems would have had to be refactored to share one database. The latter is a problem
for many of the legacy systems and more importantly is the opposite to the microservice pattern
“Database per service” [5]. Currently a number of microservices, which we introduced to the ecosystem,
are already available and according to the IT strategy of the corporation such systems are preferred in
the future.
86
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
Despite the decentralized persistence, one of our client’s requirements was a central management
module to create erasure jobs17 and monitor their status. In essence, there were two options available
[6]:
Point-to-point communication. The management module has to know about all the
systems/services with personal data in detail and depends on their erasure interfaces. Additionally,
all the systems/services are dependent on its acknowledgment interface. Currently this is the only
type of working integration in the portal and it is predominately implemented in a synchronous way.
Messaging. The management module does not need knowledge about the other systems'
implementation or data design since they are only coupled loosely over messages. This is the idea of
a message-oriented architecture also known as message-oriented middleware [7] and follows the
publish/subscribe pattern [6]. It is based on asynchronous communication through an additional
massaging component. Many years ago, in our client’s portal ecosystem, an Enterprise Service Bus
(ESB) was introduced but this approach has failed like many others [8]. The main reason was that
business logic was introduced into the ESB and configuration and integration became complex and
expensive. Today alternatives to this heavy messaging approach exist and provide good results.
For our project, the list of the systems/services was long and it was not clear if these were all of the
systems and how long it would take for a system to process an erasure job. Asynchronous
communication and loose coupling was the obvious choice.
4.2. The MVP – Minimal Viable Product
Our MVP covers the “right to be forgotten” and addresses the above-mentioned requirements. We
decided to develop a small specialized service, commonly known as microservice [9], that was
concerned with generating erasure jobs and gathering erasure acknowledgements. A common technical
solution for communication between microservices is to use a message broker.
Decoupling services via a lightweight message broker and moving to asynchronous, parallel processing
instead of failure-prone chains of synchronous requests, was a big paradigm shift. With our MVP a first
step has been made but it will take more time and effort to adapt this pattern on a larger scale.
The architecture of our MVP is depicted in Figure 2 and comprises the following components:
a message broker,
a microservice for data erasure, called GDPR Service, and
an arbitrary set of systems/services that process or persist personal data.
To check our concept and documentation we integrated one of our own services first. This microservice
enables the user to request or book service appointments for his vehicle(s). To ease the integration for
other solution providers, we even developed and published a mock subscriber.
17 and later other GDPR jobs
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
87
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
Figure 2. MVP of the GDPR solution.
4.3. Message Broker
The introduction of a message broker was the greatest paradigm shift for our client and therefore had to
be addressed as quickly as possible. The main question that had to be answered was “Which message
broker to choose?”
We had evaluated various message brokers even before we started the GDPR project:
HiveMQ [10] – is based on the MQTT (Message Queuing Telemetry Transport) protocol used mainly
for IoT devices and simple use cases. E.g. the protocol does not address message caching. Although
HiveMQ offers additional features that go beyond MQTT we dismissed it because it was designed
for devices.
RabbitMQ [11] – is a classical message broker with a wide feature set. It is a solid and proven solution
that would have been suitable for the current portal which is hosted in a computing center. It is less
suitable for cloud-based services since it only supports vertical scalability. Additionally, it is known
to be difficult to configure.
Apache Kafka [12] – a performant message broker often used in a cloud environment. One major
advantage is the focus on a small set of powerful yet simple concepts. It is horizontally scalable,
provides a distributed commit-log and is therefore able to optimally cache messages. The final and
most important reason for choosing Kafka is specific to the GDPR erasure project: Kafka can resend
messages via resting its pointer. This addresses our requirement: If the previously erased personal
data is being recovered at one or more of the relevant systems through restoring a backup it has to be
possible to immediately trigger the erasure of this data.
So, what are the most important concepts of Apache Kafka in a nutshell? They are [13]:
Messages – a simple key/value pair. The key and the value can be anything serializable. It can be
sensors measurements, meter readings, user actions, etc.
Topics – is a logical grouping of related messages, similar to a channel. A topic can be “water meter
readings” or “user clicks”.
Partitions – topics are physically split into partitions. A partition lives on a physical node and persists
the messages it receives. A partition can be replicated onto other nodes in a master/slave relationship.
Producers – publish their messages into the chosen topic and partition.
88
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
Consumers – receive messages and are organized into consumer groups. Every consumer inside a
group is assigned one (or more) partitions of the topics it subscribes to. These subscribers consume
messages only from their assigned partitions.
4.4. GDPR Service
The GDPR Service itself covers the following concerns:
Creating an erasure job. Then persisting it and sending out the corresponding erasure message.
Managing a service registry per topic. The service registry is basically a list of consumers
subscribed to the topic since Kafka does not provide an API for acquiring this information. The list
is needed since we need to know how many and which systems are expected to send a successful
acknowledgment to mark the job as successfully processed and thereby confirming that all personal
data for a user has been erased. This can be seen in Figure 3.
Receiving acknowledgments and updating the job state. All acknowledgments received for a job
are persisted and evaluated to compute their impact on the state of the job. If one or more systems
from the registry send a failure acknowledgment (see Figure 4) or does not send an acknowledgment
at all in the configured timespan (see Figure 5) the job is marked as failed.
Alerting via Emails. Any termination of a job triggers an email with the corresponding alert.
Figure 3. Successful erasure.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
89
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
Figure 4. Failed erasure due to an acknowledgment with a failure.
90
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
Figure 5. Failed erasure due to a missing acknowledgment (time-out).
The GDPR Service is a microservice based on a typical microservice technology stack with Spring Boot
[14] and Angular [15]. Notable further components are the RESTful interface with Swagger
Documentation [16] and a Spring Kafka adapter [17]:
The RESTful interface provides a DELETE Operation that is called by two consumers at the
moment:
o A GUI for a small set of employees at our client and
o The web portal in which the users can erase their account.
The Kafka adapter is connected to two topics. The GDPR Service acts as a producer on the
“gdpr_erasure_request” topic and as a consumer on the “gdpr_erasure_response” topic. In this case
the contract or more specifically the interface are the messages that are being exchanged through
these topics: the “ gdpr_erasure_request_event” and the “ gdpr_erasure_response” message. These
can be seen in Listing 1 and Listing 2.
{
"messageId": "e8672a08-473e-4047-9881-fa92218919bc",
"messageTime": "2018-04-23T15:47:30.334Z",
"messageSource": "GDPRS",
"useCase": "deletion",
"requestId": null,
"payload": {
"recordId": "227ca2e9-4cf3-4dc6-b626-e34078242f04",
"userId": "W424776885",
"email": "bilbo.baggins@example.org"
}
}
Listing 1. Erasure request example.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
91
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
{
"messageId": "ad3c9cd9-c99a-4871-a11c-74f3566119df",
"messageTime": "2018-04-23T15:47:45.334Z",
"messageSource": "SAS",
"useCase": "deletion",
"requestId": null,
"payload": {
"recordId": "227ca2e9-4cf3-4dc6-b626-e34078242f04",
"status": "SUCCESS"
}
}
Listing 2. Erasure response example.
4.5. Services/Systems that process personal data
Erasing the actual personal data is the concern of the systems that persist this data and/or relay this data
to other systems/services that cannot be connected to Kafka. Each system owner has to know what kind
of personal data is processed by his system and has to take care of either invoking the erasure operation
(synchronous) of the other systems or informing the personnel responsible for them.
To minimize the probability of erroneous implementations or of missing important aspects we wrote a
guide on how to implement the erasure operation. It covers aspects like backups, caching and logging.
We also wrote a guide on how to implement the Kafka adapter. It contains best practices and code
snippets. The guide introduces two important requirements for every system triggered by the GDPR
Service:
Implement the tolerant reader pattern [18].
The deletion operation has to be idempotent [19]. This means that an operation can be applied
multiple times without changing the result beyond the initial application. In our case the deletion
operation must handle more than one deletion message for the same user ID and must produce the
same result.
o One of the reasons for this requirement is that the “at least once” delivery strategy had
to be chosen in Kafka for it to be high performant. This means that in very rare cases
the same message can be delivered more than once.
o If one of the systems with personal data sends an acknowledgement with a failure or no
acknowledgement the whole job is marked as failed. In this case another job for the
same user must be created and a message for the same user will be sent at a later time
to all the consumers. Even the systems that cannot erase this user anymore because no
data is available anymore have to send an acknowledgment with success. This is one of
the cornerstones of our GDPR solution.
5. ADDITONAL REQUIREMENTS AND A NEW MICROSERVICE
During implementation, an additional requirement emerged since it became evident that many systems
needed to send emails to third parties for each erasure job. It was required to send an encrypted email to
every address in a list, informing them about a deletion request from a portal user.
Instead of extending the GDPR Service we created a new microservice specifically covering this
independent requirement. The new microservice consumes erasure messages and upon receiving one
sends out emails to all addresses in a list and then sends an acknowledgment over Kafka. This
GDPR2Mail Service is depicted in Figure 6.
A nice extra benefit to this was that we could also inform all the system owners who did not manage to
connect their systems to Kafka in time about every erasure job. All they had to do was agree to monitor
these email inboxes and trigger the erasure operation manually. This also motivated them to increase
the pressure and velocity of their implementation projects for their Kafka adapters.
92
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
Figure 6. GDPR solution with an additional microservice (GDPR2Mail Service).
6. EXPANDABILITY? NO PROBLEM!
The “right to be forgotten” was a suitable starting point due to the straight-forward requirements and
necessary processes. The portal user can trigger the erasure himself and the failed jobs are then handled
by a few employees. No communication towards the user is necessary since the data has to be erased
regardless of any circumstances within one month of the erasure request.
The next step was to implement the “right of access” and the “right to data portability” for the portal.
For inquiry of the saved personal data and a data export, our project team had to also think about a new
business process, since these results have to be delivered to a user after the end of processing.
Interestingly enough, at that time a GDPR taskforce for all sales departments was created and was
focusing on defining the necessary business processes to implement GDPR. The taskforce became aware
of our solution for the portal and invited us to join forces with them and to develop an integrated solution
consisting of business processes and an automated IT system for GDPR. In this section we will present
the technical side of this solution.
We shall begin by taking a look at what the taskforce had produced parallel to us. They introduced a
process in which call center agents receive all GDPR requests (except the ones triggered in the portal)
and create a ticket for each of them in a ticketing system, more specifically Jira. The coordination of the
following activities is done via the Jira ticket and their initial idea was that most of the activities were
to be executed “manually”. This would be very labor intensive.
The idea was to integrate the results of the taskforce and our GDPR solution in two steps:
Extend data erasure to all sales systems – integrate Jira and our GDPR solution to enable erasure
in all of the roughly hundred and fifty sales related systems.
Implement data inquiry and data exchange for all sale systems – implement an inquiry that
generates a PDF with all of the personal data and produces a JSON with all of this data and thus
address the “right of access” and “right to data portability” for all sales related systems.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
93
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
6.1. Extend data erasure to all sales systems
This step was not a big challenge, because of the modern and scalable architecture of our MVP. The
MVP was integrated with the taskforce results to produce the architecture in Figure 7. The following
changes had to be executed:
Add data fields to request. Since the additional sales systems did not all have the same key to
identify a user, additional data fields like name and address had to be added to the whole chain.
Extend payload of the REST operation. Jira could generate an erasure job over the existing REST
operation. We just had to extend it with some optional fields. The GUI for GDPR Service and the
implementation in the portal remained the same.
Add data fields to GDPR Service. The erasure request message had to be extended with additional
fields. This meant a change to the Backend. However, the systems already connected to Kafka
remained the same since their adapters had implemented the tolerant reader pattern.
Connect new systems to Kafka. The additional sales systems had implemented a Kafka adapter.
Inform Jira. The GDPR Service had to add a REST call to Jira into its state machine. This way it
could inform Jira if the job was successful or if it had failed.
Extend the cleanup job. In the GDPR Service, all the additional personal data had to be erased after
a job was terminated.
Notice that no changes to Kafka had to be made. Due to its scalability it could handle the additional
eighty systems with ease. Most of the changes had to be made because new data fields had to be added
to the request to enable the new sales system to find the users in their database.
Figure 7. Expanded GDPR solution (erasure for all sales systems and also data inquiry).
94
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
6.2. Implement data inquiry and data exchange for all sales systems
Implementing this was more demanding, but due to the architecture of our MVP, many aspects could
be solved similarly to erasure (see Figure 7). The following changes had to be made:
Define a data exchange format. A flat JSON was chosen to make the data consolidation from all
systems into one file easier. A list of well-known personal data fields was compiled so that duplicated
data could be minimized. For all additional data fields each system had to define a name that was
understandable and write it into the JSON instead of using cryptic DB field names.
Add Topics for inquiry in Kafka. The “gdpr_ inquiry _request” and the “gdpr_inquiry_response”
topics were created.
Add the inquiry channel in the GDPR Service:
o Additional REST Operation for inquiry.
o Addition type of job.
o Extension of the service registry for the new topic.
o Consolidation of JSON files into one JSON file.
o Extension of the call to Jira with the consolidated JSON.
Implement connection to the new topics in all sales systems/services.
Implement an operation for data inquiry in all the sales systems.
Implement a PDF generator. A PDF generator was already available in Jira so it could cover the
need to generate the PDF from the consolidated JSON file. This way the Jira ticket contained the
results for data inquiry and data exchange. These results could be delivered to the user through the
following activities of the new business process.
7. CONCLUSION
The experience outlined in this report has shown how an automated IT system that addresses various
demanding GDPR requirements was developed based on microservices and a message-oriented
architecture.
The microservice approach has enabled us to quickly develop a GDPR Service concerned with creating
and distributing erasure jobs and consolidating the results of erasure operations from systems with
personal data. We were able to address a new concern that did not fall directly under the GDPR Service
remit in the form of a new microservice. This way the handover of GDPR Service to the operations team
was not endangered. The new GDPR2Mail Service was rapidly developed and went live within a few
weeks.
Choosing a message-oriented architecture that fits the microservice approach or light messaging, as
Fowler [20] calls it, in the shape of a modern message broker has resulted in many advantages. It has
allowed us to work with an arbitrary amount of systems/services that process personal data without
changing the code of GDPR Service. This eliminated the need to ship new releases of GDPR Service
when a new service/system was added. Asynchronous communication enabled us to implement a
solution where roughly hundred fifty systems/services process GDPR requests and the processing time
among them can vary substantially. Although in this paper we are focusing on the “right to erasure” and
“right of access” also other GDPR rights like the “right to restrict processing” are solved in similar way
via message-oriented architecture.
Choosing Kafka as our message broker was not only necessary but also smart. It was necessary because
with its replay functionality it solved the requirement to erase personal data that had already been erased
in the productive system but was then being recovered via a system backup that had to be restored. It
was smart to use Kafka because it is very performant and scalable. We had no problems connecting
twice as many consumers to it as initially planned and transferring a substantially greater amount of data
via it after implementing the personal data inquiry functionality.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
95
T. Lukman and N. Seibert: Micro-amnesia – how microservices in a message-oriented
architecture solve the GDPR challenge
We have also shown how such state-of-the-art architecture enabled us to quickly integrate our initial
GDPR solution with a ticket system for GDPR that emerged from an independent GDPR taskforce. This
integration enabled a high degree of automation and considerably reduced the labor cost of processing
GDPR requests from users/customers for the German automotive OEM that hired us.
8. LITERATURE
[1] https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.L_.2016.119.01.0001.01.ENG,
General Data Protection Regulation (GDPR), visited 11. 5. 2018.
[2] GODDARD Michelle, "Viewpoint", International Journal of Market Research, Vol. 59, Issue 6,
2017.
[3] https://ico.org.uk/for-organisations/guide-to-the-general-data-protection-regulation-
gdpr/individual-rights, Guide to the General Data Protection Regulation (GDPR), visited 11. 5.
2018.
[4] https://en.wikipedia.org/wiki/Create,_read,_update_and_delete, Create, read, update and delete
(CRUD), visited 11. 5. 2018.
[5] http://microservices.io/patterns/data/database-per-service.html, Pattern “Database per service”,
visited 11. 5. 2018.
[6] EUGSTER Patrick Th., et al., "The many faces of publish/subscribe", ACM computing surveys,
Vol. 35, Issue 2, 2003, pages 114-131.
[7] https://en.wikipedia.org/wiki/Message-oriented_middleware,
Message-oriented
middleware,
visited 11. 5. 2018.
[8] https://www.infoq.com/presentations/soa-without-esb, Presentation by Martin Fowler and Jim
Webber: "Does My Bus Look Big in This?", visited 11. 5. 2018.
[9] THÖNES Johannes, "Microservices", IEEE Software, Vol. 32, Issue 1, 2015, pages 116-116.
[10] https://www.hivemq.com, HiveMQ, visited 11. 5. 2018.
[11] https://www.rabbitmq.com, RabbitMQ, visited 11. 5. 2018.
[12] https://kafka.apache.org, Apache Kafka, visited 11. 5. 2018.
[13] https://www.beyondthelines.net/computing/kafka-patterns, Kafka concepts and common patterns,
visited 11. 5. 2018.
[14] https://projects.spring.io/spring-boot, Spring Boot, visited 11. 5. 2018.
[15] https://angular.io, Angular, visited 11. 5. 2018.
[16] https://swagger.io/docs, Swagger Documentation, visited 11. 5. 2018.
[17] http://projects.spring.io/spring-kafka, Spring Kafka adapter, visited 11. 5. 2018.
[18] http://java-design-patterns.com/patterns/tolerant-reader, Tolerant reader pattern, visited 11. 5.
2018.
[19] http://www.restapitutorial.com/lessons/idempotency.html, Idempotence, visited 11. 5. 2018.
[20] https://www.martinfowler.com/articles/microservices.html, Microservices – definition of this new
architectural term, visited 11. 5. 2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
VARNOSTNE RANLJIVOSTI PAMETNIH POGODB
PLATFORME ETHEREUM
MARKO HÖLBL IN BLAŽ PODGORELEC18
Povzetek: Tehnologija veriženja blokov se je uveljavila predvsem preko
kriptovalut. Ena izmed najbolj uveljavljenih platform je Ethereum, ki ni
samo elektronski plačilni sistem, ampak ponuja decentralizirano
računalniško platformo za izvajanje pametnih pogodb, omejenih zgolj s
Turingovo polnostjo. Vendar ravno samodejna izvršljivost in dejstvo, da
pametne pogodbe pišejo ljudje, povzroča številne varnostne
pomanjkljivosti. V prispevku bomo predstavili varnostne vidike in
pomanjkljivosti Ethereum pametnih pogodb, tudi s pomočjo konkretnih
primerov in orodij, ki omogočajo, da vsaj deloma, zmanjšamo tveganja,
povezana z ranljivostmi v pametnih pogodbah. Predstavili bomo tudi
priporočila osredotočene na varnostne vidike pametnih pogodb, ki so lahko
vodilo za dobre prakse razvoja pametnih pogodb na verigah blokov.
Ključne besede: • tehnologija veriženja blokov • Ethereum • varnost •
pametne pogodbe • dobre prakse
NASLOV AVTORJEV: dr. Marko Hölbl, docent, Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in
informatiko, Koroška cesta 46, 2000 Maribor, Slovenija, e-pošta: marko.holbl@um.si. Blaž Podgorelec, Univerza
v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko, Koroška cesta 46, 2000 Maribor, Slovenija,
e-pošta: blaz.podgorelec@um.si.
DOI https://doi.org/10.18690/978-961-286-162-9.10
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
97
M. Hölbl in B. Podgorelec: Varnostne ranljivosti pametnih pogodb platforme Ethereum
1. UVOD
Implementacija pametnih pogodb (v nadaljevanju PP) na verigah blokov je v omejeni obliki možna že
znotraj platforme Bitcoin [2]. Leta 2013 je Vitalik Buterin, predlagal novo platformo verig blokov, ki
podpira razvoj PP s Turingovo polnostjo imenovano Ethereum. Za razliko od platforme Bitcoin,
Ethereum ni samo elektronski plačilni sistem, ampak ponuja decentralizirano ter hkrati porazdeljeno
platformo oz. operacijski sistem za izvajanje PP, omejenih zgolj s Turingovo polnostjo [1]. Platforma
Ethereum je odprtokodna in temelji na javno dostopnem omrežju verig blokov [2]. PP nameščene znotraj
verige blokov Ethereum prenašajo kovance v skupni vrednosti več milijard dolarjev [3], zato so tovrstne
PP na platformi Ethereum nenehna tarča napadalcev z namenom odkritja pomanjkljivosti v
implementacijah programske logike PP, ki bi omenjenim akterjem omogočale morebitno finančno
okoriščanje s sredstvi, ki so predmet PP [4].
V prispevku bomo predstavili varnost PP. Najprej bomo na kratko predstavili koncept pametnih pogodb
na platformi Ethereum, čemur bo sledila obravnava in razvrstitev varnostnih tveganj PP ter predstavitev
znanih primerov napadov na PP. S pomočjo primerov bomo prikazali varnostne ranljivosti PP
implementiranih v visokonivojskem programskem jeziku Solidity, predstavili orodja, ki lahko
pripomorejo k njihovemu odkrivanju in podali smernice dobrih praks razvoja PP na platformi Ethereum.
2. PAMETNE POGODBE PLATFORME ETHEREUM
Platforma Ethereum temelji na t.i. virtualnem stroju (ang. Ethereum Virtual Machine – EVM), ki na
zahtevo poganja programe imenovane PP, definirane z nizkonivojskim zlogovnim jezikom. EVM se
poganja na vseh vozliščih, ki so del Ethereum omrežja. Pametne pogodbe so zbirka funkcij, pri čemer
je vsaka funkcija definirana z določenim zaporedjem osnovnih ukazov predstavljenih z zlogovno kodo
[7]. Z uspešno namestitvijo v omrežje verige blokov, se vsaka PP identificira z unikatnim naslovom.
Pametna pogodba lahko ima definirano tudi stanje virtualnih kovancev Ether, lastno zasebno shrambo
in povezavo z vnaprej definirano določeno izvedljivo kodo [8]. Klici funkcij PP nameščenih v omrežju
Ethereum se izvedejo s pomočjo transakcij. V primeru, da klic funkcije PP spreminja stanje v omrežju
verige blokov, se ta izvede po vseh vozliščih omrežja. Za izvajanje funkcij, ki spreminjajo stanje, se
glede na zahtevnost operacij definiranih v omenjeni funkciji porablja določeno število goriva v
domorodni valuti Ether. Gorivo v tem primeru izgoreva in njegova vrednost se nakazuje vozliščem
omrežja, ki so zlogovno kodo PP izvedli. Za poizvedovanje stanja omrežja se tovrstno gorivo ne
porablja, odgovor na klic funkcije se zagotovi iz najbližjega vozlišča v omrežju [2].
Po zasnovi je PP mehanizem za distribuirano izvajanje programske kode. Za zagotavljanje poštenega
nadomestila vozliščem, ki izvajajo PP, je potrebno plačilo pristojbin. Njihova vrednost je enaka
sorazmernemu deležu zahtevnosti izvedenih operacij. Vsaka operacija ima tako s protokolom Ethereum
vnaprej določeno ceno izvajanja. Med pretvorbo visokonivojskega oblike PP v zlogovno kodo, se hkrati
izvede tudi pretvorba v t.i. seznam osnovnih operacij (ang. OPCODE), ki imajo vsak svojo vnaprej
določeno ceno. Pri pošiljanju transakcije, ki spreminja stanje verige blokov, mora uporabnik določiti
zgornji znesek (ang. gas limit) v valuti Ether, ki ga je pripravljen zagotoviti za izvedbo transakcije.
Potrjevalec, ki transakcijo vključuje v blok, naknadno prejeme transakcijsko provizijo. Ta ustreza
količini porabljenega goriva pri izvedbi transakcije. V primeru porabe večjega števila goriva pri izvedbi
transakcije, kot ga je predhodno definiral uporabnik, se izvršitev transakcije prekine z izjemo,
porabljeno gorivo uporabniku ni vrnjeno, stanje transakcije pa se povrne v začetno stanje brez sprememb
[8].
V nadaljevanju bomo predstavili določene ranljivosti PP na platformi Ethereum, ki izhajajo iz
varnostnih pomanjkljivosti visokonivojskega programskega jezika Solidity in EVM.
3. VARNOST PAMETNIH POGODB
Varnost Ethereum PP je pomembna, saj platforma vključuje tudi kriptovaluto Ether, kar omogoča, da
se napadalec materialno okoristi. V primeru, da bi PP uporabljali produkcijskem okolju za izvrševanje
98
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Hölbl in B. Podgorelec: Varnostne ranljivosti pametnih pogodb platforme Ethereum
določenih samodejnih aktivnosti, bi lahko prišlo tudi do drugih zlorab. Varnost platforme opredeljuje
tudi število varnostnih pomanjkljivosti oz. ranljivosti. Te lahko uvrstimo v tri kategorije [7]:
ranljivosti visokonivojskega programskega jezika Solidity;
ranljivost Ethereum virtualnega stroja (EVM) in
ranljivosti tehnologije veriženja blokov.
Ranljivosti programskega jezika Solidity se nanašajo na nekatere programerske nedoslednosti in
pomanjkljivosti, ki ne izvirajo zgolj iz strukture programskega jezika Solidity, kot so težave, povezane
s slabim upravljanjem z izjemami ali pretvorba podatkovnih tipov. V primeru klicanja neznanih funkcij
(ang. call to the unknown), lahko problem predstavljajo nadomestne funkcije (ang. fallback function),
ki se ob tem prožijo. Nadomestne funkcije in težave le teh smo opisali v Poglavju 3.2.1. Primer je funkcija znotraj PP, ki se zaradi določenega razloga ne izvede in se zaradi tega izvede druga
nepričakovana funkcija. Ob uporabi funkcije send za prenos Etherjev, je mogoč pojav izjeme »out-of-
gas«. V programskem jeziku Solidity obstaja več scenarijev, kjer lahko pride do izjem: pri izvajanju
zmanjka pristojbin (ang. gas); sklad za shranjevanje klicev funkcij se napolni; uporabimo ukaz throw.
Tudi pri klicu funkcij, kjer pride do izjeme, je potrebno plačati pristojbine, kar lahko privedete do celotne
porabe le-teh. Kljub temu, da prevajalnik programskega jezika Solidity zaznava določene nedoslednosti
pri deklariranju spremenljivk in njihovih tipov, ta zaznava ni popolna. V določenih primerih, PP ne
javlja napak, tudi če so te prisotne. Tudi atomarnost in sekvenčnost transakcij daje marsikateremu
programerju lažno upanje, da ni mogoče klicati ne-rekurzivnih funkcij večkrat (torej preden se en klic
zaključi). Vendar to ne drži. Zaradi nadomestne funkcije, lahko pride do večkratnega klicanja le te in na
tak način do porabe vseh pristojbin. Težavo povzroča tudi dejstvo, da polja, ki jih deklariramo kot
zasebna, niso nujno tudi skrita. Za namen skrivanja podatkov je bolj primerno uporabiti kriptografske
mehanizme.
Omenjene ranljivosti programskega jezika Solidity pa niso edine, ki se jih moramo zavedati pri razvoju
PP. Ranljivost in napake se lahko pojavijo tudi znotraj EVM. Snovalci PP morajo biti še posebej pazljivi
pri pisanju PP, saj je morebitnih napak v implementaciji nameščenih PP ni mogoče naknadno popravljati
(ang. patching). Napake v PP so bile že velikokrat izkoriščene, ali za pridobivanje Etherjev ali za
preprečitev unovčitve Etherjev [13], [14]. Pri prenosu Etherjev moramo biti pazljivi na naslov
prejemnika, saj je veliko naslovov v omrežju osirotelih (ang. orhpan). V primeru, da pošljemo Etherje
na osiroteli naslov, so ti za vedno izgubljeni. Pri izvršitvi PP lahko vključujemo tudi funkcije drugih PP,
kar lahko privede do dosega omejitve glede števila klicanih funkcij, saj se zapolni sklad klicanja funkcij.
Vsak nadaljnji klic funkcije nato proži izjemo, kar je bilo že izkoriščeno tudi za napade. Omejena
ranljivost je popravljena od konca leta 2016 [12].
Varnostne pomanjkljivosti, ki smo jih predstavili, lahko za organizacije, ki svoje poslovne procese
implementirajo s pomočjo PP na verigah blokov, predstavljajo vzrok za neuspeh izvajanja PP, kar
posledično lahko rezultira v poslovni škodi. V nadaljevanju se bomo osredotočili predvsem na
kategorijo ranljivosti visokonivojskega programskega jezika Solidity. S pomočjo izsekov kode bomo
prikazali varnostno ranljive implementacije PP.
3.1. Znani primeri napadov na pametne pogodbe
O realnosti tveganja priča tudi zgodovina tovrstnih napadov na implementacije PP v omrežju verig
blokov Ethereum. Največja in najbolj znana zgodovinska napada na platformi Ethereum sta t.i. Parity
in TheDao napad [5] [6]. Napad imenovan Parity je izkoristil ranljivost v knjižnici PP istoimenske
večuporabniške denarnice (ang. multisignature wallet). Ranljivost v implementaciji knjižnice, ki je
služila kot skupna komponenta vsem ustvarjenim PP, ki so implementirale večuporabniške denarnice,
je anonimnemu napadalcu omogočala prevzem lastništva PP implementirane knjižnice in s tem
posledično nadzor nad 587 večuporabniškimi denarnicami. Skupna vrednost digitalnih sredstev je bila
v času napada ocenjena na okrog 160 milijonov dolarjev. Prevzem lastništva nad knjižnico, ki je bila
del implementacije omenjenih PP večuporabniških denarnic, je omogočal anonimnemu uporabniku
izvršitev samouničevalne funkcije definirane v PP. Napadalec je izvršil funkcijo, ki je bila del knjižnice
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
99
M. Hölbl in B. Podgorelec: Varnostne ranljivosti pametnih pogodb platforme Ethereum
in tako sprožil uničenje PP, ki je bila ključni gradnik večuporabniške denarnice in s tem povzročil
neuporabnost in zamrznitev vseh sredstev na 587 večuporabniških denarnicah [5].
TheDao napad se je zgodil na PP, ki je implementirala delovanje decentraliziranega avtonomnega sklada
tveganega kapitala [6]. Napadalec je izkoristil pomanjkljivost v implementaciji funkcije PP za
opravljanje menjave med žetoni decentralizirane organizacije in kriptovaluto Ether. Z rekurzivnim
klicem omenjene funkcije je napadalec lahko en žeton decentralizirane organizacije večkrat zamenjal
za njegovo protivrednost v kriptovaluti Ether. Funkcija definirana v pametni pogodbi je namreč, preden
je posodobila stanje omenjenih žetonov na računu klicatelja, temu najprej nakazala znesek v Etherjih in
šele kasneje posodobila bilanco stanja žetonov. Z rekurzivnim klicem funkcije je tako napadalec zaobšel
posodobitev stanja žetonov in na ta način izčrpal PP decentralizirane avtonomne organizacije v skupno
ocenjenem znesku več kot 50 milijonov dolarjev [6].
3.2. Primeri varnostnih ranljivosti pametnih pogodb
Razvijalci PP običajno ne zapisujejo z zlogovno kodo, ampak za razvoj uporabljajo visokonivojski
programski jezik Solidity. Ta se pred namestitvijo PP v omrežje prevede v zlogovno kodo. Prevajalnik
vsako funkcijo označi s podpisom, ki temelji na imenu in tipskih parametrih funkcije.
3.2.1.
Nadomestna funkcija
Po klicu funkcije se podpis prenese kot vhod v klicano PP. Če se funkcija ujema s katero funkcijo
definirano v klicani PP, se ta tudi izvede. V primeru neujemanja podpisa s katerokoli funkcijo definirano
znotraj klicane PP, se proži posebna nadomestna funkcija (ang. fallback function). Nadomestna funkcija
ne vsebuje imena in argumentov ter se proži ob neujemanju podpisa klicane funkcije v klicani PP. Izvede
pa se tudi v primeru pošiljanja žetona Ether v samo pametno pogodbo [7]. Klici funkcij znotraj
programskega jezika Solidity se lahko zgodijo preko treh različno definiranih konstruktov, ki se iz
programskega jezika Solidity prevedejo v zlogovno kodo in se sklicujejo na klice funkcij PP znotraj PP
ter istočasno dovoljujejo pošiljanje žetonov Ether. Določeni opisani konstrukti ob vključitvi prenosa
žetona Ether, istočasno prožijo tudi nadomestno funkcijo njegovega prejemnika [7].
CALL prikliče funkcijo (druge PP ali svojo) in prenese poslan Ether na naslovnika. V primeru
neobstoja podpisa klicane funkcije na naslovu klicane PP se proži nadomestna funkcija [9].
SEND se uporablja za prenos žetona Ether. Po prenosu žetona omenjen konstrukt proži nadomestno
funkcijo prejemnika [9].
DELEGATECALL je podoben konstrukt kot CALL. Razlikuje se v tem, da se prožena funkcija izvede
v okolju klicatelja in ne prejemnika [9].
Primer nevarne uporabe nadomestne funkcije je prikazan v Izvorni kodi 1.
import './lastnistvo/LastnikPogodba.sol';
contract PrispevkiPogodba is LastnikPogodba {
mapping(address => uint) private prispevki;
function prispevaj() public payable {
require(msg.value < 1 wei);
prispevki[msg.sender] += msg.value;
if(prispevki[msg.sender] > prispevki[lastnik]) {
lastnik = msg.sender;
}
}
function getPrispevki() public view returns (uint) {
100
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Hölbl in B. Podgorelec: Varnostne ranljivosti pametnih pogodb platforme Ethereum
return prispevki[msg.sender];
}
function prevzamiPrispevke() public samoLastnik {
lastnik.transfer(address(this).balance);
}
function() payable public {
require(msg.value > 0 && prispevki[msg.sender] > 0);
lastnik = msg.sender;
}
}
Izvorna koda 1. Primer nevarne nadomestne funkcije.
Pametna pogodba PrispevkiPogodba iz primera Izvorne kode 1 je sestavljena iz treh funkcij:
prispevaj(); s to funkcijo lahko v PP prispevamo določen znesek žetonov Ether. Če prispevamo večji
znesek, kot ga je predhodno prispeval lastnik PP, postanemo novi lastnik.
getPrispevki(); funkcija, s katero klicatelj preveri stanje njegovih prispevkov v PP.
prevzamiPrispevke(); funkcija, s katero lastnik PP prevzame skupno vrednost prispevkov PP.
PP ima prav tako definirano nadomestno funkcijo, ki se izvrši ob prenosu vrednosti v PP. Iz izvorne
kode funkcije lahko razberemo, da vsebuje varnostno pomanjkljivo programsko kodo. Napadalec
namreč lahko kliče funkcijo prispevaj() z simboličnim zneskom 10 wei (0.00000000000000001 Ether)
in se na ta način uvrsti na seznam donatorjev. V naslednjem koraku pošlje žeton Ether s simboličnim
zneskom 1 wei v PP, pri čemer se proži nadomestna funkcija, ki preverja ali je poslani znesek večji od
1 in ali je pošiljatelj na seznamu donatorjev. Če je pogojem zadoščeno, implementacija nadomestne
funkcije klicatelju preda lastništvo PP. Na ta način dobi napadalec možnost klica prevzamiPrispevke()
in, brez da je prispeval večji znesek od morebitnega lastnika PP, prevzame nadzor in si tako prilasti vse
prispevke zbrane znotraj PP.
3.2.2.
Pomanjkljivosti računskih operacij
Naslednji opisan primer, prikazan v Izvorni kodi 2 prikazuje nevarnost pomanjkljivosti računskih
operacij in posledično prekoračitev. Ob namestitvi PP Zeton se s konstruktorjem določi skupno število
kovancev v obtoku. Ustvarjeni žetoni se prerazporedijo na račun lastnika. Pri klicu funkcije
posljiZetone() z ukazom require preverjamo, da pošiljatelj ne more poslati večjega števila žetonov kot
jih poseduje. Vendar z omenjenim ukazom vedno zadostimo pogojem, saj je za hrambo stanja žetonov
definiran podatkovni tip uint, pri čemer z odštevanjem ne dosežemo negativnih števil temveč
povzročimo prekoračitev (ang. integer overflow) saj omenjeni podatkovni tip ni namenjen hrambi
negativnih števil. Tako pošiljatelj žetonov postane lastnik zelo velikega števila žetonov. Zato je pri
tovrstnih matematičnih funkcijah zmeraj potrebno preverjati, da ne presežemo maksimalnega števila
definiranega podatkovnega tipa.
contract Zeton {
mapping(address => uint) stanjeZetonov;
uint public skupnaZaloga;
constructor (uint _zaloga) public {
stanjeZetonov[msg.sender] = skupnaZaloga = _zaloga;
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
101
M. Hölbl in B. Podgorelec: Varnostne ranljivosti pametnih pogodb platforme Ethereum
}
function posljiZetone(address _naslov, uint _vrednost) public returns (bool)
{
require(stanjeZetonov[msg.sender] - _vrednost >= 0);
stanjeZetonov[msg.sender] -= _ vrednost;
stanjeZetonov[_naslov] += _vrednost;
return true;
}
function preveriStanjeRacuna(address _naslov) public view returns (uint) {
return stanjeZetonov[_naslov];
}
}
Izvorna koda 2. Primer prekoračitve.
3.2.3.
Možnost ponovnih vključitev
Izvorna koda 3, prikazuje nevarnost možnosti ponovnih vključitev (ang. reentrency). Takšno opisano
pomanjkljivost v implementaciji je vsebovala TheDao pametna pogodba opisana v Poglavju 1.
contract PonovnaVkljucitev {
mapping(address => uint) public stanjeRacuna;
function doniraj(address _naslov) public payable {
stanjeRacuna[_naslov] += msg.value;
}
function preveriStanje(address _naslov) public view returns (uint) {
return stanjeRacuna[_naslov];
}
function dvigSredstev(uint _znesek) public {
if(stanjeRacuna[msg.sender] >= _znesek) {
if(msg.sender.call.value(_znesek)()) {
_znesek;
}
stanjeRacuna[msg.sender] -= _znesek;
}
}
function() public payable {}
}
Izvorna koda 3. Primer možnosti ponovnih vključitev.
Pametna pogodba PonovnaVkljucitev omogoča uporabnikom donacijo sredstev določenemu računu,
preverjanje stanja računa in dvig doniranih sredstev. Napadi na PP se pogosto ne dodajajo s klici funkcij
iz uporabniškimi računov ampak s pomočjo drugih PP, katere implementirajo logiko tovrstnih napadov.
Izvorna koda 4 prikazuje implementacijo PP, katere namen je izpraznitev vseh doniranih sredstev PP
PonovnaVkljucitev.
102
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Hölbl in B. Podgorelec: Varnostne ranljivosti pametnih pogodb platforme Ethereum
import "./PonovnaVkljucitev.sol";
contract PonovnaVkljucitevNapad {
PonovnaVkljucitev pv;
function napad(address _naslov) payable {
pv = PonovnaVkljucitev(_naslov);
pv.doniraj.value(0.1 ether)(address(this));
pv.dvigSredstev(0.1 ether);
}
function() public payable {
pv.dvigSredstev(0.1 ether);
}
}
Izvorna koda 4. Primer napada na PP PonovnaVkljucitev.
Implementacija funkcije dvigSredstev, odbitek dvignjenih sredstev izvede šele po prenosu žetona Ether
na naslov računa prožitelja funkcije. Kot smo opisali v Poglavju 3.1.1 prenos žetona Ether na ciljni
naslov, ki je lahko tudi PP, kot je vidno našem primeru PonovnaVkljucitevNapad v le tej proži
nadomestno funkcijo. V tej funkciji prikazani s primerom Izvorne kode 4 je tako v primeru zadostnih
sredstev za gorivo, mogoč rekurziven klic funkcije dvigSredstev, kar rezultira v izpraznitev celotnega
stanja računa PonovnaVkljucitev. Funkcija napad v PonovnaVkljucitevNapad tako na naslov svoje tarče
najprej nakaže simbolično število žetona Ether, katerega takoj za tem s funkcijo dvigSredstev zahteva
nazaj. Kot že opisano funkcija dvigSredstev prenese žeton Ether v račun PonovnaVkljucitevNapad, pri
čemer se proži nadomestna funkcija, ki ponovno zahteva dvig sredstev iz PonovnaVkljucitev. Le ta ji to
omogoča, saj implementacija funkcije dvigSredstev odbitek dvignjenih sredstev izvede šele na koncu
prenosa žetona Ether.
3.2.4.
Zasebne spremenljivke PP
Deklariranje spremenljivk v PP, kot zasebne (ang. private) preprečuje dostop do njihovih vsebin drugim
PP. Spremenljivke stanja (ang. state variables) in lokalne spremenljivke (ang. local variables),
deklarirane kot zasebne, so kljub tovrstni deklaraciji še vedno javno dostopne preko odjemalcev
protokola Ethereum [17]. PP prikazana v Izvorna koda 5, prikazuje implementacijo PP Trezor, ki ob
namestitvi v omrežje s konstruktorjem inicializira spremenljivko zaklep na vrednost true in v
spremenljivko geslo shrani vrednost podano s parametrom konstruktorja, ki ponazarja geslo. Funkcija
odklepanje ob pravilno podanem geslu, kot parametru funkcije, omogoča klicatelju spremembo
vrednosti spremenljivke zaklep, kar prikazuje simbolično operacijo, ki bi lahko ponazarjala
kompleksnejše in varnostno občutljivejše operacije ob pravilnem vnosu gesla s strani prožitelja funkcije.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
103
M. Hölbl in B. Podgorelec: Varnostne ranljivosti pametnih pogodb platforme Ethereum
contract Trezor {
bool public zaklep;
bytes32 public geslo;
constructor(bytes32 _geslo) public {
zaklep = true;
geslo = _geslo;
}
function odklepanje(bytes32 _geslo) public {
if (geslo == _geslo) {
zaklep = false;
}
}
}
Izvorna koda 5. Primer PP, ki vsebuje shranjeno geslo.
Do zasebno deklarirane spremenljivke geslo znotraj PP Trezor lahko dostopamo s pomočjo odjemalca
Geth
[18]
in
knjižnice
Web3
[19].
Z
izvedbo
ukaza
web3.toAscii(web3.eth.getStorageAt(»NaslovTrezor«,1)) prožimo funkcijo odjemalca getStorageAt, ki
kot parametra funkcije sprejeme naslov shrambe PP in indeks elementa v omenjeni shrambi PP. S
pomočjo funkcije knjižnice Web3 toAscii nato pridobljeno šestnajstiško število pretvorimo v niz znakov.
Rezultat izvedbe ukaza je tako vrednost zasebno deklarirane spremenljivke geslo iz PP Trezor, ki nam
tako omogoča podajanje pravilnega parametra v funkcijo odklepanje in s tem možnost spremembe
vrednosti spremenljivke zaklep. V primeru shranjevanja občutljivih vrednosti v spremenljivke znotraj
PP je potrebno le te šifrirati, pri čemer ključa za dešifriranje podatkov posledično ne smemo pošiljati
znotraj verige blokov [17].
4. ORODJA PREPOZNAVANJA VARNOSTNIH RANLJIVOSTI
Za najučinkovitejši način prepoznavanja morebitnih varnostnih ranljivosti pred nameščanjem PP v
omrežje veljajo varnostne revizije izvorne kode PP. V tem primeru izkušeni razvijalci in specializirane
ekipe skrbno ročno ter s pomočjo avtomatiziranih orodij preučijo PP z namenom odkrivanja morebitnih
ranljivosti v implementaciji in tudi zagotovijo, da implementacija sledi dobrim praksam razvoja PP.
Kljub temu lahko razvijalec zmanjša ranljivosti v PP s pomočjo samostojnih varnostnih orodij, ki jih
bomo predstavili v tem poglavju. Ti se lahko uporabijo za preventivne preglede implementacije PP z
namenom odkrivanja predhodno opisanih varnostnih ranljivosti, tako pred, kot tudi po namestitvi PP v
omrežje [10]. Med omenjena orodja sodijo:
MANTICORE: Prototipno orodje za dinamično binarno analizo PP [10].
MYTHRILL: Eksperimentalno orodje, ki s pomočjo vmesnika ukazne vrstice ponuja analizo
PP. S pomočjo simuliranja izvedbe PP ponuja možnost prepoznavanja različnih varnostnih
ranljivosti, kot so nezaščitene funkcije (ang. unprotected functions), ponovne vključitve (ang.
reentrency),
prekoračitev/podkoračitev
pomnilnika
celih
števil
(ang.
integer
overflow/underflow), časovne odvisnosti (ang. timestamp dependence), odvisnost zaporedja
transakcij (ang. transaction-ordering dependence) in izpostavljenost informacij (ang.
information exposure) [10], [4].
SMARTCHECK: Spletne aplikacije, ki je trenutno v Beta različici in omogoča samodejno
prepoznavanje varnostnih ranljivostih, podobno kot orodje Mythrill. Odkrite pomanjkljivosti
so prikazane po stopnji resnosti. Razpoznava tudi manj resne pomanjkljivosti, kot so različne
verzije prevajalnika, redundantne funkcije in omogoča opozarjanje na dobre prakse slogovnega
oblikovanja PP [10].
104
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Hölbl in B. Podgorelec: Varnostne ranljivosti pametnih pogodb platforme Ethereum
OYENTE: Prvo in najbolj priljubljeno orodje za varnostno analizo PP, ki temelji na raziskavah
Ethereum skupnosti. S pomočjo simuliranja izvedbe PP omogoča odkrivanje podobnih
varnostnih ranljivosti, kot orodji Mythrill in SmartCheck. Orodje omogoča analizo zlogovne
kode PP, kot tudi analizo PP implementiranih z visokonivojskim programskim jezikom Solidity
[8].
GASPER: Orodje v razvoju, ki še ni na voljo za uporabo, katero se bo s pomočjo analize
zlogovne kode PP in simulacijo izvedbe PP fokusiralo na prepoznavanje vzorcev razvoja PP,
ki povzročajo prekomerno porabo goriva za izvajanje transakcij znotraj omrežja [11].
Opisana orodja lahko pripomorejo k zmanjšanju tveganja za varnostne ranljivosti, a je zagotovo v
primeru, ko bodo PP upravljanje z večjim zneskom žetonov Ether, smiseln tudi najem ustreznih
svetovalcev, preverjalcev kode in uporabo že preverjenih odprtokodnih ogrodij za gradnjo varnih PP, ki
zmanjšujejo tveganje za ranljivosti v PP z uporabo standardne, preizkušane in revidirane kode, kot je
OpenZeppelin [15].
5. DOBRE PRAKSE RAZVOJA PAMETNIH POGODB
Platforma Ethereum in kompleksne PP na verigah blokov predstavljata nove in pogosto eksperimentalne
koncepte [16]. Zato je mogoče pričakovati spremembe v smislu odkrivanja novih hroščev in varnostnih
tveganj, kar posledični pomeni tudi oblikovanje novih dobrih praks pri razvoju PP. Obramba pred
znanimi ranljivostmi ni dovolj, zato je potrebno sprejeti nove konceptualne pristope razvoja tovrstne
programske opreme. Pričakujemo lahko, da vsaka ne-trivialna pogodba vsebuje napake, kar lahko
privede do neuspešnega izvajanja PP. V ta namen je smiselno, celo nujno imeti razdelane strategije za
[16]:
-
prekinitev pogodbe v primeru napačnega izvajanja PP (ang. circuit breaker),
-
učinkovito upravljanje ogroženega zneska denarja vsebovanega znotraj PP in
-
učinkovite poti za nadgradnjo in izboljšavo PP.
Pred produkcijsko uporabo PP je priporočeno za vse funkcionalnosti zasnovati ustrezne teste.
Kompleksnost PP povečuje verjetnost napak, zato je potrebno ohranjati enostavnost PP, kar dosežemo
z:
-
preprosto pogodbeno logiko PP,
-
modularizacijo programske kode,
-
uporabo že preizkušenih ogrodij in napisanih delov kode ter
-
uporabo PP na verigah blokov le za dele poslovnih procesov, ki zahtevajo decentraliziranost.
Za učinkovito in varno izvajanje PP na verigah blokov se je potrebno zavedati lastnosti tehnologije
veriženja blokov in specifik, ki jih ta vsebuje. Zato je potrebno pazljivo presoditi, katere poslovne
procese je smiselno izvajati s pomočjo PP na verigah blokov in katere poslovne procese je bolje ohraniti
na obstoječih sistemih.
6. ZAKLJUČEK
V prispevku smo naslavljali varnost pametnih pogodb na platformi Ethereum. Ker so pametne pogodbe
programska koda, ki se izvaja v Ethereum virtualnemu stroju (EVM), je seveda možnosti za izkoriščanje
pomanjkljivosti veliko. Določene pomanjkljivosti se nanašajo na programski jezik, v katerem so
običajno implementirane PP in na izvajalno okolje EVM. Razvijalci zato morajo dobro poznati
ranljivosti in biti zelo dosledni pri razvoju, saj je popravljanje PP, za razliko od klasične programske
opreme, precej bolj težavno. V dodatno pomoč so lahko orodja za preverjanje programske kode PP, v
primeru večjih projektov pa je priporočljiv najem ustreznih strokovnjakov za pregled.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
105
M. Hölbl in B. Podgorelec: Varnostne ranljivosti pametnih pogodb platforme Ethereum
7. LITERATURA
[1]
V. Buterin, “A next-generation smart contract and decentralized application platform,” Etherum,
str. 1–36, 2014.
[2]
M. Turkanović, A. Kamišalić, and B. Podgorelec, “DSI 2018 - Pametne pogodbe na verigah
blokov,” Dnevi Slovenske Informatike, april 2018.
[3]
www.coinmarketcap.com, Cryptocurrency Market Capitalizations, obiskano 16.5.2018.
[4]
I. Nikolic, A. Kolluri, I. Sergey, P. Saxena, and A. Hobor, “Finding The Greedy, Prodigal, and
Suicidal Contracts at Scale,” 2018.
[5]
www.paritytech.io/a-postmortem-on-the-parity-multi-sig-library-self-destruct, "A Postmortem
on the Parity Multi-Sig Library Self-Destruct," obiskano 15.5.2018.
[6]
www.cryptocompare.com/coins/guides/the-dao-the-hack-the-soft-fork-and-the-hard-fork/, The
DAO, "The Hack, The Soft Fork and The Hard Fork," obiskano 16.05.2018.
[7]
N. Atzei, M. Bartoletti, and T. Cimoli, “A Survey of Attacks on Ethereum Smart Contracts
(SoK),” vol. 10204, Marec 2017, str. 164–186.
[8]
L. Luu, D.-H. Chu, H. Olickel, P. Saxena, and A. Hobor, “Making Smart Contracts Smarter,”
Proc. 2016 ACM SIGSAC Conf. Comput. Commun. Secur. - CCS’16, str. 254–269, 2016.
[9]
www.solidity.readthedocs.io/en/latest/index.html, Solidity — Solidity 0.4.21 documentation,
obiskano 16.5.2018.
[10]
A. Dika, “Ethereum Smart Contracts : Security Vulnerabilities and Security Tools”, December,
2017.
[11]
T. Chen, X. Li, X. Luo, and X. Zhang, “Under-optimized smart contracts devour your money,”
SANER 2017 - 24th IEEE Int. Conf. Softw. Anal. Evol. Reengineering, str. 442–446, 2017.
[12]
www.blog.ethereum.org/2016/10/13/announcement-imminent-hardfork-eip150-gas-cost-
changes/, " Announcement of imminent hard fork for EIP150 gas cost changes," obiskano
16.5.2018.
[13]
www.governmental.github.io/GovernMental/, GovernMental, obiskano 16.5.2018.
[14]
www.bitcointalk.org/index.php?topic=1400536.60, "Bitcointalk: Hi!My name is Rubixi,"
obiskano 16.5.2018.
[15]
www.openzeppelin.org, OpenZeppelin, obiskano 16.5.2018.
[16]
www.consensys.github.io, "Consensys, Ethereum Smart Contracts Best Practices," obiskano
16.05.2018
[17]
https://ethernaut.zeppelin.solutions/, The Ethernaut, obiskano 16.05.2018
[18]
https://github.com/ethereum/go-ethereum/, Official Go implementation of the Ethereum
protocol, obiskano 16.05.2018
[19]
https://github.com/ethereum/wiki/wiki/JavaScript-API, Web3 JavaScript app API, obiskano
16.05.2018
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
DATA PROTECTION IN A HYPER-CONVERGED
WORLD: OUR STORY
DAMIJAN BAČANI19
Abstract: In today’s world, businesses can’t survive and grow without
ability to effectively manage their digital information. Hyper-converged
infrastructure (HCI) is changing the model of consuming data center
resources by enabling end users to provision resources almost instantly and
then allow data and applications to distribute over infrastructure. Data
protection is a key requirement for every organization and hyper-converged
infrastructure requires different backup solution – a backup solution
integrated into the HCI environment to eliminate the need for a dedicated
backup server and simplify IT operations. HYCU Data Protection is
purpose-built backup and recovery for Nutanix hyper-converged
infrastructure.
Key words: • Hyper-converged infrastructure • Data protection • HYCU •
Snapshot • VM stun
AUTHORS: Damijan Bačani, HYCU Inc., Letališka cesta 29b, 1000 Ljubljana, Slovenija, e-pošta:
damijan.bacani@hycu.com.
DOI https://doi.org/10.18690/978-961-286-162-9.11
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
107
D. Bačani: Data protection in a hyper-converged world: our story
1. INTRODUCTION
By 2020, 20% of business-critical applications currently deployed on three-tier IT infrastructure will
transition to hyperconverged infrastructure. [1]
There’s no doubt cloud architectures and scale-out computing are replacing legacy IT and running more
and more applications. This also means that existing data protection solutions will need to be re-designed
to fit into data centers.
When we began designing HYCU we told ourselves that we have the opportunity to rethink how to do
data protection. We wanted the policy, i.e. the contract between the business and IT administrative staff,
to be in a simple language that will be easy to understand and never in doubt as to what the outcome
will be.
2. HYPER-CONVERGED INFRASTRUCTURE
2.1. What is it?
The term was first coined in 2012 by Steve Chambers and Forrester Research and there is still a lot of
disagreement among experts as to what exactly defines HCI. According to Gartner, it's a category of
scale-out software-integrated infrastructure that applies a modular approach to compute, network and
storage on standard hardware, leveraging distributed, horizontal building blocks under unified
management. [1]
It brings flexibility and simplicity to datacenters and should be viewed as a base block for building an
enterprise cloud. This fully software-defined IT infrastructure assembles storage, computing and
networking into a single-system solution. This significantly reduces the engineering effort, data center
complexity and increases scalability.
2.2. How it differs from traditional IT infrastructure
Traditional IT infrastructure is commonly silos of systems and operations with separate groups and
systems for storage, servers and network. Typically, each group handles purchasing, provisioning and
support of the infrastructure the group is responsible for. More or less every enterprise looks at software
solutions in a way to grow the business. The systematic solution which supports this business process
certainly does not lie in the legacy infrastructure model, where computing power, networking, software
and storage are standalone blocks which needs an entire army of IT engineers which ultimately do the
hard work of integrating and maintaining them. Nor in the more sophisticated legacy model called
Converged where the idea is the system which integrates the previously mentioned physical blocks into
the physical solution bundle which is pre-configured and ready to connect to electricity. The right answer
is hype-converged infrastructure.
2.3. Components of HCI
Most HCI solutions consist of two base components:
Distributed data plane
runs across a cluster of nodes delivering storage, virtualization and networking services for guest
applications (VMs or container-based applications).
Management plane
allows for the easy administration of all HCI resources from a single view and eliminates the need
for separate management solutions for servers, storage networks, storage and virtualization.
108
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
D. Bačani: Data protection in a hyper-converged world: our story
Picture 1: Nutanix Prism Management Console
2.4. Hypervisors
As the hypervisor space becomes more competitive and customers are implementing non-VMware
products to virtualize workloads, the flexibility to support more than VMware is quickly becoming
important. While VMware does still rule the world, there are certain verticals and customers that are
adopting KVM or Hyper-V over VMware. Today this likely already plays into the buying decision for
some customers when looking at hyper-converged products. Nutanix is already supporting multiple
hypervisors, SimpliVity has discussed their desire to in the future, while VMware will always be a 100%
vSphere-based solution. Both of these stances can provide benefits for customers as they provide more
flexibility or a tightly controlled integration.
2.5. Suppliers
The hyper-converged market has matured over the last few years, with a range of hardware and software
offerings. Simplivity, VMware, Dell EMC, Stratoscale, Cisco and Nutanix are some of HCI players with
Nutanix being a leader in hype-converged infrastructure segment.
Our company is working with Nutanix to improve data protection for applications running on Nutanix
hype-converged infrastructure and has created a product that perfectly fits into this strategy - HYCU
Data Protection for Nutanix.
Nutanix solution allows customers to seamlessly select, provision, deploy & manage their Business
Apps across all their infrastructure, both private and public cloud. It will eventually support all the
components required to manage a complete Software Defined Data Center (SDDC).
2.6. Benefits for Dev/Test and DevOps teams
Whether your development team is developing new IT applications or producing new in-house or
commercial software, an efficient, high-performance development and test environment can help drive
productivity, improve time to market, and have a direct impact on revenue.
What does that mean? “MS Azure or AWS like” self-service access to infrastructure, API-driven
infrastructure resources that can be consumed within your application, ability to quickly create and clone
dev/test environments are just a few goodies for developers.
The goal of a hyperconverged infrastructure (HCI) is to simplify how to apply compute, network and
storage resources to applications. Ideally, the data center’s IT needs are consolidated down to a single
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
109
D. Bačani: Data protection in a hyper-converged world: our story
architecture that automatically scales as the organization needs to deploy more applications or expand
existing ones.
3. DATA PROTECTION
3.1. Is traditional backup appropriate for HCI committed datacenter?
Let’s look at how exactly things used to be before server virtualization. Applications were deployed on
individual servers and each host was provided with a lot of network bandwidth. Some enterprises
deployed dedicated networks to backup and restore data. Each server had an agent installed and the
backup platform (metadata and media servers) was in the center of it.
Backup creates several separate architectures outside of the HCI architecture. Each of these architectures
need independent management. First, the backup process will often require a dedicated backup server.
That server will run on a stand-alone system and then connect to the HCI solution to perform a backup.
Second, the dedicated backup server will almost always have its own storage system to store data backed
up from the HCI. Third, there are some features, like instant recovery and off-site replication, that require
production quality storage to function effectively.
The answer for IT is to find a backup solution that fully integrates with the HCI solution, eliminating
the need to create these additional silos.
3.2. Benefits of HCI-Focused backup
What if backup was designed specifically to work with HCI? To achieve this, the backup software
would need tight integration with the HCI platform itself. This means:
Integration with platform-specific APIs to extract and backup data. Integration also needs to manage
snapshots and pausing applications for consistent backups.
Scalability within the backup application/instance to cater for increased load as deployments
increase.
Automatic identification and protection of virtual machines/instances, once given credentials.
Licensing that mirrors the platform deployment model, for example, per-VM or instance charging.
Self-protection of the backup VM, to be able to restore the entire environment in case of hardware
failure.
Multi-tenancy – allowing multiple backup environments to back up segments of workload on
demand.
Scripted or automatic deployment of the backup solution onto the HCI platform.
HCI allows a high degree of application deployment automation via API and CLI. The platform is
there to be consumed, which can be achieved without the intervention of an administrator. Why
shouldn’t backup be the same? Imagine a new project that will run a few dozen virtual instances
for a few months. If this is a development project, it makes sense to keep backups separate from
production, write the backup data to a dedicated target and isolate the backups for future use.
The last point – automation – speaks exactly to this requirement. Backup becomes another service
that can be deployed and configured on-demand to meet the needs of the end user. The most logical
conclusion of this being the addition of backup to a service catalogue accessible by end users.
4. HYCU DATA PROTECTION FOR NUTANIX
HYCU Data Protection for Nutanix (HYCU) is a high performing backup and recovery solution for
Nutanix. It is the first data protection solution that is fully integrated with Nutanix and makes data
protection easy to deploy and simple to use. When we started developing HYCU, ease of deployment
and time to value were not just key requirements but a basic design principle from the get go.
110
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
D. Bačani: Data protection in a hyper-converged world: our story
HYCU is deployed as software and can be spun up as a virtual machine instance within minutes.
Administrators simply need to provide credentials to the HCI platform, from where HYCU can identify
and immediately start backing up virtual machines. HYCU is app-centric by design. By knowing what
resides within the VMs, we know exactly what the configuration of the application is we need to recover
and to provide all of the possible recovery options for it.
4.1. Key features and benefits
The following features make HYCU an HCI-focused backup solution:
Delivers native and reliable data protection for mission-critical applications and data in
hyperconverged environments, while ensuring data consistency and easy recoverability.
Deployment of the HYCU virtual appliance is performed through the Nutanix Prism web console
(for Nutanix AHV clusters) or the VMware vSphere Web Client (for Nutanix ESXi clusters).
Discovery solution provides new-found visibility into virtual machines, pinpointing where each
application is running.
Data protection of virtual machines and applications can be enabled in a few minutes after the
deployment.
Predefined backup policies (Gold, Silver, and Bronze) that come with HYCU simplify the data
protection implementation. However, if the needs of the backup environment require, a wide range
of opportunities to customize backup policies is provided.
Automatic backup scheduling provides data protection based on your recovery point objectives
(RPOs).
In-built application awareness provides application discovery and application-specific backup and
restore flow and ensures that the entire application data is protected and recovered to a consistent
state.
Using data storage targets and hypervisors is the administrator's choice.
The HYCU dashboard helps you identify potential problems and bottlenecks to improve the
performance of your data protection environment.
REST API
Picture 2: HYCU Architecture
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
111
D. Bačani: Data protection in a hyper-converged world: our story
4.2. Non-disruptive Data Protection
A key objective for any data protection solution is to be non-intrusive. Business applications, and in
particular the production environment, should not be affected by your data protection workflows. Never.
Ever. One of the biggest headaches for virtual backup solutions is the “VM stun” situation where the
VM is non-responsive (stunned) because of the underlying data protection process.
Providing a purpose-built solution for Nutanix, that leverages its storage level snapshotting API, HYCU
enables a non-disruptive backup process that completely eliminates the unresponsiveness of your VMs.
VM stuns that are a result of the data protection solutions occur when the snapshot manipulation happens
within the data protection workflow. You can find the best inside information on VM stuns from
VMware’s Cormac Hogan in his blog post “When and Why Do We Stun a VM.” He also covered the
topic in a recent post describing the improvements done in vSphere 6.0 named “Snapshot Consolidation
changes done in vSphere 6.0”.
If you take a step back, you can see that the higher up on the data storage stack you are, the bigger and
longer the stuns will be. This is why, we believe, you need to provide the user the application content
for backup, but the software should be smart to perform snapshot management operations on the storage
level, i.e. get the best of both worlds.
By tightly integrating with Nutanix and fully exploring its V3 snapshotting APIs, HYCU minimizes the
major disruption in the backup workflow. Coupled with our app-centric approach, the customer is able
to experience efficiency and simplicity with a natural app-centric interaction.
5. REFERENCES
[1] Magic Quadrant for Hyperconverged Infrastructure, Gartner, February 2018.
[2] storageswiss.com, Why Backup is Breaking Hyper-Converged Infrastructures and How to Fix it
[3] www.hycu.com/blog, Data Protection for Nutanix
[4] www.nutanix.com, Hyperconverged infrastructure
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
ZAPIRANJE IN ODPIRANJE PODATKOV V
DRŽAVNIH INFORMACIJSKIH SISTEMIH
SAMO MAČEK, FRANCI MULEC IN FRANC MOČILAR20
Povzetek: V informacijske sisteme, ki so namenjeni podpori izvajanju
ključnih funkcij države (vlada, zunanje zadeve), se uvrščajo gradiva, ki se
razlikujejo po izvoru, vsebinskem področju, vrsti in stopnji zaupnosti. Tudi
če se nanašajo na isto zadevo, se lahko za njihovo obravnavo zahtevajo
povsem drugačne tehnične rešitve. Za zaščito interesov države določena
gradiva zapiramo v izolirane sisteme, kjer jih varujemo pred naraščajočimi
grožnjami terorizma, organiziranega in kibernetskega kriminala. Na drugi
strani je z vidika odprtosti družbe zaželeno, da se v postopke odločanja, če
je le mogoče, vključuje zainteresirano in strokovno javnost ter predstavnike
civilne družbe. Zato je treba proaktivno omogočati javno dostopnost
določenih vsebin, pod t. i. odprto licenco. Med obema skrajnostma ločujemo
sisteme glede na stopnjo tajnosti (interno do strogo tajno), varnostni razred
in nivo odprtosti. Čeprav lahko posamezna zadeva presega tehnične okvire
določenega sistema, je treba vseeno zagotoviti njeno celovitost z
vsebinskega in uporabniškega vidika. V prispevku bomo prikazali nekaj
lastnih rešitev, s katerimi obvladujemo navedene izzive in so uporabni tudi
za gospodarske ter druge subjekte.
Ključne besede: • varnostni razredi • kibernetski napadi • odprti podatki
NASLOV AVTORJEV: mag. Samo Maček, vodja Sektorja za informatiko, Generalni sekretariat Vlade RS,
Gregorčičeva 20, 1000 Ljuvljana, Slovenija. mag. Franci Mulec, CISA, sekretar, Ministrstvo za zunanje zadeve,
Prešernova 25, 1000 Ljuvljana, Slovenija. mag. Franc Močilar, CISSP, vodja Oddelka za informacijsko varnost in
komunikacije, Ministrstvo za zunanje zadeve, Prešernova 25, 1000 Ljubljana, Slovenija.
DOI https://doi.org/10.18690/978-961-286-162-9.12
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
113
S. Maček, F. Mulec in F. Močilar: Zapiranje in odpiranje podatkov v državnih informacijskih
sistemih
1. UVOD
Hiter razvoj informatike z množico novih konceptov in storitev s seboj prinaša tudi velike izzive na
področju varnosti in odpornosti sistemov. V kibernetskem prostoru smo ogroženi posamezniki, poslovni
subjekti in tudi države. Zaščitni ukrepi so odvisni od možnih škodljivih posledic varnostnega incidenta.
Na ravni posameznika so zahteve povsem drugačne kot pri zaščiti podatkov, ki so pomembni za varnost
in delovanje kritične infrastrukture.
Nedavno sprejeta Uredba o informacijski varnosti v državni upravi je uvedla pojem varnostnega razreda.
Gre za ravni razvrščanja informacijskega premoženja in sistemov glede na njihov pomen za
organizacijo, na njihovo vrednost oziroma občutljivost. Pri tem se upoštevajo vse tri dimenzije
informacijske varnosti: zaupnost, celovitost (nespremenljivost) in razpoložljivost. S tem zaščitne ukrepe
prilagodimo vsebini, dejavnosti in specifičnim zahtevam delovnih procesov.
Na drugi strani si morajo državni organi prizadevati, da vsem zainteresiranim subjektom omogočijo čim
lažji dostop do informacij javnega značaja. S tem se zagotavlja večji nadzor javnosti nad delovanjem
državnih organov in njihovim spoštovanjem pravnega reda, zmanjšuje korupcijska tveganja, zlorabe in
nepravilnosti ter zagotavlja gospodarnejšo rabo javnih sredstev. Tudi na področju odpiranja vsebin
obstaja več razredov oziroma t. i. razvojnih stopenj odprtosti. [2]
Dokumente posamezne zadeve uvrščamo v razrede glede na stopnjo zaupnosti ali odprtosti. To pomeni,
da se lahko zaradi različnih zahtev varovanja, nahajajo v ločenih segmentih infrastrukture ali v sistemih,
ki med seboj niso povezani. Ne glede na to, je treba z vidika uporabnika zagotoviti čim boljšo
preglednost in celostnost zadeve.
Slika 1. Primerjava razredov glede na stopnjo zaupnosti in odprtosti (tajni - Zakon o tajnih podatkih, »zaupni«
(zaupnost) - Uredba o informacijski varnosti, varovani - Uredba o upravnem poslovanju (nadomestili so jih
»zaupni«); ocena - zaradi različnih pravnih podlag in namena uporabe razredi niso neposredno primerljivi)
2. ZAPIRANJE PODATKOV
Na področju varovanja občutljivih dokumentov, podatkov in informacij ter za varovanje informacijsko
podprtih delovnih procesov lahko informacijsko okolje glede na nivo varnosti delimo na tri glavne
skupine:
običajni informacijski sistemi: zajema centralno upravljane in vzdrževane informacijske sisteme,
vključno s prenosnimi računalniki in mobilno telefonijo, informatike, vključno z zunanjim
izvajanjem;
varnostno odobreni (akreditirani) informacijski sistemi: tu so zahteve po varnosti višje. Gre za
sisteme za obdelavo občutljivih podatkov ali podporo občutljivim delovnim procesom. Lahko se
uporabijo za občutljivejše osebne podatke, tajne podatke nižjih stopenj, poslovne skrivnosti,
intelektualno lastnino, zdravstvene podatke in podobno. Tovrstni sistemi naj bi bili odporni na
»napade« posameznika, ki ima na voljo znanja in splošno dosegljiva orodja. To je lahko tudi oseba
114
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Maček, F. Mulec in F. Močilar: Zapiranje in odpiranje podatkov v državnih informacijskih
sistemih
znotraj organizacije;
sistemi za (naj)višje stopnje varnosti: gre za sisteme za obdelavo najobčutljivejših državnih
podatkov, procesov, tajnih podatkov višjih stopenj, za ključne elemente kritične infrastrukture v
državi ali na primer za procese v mednarodnih pogajanjih, katerih razkritje nepoklicani osebi bi lahko
(hudo) škodovalo varnosti ali interesom Republike Slovenije. Tovrstni sistemi morajo biti odporni
tudi na močne interesne skupine, ki imajo dovolj virov, ki ne spoštujejo zakonov, kjer so lahko
pasivno ali aktivno v ozadju tuje državne institucije. Upoštevati moramo tudi, da so lahko znotraj
naše organizacije osebe, ki lahko aktivno pomagajo nasprotniku. [1]
Glede na vsebino podatkom določamo različne vrste zaupnosti (kot na primer: poslovna skrivnost,
davčna tajnost, osebni podatek, tajni podatek ipd.). Okvirno primerjavo med različnimi razredi (slika 1)
lahko naredimo na osnovi zahtevanih ukrepov varovanja:
prepoved uporaba javnega oblaka – Z2 in višje;
prepoved obravnave podatkov na javnem mestu: Z1 in višje;
prepoved uporabe javnih brezžičnih dostopnih točk: Z1 in višje;
prepoved puščanja nosilcev s podatki v pisarnah, mizah ipd.: Z2 in višje;
varen izbris ali uničenje podatkov na odrabljenih nosilcih: Z1 in višje;
šifriranje prenosa in hramba izven varovanega območja: Z2, Z3;
šifriranje prenosa: občutljivi osebni podatek;
šifriranje prenosa z varnostno odobreno (akreditirano) rešitvijo: TP-I in višje;
uporaba programskih šifrirnih rešitev – do vključno TP-I;
uporaba programskih šifrirnih rešitev, izdelanih v državnih organih – do vključno TP-Z;
uporaba strojnih šifrirnih rešitev – TP-T in višje;
varnostno ovrednotenje šifrirnih rešitev, funkcionalni preizkus šifrirne rešitve v celoti in
posameznih šifrirnih mehanizmov – TP-Z in višje;
analiza možnosti kompromitiranja varnostno pomembnih parametrov – TP-T in višje;
prepoved uporabe tujih šifrirnih rešitev – TP-ST;
zaščita proti neželenemu elektromagnetnemu sevanju – TP-Z in višje;
varovanje ključnih sestavin sistema v varnostnih območjih – TP-Z in višje.
(legenda: TP - tajni podatki, I - interno, Z - zaupno, T - tajno, ST - strogo tajno, Z1, Z2, Z3 - ravni
zaupnosti)
Slika 2. Fizično varovanje podatkov nekoč - aktualno še danes: srednjeveški grad Carcassonne, predsedniška
palača Ljubljana (1 – nenadzorovano območje, 2 – notranjost obzidja / nadzor policije, 3 – upravno območje, 4 –
dodatno varovana območja – oznake so simbolične)
Pri obravnavanju najobčutljivejših podatkov je treba izvajati tudi določene ukrepe, ki jim pri običajni
osebni ali službeni uporabi informacijske opreme ne posvečamo posebne pozornosti. V državnih
informacijskih sistemih gre predvsem za podatke, katerih razkritje nepoklicani osebi bi lahko škodovalo
varnosti ali interesom Republike Slovenije. Nekaj zaščitnih ukrepov:
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
115
S. Maček, F. Mulec in F. Močilar: Zapiranje in odpiranje podatkov v državnih informacijskih
sistemih
izolacija sistemov ( black / red separation) – povezava s sistemi z nižjo stopnjo tajnosti je mogoča
samo preko podatkovnih diod;
sistemi ne smejo biti povezani z internetom;
ustrezna postavitev opreme – upoštevati moramo tveganja optičnih in akustičnih napadov (npr.
napadi s teleskopom, laserskim mikrofonom);
protiprislušni pregledi prostorov;
namestitev opreme v varnostna območja (posebej varovani prostori z ojačenimi stenami,
protivlomnimi vrati, rešetkami na oknih, tehničnim in fizičnim varovanjem);
fizično varovanje objektov izvaja policija;
uporaba opreme, ki je zaščitena pred prestrezanjem podatkov prek neželenih elektromagnetnih in
konduktivnih emisij;
temeljito preverjanje oseb, ki delajo s sistemi in podatki;
osveščanje, usposabljanje in nadzor uporabnikov;
razvoj lastnih varnostnih programskih rešitev;
uporaba ne-računalniških metod (papir, svinčnik, kurirji).
3. ODPIRANJE PODATKOV
Z vidika odprtosti družbe in udejanjanja participativne demokracije je zaželeno, da se v postopke
odločanja, če je le mogoče, vključuje zainteresirano in strokovno javnost ter predstavnike civilne družbe.
Predpogoj je javna dostopnost vsebin, pod t. i. odprto licenco.
Od leta 2003 mora biti, na podlagi direktive EU [3], vsem zainteresiranim subjektom omogočen dostop
in ponovna uporaba informacij javnega značaja. Nadalje spremembe direktive iz leta 2013 poudarjajo
potrebo po proaktivnem odpiranju podatkov s strani institucij in uvajajo pojem: »odprti podatki« (ang.
Open Data).
Prenos direktive v slovenski pravni red je bil izveden z novelo Zakona o dostopu do informacij javnega
značaja (ZDIJZ) in novo Uredbo o posredovanju in ponovni uporabi informacij javnega značaja.
ZDIJZ državnim organom nalaga, da omogočajo dostop do informacij javnega značaja, s katerimi
razpolagajo. Bistvo »dostopa« je v omogočanju seznanitve z vsebino dokumenta. Za razliko od dostopa
je bistvo »ponovne uporabe« v tem, da lahko uporabnik določen dokument, zbirko ali surove podatke
na enostaven način prenese s spleta ter jih na svojem računalniku nadalje obdeluje, analizira, vključuje
v nove aplikacije, storitve ali produkte ipd. Poleg zasledovanja transparentnega in učinkovitega
delovanja javnega sektorja je slednje pomembno tudi z gospodarskega vidika. Odprti podatki pomenijo
spodbudo za razmah digitalnega gospodarstva, saj so vir za številne spletne aplikacije.
Proaktivno odpiranje podatkov pomeni, da morajo biti vsi javni podatki vnaprej objavljeni na spletu (in
ne šele na poziv zainteresiranega subjekta).
Definicija odprtega podatka:
po vsebini je prosto javno dostopen,
objavljen je v strojno-berljivem in odprtem tehničnem formatu,
na voljo je pod t. i. odprto licenco - brezplačno, za katerikoli namen (edini pogoj je navedba vira).
Državni organi morajo javne podatke nuditi praviloma brez zaračunavanja stroškov oz. z zgolj
minimalnimi materialnimi stroški. To velja za gradivo, ki je prosto pravic intelektualne lastnine. Izjeme
so npr. knjižnice, muzeji in arhivi, ki lahko zaračunavajo stroške dostave, reprodukcije, obdelave.[5]
116
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Maček, F. Mulec in F. Močilar: Zapiranje in odpiranje podatkov v državnih informacijskih
sistemih
Tabela 1. Značilnosti stopenj odprtosti podatkov
Stopnja
Značilnost
Primer
1
podatek je možno pridobiti na spletu pod odprto licenco
PDF
2
+ podatek je dosegljiv v strukturirani obliki
XLS
3
+ podatek je dosegljiv v nelastniškem odprtem formatu
CSV
4
+ podatki so označeni z URI
RDF
5
+ povezava z drugimi podatki - vsebinski kontekst
RDF
4. PRIMER – »VLADNA GRADIVA«
Zbirka vsebuje gradiva, ki jih je ali jih bo obravnavala vlada. Nanašajo se na vsa področja družbenega
delovanja. Praviloma jih pripravljajo ministrstva in vladne službe ter se objavljajo v informacijskem
sistemu vlade. Dokumenti se uvrščajo v varnostne razrede različnih stopenj. Generalni sekretariat vlade
ima za ta namen akreditiranih več nivojev infrastrukture. Najobčutljivejše vsebine se ščitijo v izoliranih
sistemih, kjer so med drugim implementirane tudi zgoraj navedene smernice zapiranja podatkov. Del
gradiv pa je odprte narave. Ta segment je namenjen zainteresirani javnosti, zlasti nevladnim in drugim
organizacijam civilne družbe. Vsi, ki so v procesu nastajanja gradiv sodelovali, lahko tukaj preverijo,
kako so pristojni organi pri pripravi odločitev vlade upoštevali njihove pripombe, pobude in predloge.
Način sodelovanja javnosti v postopku sprejema odločitev vlade opredeljuje Poslovnik Vlade RS.
Izvzeta so tista gradiva, ki predstavljajo izjemo po Zakonu o dostopu do informacij javnega značaja. [4]
Vladna gradiva so edina med 4000 zbirkami na portalu OPSI z najvišjo stopnjo odprtosti, to je 5 .
Prenesti jih je mogoče v odprti, strukturirani in povezani obliki (v zapisu XML ali RDF), in sicer preko
izbire mandata vlade.
Slika 3. Razvojne stopnje odprtosti podatkov – portal OPSI (https://podatki.gov.si/data/search)
5. LITERATURA IN VIRI
[1] MULEC Franci, MOČILAR Franc, MAČEK Samo "Načrtovanje in obvladovanje kibernetske
odpornosti sistemov na osnovi varnostnih razredov", Dnevi slovenske informatike DSI 2018:
Zbornik petindvajsete konference, Portorož, Društvo informatika, 2018.
[2] Ministrstvo za javno upravo »Priročnik za odpiranje podatkov javnega sektorja«. Ljubljana, 2016.
[3] Evropski parlament, Svet EU »Direktiva o ponovni uporabi informacij javnega sektorja«. Uradni
list L 345, 31. 12. 2003, str. 90-96.
[4] https://podatki.gov.si/dataset/vladna-gradiva-2, Informacije o zbirki Vladna gradiva, obiskano 18.
5. 2018.
[5] https://www.mju.gov.si, Spletni dostop do javnih evidenc, ponovna uporaba in odprti podatki,
obiskano 18. 5. 2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
CENTRALIZACIJA LOGIRANIH PODATKOV Z
UPORABO ODPRTOKODNIH REŠITEV ZA
UPRAVLJANJE VELIKIH KOLIČIN PODATKOV
MARKO POLAK IN GREGOR SLOKAN21
Povzetek: Logiranje v aplikacijah je ključno za ugotavljanje ustreznega
delovanja aplikacje, odpravo napak v aplikaciji in ugotavljanja ozkih grl pri
delovanju aplikacije. Logiranje lahko razdelimo na beleženje aplikacijskih
dogodkov (aplikacijski log) ter shranjevanje in iskanje po zabeleženih
aplikacijskih dogodkih. Poslovna pravila beleženja aplikacijskih dogodkov
ponavadi predstavljajo osnovo za razvijalce programske opreme kaj in kako
beležiti, medtem ko na strani shranjevanja in iskanja po zabeleženih
podatkih naletimo na kar nekaj izzivov, ki jih je potrebno rešiti. Pri
shranjevanju se moramo odločiti o obliki shranjenih podatkov, načinu
shranjevanja podatkov ter retencijskem času hranjenih podatkov. Pri
obdelovanju tako shranjenih podatkov se večinoma osredotočimo na
posamezne datoteke, ali kratkega časovnega obdobja, ker je časovna in
sistemska zahtevnost obdelave celotnega sklopa podatkov prevelika.
Dodatno dimenzijo problema uvede komunikacija med različnimi
aplikacijami in danes vse bolj razširjen koncept mikro storitev, ter težave z
dostopom razvijalcev aplikacije do produkcijskih logov zaradi različnih
omejitev dostopa. Centralni logirni sistem ponuja različne možne rešitve
opisane problematike, ponuja velike časovne prihranke človeških virov in
omogoča enostavno dodeljevanje pravic vpogleda in beleženja dostopov.
Ključne besede: • centralni logirni sistem • velika količina podatkov •
NoSQL • skoraj v realnem času(NRT) • skalabilnost • GDPR
NASLOV AVTORJEV: Marko Polak, senior developer in dba, Medius d.o.o, Tehnološki park 21, 100 Ljubljana, e-
pošta: marko.polak@medius.si. Gregor Slokan, senior developer, Medius d.o.o, Tehnološki park 21, 100
Ljubljana, e-pošta: gregor.slokan@medius.si.
DOI https://doi.org/10.18690/978-961-286-162-9.13
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
118
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
1. UVOD
Vsak, ki se dnevno ukvarja z razvojem ali nadzorom nad delovanjem aplikacij se zaveda pomembnosti
logiranja različnih nivojev izvajanj aplikacije. Programerji preko logov spremljajo ustreznost delovanja
aplikacij in rešujejo nastale težave v delovanju. Sistemski administratorji nadzoruje različne sisteme in
aplikacije ter skrbijo za njihovo tekoče delovanje, preverjajo ustreznost delovanja in odkrivajo
morebitne zaplete in jih skušajo preprečiti. Varnostni nadzorniki spremljajo možne varnostne težave,
nadzorniki aplikacij od uporabnikov prejemajo različna poročila o delovanju ali nedelovanju aplikacij,
ki jih filtrirajo in predajajo naprej sistemskim administratorjem, varnostnim nadzornikom ali
programerjem, itd. [1]. Vsem naštetim je za vpogled v delovanje sistema in aplikacij skupna točka
uporaba logiranih podatkov. Ustrezno logiranje, hranjenje, dostopi in učinkovita uporaba logiranih
podatkov so ključni za vzdrževanje sistemov in aplikacij.
Logiranje lahko delimo na sistemsko in aplikacijsko, na upravljanje z logiranimi podatki ter na uporabo
logiranih podatkov. V članku se bomo osredotočili:
•
na aplikacijsko logiranje razvijalcev aplikacij,
•
pri upravljanju s podatki na zbiranje podatkov v centralnem sistemu, hrambo podatkov,
obdelavo in retencijo podatkov,
•
pri uporabi podatkov pa bomo poudarek naredili na učinkovitem iskanju po logiranih
podatkih.
Pri aplikacijskem logiranju obstajajo standardi in dobre prakse na podlagi katerih oblikujemo poslovna
pravila logiranja, ki se jih morajo razvijalci programske opreme upoštevati. Del dobre prakse je uporaba
standardnih ogrodji (ang. framework) za logiranje, kot je log4j.
Pri upravljanju s podatki se v praksi pojavi kar nekaj izzivov. Pri shranjevanju se moramo odločiti o
obliki shranjenih podatkov (tekstovna datoteka, stisnjena datoteka), retencijskem času hranjenja
podatkov (koliko časa v kaki obliki) in mestu hranjenja podatkov (običajno imamo več različnih
sistemov za shranjevanje podatkov, odvisno od aktualnosti). Pri obdelovanju tako shranjenih podatkov
se večinoma osredotočimo na posamezne datoteke kratkega časovnega obdobja, ker je časovna in
sistemska zahtevnost obdelave celotnega sklopa podatkov prevelika. Pri omejevanju dostopa do
podatkov pa je smiselno postaviti centralni sistem upravljanja z dostopi na katerega se integrira shramba.
Dodatni težavnostni nivo predstavlja rastoča količina podatkov, ki jo moramo predvideti pri
dimenzioniranju sistema. Rastoče so tudi potrebe po čim več podatkih, na katerih so možne obdelave za
podporo poslovnih procesov.
Pri pregledu podatkov se osredotočamo na iskanje po logiranih podatkih s strani prej naštetih
uporabnikov. Iskanje je pogosto zaradi (pre)velikih datotek omejeno na konzolne pregledovalnike in
iskalnike ali pa izsek log datoteke preko konzolnih ukazov v manjše datoteke, ki jih lahko odpremo z
grafičnimi pregledovalniki. Uporabnost takšnega načina iskanja pa je slaba. Poleg opisanega dodatno
dimenzijo problema shranjevanja, obdelovanja in pregleda logiranih podatkov vpeljemo s komunikacijo
med različnimi aplikacijami ter vpeljavo mikrostoritev. Vzdrževanje shranjenih podatkov, vzporedno
obdelovanje in združevanje, ter iskanje preko različnih logov je svojevrsten problem, ki je težko rešljiv
preko konzolnih pregledovalnikov oziroma je rešljiv, a časovno in resursko (človeško) zelo potraten.
V članku bomo opisali vpeljavo centralnega logirnega sistema, za podporo naštetih treh delov logiranja.
Sistem temelji na odprtokodnih tehnologijah z dodanimi lastnimi komponentami, kjer odprtokodnih
nismo mogli uporabiti, s poudarkom na iskanju po logiranih podatkih.
2. APLIKACIJSKI LOG
Aplikacijski log predstavlja seznam dogodkov, ki jih izpiše aplikacija. Vključuje različne tipe dogodkov
(napake, opozorila, informacije,...). Oblika zapisa in vsebina posameznega loga pa je definirana na strani
aplikacije, bodisi s strani razvijalcev, bodisi kot globalna interna pravila podjetja. Največkrat
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
119
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
aplikacijski log vidimo kot tekstovno datoteko, ki vsebuje logirane podatke [2]. Aplikacijski log tako
predstavlja velik vir informacij, vendar so podatki v taki obliki dokaj neuporabni, sploh kadar imamo
veliko aplikacij, ki tečejo na veliko aplikacijskih strežnikih, zato se ponavadi uporabljajo v kombinaciji
z različnimi orodji za obdelavo aplikacijskih logov.
3. SISTEM CENTRALNEGA LOGIRANJA
Sistem centralnega logiranja predstavlja centralno hrambo vseh logiranih podatkov. To rešuje težave z
iskanjem logiranih podatkov preko več strežnikov in aplikacij, hkrati pa nam omogoča oblikovanje
enotne strategije shranjevanja, obdelovanja, nadzora nad logiranimi podatki in dostopa do podatkov
podjetja ali korporacije.
Centralni logirni sistem nam mora omogočati: zanesljivost delovanja, hiter dostop do podatkov
(zaželeno je v skoraj realnem času, za hiter odziv na zabeležene dogodke), varnost podatkov, določanje
pravic dostopa do podatkov in fleksibilno razširljivost sistema na različnih nivojih (to nam omogoča
hiter odziv trendom logiranih podatkov in nižje stroške upravljanja s strojno opremo).
Za uspešno izvedbo sistema centralnega logiranja in uporabnost podatkov moramo razmisliti najmanj o
naslednjih aspektih:
•
zbiranje podatkov,
•
prenos podatkov v centralni sistem,
•
hranjenje podatkov,
•
retencijski čas,
•
analiziranje podatkov,
•
varnost,
•
dostop do podatkov.
3.1. Arhitektura sistema
Sistem centralnega logiranja smo postavili z uporabo odprtokodnih tehnologij (Apache Flume, Hadoop,
HDFS, Solr Cloud). Omogočajo nam prej naštete funkcionalnosti in hkrati ponujajo skalabilnost sistema
na vseh nivojih. To je nujno za dolgoročno vzdržnost in maksimalno prepustnost sistema. Skalabilnost
nam na eni strani omogoča, da lahko na produkcijskih sistemih logiramo bistveno več dogodkov ali isto
število z več informacijami. Posledica je na eni strani hitrejša odprava napak, na drugi strani pa omogoča
podatkovno rudarjenje za podporo poslovnih procesov v podjetju.
Z uporabo namenskih odprtokodnih tehnologij smo zagotovili stabilnost delovanja sistema (komponente
so že širše preizkušene in delujejo). Uporabljene komponente je potrebno samo ustrezno konfigurirati,
da znajo med seboj komunicirati. Pri tem je potrebno poudariti, da je nujno za vsako komponento
posebej upoštevati želje in potrebe stranke za katero gradimo centralni logirni sistem, da komponenta
pokrije celotno potrebno funkcionalnost. Dograjevanje funkcionalnosti je bolj kompleksno, kot če gre
za naše komponente in se ji želimo izogniti.
Predstavljeni sistem je sestavljen iz:
•
zbiranja in prenosa podatkov v centralni sistem,
•
shranjevanja podatkov,
•
indeksacije podatkov,
•
iskanja po podatkih.
120
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
Slika 1 prikazuje arhitekturo sistema centralnega logiranja.
Slika 1: Arhitektura centralnega logirnega sistema [3]
3.2. Zbiranje podatkov in prenos v centralni sistem
Zbiranje podatkov se dogaja na aplikacijskih strežnikih. Slika 2 (izsek arhitekture centralnega logirnega
sistema) prikazuje zajem podatkov na aplikacijskih strežnikih in prenos v centralni logirni sistem.
Slika 2: Arhitektura centralnega logirnega sistema - zbiranje podatkov in prenos v centralni logirni sistem [3]
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
121
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
Določiti je potrebno način zbiranja podatkov, strukturo podatkov in učinkovit način za pošiljanje
podatkov v centralni sistem.
Določili smo, da se zbira dva tipa podatkov oziroma da zbiranje podatkov poteka na dva načina:
•
aplikacijski poslovni dogodki,
•
aplikacijski log.
Aplikacijski poslovni dogodki imajo enotno podatkovno strukturo. Definirana je pri postavitvi
centralnega sistema in jo morajo upoštevati vse aplikacije, ki se v sistem želijo vključiti. Poslovni
dogodki, ki jih želimo beležiti, se deloma definirajo v sklopu pravil logiranja podjetja (npr. zabeležiti je
potrebno klic vsake zunanje spletne storitve), deloma pa je prepuščena vsebinskemu delu posamezne
aplikacije. Najbolje je, da se konkretna pravila definira ob začetku razvoja aplikacije, ko se definirajo
tudi vsebinske zahteve aplikacije. Razvijalec mora na podlagi definiranih pravil na ustrezna mesta v
aplikacijo vgraditi beleženje poslovnega dogodka (npr. klic zunanje spletne storitve ali odpiranje okna
v aplikaciji) in odgovor oziroma rezultat ob koncu izvajanja poslovnega dogodka. Zabeležen dogodek
mora vsebovati osnovne podatke, ki jih potrebujemo za unikatno identifikacijo poslovnega dogodka in
za iskanje ter analizo dogodka. Taki parametri so:
•
ime okolja,
•
ime aplikacije,
•
transakcijski identifikator (zaželeno je, da je unikaten čez vsa okolja ali vsaj, da se dolgo
časa ne more ponoviti),
•
čas začetka izvajanja,
•
prijavljenega uporabnika (lahko je sistemski),
•
status izvajanja,
•
metodo, ki se je klicala, itd.
Dodatno pa je smisleno predvideti, da lahko posamezna aplikacija definira svoje dodatne parametre,
brez potrebe po spreminjanju sistema.
Ime okolja, ime aplikacije, transakcijski identifikator in čas začetka izvajanja poslovnega dogodka nam
definira unikatni identifikator dogodka. Izvajanje poslovne logike veji na več delov (kliče se več metod)
ali pa je kot del klica, klican zunanji sistem. Začetek izvajanja poslovne logike nastavi transakcijski
identifikator, ki se nato posreduje celotni hierarhiji klicev. To nam omogoča enostavno sledenje
izvajanja poslovne logike čez aplikacijo in čez vse povezane oziroma klicane sisteme.
Slika 3: Diagram poteka klicev in logiranja poslovnih dogodkov
122
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
Za lažjo predstavo je na sliki 3 predstavljen diagram poteka beleženja enega takega poslovnega dogodka.
Predstavljen je vpis uporabnika v spletno aplikacijo (login).
Opis poteka:
Uporabnik se s prijavnimi podatki vpiše v spletno aplikacijo.
Zabeleži se začetek želenega vpisa in definira transakcijski identifikator, ki bo isti po celotnem
toku zabeleženih dogodkov.
Podatke navedene na vpisni maski je potrebno preveriti v zunanjem sistemu (LDAP).
Zabeleži se podatke o začetku klica zunanjega sistema in naredi klic.
Sistem LDAP zabeleži klic in preveri podatke ter vrne pozitiven odgovor.
Odgovor se doda že zabeleženim podatkom in vse podatke shrani kot celota
enega poslovnega dogodka.
Vpis s tem še ni končan, saj je potrebno preveriti kakšne pravice dostopa ima uporabnik
v spletni aplikaciji. Zabeleži se osnovne podatke o klicu na sistem Pravice ter z istim
transakcijskim identifikatorjem naredi klic na sistem.
Sistem Pravice zabeleži klic, ter transakcijski identifikator vodi po celotni
logiki izvajanja, dokler ne vrne podatkov pravic dostopa. Odgovor se doda že
zabeleženim podatkom in vse podatke shrani kot celota enega poslovnega
dogodka.
Vpis je tako končan, doda se še odgovor o uspešnosti klica in shrani kot celota enega poslovnega
dogodka.
Uporabnik je uspešno prijavljen.
Tako dobimo sled izvajanja poslovnih pravil s celotno hierarhijo klicev znotraj aplikacije in povezanih
sistemih, opremljeno z vsemi potrebnimi podatki za kasnejše analize. Smiselno je, da se definira enotno
kodo, ki skrbi za logiranje poslovnega dogodka, razvijalec tako samo definira podatke, ki jih mora
eksplicitno navesti. Prav tako je potrebno zagotoviti, da v primeru neuspešnega beleženja poslovnega
dogodka aplikacija nemoteno deluje.
Aplikacijski log predstavlja celoten log, ki nastane na aplikacijskem strežniku. Predpišemo mu želeno
struktura, ki pa jo lahko zagotovimo samo za novo nastale logirane podatke. Za nazaj logiranih podatkov
ne moremo spreminjati. Prav tako se v praksi zgodi, da obstoječim sistemom ne moremo spremeniti
strukture logiranih podatkov, zaradi že obstoječih odvisnosti ostalih sistemov, ki neposredno uporabljajo
logirane podatke. Tako moramo v tem delu to upoštevati in se temu prilagoditi. Najbolje je, da se
definirajo standardi za vse nove aplikacije in sisteme, ki bodo vključeni v sistem centralnega logiranja,
kar nam poenoti zbiranje podatkov od sedaj naprej. Za vse sisteme pa je zaželeno, da vpeljejo najmanj
transakcijski identifikator, preko katerega aplikacijski log enostavno povežemo z logom poslovnih
dogodkov. Tako log poslovnih dogodkov daje enostaven vpogled v poslovno logiko aplikacije,
aplikacijski log pa celotno zabeleženo izvajanje poslovne logike.
Pošiljanje podatkov aplikacijskih poslovnih dogodkov v centralni sistem ni problematično. Ker gre za
dograditev kode aplikacije, lahko pošiljamo podatke v različnih oblikah (avro, jms, Kafka, jdbc,...). Pri
pošiljanju aplikacijskih logov pa postanejo stvari bolj zapletene. Novejše programske knjižnice nam
znatno poenostavijo zbiranje podatkov in prenos v centralno hrambo (npr. Log4j 2, Logback,...) že preko
dodajanja ustrezne konfiguracije na aplikacijski strežnik. Vendar se v velikih podjetjih pogosto
srečujemo s starejšimi do zelo starimi tehnologijami, ki nimajo teh možnosti. Za takšne sisteme se uvede
drugačen mehanizem prenosa in transformacije v enotno strukturo. Mi smo za prenos uporabili Apache
Flume, za transformacijo pa Morphlines.
3.2.1.
Apache Flume
Apache Flume je distribuiran, zanesljiv sistem za pridobivanje, agregiranje, filtriranje in prenašanje
večjih količin podatkov [4]. Agente je mogoče postaviti zaporedno (podatkovna veriga) za različne
transformacije in agregacije in vzporedno za horizontalno skalabilnost.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
123
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
Slika 4: FLume agent[4]
Slika 4 prikazuje interno strukturo podatkovnega toka Flume agenta. Podatkovni tok ima izvor, kanal in
ponor.
Izvor podatkov je lahko Avro podatkovni tok, jms vrsta, Kafka, datotečni imenik,ipd, hkrati pa podpira
tudi log4j Appender, ki se poveže na Avro podatkovni tok [4]. Takšna fleksibilnost nam omogoča, da
isto komponento uporabimo tako za star način prenosa aplikacijskih logov kot novejši način prenosa
logiranih podatkov.
Na starejših aplikacijskih strežnikih je potrebno samo nastaviti odlaganje datotek (npr. minutnih logov)
v ustrezen imenik ter nastaviti konfiguracijo Flume agenta in že imamo vse pripravljeno za zajem
podatkov.
Na novih sistemih pa ustrezno nastavimo konfiguracijo logiranja, da sistem za logiranje pošilja podatke
v izvor flume agenta ali v kolektor.
Podatki se iz izvora prenesejo v kanal, kjer se začasno shranijo, dokler se jih uspešno ne pošlje v ponor.
Konfiguracija kanala prav tako omogoča različne načine začasne hrambe podatkov (spomin, JDBC,
Kafka, datotečni sistem,...), zaradi zanesljivosti prenosa in enostavnosti smo se mi odločili za datotečni
sistem. Kot ponor pa se podatki prenesejo v Flume kolektor, ki skrbi za nadaljnjo transformacijo in
shranjevanje podatkov. Kolektor Flume agentov predstavlja skupek agentov z isto konfiguracijo, ki
zbirajo podatke ostalih Flume agonetov. Število Flume agentov v kolektorju je odvisno od
performančnih potreb in od želje po zanesljivosti delovanja (v primeru izpada enega agenta se
podatkovni tok preusmeri na ostale agente).
Slika 5: Arhitektura centralnega sistema - Flume agenti in kolektor [3]
124
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
Slika 5 prikazuje zajem podatkov na različnih aplikacijskih strežnikih, z uporabo Flume agentov in
prenos do kolektorja Flume agentov, ki skrbi za prenos podatkov naprej proti sistemu za indeksacijo
(Solr Cloud) in sistemu za shranjevanje raw podatkov (HDFS).
Tako Flume agenti na strežnikih kot Flume agenti v kolektorju so vertikalno skalabilni.
3.3. Hranjenje podatkov
Podatki se preko Flume kolektorja pretakajo v centralno shrambo. Za centralno shrambo smo uporabili
HDFS v katerega se stekata dva podatkovna toka. En podatkovni tok z nespremenjenimi podatki, drug
podatkovni tok s transformiranimi in indeksiranimi podatki (Slika 6). Za transformacijo, kot del Flume
kolektorja, skrbi Morphines, za indeksacijo podatkov pa Solr Cloud, ki prav tako shranjuje podatke v
HDFS.
Slika 6: Arhitektura centralnega sistema – centralna hramba [3]
3.3.1.
HDFS
Za shranjevanje podatkov smo uporabili HDFS (Hadoop Distributed File System). Je distribuiran
datotečni sistem, ki temelji na tehnologiji Java in omogoča skalabilno in zanesljivo hrambo podatkov,
ki se lahko širi čez veliko gručo nizko cenovnih strežnikov [5].
Slika 7 prikazuje arhitekturo HDFS sistema.
Slika 7: Arhitektura HDFS sitema [6]
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
125
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
Arhitektura je sestavljena iz imenskega vozlišča (NameNode) in podatkovnih vozlišč (DataNode),
Imensko vozlišče je samo eno in upravlja z datotečnim imenskim prostorom ter upravlja dostope
klientov, ki želijo pisati ali brati shranjene podatke. Vzdržuje tudi podatke o trenutno delujočih
podatkovnih vozliščih in ustrezno preusmerja promet [6].
Podatkovna vozlišča upravljajo s podatkovnim prostorom na vozlišču. Skrbijo za shranjevanje in
posredovanje podatkov klientom in za replikacijo podatkov. Podatki so shranjeni v blokih, kar omogoča
razporeditev ene datoteke preko več podatkovnih vozlišč. Podatkovna vozlišča skrbijo za kreiranje,
brisanje in replikacijo blokov na podlagi ukaza imenskega vozlišča. Klienti od imenskega vozlišča
dobijo informacije kje so podatki, dejanski prenos podatkov pa gre neposredno do podatkovnih vozlišč
[6]. Podatkovnih vozlišč je lahko tudi več tisoč.
Takšen način hranjenja podatkov nam omogoča enostavno razširljivost kapacitet hranjenja, v
kombinaciji z Apache Hadoop(zbirka odprtokodnih programskih paketov, ki omogočajo distribuirano
procesiranje velikih količin podatkov) pa enostavno in učinkovito kasnejše analiziranje podatkov.
3.3.2.
Morphlines
Morphlines je odprtokodno ogrodje za transformacijo podatkov. Konfiguracijo transformacij definiramo
v konfiguracijski datoteki morphline. V konfiguraciji lahko gradimo različne verige transformacij, ki jih
uporabimo za transformacijo podatkov iz kateregakoli vira, procesiranje in prenos transformiranih
podatkov v Solr Cloud [7]. Morphlines je javanska knjižnica vgrajena v Flume agenta. Uporabimo jo
preko ustrezne konfiguracije ponora agenta.
Slika 8 prikazuje model procesiranja Morphlines.
Slika 8: Model procesiranja Morphlines [7]
Flume agent dobi na vhodu syslog dogodek in ga pošlje naprej v Flume Morphline Sink. Ta spremeni
vsak dogodek v zapis primeren za procesiranje z Morphline. Morphline zapis prebere (readLine), naredi
transgormacije (grok) in ga pošlje naprej v Solr (loadSolr) [7].
3.3.3.
Solr Cloud
Solr Cloud je fleksibilna distribuirana platforma za iskanje in indeksiranje podatkov brez glavnega
vozlišča (kot je to npr. pri HDFS). Glavne lastnosti so centralna konfiguracija za množico vozlišč,
mehanizem za avtomatično razporejanje opravil in integracija z ZooKeeper sistemom za distribuirano
koordinacijo in konfiguracijo. [9]
Glavni elementi Solr oblaka so [9]:
•
Zbirka (collection) – vsaka zbirka ima ime, število shard-ov na katere je razdeljena in
replikacijski faktor za distribuiranje indeksiranih podatkov preko več vozlišč.
•
Replikacijsi faktor – kolikokrat se skopira en indeksiran dokument v zbirki.
•
Shard – je zbirka logičnih delov indeksiranih podatkov. Vsak shard ima ime, svoje glavno
vozlišče, zgoščeno vrednost (and. Hash) in replikacijski faktor. Vsak shard ima najmanj eno
126
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
glavno vozlišče in nič ali več replikacijskih. Indeksiran dokument je na podlagi zgoščene
vrednosti dodeljen točno enemu shardu v zbirki.
•
Replika – hrani kopijo indeksa glavnega vozlišča.
Indeksirani podatki so shranjeni v HDFS, tako da imamo visoko odpornost na odpovedi in skalabilnost
v primeru potreb po razširitvi sistema.
Arhitektura Solr Cloud je prikazana na Slika 9.
Slika 9: Arhitektura Solr Cloud[9]
3.4. Indeksacija in iskanje
Iskanje po logiranih podatkih je ena ključnih funkcionalnosti vsakega logirnega sistema. Ob prenosu
podatkov v centralni logirni sistem se hkrati izvede indeksacija podatkov za iskanje. To uporabnikom
Iskalnika omogoča iskanje po logiranih podatkih v skoraj realnem času.
Indeksacija podatkov je tesno povezana z načinom iskanja po podatkih. Naš centralni logirni sistem
zajema dva podatkovna tokova, ki sta različno indeksirana.
Aplikacijski poslovnih dogodki imajo točno določeno podatkovno strukturo in so opremljeni z
zahtevkom in odgovorom izvajane operacije. Strukturo morajo upoštevati vse povezane aplikacije, ki
poslovne dogodke pošiljajo v centralni sistem. Najbolj pomembna komponenta podatkov je
transakcijski identifikator, ki omogoča hierarhično sledenje izvajanja znotraj ene ali več aplikacij.
Aplikacijski log ima nabor nujnih podatkov (kot so ime aplikacije in čas nastanka loga) in nabor možnih
podatkov ter celoten log, kot je bil generiran na aplikacijskem strežniku. Dodatno je zaželeno, da je
aplikacijski log opremljen s transakcijskim identifikatorjem, ni pa nujno, le iskanje bo malce oteženo,
ker toka poslovnih dogodkov ne moremo neposredno povezati z aplikacijskim logom.
To je bila osnova za izgradnjo več nivojskega spletnega iskalnika, ki omogoča:
•
iskanje po poslovnih dogodkih,
•
iskanje po poslovnih dogodkih in prehod iz najdenih rezultatov v iskanje po transakcijskem
identifikatorju za celotno sled v aplikaciji oziroma preko vseh aplikacij vključenih v sistem,
•
iskanje po poslovnih dogodkih in prehod iz najdenih rezultatov v iskanje po transakcijskem
identifikatorju v aplikacijskih logih v aplikaciji oziroma preko vseh aplikacij vključenih v
sistem,
•
iskanje po aplikacijskem logu,
•
iskanje po poslovnih dogodkih ali po aplikacijskem logu in prehod iz najdenih rezultatov v
časovno okno okrog najdenega rezultata (kadar nimamo transakcijskega identifikatorja ali
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
127
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
pa nas zanima ali je naša težava posledica neke druge težava na aplikacijskem
strežniku/sistemu).
Vse različne kombinacije iskanja nam omogočajo, da hitro in enostavno najdemo iskane podatke, potem
pa iščemo v globino ali v časovnem oknu iskanega dogodka obeh podatkovnih tokov.
3.4.1.
Zaščita dostopa do podatkov
Poenostavljen način dostopa do logiranih podatkov z uporabo spletnega iskalnika omogoča dostop do
podatkov vsakomur, ki ima dostop do iskalnika. Logirani podatki nemalokrat vključujejo tudi osebne
podatke, zato je zaščita podatkov nujna zaradi zakonskih omejitev (Splošna uredba o varstvu podatkov
(angl. General Data Protection Regulation – GDPR) [10], skladnosti z določenimi standardi, ki smo jih
obvezani spoštovati in naše obveze do strank o ravnanju z njihovimi podatki.
V iskalnik so vgrajeni trije sistemi za upravljanje z dostopi do podatkov:
• omejevanje dostopa,
• zameglitev podatkov,
• revizijska sled.
V iskalnik je vgrajen mehanizem pridobivanja pravic dostopa do podatkov. Za upravljanje s pravicami
dostopa skrbi zunanji sistem, iskalnik pa jih pridobi s klicem izpostavljene spletne storitve. Uporabniku
se na iskalni maski prikažejo le njemu dostopna okolja in znotraj posameznega okolja njemu dostopne
aplikacije. Tako se uporabnik, ki nima pravic do vseh okolji in aplikacij, niti ne zaveda katera obstajajo
in po njih ne more iskati. Za pravice dostopa mora kontaktirati administratorja sistema.
Okolje in aplikacija sta še vedno zelo širok pojem dostopa, zato je v iskalnik dodatno vgrajen mehanizem
zamegljevanja podatkov (ang. data obfuscation). V tem primeru ima uporabnik dostop do podatkov, so
mu pa delčki prikriti (npr. osebni podatki uporabnika). Tako lahko nemoteno išče po podatkih, brez da
bi kršili prej naštete razloge za omejevanje dostopa do podatkov.
Krog zaščite dostopa do podatkov pa je sklenjen z revizijsko sledjo. Vsako iskanje se zabeleži v
revizijsko sled, ki je dostopna v administracijskem delu aplikacije. Dodatno lahko administrator sistema
enostavno ponovno zažene isto iskanje kot ga je zagnal uporabnik.
3.5. Retencija podatkov
Retencija podatkov predstavlja čas hranjenja podatkov pred izbrisom. Vsi podatki niso enaki, ampak se
lahko potrebe po izbrisu razlikujejo. Prednost indeksiranih podatkov je v tem, da jih v fazi obdelave
lahko opremimo s parametri na podlagi katerih lahko določimo čas hranjenja podatka na log natančno.
Tako lahko zagotovimo zakonsko skladnost kot tudi skladnost z različnimi standardi, ki se jih moramo
držati.
4. ZAKLJUČEK
V večje podjetje smo uspešno vpeljali centralni logirni sistem s poudarkom na iskanju po logiranih
podatkih. Odprtokodne komponente so se izkazale za zanesljive, fleksibilne in skalabilne tudi pod
velikimi obremenitvami sistema. Uporabnikom sistem omogoča iskanje po logiranih podatkih vseh
vključenih aplikacij v skoraj realnem času.
Ugotovili smo, da je uporaba odprtokodnih komponent dokaj enostavna. S stranko smo natančno
opredelili načine uporabe (njene potrebe), želen rezultat in možne tehnologije na vseh nivojih. Na
podlagi pridobljenih informacij smo izbrali ustrezne komponente in konfiguracija teh komponent, kar
zgradi sistem v fleksibilno in skalabilno celoto na vseh nivojih in nam daje dolgoročno vzdržnost
sistema.
128
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Polak in G. Slokan: Centralizacija logiranih podatkov z uporabo odprtokodnih rešitev za
upravljanje velikih količin podatkov
Kjer nismo našli ustrezne odprtokodne komponente smo razvili svoje rešitve v duhu celotnega sistema,
ki dopolnijo odprtokodne in jih ne omejujejo. Razvite komponente so vpeljale fleksibilnost, ki jo
potrebujemo (dograjevanje po potrebi s poslovno logiko stranke). V odprtokodnih komponentah smo se
raje držali sprememb konfiguracije in ne sprememb samih komponent.
V fazi načrtovanja vpeljave centralnega logirnega sistema smo naleteli na različne odzive. S strani
sistemskih administratorjev, ki bodo zadolženi za vzdrževanje sistema je bil izražen dvom o vzdržnosti
in uporabnosti sistema d(niso videli potrebe po centralnem logirnem sistemu in so bili zadovoljni z
obstoječim stanjem). Potencialni uporabniki iskalnika so bili navdušeni nad zmožnostmi več nivojskega
spletnega iskalnika, ki jim na enem mestu omogoča iskanje preko več aplikacij v skoraj realnem času.
Bili so skeptični o uspešnosti postavitve sistema zaradi preteklih neuspehov.
Po skoraj dveh letih uporabe je navdušenje nad sistemom vsestransko. Uporabniki v nekaj minutah
pridejo do informacij, za katere so prej porabili nekaj dni in z več iteracij preko različnih oseb.
Postavljen sistem trenutno deluje pod veliko obremenitvijo, je vzdržen in po potrebi razširljiv na vseh
nivojih.
Centralni logirni sistem uporabniki dojemajo skozi aplikacijo Iskalnik. Aplikacija Iskalnik je prej kot v
enem letu postala ena ključnih in nepogrešljivih aplikacij v podjetju.
5. LITERATURA
[1] https://syslog-ng.com/blog/why-logging-is-important/, Why logging is important?, obiskano
18.05.2018.
[2] https://www.techopedia.com/definition/1819/application-log, Application Log , obiskano
18.05.2018.
[3] https://www.medius.si/services/big-data-management/#logging, Slika arhitekture centralnega
logirnega sistema, obiskano 18.05.2018.
[4] https://flume.apache.org/, Apache Flume, obiskano 18.05.2018.
[5] https://searchdatamanagement.techtarget.com/definition/Hadoop-Distributed-File-System-HDFS,
Hadoop Distributed File System (HDFS), obiskano 18.05.2018.
[6] http://pramodgampa.blogspot.si/2013/08/hdfs-in-detail.html,
HDFS
Architecture,
obiskano
18.05.2018.
[7] https://blog.cloudera.com/blog/2013/07/morphlines-the-easy-way-to-build-and-integrate-etl-apps-
for-apache-hadoop/, Introducing Morphlines: The Easy Way to Build and Integrate ETL Apps for
Hadoop, obiskano 18.05.2018.
[8] https://intellipaat.com/tutorial/apache-solr-tutorial/apache-solr-cloud-architecture/, Apache Solr
Cloud Architecture, obiskano 18.05.2018.
[9] https://sematext.com/blog/solrcloud-distributed-realtime-search/, The New SolrCloud: Overview,
obiskano 18.05.2018.
[10] https://www.ip-rs.si/zakonodaja/reforma-evropskega-zakonodajnega-okvira-za-varstvo-osebnih-
podatkov/, Reforma evropskega zakonodajnega okvira za varstvo osebnih podatkov, obiskano
18.05.2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
CIVILIZACIJA DOBRIH SLABIH PROGRAMOV
MATEJ ŠPROGAR22
Povzetek: Računalniki so odvisni od programerjev, zato je obvladovanje
programerjev primarni cilj velikih korporacij. Programerji pričakujejo
vedno nove in udobnejše jezike tudi zaradi potrošniške iluzije, da je novo
nujno boljše od starega. Posledično se polenijo in s tem dejansko
pripomorejo k povprečnemu upadu znanja in širitvi slabih rešitev, ker
nekritična uporaba novega dejansko promovira slabe rešitve. Kritičnost je
mogoča samo, če imamo znanje in dostop do izvorne kode in ker tega ni, se
raven znanja samo še znižuje. Velike inovacije pri programiranju so že zelo
stare, moderna doba pa doživlja glavni problem predvsem v poplavi
kompleksnih tehnologij. Potrošniški ideali slabo vplivajo na povprečno
znanje programerjev, kar vodi do paradoksa slabšega programerja.
Prihodnost je lahko samo v rešitvah, ki bodo preproste in razumljive.
Ključne besede: • programski jeziki • programska orodja • kvaliteta kode •
paradoks slabšega programerja • znanje
NASLOV AVTORJA: dr. Matej Šprogar, docent, Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in
informatiko, Koroška cesta 46, 2000 Maribor, Slovenija, e-pošta: matej.sprogar@um.si.
DOI https://doi.org/10.18690/978-961-286-162-9.14
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
130
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Šprogar: Civilizacija dobrih slabih programov
1. UVOD
Ljudje smo vedno bolj le figurice, nujni statisti v igri neorgansko rastočega kapitala. Vsakodnevno
obstreljevanje z reklamami nam vsiljuje nove in nove izdelke in kot civilizacija smo posledično postali
dobesedno odvisni od (domnevnih) izboljšav. Dejansko stanje ocenjujejo za nas drugi, lastno mnenje je
postalo nepotreben in včasih celo nevaren luksuz, zgodovinski spomin se je skrčil na minimum. Vse to
vpliva tudi na razvoj v programskem svetu.
Na spletu je opazen trend pavšalnih komentarjev, kot "ta program je zastarel", "že pol leta ni bilo
commitov", "tega nihče več ne uporablja" ali pa "X je nov!", "Y bo rešil vse težave!" in "novi Z je revolucionaren!"... Vse to je slaba, a nujna posledica spremenjene miselnosti celotne generacije, ki
vpliva tako na stanje programske opreme kot tudi programskih jezikov.
S programiranjem se danes ubada ogromno ljudi, a komaj eno človeško življenje nazaj je bil na planetu
le en pravi "moderni" programer – oče računalnika Alan Turing. Ker je število programerjev drastično
narastlo, je povprečno znanje seveda upadlo. Tudi zato s(m)o izumljali nove in nove prijeme, a jih žal
večinoma ne uporabljamo za boljšo kodo, ampak več kode. Dejansko znajo v vsaki naslednji generaciji
programerji v povprečju manj, čeprav se zdi, da naredijo več. Je pa številčnost programerjev prinesla
nesluteno širino idej in svežine in z GNU/Linuxom celo dostojno alternativo profitno usmerjenim
korporacijam.
Vojna za denar pa se dejansko vrti okoli programerjev – kdor "ima" programerje, ima programe in kdor
ima programe, ima uporabnike. Današnji programerji zahtevajo in celo pričakujejo vedno bolj udobne
jezike in orodja tudi zaradi odseva splošne potrošniške iluzije, da je nov produkt nujno boljši od starega
– da je torej novejši prevajalnik že sam po sebi garant za kvalitetnejši program... Posledično se
programerji polenijo in s tem dejansko pripomorejo k povprečnemu upadu znanja in tudi širitvi slabih
praks: nek problem je vedno mogoče rešiti na več načinov, a razširila se žal ne bo najboljša rešitev,
ampak tista z največ reklame. Ko programer nekritično sprejme neko rešitev in jo (slepo) uporabi, jo
dejansko promovira! Ampak kritičnost je mogoča samo, če imamo znanje in dostop do izvorne kode;
ker pa je znanje omejeno in ker je mnogo kode licenčne in skrite, upada tudi nivo kritičnosti, kar spet
zniža raven znanja...
Kapital nujno potrebuje stabilno proizvodnjo, zato od nekdaj vzpodbuja načine, ki podpirajo spremembo
intelektualnega procesa programiranja v bolj obrtniško dejavnost. (Če bi to bilo mogoče, bi seveda lahko
program nadomestil programerja!) Programerji v posledično vedno bolj birokratsko vodenem okolju ne
delajo optimalno. Temeljni razkorak med programerji in uporabniki je skušal preseči agilni manifest iz
leta 2001, ki je lepo ubesedil težave tedanjih razvojnih praks. Ampak agilne ideje so dosegle resnični
preboj le na procesnem področju (Scrum), na tehnološkem (XP) pač ne. Posledica je bila razvodenitev
gibanja, nastanek novih iniciativ ("Software Craftmanship" 2009) in borba za XP nasledstvo.
2. PROBLEM CIVILIZACIJE
Elektronski računalnik je verjetno najpomembnejši izum moderne dobe, ki je tudi že postal temelj
obstoja civilizacije. Od skromnih začetkov do danes je doživel ogromno sprememb in izboljšav. Izjemen
napredek je bil dosežen tako na strojnem kot tudi na programskem področju, kar je dodatno povečalo
uporabnost in dostopnost računalniške tehnologije. Nujna posledica vsega tega je velika potreba po
programerjih, ki dejansko upravljajo računalnik. Profesionalno se s programiranjem danes ukvarja več
kot 22 milijonov programerjev [1], kar predstavlja enormno količino tako znanja kot neznanja. In seveda
tržni potencial, kar pomeni, da so programerji tudi ciljna skupina korporacij.
Denar v borbi za tržni delež ne izbira sredstev in v današnjem svetu so polresnice ustaljena praksa,
sprejemljive so postale celo laži in zavajanja. Učinkovito sredstvo prodaje je (umetna) iluzija, da je nekaj
boljše, lepše... Rezultat vsega tega je neizmerna množica oglaševano "novega", ki pa je pogosto zgolj
preoblečeno "staro", ali obljub, ki enostavno niso izpolnjene. (Lep primer tega je uspešno reklamiranje
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
131
M. Šprogar: Civilizacija dobrih slabih programov
Jave kot superiornega jezika [2].) Uradnim (reklamnim) virom tako ne moremo zaupati, večina ostalih
informacij pa je težko preverljivih ali subjektivnih. Paradoksalno imamo v času interneta preveč
informacij, ki zamegljujejo preprost dostop do kvalitetnega znanja; programiranje pa je dejavnost, ki
temelji na znanju.
2.1. Moderna doba
Moorov zakon ne opisuje več pravilno razvoja vedno manjših tranzistorjev z nižjo porabo energije in
višjo hitrostjo delovanja, kot je to okvirno veljalo celih 50 let. Zaostanek pri razvoju novih procesorjev
zahteva nove pristope k snovanju tako strojne kot tudi programske opreme [3]. Do takrat pa smo
obsojeni na praktično nepregledno mnogo "modernih" in "pošminkanih" ogrodij in jezikov...
Ampak velike revolucije v svetu programske opreme (prevajalnik, vse osnovne paradigme programskih
jezikov...) so vse že zelo stare, večina iz petdesetih, šestdesetih letih prejšnjega stoletja; zadnji je bil
svetovni splet skoraj 30 let nazaj. Od takrat pa vse do danes praktično ni bilo večjega kvalitetnega
preskoka, samo neskončna serija nadgradenj, izboljšav, preoblek in podvajanja. Danes nimamo
programskega orodja ali jezika, ki ne bi izhajal ali uporabljal principov in rešitev iz prvega obdobja
računalništva!
Tudi pomembna kasnejša odkritja na področju programiranja, na primer programski vzorci [4], niso
izumi, ampak empirična opažanja o lastnostih že udejanjenih programskih sistemov in arhitektur.
Dejansko so najboljši programerji preteklosti uspešno uporabljali vsa ta načela, le da jih niso
poimenovali. Dober programer bo nezavedno udejanil večino znanih programerskih priporočil, ker se
mu drugačna koda enostavno zdi napačna. In to je mogoče le, če programer razume problem, ki ga
rešuje, in če seveda obvlada tudi orodje (računalnik), ki ga pri tem uporablja.
2.2. Velika slika
In tukaj pridemo do osrednjega problema modernega časa: mladi programerji so podvrženi tolikšni
količini informacij, jezikov, ogrodij, orodij, tehnik, pravil, priporočil... da ne zmorejo več videti velike
slike. Posledično ne zmorejo doseči kvalitete v vseh njenih dimenzijah. Tipično trpi učinkovitost, ki je
v prvi vrsti odvisna od sposobnosti programskega jezika, da je hkrati blizu strojni opremi in hkrati
omogoča visoko stopnjo abstrakcije te iste strojne opreme [5]. Večina modernih jezikov tega enostavno
ne omogoča, nasprotno, to smatra kot nevarnost in posledično raje reklamira iluzijo nekega "boljšega"
virtualnega računalnika. Druga žrtev je ponavadi razumljivost, saj se vsi jeziki in ogrodja in knjižnice
prepogosto spreminjajo, kar praktično pomeni, da se mora začetnik naučiti tudi slabe "stare" sintakse,
ki je uradno že zastarela. Dodatno je večina ogrodij in celo nekaj jezikov v svoji želji, da bi skrili
podrobnosti delovanja pred uporabnikom, postalo netransparentnih. In kako razumeti kodo, ki ni vidna?
Nerazumljiva koda pa je začetek konca.
3. TEHNIČNI IN DRUGI RAZLOGI
Moderno zavijanje programerjev v vato, ponujanje prekomerne pomoči (razvojno okolje resda lahko
občutno pomaga, ampak nekje je meja, ko ta pomoč postane škodljiva za programerjevo znanje, ga
uspava) in preveč sposobnih pripomočkov (ko se vse "nekako" zgodi samo od sebe) preprečujejo, da bi
se programer dejansko naučil obvladati računalnik. Vzporednico bi lahko potegnili ali z vzgojo
razvajenega in posledično nesamostojnega otroka ali s pilotom, ki ne zna več pristati brez elektronske
pomoči.
Stvari, ki vplivajo na sposobnosti programerjev, so vse tako prepletene, da je nemogoče izpostaviti le
eno. Tukaj se bom osredotočil na poplavo prekompleksnih tehnologij, ki nujno zahtevajo specializirana
znanja, ki pa jih je pravzaprav težko pridobiti zaradi poplave dezinfomacij modernega časa.
132
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Šprogar: Civilizacija dobrih slabih programov
3.1. Preobilica in potrošniška mrzlica
Včasih je bil dostop do strojne opreme omejen v tej meri, da se je bil programer prisiljen močno poglobiti
v program in se "pripraviti" na izvedbo. Hkrati je imel na razpolago le omejeno število orodij, ki pa jih
je v osnovi zato obvladal in iz njih iztisnil maksimum.
Danes je obratno – svetovni splet je praktično neobvladljivo velika veleblagovnica, kjer so po policah
razmetana programerska orodja na razpolago za takojšnji nakup, vse ovito v bleščeč reklamni papir, ki
pa samo prikriva vsebino. Programski jeziki se pravzaprav prodajajo kot zelenjava, vsak dan sveža! Pa
ni tako preprosto. Odločitev je namreč izrazito daljnosežna in bo izredno pomembno krojila
programerjevo prihodnost in njegovo znanje. Dejansko programer ne "kupi" izdelka, ampak izdelek
"ulovi" programerja!
3.2. Poplava dezinformacij
Pravzaprav je dostop do znanja omejen bolj, kot si domišljamo. Javne šole in univerze so resda vir
znanja za vse, ampak vsebina, ki jo ponujajo, tudi postaja vedno bolj žrtev dobičkonosne miselnosti
moderne dobe – pomembno je, kaj se "prodaja", da je všečno, novo, lepo, bleščeče... Posledično večina
študentov namesto učenja skozi knjigo (dolgočasno, zastarelo, počasno) izbere raje lažjo pot spletnih
mnenj in tutorialov. Spletno znanje je postalo moderni programerski učbenik, ki pa ima neskončno
strani. Težava sedaj ni v dostopu, ampak v filtriranju. Za iskanje po spletu dandanes seveda poskrbi
Google. Kot preprost primer si poglejmo Googlov odgovor na relativno popularno vprašanje o
prihodnosti funkcijskih (FP) in objektno-usmerjenih (OO) programskih jezikov:
Poizvedba "functional vs oop" na Googlu vrne 689.000 rezultatov s prvim zadetkom na blog
codenewbie.org [6], kjer je avtor B. Gathen leta 2015 predstavil in s primeri v Ruby-ju podkrepil svoje
stališče, da je izbira FP ali OOP odvisna od problema, ki ga rešujemo. Kar je vsaj na prvi pogled dokaj
neinformativno (in zatorej nekoristno) stališče.
Drugi zadetek prihaja iz portala Medium.com in je praktično povzetek prvega zadetka, z vsebinsko
istim(!) primerom, le da brez kode. Tretji je prav tako iz portala Medium, le da sedaj avtor daje bolj
specifične nasvete za izbiro med OO in FP, spotoma subtilno preferira Scalo pred Javo in šele v
zaključku omeni, da se paradigmi ne izključujeta in da ju torej lahko kombiniramo, pač odvisno od
potreb.
Četrti zadetek [7] je iz portala Stack Overflow (kjer je bila nit zaprta po 7 letih zaradi subjektivnosti
odgovorov), ki tudi vzpodbuja razlikovanje med primernostjo FP in OO. Peti zadetek na
Raganwald.com iz leta 2013 pravzaprav nasprotuje sam sebi ko trdi, da pri poslovnih aplikacijah
dominirajo funkcije in ne objekti zaradi funkcijske narave samega SQL-a!?
Šele šesti zadetek [8] na Oreilly.com nas usmeri na poročilo R. Walburtona, ki je posvečeno ravno temu
vprašanju. Tam že v uvodu jasno piše, da gre pri izbiri med OO in FP pravzaprav le za mnenjsko vojno
in da izbira ni izključujoča.
Kaj je torej tako problematičnega v mnenju, da je izbira med OO ali FP problemsko odvisna? Odgovor
sam po sebi ni napačen, problematično je pa to, kar NI povedano, ampak je bralcu posredno sugerirano.
Čeprav izbira med OO in FP sploh ni potrebna (ti dve paradigmi se med seboj lahko lepo dopolnjujeta
oziroma jih spreten programer odlično kombinira), bo neinformiran bralec (začetnik) vseeno zaključil,
da se koncepta izključujeta. Ker zakaj bi se sicer sploh toliko člankov ubadalo z vprašanjem OO vs
FP?!!!
Pomembna pa ni toliko debata OO vs FP, ampak razmislek, zakaj pride do tega, da slabi odgovori
splavajo na vrh iskalnih zadetkov. Dejansko sta razloga dva: (1) Google ne razume objavljenih vsebin
in jih pač indeksira po nekih sintaktičnih merilih; in (2) Google sam vpliva na svoje rezultate. Dejstvo,
da je bil "pravilen" šele 6. zadetek, je pripeljalo do tega, da je Google postal ojačevalec javnega mnenja.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
133
M. Šprogar: Civilizacija dobrih slabih programov
Prvi zadetek na Googlu namreč pomeni večjo prepoznavnost, kar spet pripomore k boljšemu SEO
rezultatu... Konec koncev se stran vzpenja v indeksu ravno s številom ljudi, ki jo citirajo od zunaj, ki ji
torej "verjamejo". In višje kot je stran na Googlu, bolj ljudje verjamejo, da je vsebina resnična in
kvalitetna in da se ne "splača" gledati nižje po seznamu. Na vrhu Googla je pa "itak" sveta resnica, sicer
bi jo že zdavnaj razkrinkali! Posledično je zatajil tudi StackOverflow, ker je večina ljudi že kupila
prepričanje, ki ga je pravzaprav vsilil Google in je tako v dobri veri, da izbira prav, podprla slabši
odgovor. Dejansko je prišlo do pojava samoojačevalne zanke, ko visokoležeč odgovor kotira vedno više
zgolj zato, ker je že sicer visoko.
3.3. Kompleksnost
In tudi če se mlad programer znajde v tej poplavi podatkov in uspe izluščiti koristne informacije, je pred
njim še vedno izziv kompleksnosti. Kompleksni problemi namreč zahtevajo izredno specifična znanja
in tesno sodelovanje mnogih ekspertov, dodatno pa postaja tudi kompleksnost današnjih programerskih
orodij tolikšna, da so neobvladljiva brez (spet) kompleksnih razvojnih okolij in procesov. Kar
predstavlja veliko težavo za začetnika.
Ironično je, da je bila kompleksnost problematizirana že davno nazaj, pa je od takrat samo še rastla.
Rešitve, ki so se nalašč reklamirale kot manj kompleksne, pa so s svojim nastankom postale del
problema množičnosti; in danes so vse, ki so preživele, močno prerastle svoje začetne okvirje ali kako
drugače poteptale lastne korenine (ker vsi dobri programski jeziki prej ali slej prerastejo svoje prvotne
okvirje [9]). Kompleksnost je namreč nujna slaba lastnost modernega programja, saj produkt, ki nečesa
ne omogoča, ne "preživi" spletne kritike, ki usmerja javno mnenje. In spletna kritika je izredno
neinformirana in pristranska... Preobilica funkcionalnosti programerskih orodij povzroči, da povprečen
programer uporablja in resnično pozna zgolj del(ček) sposobnosti svojih orodij.
3.4. Produktivnost in specializacija
Prevelika količina (ne)znanja, ki ga mora obvladati mlad programer, preprečuje, da bi lahko v svojih
najbolj produktivnih letih pisal res kvalitetno kodo. Ker pa mora (žal) producirati čim več v čim manj
časa, se zateče k jezikom in orodjem, ki omogočajo večjo produktivnost. Oziroma ga v to prisilijo,
priučijo...
Večja produktivnost (z manj kode) je mogoča samo, če uporabimo ali specializiran ali kako drugače
prilagojen programski jezik, ogrodje... Skladno z No Free Lunch teoremom [10] pa moramo nekje
plačati ceno za to "ugodnost" in to je ponavadi ali pri učinkovitosti ali funkcionalnosti kode. V večini
primerov to ni težava ali pa programerji rešujejo novo pomanjkljivost kako drugače (več procesorjev,
pomnilnika...). Šele če to ni mogoče ali je vsaj zelo težko, opazimo, da smo zašli v ozko in slepo ulico
in da ravno zaradi specializacije nimamo širokega znanja, ki je sicer nujno potrebno za rešitve izven
tradicionalnih, specializiranih okvirjev.
3.5. Ko orodje postane cilj
Žal se tudi na vseh ravneh pojavlja fenomen, ko sintaksa pričenja nadvladovati semantiko, ko postaja
orodje pomembnejše od produkta, proces pomembnejši od izdelka: miselnost, da če "uporabljamo"
Scrum, Javo, Maven, jMock, git... ne samo, da bomo končali pravočasno, naredili bomo tudi boljši
izdelek kot sicer! Problem so pravzaprav vse dobronamerne ideje, ki se osredotočajo izključno na proces
in zapostavljajo programiranje. Nobena od prej naštetih ali drugih stvari ni slaba sama po sebi, dejansko
so izredno koristne. Problematično pa je neskočno kombiniranje in vpeljava novih in novih magičnih
strategij in s tem delanje megle okoli dejanskega problema. Dogaja se, da naše (ne)znanje orodij usmerja
naš način razmišljanja, načrtovanja rešitev ter s tem praktično definira rešitev [11]. Začetniki pogosto
uporabljajo neko tehniko zgolj zato, ker je na voljo, in ne zato, ker bi bila optimalna za njihov problem.
4. USODA GENERACIJE
Glede na vse našteto ni čudno, da je veliko mladih programerjev še vedno prepričanih, da obstajajo
boljši in slabši jeziki, da so primerjave smiselne in njihovi rezultati pravilni in relevantni. Ampak šele
134
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
M. Šprogar: Civilizacija dobrih slabih programov
izkušnje nas naučijo, da je za vsak problem potrebno svoje orodje in da idealen programski jezik ne
obstaja; nasprotno, dober programer pač pozna več jezikov, predvsem pa računalnik.
Ampak rastoča množica "novincev" dejansko ustvarja in usmerja javno mnenje in s tem prihodnost
branže (v smislu medtem ko pametni razglabljajo, nori zavzamejo trdnjavo). Industrija namreč vidi tržni
potencial v veliki količini neizoblikovanih programerjev, ki zaradi bolezni časa pričakujejo, da se bo
delo nekako naredilo samo in so v toliko "lačni" novih magičnih rešitev. Posledično industrija in
programerji sami lansirajo nove in nove stvari in s tem samo še poslabšajo že tako kaotične razmere.
Jutrišnja generacija pa bo morala živeti in vzdrževati današnjo kodo, kodo, ki prihaja z vedno večjim
tehničnim dolgom. Dejansko prihajamo do paradoksa slabšega programerja: ko bi naj težave
preteklosti v povprečju reševal programer, ki je slabši od programerja, ki je težave sploh povzročil!
4.1. Inflacija kode
Podobno, kot se tehnični dolg pogosto predstavlja v obliki finančnega dolga in obresti, ki jih je potrebno
prej ali slej plačati, lahko preobsežno in prekompleksno kodo magičnih jezikov in ogrodij smatramo kot
preveč natiskanega denarja, kar povzroči inflacijo in potrebo po še več kode...
Rešitev iz te neskončne zanke je v širitvi znanja, ki edino omogoča nastanek kvalitetne kode. Znanje
mora biti podano v nezamegljeni obliki, to je v obliki kvalitetne delujoče kode. Kar pomeni, da je dostop
do dobre delujoče kode edini pravi način učenja. Utopija, da bo vsa koda kdaj na voljo v resnično prosti
obliki (Free Source), je danes bliže kot kadarkoli, dejansko smo že na točki, ko vse velike korporacije
objavljajo svojo kodo pod bolj omejenimi pogoji odprte kode (Open Source).
4.2. Prihodnost je v enostavnosti
Upanje, da bo prihodnost bolj svetla, kot se mogoče zdi iz zgoraj povedanega, izhaja iz tega, da na dolgi
rok slabe rešitve vedno propadejo, dobre pa še pridobijo na kvaliteti. Kriterij za to selekcijo, ki se je
znova in znova potrdil v praksi, je enostavnost. Dokler bo človek glavni vir programske kode, bo le z
obvladljivimi orodji in kodo mogoče producirati kvalitetne rešitve z minimalnim tehničnim dolgom.
Obvladljivost pa je sorazmezna z razumljivostjo in kompaktnostjo kode, skratka z njeno enostavnostjo.
Prihodnost ni v uporabi novih in novij orodij in jezikov, ki naj bi rešili stare težave, ampak v
poenostavitvi obstoječih programerskih orodij, ker je trajnostno gledano to edina rešitev, ki reši prej
omenjeni paradoks slabšega programerja. Tudi žal ne moremo zaupati vsemu, kar je reklamirano kot
enostavno, ker pravi test je edinole test časa.
5. LITERATURA
[1] https://evansdata.com/reports/viewRelease.php?reportID=9,
Global Developer Population and Demographic Study 2017 Vol. 2, obiskano 14.5.2018.
[2] GOSLING James, MCGILTON Henry "The Java Language Environment: A White Paper", Sun
Microsystems Computer Company, 1995.
[3] rebootingcomputing.ieee.org, IEEE Rebooting Computing Initiative, obiskano 10.5.2018.
[4] GAMMA Erich, HELM Richard, JOHNSON Ralph, and VLISSIDES John "Design Patterns:
Elements of Reusable Object-Oriented Software", Addison-Wesley Longman Publishing Co., Inc.,
Boston, MA, USA, 1995.
[5] STEPANOV Alexander "Notes on Programming", 2006.
[6] www.codenewbie.org/blogs/object-oriented-programming-vs-functional-programming,
Object Oriented Programming vs. Functional Programming, obiskano 7.5.2018.
[7] stackoverflow.com/questions/2078978/functional-programming-vs-object-oriented-programming,
Functional programming vs Object Oriented programming [closed], obiskano 7.5.2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
135
M. Šprogar: Civilizacija dobrih slabih programov
[8] www.oreilly.com/programming/free/object-oriented-vs-functional-programming.csp,
WARBURTON Richard "Object-Oriented vs. Functional Programming - Bridging the Divide
Between Opposing Paradigms", O'Reilly ebook, dostopano 7.5.2018.
[9] http://www.stroustrup.com/bs_faq.html#understand, STRUSTRUP Bjarne "Did you really not
understand what you were doing?", FAQ, obiskano 10.5.2018.
[10] WOLPERT David H., MACREADY William G. "No Free Lunch Theorems for Optimization",
IEEE Transactions on Evolutionary Computation 1, 67, 1997
[11] BROOKS Rodney A. "Intelligence without reason" In Proceedings of the 12th international joint
conference on Artificial intelligence - Volume 1(IJCAI'91), John Mylopoulos and Ray Reiter (Eds.),
Vol. 1. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 569-595, 1991.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
DRUŽINSKO CENTRIČNA ZASNOVA SPLETNE
APLIKACIJE MYFAMILY
VID ČERMELJ, JURE TRILAR, VERONIKA ZAVRATNIK IN EMILIJA STOJMENOVA DUH23
Povzetek: V prispevku je predstavljen razvoj in testiranje interaktivnega
prototipa aplikacije MyFamily, ki je bila razvita v projektu RRP3 Aktivno
življenje, dobro počutje, ki se izvaja v okviru programa EkoSmart. Namen
aplikacije je spodbujanje aktivnega življenja med družinskimi člani.
Namenjena je poenostavljeni komunikaciji med družinskimi člani,
obveščanju o aktivnostih in doseganju skupnih ciljev. Predstavili smo
tehnologijo in arhitekturo aplikacije ter postopek uporabniškega testiranja
grafičnega vmesnika in funkcionalnosti aplikacije. V okviru razvoja smo
izvedli več anket in intervjujev, s katerimi smo poskušali ugotoviti, kako
družinske člane čim bolj motivirati za uporabo aplikacije. Za testiranje
uporabnosti in uporabniške izkušnje aplikacije smo izvedli uporabniško
testiranje. Rezultate testiranja smo podrobno analizirali in jih predstavili v
prispevku.
Ključne besede: • aktivno življenje • uporabniško testiranje • razvoj spletne
aplikacije • interaktivni prototip • uporabniško usmerjen razvoj
NASLOV AVTORJEV: Vid Čermelj, Univerza v Ljubljani, Fakulteta za elektrotehniko, Tržaška cesta 25, 1000
Ljubljana, Slovenija, e-pošta: vid.cermelj@ltfe.org. univ. dipl. soc. Jure Trilar, Univerza v Ljubljani, Fakulteta za
elektrotehniko, Tržaška cesta 25, 1000 Ljubljana, Slovenija, e-pošta: jure.trilar@ltfe.org. mag. etn. in kult. antrop.
Veronika Zavratnik, Univerza v Ljubljani, Fakulteta za elektrotehniko, Tržaška cesta 25, 1000 Ljubljana,
Slovenija, e-pošta: veronika.zavratnik@ltfe.org. doc. dr. Emilija Stojmenova Duh, Univerza v Ljubljani, Fakulteta
za elektrotehniko, Tržaška cesta 25, 1000 Ljubljana, Slovenija, e-pošta: emilija.stojmenova@ltfe.org.
DOI https://doi.org/10.18690/978-961-286-162-9.15
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
137
V. Čermelj, J. Trilar, V. Zavratnik in E. Stojmenova Duh: Družinsko centrična zasnova
spletne aplikacije MyFamily
1. UVOD
Tehnologija je v današnjem času vse bolj prisotna in predstavlja vedno večji del našega vsakdana.
Kamor koli gremo, se ne moremo izogniti uporabi različnih tehnologij. Smiselno je združevanje
funkcionalnosti, ki jih posamezne tehnologije nudijo, z namenom, da nam postanejo še bolj v pomoč.
Na evropskem programu EkoSmart razvijamo rešitve, ki bodo to omogočile. Univerza v Ljubljani s
številnimi slovenskimi podjetji in ustanovami razvija sistem pametnega mesta z vsemi podpornimi
mehanizmi, ki so potrebni za učinkovito optimizirano in postopno integracijo posameznih področij v
enovit in povezan sistem vrednostnih verig.
Program se osredotoča na tri ključne domene pametnega mesta. To so: zdravje, aktivno življenje in
mobilnost. Program EkoSmart sestavlja šest projektov, ki vsak na svoj način prispevajo k uresničevanju
vizije programa. Aplikacija MyFamily spada v področje aktivnega življenja in je bila razvita v okviru
projekta RRP324 Aktivno življenje, dobro počutje.
V prispevku so predstavljeni cilji in potek projekta RRP3 po posameznih sklopih ter pridobljeni
rezultati. Podrobneje je predstavljen razvoj interaktivnega prototipa aplikacije MyFamily, ki je bila
razvita v sklopu projekta. Aplikacijo smo testirali z uporabniki, ki so po koncu uporabniškega testiranja
rešili tri vprašalnike.
2. IDEJA IN CILJI APLIKACIJE MYFAMILY
Obstoječa rešitev 24aLife, ki usmerja uporabnike k zdravemu življenjskemu slogu, je namenjena štirim
ciljnim skupinam: odraslim rekreativcem, zaposlenim v podjetjih, fitnes centrom in starostnikom. V
projektu RRP3 smo prepoznali potrebo po nadgradnji te aplikacije z rešitvami za aktivno življenje in
dobro počutje družine kot modela trajne in intimno povezane skupnosti, v obliki prototipne rešitve
MyFamily.
Aplikacija MyFamily bo v ekosistemu EkoSmart omogočala večjo povezanost družine, boljšo
komunikacijo med družinskimi člani ter spodbujala bolj dejavno in kakovostno preživljanje skupnega
družinskega časa.
Ključni cilji projekta so:
Identificirati potrebe uporabnikov (družinskih članov).
Opredeliti koncept delovanja aktivne in zdrave družine v pametnem mestu.
Identificirati mehanizme za spodbujanje aktivnega in zdravega življenja družin v pametnem mestu.
Izdelati načrt funkcionalnosti za delovanje aktivne in zdrave družine v pametnem mestu.
Razviti prototipe storitev in rešitev za preizkušanje v laboratorijskem okolju.
3. RAZVOJNE FAZE APLIKACIJE MYFAMILY
Projekt Aktivno življenje, dobro počutje se je začel avgusta 2016. Za lažje doseganje zastavljenih ciljev
je bilo delo na projektu razdeljeno na pet delovnih paketov razloženih v tem poglavju. Paketi so bili
izpolnjeni po vrsti. Trenutno v projektu prehajamo na zadnji delovni paket, kjer bomo interaktivni
prototip aplikacije MyFamily povezali v integracijsko platformo ekosistema EkoSmart.
3.1. Analiza uporabniških navad v družinah
Pri načrtovanju in razvoju novih izdelkov se podjetja prepogosto osredotočajo na poslovne cilje,
napredne lastnosti in funkcionalnosti ter tehnološke zmogljivosti programske in strojne opreme. Pri
načrtovanju pristopov pa pozabljajo na ključen del načrtovanja, saj spregledajo končnega uporabnika.
2 RRP3 – Raziskovalno-razvojni projekt številka 3 z imenom Aktivno življenje, dobro počutje
138
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
V. Čermelj, J. Trilar, V. Zavratnik in E. Stojmenova Duh: Družinsko centrična zasnova
spletne aplikacije MyFamily
V projektu smo rešitve in storitve reševali s pristopom usmerjenim k ljudem25. V vsaki fazi njegovega
razvoja in izdelave smo veliko pozornosti namenili potrebam, željam, zahtevam in omejitvam
uporabnikov izdelka. Namen prvega delovnega paketa je bilo razumevanje načina življenja, potreb in
želja končnih uporabnikov. Za lažjo izvedbo raziskave je bila razvita spletna anketa z 32 glavnimi
vprašanji ter s podvprašanji, ki obsegajo tematske sklope: demografija, oblika gospodinjstva, delitev
dela, skupno preživljanje časa, uporaba sodobnih tehnologij, zdravje in skrb za družinske člane,
organizacija časa ter skupni cilji. Anketa je bila izvedena spomladi 2017, sodelovalo je 101
anketirancev, večino so predstavljali starši (71%), otroci le manjši delež (27%), stari starši pa v anketi
skoraj niso bili zajeti (2%).
S pomočjo rezultatov ankete smo bolje razumeli mentalne modele uporabnikov. Pomagali so uskladiti
konceptualni model za načrtovanje sistema z mentalnim modelom končnih uporabnikov.
3.2. Opredelitev konceptualnega modela za načrtovanje sistema
V drugem delovnem paketu smo preučevali delovanje članov znotraj družine, njihove medsebojne
odnose in povezljivost za aktivno življenje. Raziskovali smo razmerje med družino in pametnim mestom
in s tem pridobili boljše razumevanje vloge družine in potreb njenih članov.
Ugotovili smo, da se družine spopadajo s težavami, ki bi jih inovativne IKT rešitve lahko močno olajšale
in posledično razbremenile družine. S primernimi aplikacijami lahko družinam zagotovimo boljšo
organiziranost, povezanost in informiranost, kar vodi do manjšega stresa in več prostega časa za skupno
druženje. Poleg tega lahko z aplikacijami spodbujamo zdrav življenjski slog na vseh nivojih.
3.3. Mehanizmi za vzpodbujanje aktivnega zdravega življenja v družini
Pomanjkljivost velikega dela IKT rešitev, ki vzpodbujajo zdrav življeni slog, je pomanjkanje
mehanizmov za dolgoročno in vzdržno motiviranje uporabnikov. Družina je s socio-psihološkega
stališča kompleksen subjekt za motiviranje. Posebej zahtevno je oblikovanje pristopov, ki družinske
člane spodbujajo k zdravemu življenjskemu slogu. Že uveljavljeni motivacijski mehanizmi so:
določanje in spremljanje doseganja skupnih ciljev, skupnih izzivov, nagrajevanja ter možnost
spodbujanja s t.i. resnimi igrami.
V tem delovnem paketu smo se ukvarjali z iskanjem primernih motivacijskih mehanizmov. V analizi
najnovejših raziskav in konkurenčnih motivacijskih modelov na trgu smo ugotovili, katere so bistvene
lastnosti, ki jih imajo uspešni mehanizmi. Ugotovili smo, da je notranja motivacija pomembnejša od
zunanje. Zunanja je lahko večkrat kratkoročno uspešna, vendar pa za razvoj dolgotrajnejših navad
potrebujemo notranjo. Eden izmed osnovnih mehanizmov zunanje motivacije je nagrajevanje. V
primeru da ljudje spremenijo svoje vedenje na podlagi nagrajevanja, po zaključku le tega to navado
opustijo.
Pomemben motivacijski mehanizem je pripadnost. To je osnovna človekova potreba, ki lahko vzdržuje
motivacijo. Vključuje povezovanje z drugimi glede na skupni cilj ali skupino, ki ji pripada. Če
posamezniki čutijo, da s svojim sodelovanjem pomagajo, je to lahko ključnega pomena za motivacijo.
Posamezni člani skupine lahko druge spodbujajo, jim pomagajo ali postanejo njihovi mentorji.
V aplikaciji je glavni motivacijski mehanizem pripadnost družini. Člani družine lahko dodajajo naloge
in jih skupaj izpolnjujejo. Za izpolnjeno nalogo dobijo določeno število točk, ki so del sistema
nagrajevanja.
3 Pristop usmerjen k ljudem – angl. "human-centered design"
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
139
V. Čermelj, J. Trilar, V. Zavratnik in E. Stojmenova Duh: Družinsko centrična zasnova
spletne aplikacije MyFamily
3.4. Načrtovanje funkcionalnosti
V prejšnjih delovnih paketih smo raziskovali različna področja, s pomočjo katerih smo dobili
informacije, ki smo jih uporabili pri načrtovanju funkcionalnosti aplikacije. V četrtem delovnem paketu
smo najprej pripravili specifikacije posameznih funkcionalnih modulov ter prioritetno listo za
implementacijo, nato pa smo določili tudi specifikacije posameznih modulov, ki še niso bili definirani
v okviru drugih področnih rešitev.
Specifikacije smo začeli testirati z zasloni. Na sliki 1 in sliki 2 so osnovni štirje zasloni aplikacije.
Opazovali smo prijaznost do uporabnika in uporabniško izkušnjo. Ugotovitve smo upoštevali v
implementaciji interaktivnega prototipa.
Slika 1. Zaslon s koledarjem (levo). Zaslon s cilji (desno).
Slika 2. Zaslon z nalogami (levo). Osnovni zaslon (desno).
3.5. Razvoj storitev in rešitev
Zadnji delovni paket bo namenjen integraciji s platformo EkoSmart z že obstoječo aplikacijo 24aLife.
Izbrane funkcionalne module aplikacije MyFamily bomo najprej povezali z rešitvijo 24aLife. Nato
bomo obe aplikaciji povezali s platformo EkoSmart. V prejšnjem delovnem paketu smo ta povezovanja
nakazali v prototipih, v tem pa jih bomo tudi izvedli. Po implementaciji povezav bo prototip pripravljen
na testiranje, ki ga bomo najprej izvedli v laboratorijskem okolju, nato pa še v realnem operativnem
okolju pri posameznih družinah.
140
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
V. Čermelj, J. Trilar, V. Zavratnik in E. Stojmenova Duh: Družinsko centrična zasnova
spletne aplikacije MyFamily
4. RAZVOJ INTERAKTIVNEGA PROTOTIPA APLIKACIJE MYFAMILY
V tem poglavju je predstavljen razvoj interaktivnega prototipa. Predstavljena je arhitektura aplikacije,
uporabljene tehnologije in izkušnje z njimi ter grafični vmesnik aplikacije.
4.1. Arhitektura in uporabljene tehnologije
Aplikacijo smo razvijali s tehnologijami MongoDB, Express in Node.js, ki jih najdemo v MEAN
svežnju26. Namesto Angular ogrodja27 smo uporabili jezik za avtomatsko generiranje predlog28 EJS [3].
Za uporabo EJS smo se odločili, ker je bolj preprost za impementacijo kot Angular ter ponuja vse
funkcionalnosti, ki jih potrebujemo v naši aplikaciji.
4.1.1.
Zaledni del
Na strežniškem delu smo uporabili tehnologijo Node.js z ogrodjem4 Express. Aplikacijo smo zasnovali
tako, da jo je preprosto vzpostaviti tudi v oblaku. Med uporabniškim testiranjem smo aplikacijo prenesli
na Heroku [4], podatkovno bazo aplikacije pa smo vzpostavili pri spletnem ponudniku mLab [5].
4.1.2.
Podatkovna baza
Za uporabo mongoDB smo se odločili, ker je sestavljena iz dokumentov, ki jih je preprosto prejemati in
pošiljati. V ekosistemu EkoSmart se bodo aplikacije pogovarjale med seboj, zato je pomembna hitra in
preprosta komunikacija. To najhitreje dosežemo z dokumenti.
Glavna težava, ki smo jo imeli pri načrtovanju baze, je bila shranjevanje podatkov o družini. Družino
lahko v bazo zapisujemo na dva načina, statično ali dinamično. V dinamičnem načinu se družina
sestavlja tako, da je uporabnik vedno v središču. To pomeni, da kot uporabnik lahko dodamo/odstranimo
člane družine. Družina se gradi dinamično glede na uporabnika. Ta način ne omogoča, da bi imeli več
različnih družin.
Statičen način ima v središču družino. Vsi uporabniki lahko dodajajo nove člane v družino in imajo
enake pravice. Ta način omogoča uporabniku članstvo v več družinah hkrati.
Dinamičen način nam omogoča gradnjo socialnega omrežja, vendar ni primeren za našo aplikacijo.
Naloge in cilji, ki jih lahko člani družine dodajajo so vidni vsem članom, kar je v primeru dinamičnega
shranjevanja slabo, saj lahko uporabniki, ki se med seboj ne poznajo, vidijo medsebojne naloge. Zato
smo se odločili za statičen način shranjevanja. Ob registraciji se uporabniku ustvari nova družina, s
povabilom se lahko pridruži drugim družinam oziroma lahko druge uporabnike povabi v svojo družino.
4.1.3.
Uporabniški del
Uporabniški del aplikacije smo zasnovali na podlagi ugotovitev iz raziskav, ki smo jih izvedli pred
začetkom razvijanja interaktivnega prototipa. Aplikacijo smo oblikovali v skladu z Google Material
Design standardi [6]. Za lažji in hitrejši razvoj smo uporabili njihovo implementacijo tega standarda
imenovano Material Design Lite [7]. Uporabili smo jezik za označevanje nadbesedila (HTML29) in
kaskadne stilske predloge (CSS30). Za dinamičnost strani smo poskrbeli z uporabo EJS in jQuery [8].
Elemente uporabljene v slikah zaslonov smo v prototipu prilagodili standardu Material Designa. Za
potrebe novih funkcionalnosti smo dodali nove elemente, ki jih ni bilo v zaslonih.
26 Sveženj – angl. "stack"
27 Ogrodje – angl. "framework"
28 Jezik za avtomatsko generiranje predlog – angl. "templating engine"
29 HTML – Hyper Text Markup Language
30 CSS – Cascading Style Sheets
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
141
V. Čermelj, J. Trilar, V. Zavratnik in E. Stojmenova Duh: Družinsko centrična zasnova
spletne aplikacije MyFamily
.
Slika 3. Stran z nalogami (levo). Uvodna stran (desno).
Slika 4. Stran z cilji (levo). Stran z koledarjem (desno).
Na levi strani slike 3 je stran z nalogami. Izris in iskanje po nalogah je zelo podobno tistemu, ki je bilo
predstavljeno na zaslonu nalog. Na desni strani slike je prikazana stran s pregledom. Za takšno
poimenovanje smo se odločili, ker se je ime »Dashboard« zdelo testirancem neustrezno, saj je ta beseda
angleška v sicer slovenski aplikaciji.
Na levi strani slike 4 je prikazana stran z cilji. Stran je podobna tisti, ki je bila predstavljena v zaslonih.
Spremenjen je prikaz ciljev. Ti so razdeljeni na cilje, ki jih je še potrebno opraviti ter na že opravljene
cilje. Na desni strani je prikazana stran z koledarjem. Stran je vizualno malo drugačna, funkcionalnosti
pa so enake kot so bile zastavljene v zaslonih.
5. UPORABNIŠKE MERITVE
Pri testiranju uporabniške izkušnje in uporabnosti aplikacije smo uporabili različne meritve, ki so se
nanašale na uspešnost uporabnika, merjene glede na specifične cilje uspešnosti, ki so potrebni za
142
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
V. Čermelj, J. Trilar, V. Zavratnik in E. Stojmenova Duh: Družinsko centrična zasnova
spletne aplikacije MyFamily
izpolnjevanje zahtev uporabnikov. Uporabili smo stopnjo uspešnosti zaključka scenarija, zapiske
pogovorov, stopnje napak in subjektivno oceno. Zbirali smo tudi podatke o času, potrebnem za
opravljanje scenarijev, ki so vključevali subjektivno vrednotenje.
5.1. Zaključek scenarija
Vsak scenarij je od udeleženca zahteval, da izpolni tipično nalogo. Scenarij je bil zaključen, ko je
udeleženec pokazal/navedel, da je bil cilj scenarija dosežen (uspešno ali neuspešno) ali če je udeleženec
zahteval in prejel zadostne napotke, ki opravičujejo točkovanje scenarija kot kritično napako.
5.2. Kritične in nekritične napake
Kritične napake so odstopanja od cilja scenarija ob njegovem zaključku. Poročanje o napačni vrednosti
podatkov zaradi napačnega toka akcij udeleženca je kritična napaka. Udeleženci se lahko zavedajo ali
pa ne, da je cilj naloge nepravilen ali nepopoln.
Nekritične napake so napake, ki jih udeleženec popravi/obnovi, ali napake, ki, če jih udeleženec ne
zazna, ne povzročajo težav pri obdelavi ali nepričakovanih rezultatov. Čeprav lahko nekritične napake
ostanejo udeležencu skrite, pa so v primeru, da jih udeleženec odkrije, zanj ponavadi neprijetne.
5.3. Subjektivne ocene
Subjektivne ocene glede enostavnosti uporabe in zadovoljstva smo zbirali s pomočjo vprašalnikov ter
prek polstrukturiranih intervjujev. Vprašalniki so vsebovali nestrukturirane odgovore in ocenjevalne
lestvice.
5.3.1.
NASA TLX
Orodje NASA-TLX31[9] smo uporabili za ocenjevanje delovne obremenjenosti ter s tem ocenili
učinkovitost naloge. Vprašalnik se osredotoča na mentalno zahtevnost, fizično zahtevnost, časovno
zahtevnost, trud, izvedbo in nivo frustracije.
5.3.2.
UEQ
Vprašalnik UEQ32[10] smo uporabili neposredno po uporabi aplikacije, preden udeleženec govori z
drugimi udeleženci, saj je njegov namen ujeti takojšnji vtis. Gre za orodje, ki ocenjuje uporabniško
izkušnjo pri čemer se osredotoča na privlačnost, jasnost, zanesljivost, spodbudo in novosti aplikacije.
5.3.3.
SUS
S pomočjo vprašalnika SUS33[11] smo preverjali uporabnost aplikacije. Uporabnost je pokrivala
področja učinkovitosti, zmogljivosti in zadovoljstva uporabnikov.
5.4. Izvedba uporabniškega testiranja
Uporabniško testiranje smo izvedli v prostorih Fakultete za elektrotehniko Univerze v Ljubljani, od
koder smo pridobili tudi vse udeležence. Na naše vabilo se je prostovoljno odzvalo dvanajst zaposlenih
na fakulteti.
Pred začetkom testiranja je vsak udeleženec rešil vprašalnik v katerem so bila vprašanja o rabi
računalnika in pametnega telefona ter vprašanja o rabi aplikacij in pametnih pripomočkov, ki so
povezani s skrbjo za zdravje. Pri testiranju so udeleženci uporabljali prenosni računalnik in miško,
trajalo pa je med 30 in 60 minut. Testiranje smo izvedli v laboratorijskih razmerah. Celoten intervju je
31 NASA-TLX – NASA Task Load Index
32 UEQ – User Experience Questionnaire
33 SUS – System Usability Scale
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
143
V. Čermelj, J. Trilar, V. Zavratnik in E. Stojmenova Duh: Družinsko centrična zasnova
spletne aplikacije MyFamily
bil pripravljen vnaprej in pri vseh udeležencih enak. Ena oseba je vodila testiranje, medtem ko je druga
oseba zapisovala komentarje udeležencev. Udeležence smo vodili prek scenarijev, s katerimi smo
preverjali različne funkcionalnosti in izgled aplikacije. Med reševanjem nalog so udeleženci glasno
komentirali njihova dejanja in utemeljili morebitne težave. Po uspešnem oziroma neuspešnem zaključku
vseh devetih scenarijev smo uporabnike prosili, če lahko rešijo še tri vprašalnike (SUS, UEQ in NASA-
TLX), s katerimi smo merili uporabnost aplikacije, uporabniško izkušnjo in delovno obremenjenost pri
uporabi aplikacije.
5.5. Analiza rezultatov
5.5.1.
Demografija
Pri uporabniškem testiranju je sodelovalo dvanajst udeležencev, sedem moških in pet žensk. Enajst
udeležencev je imelo vsaj univerzitetno izobrazbo, en udeleženec pa je imel srednješolsko izobrazbo.
Vsi so bili zaposleni na Fakulteti za elektrotehniko. Najmlajši udeleženec je imel 28, najstarejši pa 53
let. Povprečna starost udeležencev je bila 37,42 let.
Vsi sodelujoči so imeli lasten računalnik, ki so ga večinoma uporabljali več kot osem ur na dan. Vsi so
imeli v lasti tudi pametni telefon, ki ga je večina uporabljala med eno in dvema urama na dan.
Računalnik so najpogosteje uporabljali za delo, organizacijo, branje novic ter branje in pisanje
elektronskih sporočil. Pametni telefon so najpogosteje uporabljali za klice in sporočila sms, branje in
pisanje elektronskih sporočil, organizacijo in za uporabo socialnih omrežij. Nekaj več kot polovica
udeležencev je uporabljala aplikacije, ki so povezane s skrbjo za zdravje. Trije redko, dva pogosto in
dva izredno pogosto. Polovica udeležencev je uporabljala pametne pripomočke, dva redko in štirje
izredno pogosto.
5.5.2.
Rezultati UEQ
Vprašalnik UEQ je najdaljši izmed vseh treh, saj vsebuje 26 vprašanj. Zaradi velikega števila vprašanj
nam poda podrobnejšo oceno naše aplikacije. Z njim ugotavljamo atraktivnost, preglednost,
učinkovitost, vodljivost, stimulativnost in originalnost aplikacije. Na sliki 3 so rezultati vprašalnika
sešteti po kategorijah. Različne barve označujejo povprečne vrednosti pri drugih aplikacijah. Aplikacija
MyFamily v kategorijah Preglednost in Vodljivost dosega najvišjo možno oceno, kategorije
Atraktivnost, Učinkovitost in Originalnost so ocenjene kot dobre, Stimulativnost pa je ocenjena slabše
od povprečne aplikacije. Na desni strani slike 4 so rezultati in standardna deviacija za posamezne
kategorije.
Rezultati so bili zelo nekonsistentni v kategorijah Učinkovitost (Alfa 0,28) in Originalnost (Alfa 0,58),
zato teh rezulatov nismo preveč upoštevali.
Najbolj zaskrbljujoč rezultat je ocena v kategoriji Stimulativnost, saj je slabši od stimulativnosti
povprečne aplikacije. V procesu razvoja aplikacije smo to področje podrobno raziskali, vendar bomo
morali rezultate še izboljšati. Potrebno bo še enkrat razmisliti, kako bi lahko uporabnika bolj učinkovito
motivirali k uporabi aplikacije.
2,00
Odlično
1,00
Dobro
0,00
Nadpovprečno
-1,00
Podpovprečno
Slabo
144
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
V. Čermelj, J. Trilar, V. Zavratnik in E. Stojmenova Duh: Družinsko centrična zasnova
spletne aplikacije MyFamily
Slika 5. Rezultati vprašalnika UEQ v primerjavi z povprečnimi rezultati aplikacij
Na sliki 6 so rezultati, ki jih je aplikacija dosegla v atraktivnosti, pragmatični kakovosti in hedonski
kakovosti. V pragmatično kakovost spadajo kategorije Preglednost, Učinkovitost in Vodljivost. Iz
rezultatov je razvidno, da je aplikacija pregledna. Uporabniki so razumeli ter pravilno uporabljali njene
funkcionalnosti. V hedonsko kakovost uvrščamo Stimulativnost, Originalnost in Atraktivnost.
Uporabniki so slabše ocenili stimulativnost aplikacije. Ta kategorija je ena izmed pomembnejših v naši
aplikaciji, zato bo potrebno preizkušati še druge načine stimulativnosti in poiskati najboljšega.
Aplikacija se je uporabnikom zdela atraktivna, kar pomeni, da so med uporabo doživljali pozitivna
čustva.
3
3
2
1
1
0
-1
-1
-2
-3
-3
Atraktivnost pragmatično
hedonsko
kakovosti
kakovosti
Slika 6. Pragmatična in hedonska kakovost (levo). Skale po posameznih kategorijah (desno).
5.5.3.
SUS
Na sliki 7 so rezultati vprašalnika SUS predstavljeni po točkah, ki so jih dosegli udeleženci. Ti so
presenetljivi zaradi zelo dobrih rezultatov že pri prvem testiranju z uporabniki. Samo en udeleženec od
12 je bil z aplikacijo nezadovoljen (50 točk), ostali pa so jo ocenili kot zelo dobro, o čemer priča tudi
povprečni rezultat 82.3 točk. Rezultat nad 85 točk pomeni, da se je testirancem zdela aplikacija odlična
in da je ni potrebno popravljati. Rezultat, ki smo ga dosegli, nam torej pove, da je naša aplikacija zelo
dobra, vendar jo lahko še izboljšamo.
90,0
95,0
92,5
90,0
90,0
97,5
100,0
80,0
80,0
80,0
72,5
70,0
80,0
50,0
60,0
40,0
20,0
0,0
1
2
3
4
5
6
7
8
9
10
11
12
Slika 7. Rezultati SUS vprašalnika
5.5.4.
NASA-TLX
Na sliki 8 so prikazani rezultati NASA-TLX vprašalnika. Aplikacijo smo hoteli narediti preprosto in
razumljivo za uporabo, kar nam je tudi uspelo. Pri uporabnikih, ki so imeli težave z izpolnitvijo
scenarijev, je bila najvišja ocena mentalne zahtevnosti in frustracije. Obstaja možnost, da bi bili rezultati
drugačni, če bi uporabniki rešili vprašalnik po vsaki nalogi in ne po koncu vseh scenarijev. Tako so
uporabniki podali splošno oceno uporabe aplikacije in ne posameznih nalog, ki so jih morali izpolniti.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
145
V. Čermelj, J. Trilar, V. Zavratnik in E. Stojmenova Duh: Družinsko centrična zasnova
spletne aplikacije MyFamily
30
25
20
15
10
5
0
Mentalna
Fizična zahtevnost
Časovna
Izvedba
Trud
Frustracija
zahtevnost
zahtevnost
Slika 8. Rezultati NASA-TLX vprašalnika.
6. ZAKLJUČEK
Prvi del testiranja interaktivnega prototipa MyFamily smo opravili na omejenem vzorcu uporabnikov z
namenom izločiti očitne napake in delno dopolniti aplikacijo, preden bi jo testirali na večjem vzorcu
uporabnikov. Testiranje je služilo predvsem za preizkušanje funkcionalnosti in uporabniške izkušnje ob
uporabi aplikacije. Rezultati prvega testiranja služijo kot orientacija in jih je potrebno interpretirati z
zadržki. Zaobjeta je bila manjša skupina uporabnikov, ki so vešči uporabe elektronskih naprav ter
vsakodnevno uporabljajo podobne aplikacije. Za boljšo oceno bi morali vključiti tudi uporabnike, ki so
manj vešči upravljanja z računalnikom. Udeleženci so bili večinoma stari med 30 in 45 let. Za boljšo
predstavo, kako bodo aplikacijo sprejeli starejši in otroci, bomo morali v naslednje testiranje vključiti
tudi uporabnike iz teh starostnih skupin. Obstaja možnost, da so udeleženci na vprašanja odgovarjali
pristransko, saj prihajajo iz iste fakultete kot ekipa, ki deluje na projektu.
V prihodnosti bomo ugotovitve s testiranja implementirali v interaktivni prototip in ponovno raziskali,
kako lahko izboljšamo stimulativnost uporabnikov. Po uspešni povezavi v platformo EkoSmart bomo
izvedli novo testiranje s pravimi družinami. Izbrali bomo približno 10 družin, ki bodo dva tedna
uporabljale aplikacijo. S tem testiranjem bodo pridobljeni najbolj verodostojni rezultati, saj bodo
družine podale oceno po daljši rabi aplikacije MyFamily.
7. LITERATURA
[1] http://ekosmart.net/sl/o-projektu/, Ekosmart, obiskano 10. 5. 2018
[2] Projektna dokumentacija, Eko Sistem Pametnega Mesta
[3] http://ejs.co/, Embedded JavaScript templating, obiskano 20. 2. 2018
[4] https://www.heroku.com/, Heroku: Cloud Application Platform, obiskano 25. 2. 2018
[5] https://mlab.com/, mLab Database-as-a-Service, obiskano 15. 3. 2018
[6] https://material.io/design/, Material Design, obiskano 10. 1. 2018
[7] https://getmdl.io/, Material Design Lite, obiskano 10. 1. 2018
[8] https://jquery.com/, jQuery, dostopno 10. 1. 2018
[9] S. G. Hart, »Nasa-Task Load Index (NASA-TLX); 20 Years Later«, Proceedings of the Human
Factors and Ergonomics Society Annual Meeting, letnik. 50, št. 9, oktober 2006, stran 904-908.
[10] http://www.ueq-online.org/, User Experience Questionnaire (UEQ), obiskano 10.5.2018
[11] https://www.usability.gov/how-to-and-tools/methods/system-usability-scale.html, System
Usability Scale (SUS), obiskano 10. 5. 2018
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
PLATFORMA ZA ENOSTAVNO PROTOTIPIRANJE
MOBILNIH APLIKACIJ
BLAGOJ SOKLEVSKI, BOJAN BRUMEN, UROŠ PERNAT IN GREGOR PLAVČAK34
Povzetek: Izzivi današnjega časa nas silijo v učinkovito izkoriščanje
dragocenega časa. Prodati idejo v svetu informacijskih tehnologij ni lahko
brez prototipov, s katerimi lažje predstavimo koncept, ki ga želimo prodati.
Izdelava prototipov terja strokovna znanja, denar in čas, ki bi jih lahko
uporabili v druge namene. V članku bomo prikazali, kako je lahko izdelava
prototipov mobilnih aplikacij enostavna s pomočjo naše rešitve. Vzpostavili
smo platformo za enostavno prototipiranje mobilnih aplikacij, ki je na voljo
v oblaku 24/7, je enostavna za uporabo in dostopna vsem, tudi tistim, ki jim
je programiranje tuje.
Ključne besede: • Android OS • generiranje mobilne aplikacije •
uporabniški vmesnik • oblačne storitve
NASLOV AVTORJEV: Blagoj Soklevski, msg life odateam d.o.o., Titova cesta 8, 2000 Maribor, Slovenija e-pošta:
blagoj.soklevski@msg-life.com. Bojan Brumen, msg life odateam d.o.o., Titova cesta 8, 2000 Maribor, Slovenija
e-pošta: bojan.brumen@msg-life.com. Uroš Pernat, msg life odateam d.o.o., Titova cesta 8, 2000 Maribor,
Slovenija, e-pošta: uros.pernat@msg-life.com. Gregor Plavčak, msg life odateam d.o.o., Titova cesta 8, 2000
Maribor, Slovenija e-pošta: gregor.plavcak@msg-life.com.
DOI https://doi.org/10.18690/978-961-286-162-9.16
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
147
B. Soklevski, B. Brumen, U. Pernat in G. Plavčak: Platforma za enostavno prototipiranje
mobilnih aplikacij
1. UVOD
Življenje v moderni družbi nas na podlagi principa »čas je denar« sili v pametno in produktivno uporabo
časa ter s tem seveda tudi denarja. Kadar prodajamo kakšno svojo idejo, je najhitrejši način, da stranki
opišemo to idejo, le-ta pa si poskuša slednje vizualizirati v svoji glavi. To nas je pripeljalo k temu, da
smo začeli razmišljati kako stranki na intuitiven način predstaviti nek produkt, ki bi pripomogel k
samemu razumevanju in vizualizaciji idejne zasnove. V večini primerov vsakokrat poskušamo razložiti,
kako naj bi neka stvar izgledala v praksi, recimo na neki mobilni aplikaciji, z uporabo skiciranja, naših
besed, oziroma s pomočjo tvorjenja stavkov. Ker se prvotne idejne zasnove lahko razlikujejo že v
osnovi, smo kljub vsem omejitvam staknili glave in iskali preprost način, kako optimizirati proces
prototipiranja tako, da bi to lahko počeli tudi ljudje iz poslovnega sveta oz. tudi takšni z manj tehničnega
znanja. Ideja je bila rojena. Potrebujemo rešitev, ki bi na podlagi našega tehničnega znanja ter tehnološke
ekspertize omogočala uporabo vsakomur ob vsakem času brez specifičnih znanj z namenom ustvarjanja
prototipa mobilne aplikacije.
Platforma je sestavljena iz dveh delov, in sicer: spletni vmesnik, ki služi za uporabo dizajniranja izgleda
aplikacije ter zaledni sistem, ki generira demo aplikacijo na podlagi vnesenih vhodnih podatkov. Za ta
namen smo kot naše osnovne sestavne dele uporabili moderne tehnologije, kot so Angular, Kotlin,
mikrostoritve ter oblačne storitve. Uporabnik začne proces na spletnem vmesniku, kjer določi barvo
aplikacije ter doda posamezne poglede in vnosna polja. Iz tega dizajna nastane JSON datoteka, ki služi
kot definicija mobilne aplikacije in jo je mogoče z gumbom »Generiraj« prenesti na sam oblak. Proces
se nadaljuje na oblaku, kjer mikrostoritev ob prejemu JSON datoteke naredi prazen projekt Android
narejen v programskem jeziku Kotlin in le-tega nadgradi z definicijo iz JSON datoteke. Po končanem
opravilu se s pomočjo avtomatske skripte generira .apk datoteka ter QR koda, ki je takoj za tem vrnjena
v spletni vmesnik in služi kot povezava do prenosa same mobilne aplikacije. Ob skeniranju te kode s
pametnim telefonom se prične prenos in kasneje tudi inštalacija mobilne aplikacije. Ker pa vse skupaj
biva v samem oblaku, je platforma seveda na voljo 24/7.
2. PLATFORMA ZA PROTOTIPIRANJE
Osnovno ogrodje platforme se sestoji iz dveh osnovnih komponent: uporabniški spletni vmesnik s
katerim uporabnik izdela osnovo aplikacije, in generator kode, ki ustvari mobilno aplikacijo z
namestitveno .apk datoteko za naprave z Android OS. Ta dva dela izmenjujeta podatke preko REST
storitev z JSON meta-modelom. Za spletni uporabniški vmesnik smo uporabili tehnologijo Angular 6 s
podporo Bootstrap 4. Vse skupaj je nameščeno v oblaku. Generator je javanska aplikacija napisana s
pomočjo Spring Boot ogrodja v Javi 8, zapakirana v Docker zabojnik skupaj z Android SDK, Android
build tools in ogrodjem Gradle. Zabojnik je orkestriran v Amazon Elastic Container Service (Amazon
ECS).
2.1. Spletni uporabniški vmesnik
Zasnova mobilne aplikacije poteka preko spletnega uporabniškega vmesnika. Ta omogoča izdelavo
novega prototipa aplikacije, pregled nad že izdelanimi aplikacijami in tudi neposredno namestitev na
Android napravo s pomočjo QR kode. JSON meta model mobilne aplikacije se gradi s pomočjo
urejevalnika aplikacije, ki omogoča enostavno dodajanje zaslonov in gradnikov in nastavljanje
posameznih parametrov. Urejevalnik zajema celotno širino zaslona in je sestavljen iz treh vertikalnih
sekcij.
Na vrhu prve sekcije je gumb za dodajanje novih zaslonov v aplikacijo. Sledijo komponente, ki jih je
možno dodati na posamezni zaslon. Zaradi načina delovanja generatorja aplikacij, komponente v veliki
meri sovpadajo s komponentami, ki jih je mogoče najti tudi v Android Studio IDE-ju. V isti sekciji se
nahaja tudi gumb za shranjevanje in generiranje aplikacije.
148
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Soklevski, B. Brumen, U. Pernat in G. Plavčak: Platforma za enostavno prototipiranje
mobilnih aplikacij
Osrednja sekcija predstavlja nabor zaslonov v aplikaciji, ki so pregledno organizirani v obliki zavihkov.
Posamezni zavihek v osnovi predstavlja podlago v obliki mobilnega telefona, na katerega je možno
dodajati posamezne komponente iz prve sekcije. Vsako komponento je možno izbrati in ji še dodatno
nastaviti parametre (ali odstraniti) v tretji sekciji. Izbrana komponenta na zaslonu aplikacije je označena
s svetlo zeleno obrobo.
Tretja sekcija urejevalnika prototipirane aplikacije je namenjena dodatnim nastavitvam. Tukaj je možno
nastaviti ime aplikacije in barvno shemo. V primeru, da je izbrana tudi ena izmed komponent, je za le-
to prikazan nabor parametrov (identifikator komponente, besedilo, velikost pisave, itd.).
Urejanje prototipne aplikacije se zaključi s potrditvijo na gumbu »Shrani«. V tem koraku se sestavljen
meta model aplikacije posreduje generatorju, ki ga interpretira in generira izvorno kodo, in zgradi
prenosljivo aplikacijo v obliki arhiva (.apk).
Nabor vseh aplikacij se nahaja na strani »Zgodovina«. Prototipne aplikacije so predstavljene v obliki
kartic in vsebujejo ime aplikacije, verzijo, dodaten opis, povezavo na prenos izvorne kode in povezavo
za prenos namestitven datoteke (.apk). Aplikacijo je možno enostavno namestiti na željeno napravo s
skeniranjem QR kode posamezne aplikacije.
Slika 1. Spletni uporabniški vmesnik
2.2. Omejitve platforme za prototipiranje in JSON meta-model
Stili in teme na Android aplikacijah omogočajo ločevanje podrobnosti dizajna aplikacije od strukture
uporabniškega vmesnika in njegovega obnašanja. Stili so zbirke atributov, ki določajo izgled posamezne
forme ali pogleda. Stil lahko določa atribute, kot so barva in velikost pisave, barva ozadja in še mnogo
več. Tema je tip stila, ki jo uveljavimo nad celotno aplikacijo, Activity gradnikom ali nad celotno
hierarhijo pogledov. Kadar uporabimo stil kot temo, vsak gradnik aplikacije ustrezno prevzame stil.[1]
Na platformi smo si zamislili omejitve glede izgleda. Trenutno lahko uporabnik spreminja samo barve
colorPrimary, colorPrimaryDark in colorAccent. Zaenkrat generiranje aplikacije omogočasamo
pokončnen pogled, ležeč pogled še ni podprt. Glede funkcionalnosti omogočamo samo aplikacije, ki
vsebujejo forme, kar pomeni, da lahko uporabnik izbira med vnosnimi polji in gumbi, lahko pa
spreminja tudi pozicijo posameznega gradnika. Aplikaciji lahko določimo vrstni red prikaza zaslonskih
mask in navigacijo med njimi. Trenutno generirana aplikacija deluje v načinu brez povezave do interneta
(offline mode), zato komunikacija z REST storitvami ni mogoča. Dostop do strojnih komponent in
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
149
B. Soklevski, B. Brumen, U. Pernat in G. Plavčak: Platforma za enostavno prototipiranje
mobilnih aplikacij
senzorjev (kamera, Blutooth, NFC, …) trenutno ni mogoč, vendar bo to omogočeno v prihajajočih
verzijah. JSON model predstavlja DNK generirane aplikacije. Vsebuje vse potrebne podatke za
generiranje končne aplikacije. Ker je naš cilj dinamična generacija androidnih mobilnih aplikacij s strani
uporabnikov, ki niso programerji, smo se morali omejiti na samo določene funkcionalnosti in omejenim
naborom vizualnih gradnikov. Meta podatki v JSON obliki so razporejeni v več nivojev. Prvi nivo
vsebuje ime aplikacije, URL do slike, ki se bo prikazala ob zagonu aplikacije, seznam barv in seznam
aktivnosti. Vsaki aktivnosti lahko določimo ime in gradnike. Vsak gradnik je določen s tipom, oznako
in identifikatorjem. Vsak gumb ima tudi dodatni atribut »akcija«, v katerem je ime aktivnosti, ki se bo
ob kliku odprla. Na Sliki 2 je levo prikazan model in desno aplikacija, zgrajena na podlagi tega modela.
Slika 2. Levo je met podatkovni model, desno je končni izgled aplikacije
2.3. Generator
Generator je osrčje platforme. To je zaledna javanska aplikacija napisana v ogrodju Spring Boot, ki
sprejme JSON model, posredovan s strani uporabnika, na podlagi katerega se v ozadju zgradi projekt s
programsko kodo. Programska koda se nato prevede v končni izdelek, ki je .apk datoteka. Preden
preidemo na podroben opis delovanja generatorja, bomo opisali, kaj vse nastane pri generaciji. Rezultat
generiranja je androidna aplikacija z izvorno kodo v Kotlinu, ki temelji na Android OREO 8.1 (API
level 27). Minimalna verzija, ki je še podprta, je Android Nougat 7.0 (API level 24). Končno aplikacijo
je mogoče prenesti na vse naprave, ki ustrezajo zahtevam, ne glede na velikost zaslona. A najboljšo
uporabniško izkušnjo dosežemo, kadar jo namestimo na mobilni telefon, saj sta pri večjih zaslonih
uporabniška izkušnja in ergonomija slabša.
Generiranje aplikacije poteka v več korakih. Prvi korak po prejetju JSON podatkovnega meta modela
je kopiranje predloge projekta imenovane »base Application«, ki je prazen Android projekt, ki vsebuje
samo osnovno »splash« aktivnost (Aktivnost ob zagonu aplikacije). Ta kopija predloge se preimenuje v
konkreten projekt skladno z željami uporabnika.
150
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Soklevski, B. Brumen, U. Pernat in G. Plavčak: Platforma za enostavno prototipiranje
mobilnih aplikacij
V projektu je pripravljenih nekaj razredov, ki služijo kot različni generatorji, ločenih z vlogami:
Color Resource Generator prepiše vrednosti iz meta podatkov v colors.xml datoteko. Ta datoteka je
osnova za barvni izgled gradnikov v celotni aplikaciji. Komponente teme, ki se barvno lahko
prilagajajo so: colorPrimary, colorPrimaryDark in colorAccent.
Number Resource Generator zapiše spremenljivko »splash_screen_duration« v numbers.xml
datoteko z vrednostjo 0. V kolikor se v meta podatkih nahaja povezava na sliko, se ta vrednost poveča
na 3000. Ta vrednost upravlja zakasnitve v aplikaciji, kar bi simuliralo zakasnitev nalaganja
podatkov v primeru izrisa slike.
String Resource Generator prepiše vse vrednosti potrebne za izpise (labele, ki jih vidi uporabnik) iz
meta podatkov v strings.xml datoteko. Trenutno ni večjezične podpore.
Activity Generator izdela dejansko programsko kodo v obliki Kotlin razredov, kar so datoteke z
končnico ».kt«. V kodi vključi import stavke na začetku in izdela telo razreda v katerem prepiše
onCreate metodo in doda klice funkcij, ki so posredovane v meta podatkih.
Layout Generator ustvari datoteke za vsak izgled vsake aktivnosti. Kot izhodišče se uporabi osnovni
gradnik imenovan »LinearLayout«. Ta vsebuje »ScrollView«, ki služi kot vsebnik za vse ostale
gradnike. Nastanejo s tem povezane datoteke imenovane z imenom aktivnosti, ter končnico ».xml«.
Manifest Generator ustvari AndroidManifest.xml, ki spremeni ime aplikacije in registrira vse ostale
aktivnosti, ki jih bo aplikacija poznala.
Application Generator služi kot orkestrator za ostale generatorje.
Po ustvarjenem projektu v oblaku je možno prožiti generiranje .apk datoteke na dva načina. Klic
»generate« pokliče ukaz Gradle ogrodja »gradlew assembleDebug«. Drug klic, ki je primeren za
razvijalce in ni možen v oblaku, pa omogoča klic ogrodja Gradle z ukazom »gradlew installDebug«. Ta
ustvari .apk datoteko in jo namesti na virtualno mobilno napravo (emulator). Zadnji klic je prenos .apk
datoteke na ciljno mobilno napravo.
2.4. Namestitev
Ogrodje platforme sestoji iz dveh osnovnih komponent, ki ju ločeno zapakiramo v dva Docker
zabojnika. Prvi vsebuje spletno aplikacijo v Angular ogrodju in spletni strežnik Nginx, ki servira statično
vsebino. Drugi del platforme je z zalednim generatorjem in se namesti v drug zabojnik. Ta ima
nameščena zraven Spring Boot aplikacije tudi razvojna ogrodja za mobilne aplikacije, kot so Android
SDK, Android Build Tools in Gradle.
Oba zabojnika sta nameščena v Amazon ECS, ki je visoko zmogljiva, skalabilna storitev za orkestriranje
Docker zabojnikov, kar omogoča uporabniku enostavno zaganjanje ter skaliranje aplikacij v zabojnikih
na AWS. [2]
2.5. Težave in načrti za izboljšave v prihodnosti
Priporočen način dela z »Gradle« orodjem za pakiranje aplikacij je z uporabo »Gradle Wrapper«-ja (na
kratko Wrapperja). Wrapper je skripta, ki kliče deklarirano verzijo Gradle orodja. Kot rezultat lahko
razvijalec dobi delujoč projekt hitro, brez sledenja navodil kako le-tega namestiti [3]. Večina težav je
izhajala iz tega, da se ob prvem zagonu Graddle Wrapper-ja vse morebitno manjkajoče knjižnice
prenesejo na sam računalnik. Tega nismo opazili, dokler nismo naše Spring Boot aplikacije zapakirali v
Docker zabojnik. Zgodilo se je, da smo dobili napako prvič, ko smo poklicali servis »generiraj« preko
našega REST API-ja. Naša predpostavka, da je vsebina Docker zabojnika, ki vključuje Gradle ter
Android SDK dovolj, se je izkazala kot napačna. Ker imamo na strežniku vedno čisto stanje, ko
namestimo nek zabojnik, je naš inicialni REST klic servisa »generiraj« zmeraj znova nalagal Gradle .zip
datoteko in zatem tudi to razpakiral ter instaliral. Seveda je to rezultiralo k daljšemu času generiranja
aplikacije, kar se pa žal ni videlo v prikazu napake. Po ugotovitvi vzroka za to napako smo našli dve
možnosti za sam popravek. Prva možnost je bila spremeniti atribut »distributionUrl« v datoteki gradle-
wrapper.properties, ki kaže na lokacijo v zabojniku, kjer se nahaja .zip datoteka. S tem smo pridobili,
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
151
B. Soklevski, B. Brumen, U. Pernat in G. Plavčak: Platforma za enostavno prototipiranje
mobilnih aplikacij
da ne zapravljamo časa s samim nalaganjem .zip datoteke iz spleta. Druga opcija je bila proženje REST
klica asinhrono, kar je pomenilo, da ne čakamo na odgovor iz samega zaledja.
V prihodnosti bi radi razširili zaledno aplikacijo na način, da bi bila sposobna poleg dizajna sprejeti tudi
definicijo kalkulacij in jih smiselno povezati z vnosnimi polji. Tak pristop bi omogočal dizajn recimo
zavarovalniškega produkta, ki temelji na aktuarskih kalkulacijah.
Druge manjše razširitve pa bi bile narediti aplikacijo še bolj prilagodljivo, omogočiti prenos še več
podatkov med samimi aktivnostmi (»activities«), omogočiti uporabo kamere in podobno.
3. ZAKLJUČEK
Za kreiranje preproste Android aplikacije , ki vsebuje nekaj vnosnih polj in gumb, razvijalec potrebuje
nekje od 10 do 30 minut. To vključuje zagon Android studia, pa vse do končne izdelave .apk datoteke.
Vse skupaj je seveda odvisno od razvojnega računalnika, razvijalčevih znanj, spretnosti, predhodnih
izkušenj s programiranjem takšnih aplikacij in drugih različnih dejavnikov. Z našo platformo smo
zagotovili eliminiranje mnogih od zgoraj naštetih dejavnikov. Za start takšnega projekta s pomočjo
platforme sedaj več ne potrebujemo izkušenih Android razvijalcev. Uporabniški vmesnik je tako
preprost, da ga lahko uporablja kdorkoli. Prav tako je kreiranje in zagon takega projekta na voljo takoj,
brez nameščanja kakšne posebne programske opreme. Ker pa je platforma seveda nameščena v oblaku,
končni uporabnik ne potrebuje veliko procesorske moči in drugih virov za kreacijo. Preprosto odpremo
brskalnik in začnemo z dizajniranjem in kreacijo. Kot dodatek smo z oblačnim pristopom rešili tudi
problem domovanja kreirane aplikacije, saj je le ta po končani kreaciji odložena v hrambo na oblaku in
vedno dostopna s pomočjo skeniranja QR kode. Če bi razvijali aplikacijo na klasičen način, bi morali
imeti omogočen način razvijalca na fizični Android napravi in le to povezano z računalnikom pri
testiranju in namestitvi same aplikacije. Ostaja slabost, da moramo v vsakem primeru omogočiti
namestitev aplikacij izven »Google play« trgovine na način da omogočimo / dovolimo nameščanje
neznanih virov v nastavitvenem meniju.[4]
Naj še navedemo, da nismo samo eliminirali različnih dejavnikov v samem kreiranju preproste Android
aplikacije, kot so zahtevana znanja, vendar smo tudi prepolovili čas kreacije le-te. Tako bi lahko kritično
ocenili, da sedaj potrebujemo le 10 do 30 minut od vstopa v sam uporabniški vmesnik, do nameščanja
same aplikacije na napravo. Največja značilnost same platforme pa je seveda, da je sama platforma
lahko uporabljena kjerkoli, kadarkoli in od kogarkoli, ne glede na tehnična znanja in izkušnje. V tej
tehnološki avanturi ob združevanju različnih znanj in ekspertiz smo razvili platformo, ki nam bo
prihranila veliko dragocenega časa v prihodnosti. Pri tej celotni izkušnji smo prav tako testirali veliko
konceptov, ki jih nameravamo uporabiti pri sami produkcijski aplikaciji. Kot primer smo za generiranje
Android aplikacije uporabili Kotlin namesto Java programskega jezika, da bi si dokazali kaj le-ta prinese
kot dodatek pri samem razvoju mobilnih aplikacij.
Na koncu smo kot ekipa zadovoljni z razvitimi funkcionalnostmi, seveda pa že gledamo naprej kako bi-
le te v prihodnosti nadgradili in s tem omogočili še širši spekter značilnosti, ki bi v končni verziji
rezultirale k dizajniranju ter kreiranju aplikacij brez večjih omejitev.
4. LITERATURA
[1] https://developer.android.com/guide/topics/ui/look-and-feel/themes, Android Developer Guide,
obiskano 23. 5. 2018.
[2] https://aws.amazon.com/ecs/ , Amazon Elastic Container Service, obiskano 23. 5. 2018.
[3] https://docs.gradle.org/current/userguide/gradle_wrapper.html , Gradle Wrapper, obiskano
23.5.2018.
[4] https://www.androidauthority.com/how-to-install-non-market-third-party-apps-on-your-phone-
31494/, How to Install Non-Market, Third-party Apps on Your Phone, obiskano 23. 5. 2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
NEPREKINJENA DOSTAVA V VZPOREDNEM
KRITIČNEM POSLOVNEM OKOLJU
TADEJ JUSTIN, ŽIGA CIGLAR IN ANDREJ OREŠNIK35
Povzetek: Razvoj in realizacija obsežnejšega programja je navadno
razdeljena na več zaključenih enot, ki jih lahko realizira poljubna razvojna
skupina oz. razvojno podjetje. Pred izvedbo deljenih nalog je v takih
primerih vnaprej izbrano in specificirano tudi produkcijo okolje. Vsem
skupinam mora biti na voljo čim bolj podobna infrastruktura, kot je na voljo
v produkcijskem okolju, za preverjanje realizacije izvedenega dela. Le tako
so posamezne skupine lahko dovolj samozavestne, da bo njihov izdelek
deloval tudi v produkciji. Poseben primer deljenega razvoja predstavlja
zaprto produkcijsko okolje naročnika. Velikokrat se izkaže, da je
produkcijsko okolje razvijalcem nedostopno, hkrati pa je nedostopno tudi
celotno omrežje naročnika, takrat je dostava programske kode v zaprto
poslovno omrežje s strani razvijalcev nemogoča. V takšnih primerih je
potrebno celoten proces neprekinjene dostave prilagoditi in upoštevati
dodatne možne zaplete pri izdaji skupnega programja v produkcijo. V tem
prispevku predstavljamo izkušnje in realizacijo neprekinjene dostave
izvorne programske kode z usklajenim delovanjem dveh podjetji, pri čemer
je eno v vlogi lastnika programske kode, kontrolorja kvalitete in realizatorja
izdaj programa v produkcijsko okolje, drugo pa v vlogi razvijalca.
Posebnost te izkušnje je, da slednje žal nima dostopa do nobenega izmed
programskih okolij prvega podjetja, nima možnosti niti “odriva” (ang. push)
programske kode v omrežje prvega.
Ključne besede: • neprekinjena dostava • neprekinjena integracija • GitLab
• Kubernetes
NASLOV AVTORJEV: dr. Tadej Justin, raziskovalcec, Medius d.o.o,. Tehnološki park 21, 1000 Ljubljana, Slovenija,
e-pošta: tadej.justin@medius.si. Žiga Ciglar, višji razvijalec programske opreme, Medius d.o.o, Tehnološki park
21, 1000 Ljubljana, e-pošta: ziga.ciglar@medius. Andrej Orešnik, arhitekt informacijskih rešitev, Medius d.o.o.,
Tehnološki park 21, 1000 Ljubljana, e-pošta: andrej.oresnik@medius.
DOI https://doi.org/10.18690/978-961-286-162-9.17
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
153
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
1. UVOD
V Sloveniji je dan danes vedno več manjših razvojnih podjetij, ki ponujajo razvoj programske opreme
le za določen segment programja ali svetovanje iz specifičnih ozkih podjetij področja IKT. Združeni
specialisti ali skupine lahko uspešno konkurirajo tudi večjim podjetjem, pri razvoju visoko tehnoloških
programskih rešitev, čeprav lahko dostavijo le ozko usmerjen segment želenega proizvoda. Opažamo,
da je vedno več sodelovanja med ozko usmerjenimi razvojnimi podjetji programske opreme pri izdelavi
končnih aplikacij. Razvoj in realizacija obsežnejšega programja je navadno razdeljena na več
zaključenih enot ali segmentov, ki jih lahko realizira poljubna razvojna skupina ali razvojno podjetje. V
kolikor, se naročnik odloči za porazdeljen in segmentiran razvoj programja, ponavadi sam predpiše
obliko sodelovanja in usklajevanja razvoja končnega produkta.
Pred izvedbo deljenih nalog je pogosto vnaprej izbrano in podrobno določeno tudi produkcijo okolje.
Za lažjo dosego končnega cilja - razvoja visoko tehnološkega programja, mora biti na voljo razvojnim
skupinam čim bolj podobna infrastruktura in programska oprema (okolje), kot bo/je ta na voljo v
produkcijskem delovanju. Razvojno okolje, ki je v večji meri skladno s produkcijskim okoljem, skupine
uporabijo za preverjanje, verifikacijo in validacijo razvitega programja. Le s tovrstnimi preizkusi so
posamezne skupine lahko dovolj samozavestne, da bo njihov izdelek deloval tudi v produkciji. Dostop
do enake ali čimbolj podobne infrastrukture, pa ni edini pogoj za oddajo realizirane rešitve naročniku.
Skupine morajo imeti na razpolago tudi vse ostale enote ali module celotnega programa. Na takšen način
lahko skupina dobro preizkusi tudi integracijske funkcionalnosti svojega doprinosa oz. realizirane
naloge.
V idealnih primerih naročnik poskrbi za dokumentacijo okolja, njegovih specifik in/ali celo njegove
skriptirane postavitve. V redkih primerih razvojnim podjetjem ponudi tudi namensko programje, ki
omogoča enostavno in hitro dostavo razvite funkcijonalnosti po predpisanih kriterijih. S tem omogoči
razvijalcu osredotočenost le na razvoj specifičnih funkcionalnosti, za ostalo pa poskrbi naročnik ali
njegov podizvajalec, specialist za neprekinjeno dostavo. Pri porazdeljenem razvoju programja se
pokaže, da je to ena ključnih komponent za učinkovit in hiter razvoj končnega izdelka. Razvojnim
skupinam omogoča dostavo programja v skladu z razvojnimi kriteriji naročnika, vnaprej definiranimi
povezavami in relacijami tako med infrastrukturnimi specifikami in hkrati tudi samim razvojnim ciklom.
Za razvijalce se pokaže prednost takega programja tudi v tem, da se končnim razvijalcem ni potrebno
neposredno zavedati vseh specifik in kriterijev naročnika, saj so le-ti lahko že določeni znotraj
programja za neprekinjeno dostavo [1].
V prispevku predstavljamo poseben primer porazdeljenega razvoja s specializiranim naročnikovim
programjem za neprekinjeno dostavo, ki omogoča razvijalcem nemoten in osredotočen razvoj
naročnikovih želja. Programje zajema specifiko produkcijskega okolja, njegovo skriptirano postavitev
in neprekinjeno dostavo razvitih funkcionalnosti. V predstavljenem primeru naročnika opredeljuje
popolnoma zaprto okolje in hkrati popolna kontrola nad izvorno kodo in oddajo programja v
produkcijsko okolje. V takih primerih razvojne skupine nimajo neposrednega dostopa do naročnikove
infrastrukture, kar je morda posebnost, vendar tipičen realni primer kritičnega poslovnega okolja.
Odprto kodna orodja za neprekinjeno dostavo pa tipično ne premorejo podpore za tak primer, kar pa
narekuje zasnovo novega namenskega orodja, ki omogoča razvojnim skupinam dostavo v okolje
naročnika.
2. ZASNOVA SISTEMA NEPREKINJENE DOSTAVE V ZAPRTO OKOLJE
NAROČNIKA
Definicija neprekinjene dostave je pristop k avtomatizaciji procesa pri izdaji verzije programja od
razvoja do izdaje. Oblikovalo ga je gibanje “DevOps” [2], ki izhaja iz povezave med angleškima
besedama “Development” (razvoj) in “Operations” (operacije). Proces tako zajema avtomatične
postopke izločanja slabih verzij programa in s tem povečuje zaupanje v izvorno kodo programja.
154
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
Diagram na sliki 1 prikazuje razlike med pojmi, ki so v zadnjih letih na področju DevOps močno
zastopani, vendar pogosto zamešani.
Slika 1. Diagram razlik med pojmi: neprekinjena integracija, neprekinjena dostava in neprekinjena namestitev
Z dobrim poznavanje procesa neprekinjene dostave lahko hitro posplošimo proces tudi za vzporedne
sisteme in ga priredimo za uporabo, tudi za primer zaprtega kritičnega poslovnega okolja. Z gradnjo in
razvojem lastnega programskega orodja za neprekinjeno dostavo lahko enostavno omogočimo tudi
izpolnitev naročnikovih specifičnih želja pri postopku izdaje različice razvitega programja v produkcijo.
Razvijalcem pa omogočimo čim lažji razvoj in izdajo produkcijske verzije programja po ustaljenih
praksah, kot jih predlaga in predvideva gibanje “DevOps”. Pri razvoju takega programja se je zato
nedvomno potrebno ozirati tudi na praktično uporabo uveljavljenih praks in razvojnih ciklov. Pri razvoju
programja za neprekinjeno dostavo so bile upoštevane naslednje izboljšave v primerjavi z
tradicionalnim načinom predaje izvorne kode:
avtomatizacija razvojnega cikla,
pregleden način za ugotavljanje sprememb v novih verzijah,
konsistentno upravljanje konfiguracij,
avtomatizacija ročnih posegov,
in prenosljivost gradnikov programja.
Z razvojem programja za neprekinjeno dostavo pri upoštevanju kriterijev sodobne neprekinjene dostave
se pokažejo ne le prednosti za zunanje razvojne skupine, pač pa predvsem za samega naročnika, ki je v
obravnavanem primeru lastnik izvorne kode, kontrolor kakovosti in izdajatelj novih verzij programja.
Programje neprekinjene dostave naročniku olajša izdajo in testiranje realiziranih funkcionalnosti. Prav
tako je celoten postopek do oddaje programja v produkcijo avtomatiziran. Specifike realiziranega
programja in visoka stopnja varnosti razvite programske rešitve vseeno predvideva ročno proženje
namestitve novih verzij programja v produkcijo, kljub temu pa je v celoti avtomatizirana.
Zaprto okolje naročnika narekuje razvojnim skupinam, da same realizirajo postavitev razvojno/testnega
okolja. Ker v splošnem želimo, da bi bila konfiguracija in postavitev čim bolj podobna produkcijskemu
okolju, se lahko s pridom uporabi skriptirano postavitev okolja, obenem, pa olajša njegovo vzpostavitev,
tako v javnih oblakih kot na lastni infrastrukturi. Obenem naročniku omogoči tudi postavitev
identičnega testno/produkcijskega okolja (ang. staging envronment) ali replikacijskega okolja. S tako
specifikacijo lahko naročnik prepreči morebitne nesporazume, ki jih opredeljuje produkcijsko okolje in
omogoči razvojnim skupinam njihovo obravnavo že pri razvoju naročene funkcionalnosti. Z uporabo
odprtokodnih programskih orodij in ogrodij je bila z naročnikom zasnovana skriptirana namestitev, ki
tudi razvojnim skupinam omogoča vzpostavitev testno-razvojnega okolja. Naročnik je med širokim
naborom orkestracijskih sistemov izbral sistem za orkestracijo izvajanja programov v vsebnikih -
Kubernetes [3,4]. Izbira takega produkcijskega okolja prinaša v poslovno kritično okolje določena
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
155
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
tveganja pri izolaciji aplikacij, vendar obenem omogoča hitrejšo in bolj pregledno opravljanje pri visoki
stopnji skalabilnosti.
2.1. Zakaj Kubernetes?
Z vidika podjetja, ki je v vlogi naročnika in razvija programje na porazdeljen način, je ključnega pomena
zmožnost Kubernetesa, da lahko zelo hitro uvajamo nove postavitve aplikacij, seveda v okviru kapacitet.
Z vnosom deklaracijskih datotek (“Kubernetes YAML”) lahko postavimo tudi več primerkov iste
aplikacije (za različne faze testiranja) ali enostavno ustvarimo delitev obstoječih aplikacij na več
manjših, obvladljivejših enot.
Programje, ki ga želimo poganjati, zapakiramo v obliko Docker vsebnika (ang. container). Tako je
podprto poganjanje skoraj kakršnekoli programske opreme, ki lahko teče pod operacijskim sistemom
Linux, posredno pa je lahko aplikacija razvita v praktično kateremkoli programskem jeziku. V
konkretnem primeru je sicer aplikacija bila razvita v programskem jeziku Java.
Pri razvoju aplikacij namreč želimo že pred produkcijo poganjati aplikacijo v pogojih testiranja v
različnih okoljih:
v okviru sistema neprekinjene integracije poganjati avtomatizirane teste ob vsaki gradnji ali
periodično poganjati temeljitejše avtomatske teste,
v okviru ročnega testiranja vzdrževati primerek aplikacije v verziji, ki je kandidat za oddajo v
produkcijo,
za testiranje funkcionalnosti API s strani drugih podjetij vzdrževati poseben primerek testne
namestitve s primerno pripravljeno podatkovno bazo,
za demo predstavnikom naročnika morebiti pripraviti poseben primerek različice v znanem stanju,
da s tem ne oviramo vzporednega razvoja in testiranja novih funkcij.
Zato seveda potrebujemo način za aplikacijo v razvoju pognati. Če pripravimo vsebnik v obliki Docker,
imamo s tem tudi binarno referenčno okolje izvajanja aplikacije, ki je lahko enako vse od izvajanja
neprekinjene integracije oz. neprekinjenega testiranja do produkcije. V praksi sicer Docker ne zagotavlja
popolne izolacije in Docker slika tudi ne vsebuje jedra operacijskega sistema (Linux), zato je v praksi
potrebna še uskladitev operacijskih sistemov na gostiteljih izvajanja Docker slik.
Kubernetes omogoča, da lahko prijavljeni uporabniki (v okviru pravic in kvot) sami ustvarijo nove
primerke aplikacije, ki jih ločijo npr., z različnimi imeni gostitelja, s čimer je lažje dodajanje okolij in
pospešen je začetek dela na novem namestljivem gradniku. Cilj, da bi lahko že pri razvojnem podjetju
postavili čim bolj podobno infrastrukturo oziroma “maketo infrastrukture”, kot je pri naročniku, je s
Kubernetes lažje dosegljiv.
Omenjena zmožnost - poenostavljeno ustvarjanje novih namestitev aplikacije - je seveda uporabna tudi
za namene produkcijskih okolij in zaradi tega se Kubernetes hitro uveljavlja tudi v poslovnih okoljih.
Predvsem je to pomembno v primerih, da želimo uvesti arhitekturo mikrostoritev, ker moramo v tem
primeru imeti zmožnost učinkovitega obvladovanja življenjskih ciklov velikega števila manjših
programov.
Vse, kar omogoča Kubernetes, je izvedljivo tudi s strežniško infrastrukturo na osnovi virtualizacije ali
celo s fizičnimi strežniki, vendar terja bistveno več dela, tako razvijalcev, kot sistemskih
administratorjev. Kubernetes (in druge rešitve orkestracije vsebnikov) pa postavljanje kompleksnejših
strežniških namestitev aplikacij poenostavijo, tako da te postanejo stroškovno učinkovite in lahko
pripomorejo k testiranju ter s tem izboljšanju kakovosti aplikacij tudi pri poslovnih aplikacijah, katerih
razvoj je bolj stroškovno občutljiv, kot razvoj aplikacij za množični trg.
156
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
Vendar ni nujno, da bo raba Kubernetesa vedno pomenila manj porabe strojnih virov - lahko se zgodi
ravno obratno, ker lahko uvedba boljšega izvajalnega okolja privede do tega, da organizacija, uvede
nove aplikacije, saj je za njih to lažje. Možni scenarij je tudi, da postane obvladljivo poganjanje rešitev,
ki so sicer strojno in upravljalsko zahtevnejše, ampak omogočajo boljšo podporo poslovanja
organizacije.
Poleg Kubernetesa obstajajo tudi drugi sistemi za orkestracijo vsebnikov, npr. Docker Swarm, Rancher
Cattle, Apache Mesosphere Marathon, CoreOS Fleet, ... ter lastniške rešitve posameznih ponudnikov
javnega oblaka, kot so Amazon ECS, Google Container Engine, ... Naročnik se je odločil za rešitev na
lastnih sistemih (“on-premises”). Med temi se je odločil za Kubernetes, ker ima najširšo skupnost
razvijalcev, uporabnikov ter ponudnikov plačljive podpore. Zato je možno računati tudi na prihodnji
razvoj te platforme. Kubernetes ni najenostavejša, je pa ena od bolj fleksibilnih rešitev, kar pomeni
manjša tveganja v luči dejstva, da v poslovnih sistemih ne moremo vedno zanesljivo napovedati vseh
prihodnji poslovnih potreb, ki jim bo izvajalno okolje moralo zadostiti.
2.2. Namestitev Kubernetesa v izoliranem produkcijskem okolju
Značilnost poslovno kritičnih aplikacij je, da se uporabljajo za takšne namene, kjer neavtoriziran dostop
predstavlja veliko grožnjo, kar lahko posledično prinaša tudi resne finančne ali strateške težave pri
poslovanju naročnika. Zato podjetja vlagajo v informacijsko varnost s ciljem preprečiti vse možne
načine napadov.
Docker in posledično rešitve na osnovi Dockerja se zanašajo na to, da je slika z izvajalno kodo dostopna
iz registra (registry), torej javnega ali zasebnega strežnika za hrambo in distribucijo slik z izvajalno
kodo. Gradniki Kubernetes so tudi sami distribuirani kot Docker slike, ki se namestijo iz javno dostopnih
registrov, kot so gcr.io, quay.io ter hub.docker.io. To zahteva, da so omenjeni registri dostopni v času
namestitve, pa tudi kasneje se dogaja, da Docker dostopa do teh registrov iz različnih razlogov
(preverjanje za posodobitve, prvi zagon posameznih gradnikov na novo dodanem Kubernetes vozlišču,
…).
Z vidika informacijske varnosti to predstavlja tveganje. Možni napadi so npr.:
Napadalec uspe vdreti v javni Docker register ali v sisteme za gradnjo samega Kubernetesa ter vnese
spremenjene Docker slike z dodano zlonamerno kodo (ang. malware).
Napadalec, z možnostjo vpliva na omrežje na katerikoli točki od namestitve Kubernetesa do teh
registrov, lahko prestreže ta promet in npr. ta dostop organizaciji blokira ter s tem povzroči motnje
v delovanju (ang. “denial of service”).
V primeru odkritih ranljivosti v protokolih TLS, lahko napadalec ta promet prestreže in spremeni ter
na omrežju vstavlja zlonamerno kodo.
Ker Kubernetes predstavlja podlago za aplikacije, je posebnega pomena zagotavljati integriteto samega
Kubernetes okolja in upravičena so vlaganja v zavarovanje.
Minimizacija tveganj je, da Kubernetes postavimo na od interneta izoliran način (ang. air gapped), kar
si je naročnik tudi določil kot pogoj, za rabo Kubernetes in je to tudi implementiral v svojih namestitvah.
Pri tem zajamemo ves nabor Docker slik - gradnikov Kubernetes za določeno verzijo v datoteke ter
uvozimo v krajevni Docker register, ki ga konfiguriramo kot zrcalo (ang. mirror) javnega registra. Pri
tem je bolj zanesljivo izvajati različne oblike preverjanj (npr. iskanje znanih ranljivosti in znanih
primerkov zlonamerne kode) tudi na eni kopiji podatkov, kot pa ta preverjanja samo izvajati na vstopnih
točkah omrežja.
Kot za vsako programsko opremo, ki poganja grozd strežnikov, je tudi namestitveni proces Kubernetes
relativno zapleten. Seveda je mogoče namestitev izvesti v precejšnji meri ročno, vendar je priporočeno
namestitev skriptirati. Pri tem je težava, da sicer obstajajo številni načini namestitve Kubernetesa
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
157
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
(kubeadm, kops, kubespray, CDH, ...), ampak nobeden od teh sistemov nima implementirane posebne
podpore za “air gapped” namestitev - vsi se zanašajo na stalno dostopnost interneta. Podprt je sicer
posredniški strežnik oz. “proxy”, ki ne prispeva toliko k zmanjšanju zgoraj omenjenih tveganj.
Naročnik je razvil posebne skripte za postavitev zrcalnih strežnikov v njihovem okolju, za namestitev
Kubernetesa pa je uporabil projekt kubespray [5], ki je nabor “receptov” za sistem Ansible. Tudi
konfiguracija namestitve je lahko verzionirana v sistemu za upravljanje različic (npr. Git), kar olajša
uskladitev različic Kubernetesa v testni in produkcijski postavitvi.
Skupnost razvijalcev Kubernetesa se zaveda te ovire za rabo le tega v kritičnih poslovnih okoljih.
Formirana je delovna skupina za izboljšanje namestitvenega procesa (SIG-cluster-lifecycle), ki ima
enega od ciljev tudi podporo za nameščanje v okoljih z varnostnimi zahtevami za izolacijo od interneta,
vendar je trenutno v teh okoljih še vedno potrebno v veliki meri ročno postaviti zrcalni register (ang.
registry mirror) [6], kar je naročnik tudi naredil.
Poleg varnosti so prednosti rabe zrcalnih registrov tudi hitrejše postavljanje novih vozlišč in Kubernetes
clustrov (ker je krajevno omrežje hitrejše od internetne povezave) in večje zaupanje v konsistentnost
različnih okolij (testno in produkcijsko Kubernetes okolje), ker imajo administratorji kopijo vseh
potrebnih datotek..
2.3. Ostali vidiki varnosti
2.3.1.
Omrežna segregacija
Drugi varnostni ukrep v poslovnih omrežjih je omrežna segregacija. V sodobnih časih ne zadostuje več
le postaviti točke informacijske obrambe na vstopu v omrežje (ang. perimeter defense), ampak je
potrebno varnost zasnovati v globino (ang. defense in depth), torej tudi samo omrežje razdeliti v
območja ter postaviti “požarne pregrade” med njimi.
To je še zlasti posebnega pomena, če lahko za nek informacijski sistem rečemo, da v okviru istega
obsega (ang. same perimeter) spada več organizacij.
Pri načrtovanju varnosti je potrebno privzemati, da bodo napadalci uspešno vdrli do vsakega
posameznega elementa omrežja, proti čemur se lahko borimo tako, da onemogočimo in otežimo uporabo
tega elementa kot odskočno desko za napade na druge elemente omrežja.
Ločitev okolij gradnje ter nadzorovan prenos sprememb med njima je tudi element omrežne segregacije,
tako, da to prispeva tudi k varnosti.
2.3.2.
Izolacija izvajanja
Koncept vsebnikov, tudi Docker, prinaša prednosti z vidika upravljanja postavitve aplikacij ter porabe
virov. Po drugi strani pa predstavlja tveganja z vidika varnosti, ker je stopnja izolacije manjša kot pri
izvajanju na klasičnih navideznih strojih ali fizičnih strežnikih [7].
Vsi vsebniki na istem gostitelju tečejo na istem jedru operacijskega sistema. Procesi v različnih
vsebnikih so torej procesi istega jedra, ki so med seboj ločeni samo prek funkcij ločitve virov (Linux
CGROUP) in ločitve vidnosti (Linux kernel namespaces). Implikacije so, da varnostne napake v jedru,
ki omogočijo napadalcu pridobitev korenskih (root) privilegijev na posameznem vsebniku, omogočajo
napad tudi na vse ostale vsebnike na istem vozlišču in posredno lahko omogočijo napad na celotno
postavitev Kubernetesa.
Zato je na Kubernetes vozliščih še pomembneje redno nameščati varnostne nadgradnje, zlasti za jedro
Linux. Nekatere distribucije Linux omogočajo celo uveljavitev popravkov Linux jedra med izvajanjem,
158
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
brez ponovnega zagona, kar je priporočljivo. Razvita je sicer rešitev gVisor [8], ki omogoča približati
raven izolacije virtualizacijskim rešitvam, ampak še ni dovolj preverjena za poslovno kritično
produkcijo.
Omejena izolacija je eden od ključnih povodov, da se je naročnik odločil postavitve na CI in testnih
okoljih poganjati na ločeni Kubernetes gruči kot produkcijo.
2.3.3.
Onemogočenje znane nevarne kode
Tako kot pri tradicionalnih strežniških infrastrukturah je pomembno tudi pri infrastrukturi na osnovi
Dockerja poganjati iskalnike znane zlonamerne kode (protivirusne programe, mrežne filtre, …) in
iskalnike gradnikov z znanimi ranljivostmi.
Pri tem je potrebno uporabiti iskalnike, ki podpirajo iskanje v zasebnem Docker registru organizacije,
ker je ta register točka, skozi katero potuje zgrajena izvajalna koda do točk izvajanja.
Posebnega pomena je izbira osnovnih slik. Pri gradnji Docker slike moramo bodisi ustvariti celoten
datotečni sistem od začetka, bodisi izbrati neko osnovno sliko z distribucijo Linux. Praviloma izberemo
že neko obstoječo namestitev izmed slik, ki so na voljo na osrednjem javnem registru Docker Hub. Z
vidika varnosti je pomembno, da izberemo zaupanja vredno osnovno sliko, ker se izbrana slika dejanko
prenese, namesti in poganja tudi kot osnova vsebinka v produkciji. Zlonamerna koda, ki jo napadalcem
uspe namestiti v osnovne slike v register osnovnih slik Docker Hub, bo tako pognana v samem središču
produkcijskega sistema. Najbolje je izbrati uradne slike, ki jih pripravijo skrbniki posameznih Linux
distribucij in kjer posodabljajo vdelane programske pakete, seveda pa je potem potrebno redno ponovno
graditi Docker slike aplikacij in jih nameščati v produkcijo.
2.3.4.
Varnostne prednosti Dockerja
Pristop Docker vsebnikov z vidika varnosti pomeni nekatere prednosti:
Izvajalna slika se pri vsakem zagonu ponovno prenese iz zasebnega registra (“ephemeral OS
installation”). Morebitna zlonamerna koda ima zaradi tega zaprto eno izmed možnih poti za trajno
namestitev v sistem, ker tudi, če se uspešno zažene z okužbo obstoječih procesov v vsebniku ali če
v vsebnik namesti svoje procese, bodo ti pri naslednjem zagonu “pozabljeni”. Pri tem je sicer
pomanjkljivost, da se lahko zgodi, da izgubimo sledi morebitnih varnostnih vdorov.
Enostavno izvedljivo je urediti, da je datotečni sistem slike samo berljiv (ang. read-only). Nabor
morebitnih potrebnih konfiguracijskih datotek se pripravi ročno, potem pa se v času zagona vsebnika
s strani Kubernetes (ali drugega orkestratorja, pod katerim teče) preslika v datotečni sistem vsebnika.
Če je datotečni sistem samo berljiv, je tudi ob nekaterih vrstah uspešnih vdorov oteženo namestiti in
zagnati trajno kopijo zlonamerne kode.
2.4. Ogrodja in orodja za neprekinjeno dostavo
Realizacija neprekinjene dostave je močno odvisna od izbire programskega okvirja oz. programa za
opravljanje različic in programa namenjenega splošnemu avtomatskem testiranju komponent programa.
Ob novem razvoju posebne različice programja za neprekinjeno dostavo je smiselno preveriti ali
uporabiti obstoječe sodobne programe za opravljanje različic, testiranje in izdajo različic. Na tem mestu
najdemo več možnosti, kot so npr. Jenkins, GitLab, TeamCity, Travis CI, Bamboo, Go CD , Spinaker
in drugi. Nekatere od naštetih lahko uporabimo kot specializirano rešitev za neprekinjeno dostavo ali pa
je le-ta zajeta kot posamezen gradnik produkta. Če si želimo, da razvijalcem ponudimo dobro prakso
razvoja, ki predvideva, da je realizirana posamezna komponenta programja v največji meri tudi testirana
in da je tudi pregledana s strani drugih razvijalcev, kot le samega avtorja, lahko našo izbiro programa
za izbiro različic zožimo na take, ki omogočajo tudi enostavno proženje testnih scenarijev, in sicer kar
z odrivom izvorne programske kode v upravljalnik različic. V svetu se je za tako prakso že uveljavilo
skupno ime “GitOps”, saj lahko prožimo izdajo različice programa na podlagi sprejete revizije izvorne
kode v strežnik upravljalnika različic Git.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
159
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
Poleg skript, ki omogočajo avtomatično izdajo verzije, proženje integracijskih testov in testov
programskih enot, je ključna komponenta tudi sinhronizacija izvorne kode med razvojnimi skupinami
in naročnikom. Ta je realizirana na tak način, da naročnik izvede akcijo sinhronizacije po vnaprej
določenem časovniku.
Kot ogrodje za realizacijo programa za neprekinjeno dostavo v vzporednih kritičnih poslovnih okoljih
smo izbrali GitLab, ki omogoča enostavno postavitev in tudi enostavno realizacijo vseh zahtevanih
komponent naročnika. Gradnja cevovoda je tako omejena na pravila, določena v eni sami datoteki. Ta
datoteka služi kot skupek pravil, ki prožijo posamezne dele neprekinjene dostave.
2.5. Upravljanje različic programske kode in sinhronizacija izvorne kode programja
Dostava programske kode naročniku je izvedena s pomočjo sistema sinhronizacije verzioniranja kode v
sistemu Git [9], ki je integriran v več neodvisnih strežnikov GitLab-CC [10]. V kolikor sodeluje pri
razvoju le ena razvojna skupina sta za prevzem potrebna dva strežnika GitLab. Eden je nameščen v
razvojem podjetju, drugi pa v zaprtem omrežju naročnika. Slednji ima možnost funkcije prevzema (ang.
pull) in dostop do GitLab strežnika pri razvijalskem podjetju.
Razvojno podjetje razpolaga le s testno-razvojnim okoljem. Sinhronizacija je zasnovana tako, da na
največji možen način lajša razvoj, testiranje in pred-izdajo naročniku. Vodja razvojne skupine izvede
ročno izdajo programja pred-izdane različice. To stori z izdelavo kreacije nove značke znotraj strežnika
za opravljanje različic v okolju razvojne skupine. Izdaja pred-izdane različice je omogočena le na delih
programja, kjer je bil uspešen cikel zvezne integracije. Ob izdaji značke se avtomatsko kreira stisnjena
potrditev (ang. squash commit) programske kode v vejo, ki je namenjena sinhronizaciji z naročnikovim
strežnikom za upravljanje različic. Sinhronizacija se izvaja z izvedbo sinhronizacijske naloge, ki jo proži
časovni razporejevalnik v naročnikovem upravljalniku različic. Izvede se prenos izvorne kode s
sinhronizacijo Git repozitorijev.
3. REZULTATI
Rezultat tega prispevka opredeljuje izvedba programja osnovanega za GitLab cevovode in Git
upravljalnika različic za neprekinjeno dostavo izdaj. Upošteva spremenjen protokol, ki ga zaradi
posebnosti v zaprtem kritičnem okolju naročnika implementiramo in omogoča enostavno
dostavo/sinhronizacijo izvorne kode programja v upravljalca različic naročnika. Zaradi parametriziranih
postopkov programja je mogoče ta program uporabiti na popolnoma ločenih okoljih, le z nastavitvijo
konfiguracije na osnovi okoljskih spremenljivk. Razvojne skupine lahko enostavno uporabljajo in tudi
same same prispevajo k dopolnitvam ali spremembam cevovoda, saj je le ta vključen v razvojni projekt
kot Git pod modul (ang. Git submodule). To predstavlja neodvisen Git projekt, ki vključuje v svojem
programju funkcionalnosti, ki so potrebne in osredotočene le na zastavljeno metodologijo neprekinjene
dostave in dodatne želje naročnika, ki opredeljujejo naročnikov način dostave nove različice programja
v produkcijo.
Razvojne skupine ali podjetja si ponavadi želijo dostaviti svoj izdelek čim bolj dovršen, saj le tako lahko
skrajšajo čas od samega razvoja do uveljavitve funkcionalnosti v produkciji. V splošnem si želijo
zagotoviti delovanje v skladu z naročnikovimi željami tako iz funkcionalnega, kot tudi tehničnega
vidika. Za preverjanje delovanja se pogosto uporabljajo avtomatski in ročni testni postopki, ki jih v
delimo na testiranje programskih enot (ang. unit testing), integracijsko testiranje, sistemsko testiranje,
sistemsko integracijsko testiranje, regresijsko testiranje, testiranje sprejemljivosti, alfa testiranje, beta
testiranje. Način samega testiranja ponavadi opredeli naročnik. V našem primeru uporabljamo testiranje
programskih enot, integracijsko testiranje in testiranje sprejemljivosti.
160
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
Naročnikova zahteva je, da razvojne skupine same realizirajo in testirajo tako testiranje programskih
enot, kakor tudi integracijsko testiranje v testno-razvojem okolju. Šele po uspešni izvedbi navedenih
testov lahko realizirajo oddajo izvorne programske kode s pripadajočimi testi. Naročnik nato še na
lastnem razvojno-testnem okolju ponovno izvede testiranje osnovnih programskih enot in avtomatsko
integracijsko testiranje. V kolikor je testiranje uspešno lahko dostavljeno funkcionalnost tudi namesti v
testnem okolju za testiranje sprejemljivosti, ki se izvede ročno po protokolu naročnika. Na tem mestu
se morebitne pomanjkljivosti sporoči razvijalcem in se hkrati zahteva njihova odprava.
Testiranje programskih enot in integracijsko testiranje pa od razvojne skupine/podjetja zahteva
postavitev razvojno-testnega okolja, kakor tudi GitLab strežnika in GitLab izvajalnika, ki omogoča
izvajanje akcij, proženih z odrivom izvorne kode v posamezno vejo Git projekta. Vse to lahko razvojna
skupina naredi hitro in učinkovito, saj ima na voljo tudi dokumentirano in skriptirano postavitev oz.
namestitev za vse odvisne strežnike in ostale programe, ki sestavljajo razvojno-testno okolje.
Slika 2 prikazuje trenutno zadnjo različico implementacije razvojno-testnega okolja. Upravljalnik
različic GitLab mora za nemoteno delovanje cevovoda neprekinjene dostave imeti dostop do GitLab
izvajalnika, Docker registra in Maven repozitorija (slednji je potreben za podporo gradnje projektov v
jeziku Java in predstavlja strežnik za potrebne knjižnice, ang. dependency). Poleg tega GitLab izvajalnik
proži testne protokole dodane funkcionalnosti z namestitvijo razvojne različice programja v čim bolj
podobno okolje, kot je produkcijsko - Kubernetes grozd. Skriptirana postavitev Kubernetes grozda
omogoča postavitev tovrstnega okolja na lastni ali najeti infrastrukturi razvojne skupine oz. podjetja. S
tem razvijalcem omogočimo hitro in učinkovito testiranje novo razvitih funkcionalnosti.
Slika 2. Diagram postavitve razvojnega okolja pri razvojni skupini
Slika 2 poleg podrobnega pregleda vseh odvisnih entitet v razvojno/testnem okolju opisuje tudi
razčlenjen potek cevovoda pri testiranju nove funkcionalnosti. Razvijalci odrinejo spremembo izvorne
kode v upravljalnike različic GitLab, ki zazna spremembo in proži cikelj neprekinjene integracije.
GitLab izvajalnik zgradi Java aplikacije in Docker slike, katere različice odloži v Docker register in
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
161
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
Maven repozitorj. Nato namesti različico aplikacije v okolje Kubernetes. Ta v namestitvenem postopku
prevzame zgrajeno različico Docker slike in zažene aplikacijo. Obenem tudi namesti podatkovno zbirko,
ki je potrebna za izvedbo testov aplikacije. V primeru uspešno izvedenih testov je možno ročno tudi
narediti dodatno značko, ki omogoča ročno testiranje z uporabo zunanje stalne podatkovne zbirke.
Vzporedno lahko teče več vzporednih neodvisnih različic aplikacije, ki se jih preizkuša neodvisno.
Sekvenčni diagram na sliki 3 opisuje cevovod razvoja nove funkcionalnosti. Posebnost pri razvoju, ki
ga izpostavljamo v tem prispevku, je, da razvita funkcionalnost poteka med dvema ločenima okoljema,
med okoljem razvojne skupine in testnim okoljem naročnika. Oddaja izvorne kode v naročnikovo okolje
definira akcija sinhronizacije na sekvenčnem diagramu na sliki 3. Vsa izvorna koda se izteka v
naročnikov upravljalnik različic, kjer se dodatno preizkusi novo funkcionalnost, tudi predhodno
funkcionalnost programja in se na ta avtomatičen način izloči slabe kandidate za izdajo. Šele, ko
funkcionalnost uspešno prestane tudi teste skladnosti, je nova funkcionalnost avtomatično izdana v novi
različici programja. Komunikacija v naročnikovem okolju je zabeležena v upravljalniku različic in tudi
hkrati posredovana v upravljalnik različic razvojne skupine.
Slika 3. Sekvenčni diagram neprekinjene dostave v vzporednem kritičnem poslovnem okolju
Avtomatično se zažene naloga ponovne zvezne integracije. Če je ta uspešna, se vzpostavi novo okolje s
pripadajočo novo funkcionalnostjo programja v okolju namenjenemu kontroli kakovosti oz. v okolju za
izvedbo testov sprejemljivosti. Hkrati je lahko v testnem okolju nameščenih več različnih verzij
programja. Vsaka verzija je testirana po protokolu, ki omogoča testiranje nove in starih funkcionalnosti.
Če so preizkusi testnih postopkov uspešni, lahko kontrolor kakovosti naredi zahtevek za izdajo nove
verzije programa. Kreiranje značke proži avtomatično namestitev programja v produkcijo.
Celoten vpogled v realizirano metodologijo neprekinjene dostave lahko predstavimo na sliki 4. Opazimo
vez med okoljem razvojnega podjetja in naročnika, ki je realizirana s pomočjo sinhronizacije izvorne
kode med razvojnih podjetjem in naročnikom. Sinhronizacija je izvedena glede na nastavljeno
periodično preverjanje sprememb v razvojnem upravljalniku različic v točno določeni veji, ki je
namenjena za sinhronizacijo. V kolikor se na tem mestu zazna sprememba, se avtomatično izvede
ponovno testiranje programskih enot in integracijsko testiranje v testnem okolju naročnika.
162
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
Slika 4. Diagram neprekinjene dostave v vzporednem kritičnem poslovnem okolju
4. ZAKLJUČEK IN DISKUSIJA
Sodoben pristop k razvoju programske opreme za strežnike - DevOps - predvideva, da je okolje
produkcijskega izvajanja programja v visoki meri integrirano z okoljem razvoja programja. Javni oblak
omogoča upravljanje strežniške infrastrukture s spletnimi upravljalskimi portali (ang. self-service) in
programskimi vmesniki (API). Zato je izvedljivo, da iste delovne skupine izvajajo tako razvoj programja
(“development”) kot upravljanje produkcije programja (“operations”) - meja med tema specializacijama
je zabrisana.
V svetu programja za podjetja (ang. enterprise software), kjer sta ti dve specializaciji ločeni tudi prek
mej organizacij, prinaša uporaba sodobnih pristopov nekaj dodatnih izzivov. Naročnik je podjetje, ki ni
specializirano za razvoj programja, zato za ta namen običajno najame zunanje podjetje. Istočasno pa je
programje dovolj pomembno za poslovanje, da naročnik zahteva največji možni nadzor nad izvajanjem.
Zato razvojna skupina praviloma ne more hkrati še upravljati produkcijskega okolja.
Po drugi strani pa so se uveljavila orodja za porazdeljeno upravljanje različic (ang. distributed version
control system), kot je npr. Git [9]. Ta orodja omogočajo, da za isti projekt obstaja več repozitorijev
izvorne kode, pri čemer lahko na sistematičen način prenašamo spremembe med njimi.
To omogoča zasnovati neprekinjeno dostavo na tak način, da naročnik v svojem omrežju postavi okolje
za gradnjo aplikacij, skupaj z repozitorijem porazdeljega upravljalnika različic, tudi če sam ne izvaja
razvoja. Izvajalci razvoja pa potem iz svojih repozitorijev na dogovorjen način in ob dogovorjenih časih
dostavljajo kodo v repozitorij, postavljen pri naročniku. Naročnik za tem sam izvaja gradnjo in
nameščanje aplikacij s parametriziranimi skripti, ki jih pripravijo izvajalci po njegovih standardih.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
163
T. Justin, Ž. Ciglar in A. Orešnik: Neprekinjena dostava v vzporednem kritičnem poslovnem
okolju
Takšna rešitev se ujema z interesom naročnika, da izvaja lastništvo kode (ang. ownership); vedno ima
izvorno kodo verzije, ki dejansko teče v produkciji in vedno lahko odloča glede nadaljnjih sprememb te
kode. Istočasno pa to ne ovira razvojnega procesa pri izvajalcih, ker lahko izvajalci interno zasnujejo
svoje strategije ravnanja s kodo ter neprekinjeno integracijo, ki lahko v odvisnosti od aplikacije dajejo
prednost hitrosti razvoja (za npr. uporabniški vmesnik, ki lahko terja hitrejše iteriranje za dosego dobre
uporabniške izkušnje) ali morebiti natančnejšemu preverjanju (za bolj kritične dele). Pomembna
prednost je, da ob tem ohranimo pomemben varnostni element, da je naročnikovo okolje maksimalno
mrežno zaprto.
Kot prednosti predstavljenega pristopa k neprekinjeni dostavi v poslovno kritičnih okoljih lahko
izpostavimo hitrejši čas od zaključka razvoja posameznega projekta do namestitve v produkcijskem
okolju. Obenem je s parametrizirano skriptirano postavitvijo izboljšana testabilnost, kar omogoča višjo
samozavest razvojnikov in višjo stopnjo zaupanja naročnika v kakovost dostavljenega izdelka.
Določitev glavnih komponent izdelave parametriziranega skriptiranega nameščanja ter postavitev
potrebnih izvajalnih okolij je zahteven proces, ki terja večja začetna vlaganja in lahko vzame precej
časa. Kasneje pa se obrestuje z večjo agilnostjo ne samo razvoja programja, ampak tudi zmožnostjo
hitrejšega uvajanja transformativnih sprememb informacijskega sistema v produkcijo. Pri tem istočasno
podpira učinkovito delitev dela med različne izvajalce. Čedalje več podjetij za konkurenčnost na tržišču
potrebuje tudi odzivnost svojih informacijskih sistemov za podporo poslovanja na hitre spremembe
zahtev.
5. LITERATURA
[1] CHEN Lianping, “Continuous delivery: overcoming adoption challenges”, Journal of Systems and
Software, letnik 128, junij 2018, str. 72-86
[2] Bass, Len, Ingo Weber inLiming Zhu, DevOps: A Software Architect's Perspective, Addison-
Wesley Professional, 2015.
[3] https://kubernetes.io/, Informacije o sistemu Kubernetes, obiskano 15.05.2018
[4] Saito, Hideto, Hui-Chuan Chloe Lee, in Cheng-Yang Wu, DevOps with Kubernetes: Accelerating
software delivery with container orchestrators, Packt Publishing Ltd, 2017.
[5] https://github.com/kubernetes-incubator/kubespray, Informacije o namestitvenem postopku
Kubespray, obiskano 15.5.2016
[6] https://schd.ws/hosted_files/kccnceu18/87/kubeadm%20deep%20dive%20-%2020180504.pdf,
Prestavitev namestitvenega postopka Kubadm na konfenreci KubeCon 2018, obiskano 15.5.2016
[7] Suresh, Salini in Manjunatha Rao, "A Methodical Review Of Virtualization Techniques In Cloud
Computing.", International Journal of Computing Science and Information Technology, april 2018,
str-. 50-53.
[8] https://github.com/google/gvisor, obiskano 15.5.2016
[9] LOELIGER Jon in MCCULLOUG Matthew, Version Control with Git: Powerful tools and
techniques for collaborative software development, O'Reilly Media, Inc., 2012
[10] https://about.gitlab.com, Informacije o aplikaciji Gitlab, obiskano 15.05.2018
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
PRIMERJAVA ODPRTOKODNIH
PODATKOVNIH MREŽ
BOJAN ŠTOK, CIRIL PETR IN ANDREJ KRAJNC36
Povzetek: V prispevku bomo primerjali nekaj popularnih odprtokodnih
podatkovnih mrež (ang. data grid). Na običajnih računalnikih nam je v
zadnjih letih na voljo vedno večja količina notranjega pomnilnika (RAM),
kar nam sicer prinaša vertikalno skaliranje, z večanjem števila strežnikov v
mreži, pa imamo tudi možnost horizontalnega skaliranja. Diskovno podprte
podatkovne baze vse težje dohajajo vse večje zahteve po vzporedni obdelavi
in shranjevanju. Zato večina kombinira podatkovne baze in podatkovne
mreže, ki hranijo podatke v pomnilniku. Osnovne funkcionalnosti
primerjanih podatkovnih mrež so podobne, razlikujejo pa se v arhitekturi in
zmogljivosti. Funkcionalno najbolj bogat je sorazmerno mlad projekt
Apache Ignite, ki omogoča enak programski vmesnik kot relacijske baze
(SQL, JDBC, ODBC). Medtem ko Redis in Infinispan nista strogo
konsistentna (ang. strongly consistent), je Apache Ignite strogo konsistenten
in podpira dvofazno potrjevanje (ang. two-phase commit). Najbolj razširjen
je Redis, ki pogosto zamenjuje rešitve, ki so temeljile na uporabi
Memcached.
Ključne besede: • podatkovne mreže • porazdeljeni predpomnilniki •
podatkovne baze • vzporednost • redundanca • skalabilnost
NASLOV AVTORJEV: mag. Bojan Štok, IskraTEL d.o.o., Tržaška c. 37a, 2000 Maribor, e-pošta: stok@iskratel.si.
dr. Ciril Petr, IskraTEL d.o.o., Tržaška c. 37a, 2000 Maribor, Slovenija, e-pošta: petr@iskratel.si. mag. Andrej
Krajnc, IskraTEL d.o.o., Tržaška c. 37a, 2000 Maribor, Slovenija, e-pošta: krajnc@iskratel.si.
DOI https://doi.org/10.18690/978-961-286-162-9.18
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
165
B. Štok, C. Petr in A. Krajnc: Primerjava odprtokodnih podatkovnih mrež
1. UVOD
Eden od mehanizmov za pohitritev aplikacij je uporaba predpomnilnika (cache). Tako nam v aplikaciji
ni potrebno pri vsaki zahtevi izvesti dostopa do podatkovne baze bodisi SQL ali NoSQL.
Predpomnilnik je strojna ali programska komponenta, ki shrani podatke za bodočo uporabo na način, da
bodo ti podatki dostavljeni hitreje. Podatki v predpomnilniku so lahko rezultat predhodnih izračunavanj
ali pa so duplikat podatkov, ki so shranjeni nekje drugje. Primeri strojnih predpomnilnikov so
procesorski (CPU) predpomnilnik, grafični (GPU) predpomnilnik, mikroprocesorski DSP
predpomnilnik itd. Primeri programskih predpomnilnikov so diskovni predpomnilnik (disk cache),
spletni predpomnilnik (web cache), DNS, iskalni predpomnilniki, bazni predpomnilniki itd.
V tradicionalnih aplikacijah ni bilo takšne potrebe po uporabi predpomnilnika, saj so ponavadi klasični
pristopi zadoščali za izdelavo performančno dovolj zmogljivih aplikacijah. Sodobne aplikacije dandanes
so pogosto zelo kompleksne, delajo z velikimi količinami podatkov, uporabljajo porazdeljene
arhitekture, povezujejo najrazličnejše storitve, vse skupaj pa mora biti tudi performančno učinkovito.
Da dosežemo želene cilje, se moramo pogosto odločiti za uporabo predpomnilnikov, še posebej je vedno
večja potreba po uporabi porazdeljenih predpomnilnikov.
Porazdeljeni predpomnilniki so razširitev tradicionalnega koncepta predpomnilnika, ki se uporablja le
na enem računalniku. Porazdeljen predpomnilnik se lahko razširja čez več strežnikov in na ta način
omogoča shranjevanje večje količine podatkov, hkrati pa omogoča večje transakcijske kapacitete.
Največkrat gre pri porazdeljenih pomnilnikih za shranjevanje podatkov, ki so sicer shranjeni v
podatkovni bazi ali pa gre za podatke o spletnih sejah. Ideja o porazdeljenih predpomnilnikih je vedno
bolj zanimiva tudi zaradi tega, ker je postala strojna oprema (predvsem diski) cenovno ugodna, omrežja
pa so hitrejša (1 GBit je standard, 10 GBit je vedno bolj pogost). Porazdeljeni predpomnilniki delajo
dobro tudi na cenovno ugodnih računalnikih, medtem ko bazni strežniki pogosto zahtevajo drago strojno
opremo. Na področju porazdeljenih predpomnilnikov je na voljo veliko produktov, pri čemer so nekateri
na voljo že dalj časa, vedno znova pa se pojavljajo novi produkti, ki se želijo uveljaviti na tem področju.
Trenutno najbolj razširjeni produkti so Infinispan, Redis, Apache Ignite, Memcached, Oracle
Coherence, Riak, Couchbase, Aerospike itd.
V zadnjem času se vse bolj uveljavljajo podatkovne mreže (data grid), predvsem v situacijah, ko nam
ni dovolj zgolj osnovna funkcionalnost porazdeljenih pomnilnikov (manipulacija podatkov preko put in
get). Podatkovne mreže so nadgradnja porazdeljenih pomnilnikov, saj ponujajo vse osnovne
funkcionalnosti porazdeljenih pomnilnikov, hkrati pa omogočajo računalniško obdelavo v
predpomnilniku shranjenih podatkov. Tako lahko nad podatki izvajamo razna kompleksna indeksiranja,
Map Reduce procesiranja, omogočen je porazdeljen SQL ipd. Tako fokus tovrstnih orodij ni več zgolj
čisto upravljanje s podatki, temveč se fokus premika v smer hibridnega upravljanja s podatki in s
procesiranjem podatkov. Uporaba tovrstnih orodij predstavlja nov konceptualni preskok v razvoju
programskih rešitev.
2. PRIMERJAVA REŠITEV
V prispevku bomo predstavili in primerjali tri implementacije: Infinispan, Redis in Apache Ignite.
Infinispan in Apache Ignite sta napisana v programskem jeziku Java, zato seveda podpirata tudi JSR
107 - Java Caching API. Redis je napisan v ANSI C-ju. Kljub temu pa je pred približno enim letom
dobil podporo tudi za JSR 107. Redis je verjetno najbolj popularna implementacija podatkovne mreže.
Pogosto zamenjuje rešitve, ki so temeljile na uporabi Memcached. Omogoča tudi, da se obstoječi
Memcached odjemalec (v kateremkoli jeziku) priključi na Redis.
Zmogljivost oz. hitrost podatkovne mreže je precej odvisna od narave aplikacije (veliko ali majhno
število vpisov, pomembnejša zanesljivost (redundanca) ali hitrost branja, ….). Zato moramo podatkovno
mrežo konfigurirati tako, da dobimo optimalne zmogljivosti za našo aplikacijo.
Podatkovno mrežo tipično uporabljamo za naslednje primere uporabe:
166
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Štok, C. Petr in A. Krajnc: Primerjava odprtokodnih podatkovnih mrež
Porazdeljeni predpomnilnik (ang. distributed cache), pogosto pred podatkovno bazo
Shramba za začasne podatke kot so npr. seje
Obdelava podatkov v pomnilniku (ang. In-memory data processing) in analitika
Komunikacija med JVM stroji in deljena shramba
Map Reduce implementacija v podatkovni mreži pomnilnika (ang. in-memory data grid)
3. INFINISPAN
Infinispan je naslednik JBoss Cache. Projekt se je startal leta 2009 [1] pod okriljem podjetja Red Hat.
Infinispan teče znotraj aplikacijskega strežnika Wildfly. Če naša aplikacija teče znotraj aplikacijskega
strežnika Wildfly, pomeni, da lahko uporabljamo Infinispan kot lokalni ali porazdeljeni predpomnilnik.
Če pa želimo, da aplikacija teče ločeno od podatkovne mreže oz. aplikacija ni napisana v programskem
jeziku java, namestimo Infinispan server in uporabimo oddaljen dostop do podatkovne mreže preko
protokola Hot Rod. Poleg Jave so podprti še naslednji programski jeziki: Ruby, Python, C++, C#,
Javascript.
Infinispan lahko uporabimo kot lokalni (standalone). Tipično ga uporabljamo v gruči (cluster). Gručo
lahko konfiguiramo na naslednje načine [2]:
Način razveljavitve (invalidation mode). V tem načinu se med vozlišči ne delijo podatki.
Infinispan le zagotavlja, da ko je podatek vpisan v neko vozlišče, razveljavi podatek v ostalih
vozliščih. Ta način je uporaben, ko imamo permanentne podatke shranjene npr. v podatkovni
bazi, Infinispan pa se uporablja le za optimizacijo dostopa. Vedno, ko se podatek spremeni, se
pošlje sporočilo o razveljavitvi na ostala vozlišča. To je učinkovito, saj pošljemo le sporočilo o
razveljavitvi, ne pošljemo pa celotne vrednosti (npr. vrstice). Ta način se lahko uporablja tudi s
ClusterLoader nalagalnikom. V tem primeru, če ključ ni v lokalnem vozlišču, se bo pridobil
podatek iz drugega vozlišča.
Repliciran način (replicated mode) - podatek vpisan na kateremkoli vozlišču se pošlje vsem
ostalim vozliščem. Pridobivanje tega podatka pa je potem hitro, saj ga vedno pridobimo lokalno.
To je uporabno le za gruče z največ 10 vozlišči in za primere, ko imamo sorazmerno malo
vpisov.
Porazdeljen način (distributed mode) - poskuša hraniti ključ v “numOwners” vozliščih. To nam
omogoča linearno skalabilnost in hranjenje več podatkov, če dodamo več vozlišč. Število kopij
(numOwners) je kompromis med zmogljivostjo in zanesljivostjo (durability). Kopije se
particionirajo glede na konfiguracijo (KeyPartitioner). Prvo vozlišče, ki hrani podatek je
primarni lastnik (primary owner), ostala vozlišča, ki hranijo kopijo so rezervni lastniki (backup
owners).
Razpršeni način (scattered mode) - je podoben porazdeljenemu načinu, vzdržuje pa le dve kopiji
(numOwners=2). Za razliko od porazdeljenega načina, lokacija podatka ni fiksna. Primarni
lastnik se določi po enakem algoritmu, rezervna kopija pa se hrani v vozlišču, ki je zadnji shranil
podatek.
Neodvisno od tega pa lahko uporabljamo asinhroni in sinhroni način. Pri asinhronem načinu
uporabniška nit ni blokirana. Vendar se moramo v tem primeru zavedati, če kličemo cache.put(k1, v1);
cache.put(k1,v2); da ne vemo ali se bo vpisala vrednost v1 ali v2.
Ko razpakiramo infinispan-server-9.2.2.Final-bin.zip ga zaženemo s parametrom, kjer povemo pot do
konfiguracijske datoteke. Uporabimo clustered.xml, kjer je že konfigurirana gruča.
bin/standalone.sh -c clustered.xml
Tako na različnih strežnikih zaženemo več instanc. Gruča se avtomatsko vzpostavi preko multicast
omrežja. V konfiguracijski datotetki je privzeta nastavljena naslednja multicast grupa 234.99.54.14 in
port 45700. Za Hod Rod protokol je privzeto nastavljen port 11222. Konfiguriran je tudi že port 11211
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
167
B. Štok, C. Petr in A. Krajnc: Primerjava odprtokodnih podatkovnih mrež
za memcached protokol. Če želimo oddaljeno dostopati do podatkovne mreže, moramo konfigurirati
interaface “public”, zamenjamo locahost z IP-jem.
Primer:
Če uporabimo Hot Rod odjemalca (maven knjižnica name: infinispan-cachestore-remote, version:
9.2.2.Final) v datoteki hotrod-client.properties naštejemo seznam IP-jev. Načeloma je dovolj IP le enega
živega strežnika.
Primer datoteke hotrod-client.properties:
infinispan.client.hotrod. server_list=172.18.120.50:11222;172.18.120.51:11222;172.18
.120.52:11222
4. REDIS
Ime Redis pomeni REmote DIctionary Server. Začel se je razvijati leta 2010 pod okriljem podjetja
VMware. Od leta 2013 ga sponzorira Pivotal Software.
Redis se primarno uporablja za izboljšanje performans v aplikacijah za predpomnilnik. Podatke lahko
shranimo tudi persistentno. Poleg enostavnega tipa kot je string, omogoča tudi hranjenje bolj
kompleksnih tipov kot so: seznami (lists), mape (maps), množice (sets) in bitne mape. Za vsakega od
teh tipov omogoča tudi posebni API, ki omogoča “delni” vpis in “delno” branje iz te strukture.
Za začetek je zelo uporaben redis-cli, s pomočjo katerega testiramo funkcionalnosti Redis [3]. Primeri
uporabe
key/value
o set k v
o get k
liste
o rpush mylist a // dodamo na konec seznama element a v listo s ključem mylist
o lpush mylist b // dodamo na začetek seznama element b v listo s ključem mylist
o lrange mylist 0 -1 // vrne vse elemente od začetka do konca liste mylist
o lrange mylist 2 5 // vrne elemente mylist[2], mylist[3], mylist[4], mylist[5]
o rpop mylist // vrne in odstrani zadnji element iz liste
o lpop mylist // vrne in odstrani prvi element iz liste
mape
o hmset k a1 v1 a2 v2 a3 v3 // v mapo dodamo element s ključem k in vrednost v1 za
atribut a1, vrednost v2 za attribut a2 ter vrednost v3 za atribut a3
o hget k a1 // vrne vrednost atrbuta a1 za ključ k
o hgetall k // vrne vse atribute za ključ k
množice
o sadd myset a b c // dodamo tri elemente: a, b, c v množico s ključem myset
o srem myset b // odstrani element b iz množice myset
o smembers myset // vrne vse elemente množice s ključem myset
o sismember myset a // vrne 1, če je "a" element množice myset, sicer vrne vrednost nič
o scard myset // vrne število elementov množice myset
o sinter myset1 myset2 myset3 // vrne presek - elemente, ki so v vseh treh množicah
o sunion myset1 myset2 // vrne unijo - elemente iz obeh množic
o sdiff myset1 myset2 // vrne elemente iz množice myset1, ki niso v myset2
administrativni ukazi
168
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Štok, C. Petr in A. Krajnc: Primerjava odprtokodnih podatkovnih mrež
o cluster nodes // izpiše seznam vseh vozlišč (master in slave)
o cluster info // informacije o gruči
o cluster replicate // vozišče postane slave za podan master node-id
o cluster slaves // izpiše seznam slave vozlišč za podan master node-id
Obstajajo odjemalske knjižnice za večino programskih jezikov: ActionScript, Bash, C, C#, C++,
Clojure, Lisp, Dart, Delphi, Erlang, Go, Haskell, Java, Julia, Objective-C. Pascal, Perl, PHP, Python, R,
Ruby, Scala, Smalltalk, Swift, VB in drugi.
Za Java programski jezik obstaja več knjižnic. Mi smo uporabili knjižnico Jedis (group: redis-client,
name: jedis, version 2.9.0.).
Imena metod so enaka kot cli ukazi.
Primeri:
jedis.set("car", "Toyota");
jedis.get("car");
jedis.rpush("mylist", x);
List list = jedis.lrange("mylist", 0, -1);
Map m = new HashMap<>();
m.put("name", "Bill");
m.put("age", "40");
jedis.hmset("h1", m);
jedis.hget("h1", "name")
jedis.sadd("myset", "a", "b");
jedis.sadd("myset", "c", "d", "e");
System.out.println("is member: " + jedis.sismember("myset", "b"));
jedis.smembers("myset"));
Redis particionira podatke glede na število master vozlišč. Za vsakega masterja lahko določimo enega
ali več repliciranih strežnikov (slave). Če ne določimo vsaj enega strežnika, ob izpadu i-tega master
strežnika, izgubimo vse ključe i-te particije. Med masterjem in slaveom se privzeto uporablja asinhrona
komunikacija.
Instalacija je malo bolj zahtevna. Na enem strežniku lahko zaganjamo več instanc Redis strežnika. Zato
tipično uporabimo številko porta za ime konfiguracije. Privzet port je 6379. Pred prvim zagonom je
potrebno popraviti konfiguracijsko datoteko: /etc/redis/6379.conf.
V konfiguraciji ponavadi popravimo naslednje parametre:
bind - IP naslov, privzeto localhost
deamonize na yes, privzeto no
spremenimo loglevel in logfile postavimo na /var/log/redis_6379.log
syslog-enabled postavimo na yes
pomembno je, da parameter dir postavimo na direktorij, kjer se naj shranjujejo podatki, tipično
na: /var/redis/6379
cluster-enables postavimo na yes
cluster-config-file nodes-6370.conf - s tem parametrom povemo le v katero datoteko si bo
Redis vpisal konfiguracijo. Datoteke nodes-6370.conf ne spreminjamo sami.
s parametrom save določimo po koliko spremembah se shranijo podatki na disk: save
Privzeto so nastavljene naslednje vrednosti za shranjevanje:.
save 900 1
save 300 10
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
169
B. Štok, C. Petr in A. Krajnc: Primerjava odprtokodnih podatkovnih mrež
save 60 10000
Redis streže odjemalcem na TCP portu s privzeto vrednostjo 6379. Za komunikacijo med strežniki v
clustru pa se uporablja port 16379 (portu prištejemo 10000).
Ko smo pripravili konfiguracijo, zaženemo Redis deamone na vseh vozliščih:
/etc/init.d/redis_6379 start
Vozlišča se med seboj še ne poznajo. Potrebno je konfigurirati katera vozlišča bodo masterji, katera pa
slave. Pri konfiguriranju gruče si lahko pomagamo z Ruby skripto redis-trib [4].
Če želimo postaviti 3 mastereje in 3 slave, moramo imeti 6 vozlišč. Izvedemo naslednji ukaz:
./redis-trib.rb create --replicas 1 172.18.120.50:6379 172.18.120.51:6379
172.18.120.52:6379 72.18.120.53:6379 172.18.120.54:6379 172.18.120.55:6379
Če želimo postaviti 3 masterje brez slave vozlišč, izvedemo naslednji ukaz:
./redis-trib.rb create --replicas 0 172.18.120.50:6379 172.18.120.51:6379
172.18.120.52:6379
Slika 1. Okolje minimalne Redis gruče
Minimalno Redis gručo sestavljajo tri master vozlišča vsak s svojim slave vozliščem. Vsakemu master
vozlišču je dodeljena poddomena med 0 in 16.384. Na obeh master in slave vozliščih tečeta dva TCP
servisa. Prvi sprejema REST sporočila, drugi pa predstavlja komunikacijsko vodilo za gručo, po katerem
teče komunikacija po Redis Gossip protokolu.
V Redis gruči imamo 16384 slotov. Da bi izračunali kakšen je »hash slot« za nek ključ, enostavno
izračunamo CRC16 ključa z modulom 16384 [4].
Tako je vsako Redis vozlišče odgovorno za poddomeno hash funkcije. Če imamo tri master vozlišča,
potem:
vozlišče A vsebuje poddomeno od 0 do 5500
vozlišče B vsebuje poddomeno od 5501 do 11000
vozlišče C vsebuje poddomeno od 11001 do 16383.
170
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Štok, C. Petr in A. Krajnc: Primerjava odprtokodnih podatkovnih mrež
5. APACHE IGNITE
Apache Ignite je začelo razvijati podjetje GridGain System. V Apache incubator program se je vključil
konec leta 2014. Prva verzija je bila izdana leta 2015.
Apache Ignite se lahko uporablja kot podatkovna mreža, lahko pa tudi kot in-memory porazdeljena SQL
podatkovna baza [5].
Ignite obravnava pomnilnik (RAM) ne samo kot predpomnilnik ampak polno funkiconalno shrambo.
Persistenca je lahko vključena ali izključena. Če je persistenca izključena, potem lahko obravnavamo
Apache Ignite kot bazo podatkov v pomnilniku (in-memory database - SQL) ali kot podatkovno mrežo
v pomnilniku (in-memory data grid - key-value API). Če pa persistenco vključimo, potem Ignite postane
porazdeljena horizontalno skalabilna podatkovna baza, ki omogoča konsistenco podatkov in je odporna
na napake (resilient to full cluster failures).
Persistenco vključimo s konfiguracijo parametra persistenceEnable:
Če imamo 1000 vpisov in kapaciteta pomnilnika omogoča, da shranimo le 200, potem bo vseh 1000
shranjenih na disku, v pomnilniku pa bo shranjenih v predpomnilniku le 200 vpisov.
Ker je arhitektura pomnilniško naravnana (memory-centric), se RAM uporablja kot prvi pomnilnik, kjer
se izvaja procesiranje. Vsi podatki in indeksi so shranjeni izven Java kopice, kar omogoča procesiranje
petabyte (PB) podatkov, ki so shranjeni v gruči.
Ignite lahko opcijsko razlikuje med odjemalcem in strežniškimi vozlišči. Strežniki izvajajo caching,
izvajanje (compute exceuting), obdelavo tokov (stream processing) itd., medtem ko se odjemalci
povežejo oddaljeno na strežnike.
Apache Ignite implementira tudi Hadoop-ov MapReduce API, ki omogoča bistveno hitrejše izvajanje
kot običajne (native) Hadoop MapReduce implementacije. Poleg tega IGFS (Ignite File System) ne
potrebuje imenskega vozlišča (name node), ko se uporablja IGFS, kar pomeni, da gredo Ignite
MapReduce opravila direktno v IGDS podatkovno vozlišče (data node).
Ko namestimo Apache-Ignite, najdemo na direktoriju /usr/share/apache-ignite/libs/optional precej
opcijskih komponent. Za začetek je koristno, če si namestimo opcijski REST vmesnik. Iz poddirektorija
optional prenesemo celotni direktorij na nivo više.
Primeri uporabe REST vmesnika [6]
podatki o topologiji, seznam vseh vozlišč v gruči
curl "http://172.18.120.50:8080/ignite?cmd=top"
podatki o vozlišču
curl "http://172.18.120.50:8080/ignite?cmd=node&id=8b48b419-bfea-
46fd-bb9a-6730e"
kreiranje cache
curl
"http://172.18.120.50:8080/ignite?cmd=getorcreate&cacheName=mycache"
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
171
B. Štok, C. Petr in A. Krajnc: Primerjava odprtokodnih podatkovnih mrež
brisanje cache
curl
"http://172.18.120.50:8080/ignite?cmd=destcache&cacheName=mycache"
vpis vrednosti "newValue" v ključ newKey
curl
"http://172.18.120.50:8080/ignite?cmd=put&key=newKey&val=newValue&cac
heName=mycache"
branje vrednosti ključa newKey
curl
"http://172.18.120.50:8080/ignite?cmd=get&key=newKey&cacheName=mycach
e"
Na direktoriju /etc/apache-ignite imamo lahko več konfiguracijskih datotek. Privzeta datoteka je default-
config.xml. Ignite servis zaženemo z ukazom:
systemctl start apache-ignit@
Privzeto konfiguracija datoteka je prazna in je primerna za zagon standalone strežnika. Za postavitev
clustra lahko uporabimo multicast odkrivanje vozlišč, statično odkrivanje (discovery) s seznamom IP-
jev, ali kombinacijo multicast in seznama IP-jev [7].
Če so vsi strežniki v isti multicast skupini, je najbolj enostavno uporabiti multicast odkrivanje
(TcpDiscoveryMulticastIpFinder). S parametrom muliticast group določimo multicast grupo.
Aplikacija lahko teče v istem JVM kot Apache-Ignite. V našem primeru pa smo želeli, da je aplikacija
le odjemalec in se oddaljeno poveže v podatkovno mrežo. Ker je bil odjemalec v drugem multicast
omrežju smo v odjemalcu uporabili IP-je strežnikov (TcpDiscoveryVmIpFinder). Dovolj je navesti IP
vsaj enega živega Apache-Ignite strežnika.
Uporabili smo knjižnico ignite-core (group: org.apache.ignite, name: ignite-core, version: 2.4.0)
Primer inicializaciijske kode v odjemalcu:
IgniteConfiguration cfg = new IgniteConfiguration();
cfg. setClientMode(true); // client mode
TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();
172
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Štok, C. Petr in A. Krajnc: Primerjava odprtokodnih podatkovnih mrež
List address= Arrays.asList("172.18.120.52", "172.18.120.51",
"172.18.120.50");
ipFinder. setAddresses(address);
discoSpi.setIpFinder(ipFinder);
cfg.setDiscoverySpi(discoSpi);
Ignite ignite = Ignition. start(cfg);
Ignite pozna tri načine delovanja predpomnilnika:
CacheMode.LOCAL - lokalni predpomnilnik
CacheMode.REPLICATED - vsi ključi se replicirajo na vsa vozlišča. To je primerno za
"manjše" podatkovne sete, kjer imamo precej več branj kot vpisovanj
CacheMode.PARTITIONED - množica ključev je razdeljena v particije med vsemi vozlišči.
Podatek se hrani na primarnem vozlišču. Opcijsko pa na enem ali več rezervnih. To je primerno
za "zelo" velike sete podatkov. Spremembe podatkov so lahko tudi pogoste.
Za vsak cache lahko določimo drug način. Če načina pri kreiranju ne navedemo, je privzeti način
PARTITIONED.
Primer kreiranja predpomnilnika:
CacheConfiguration cc = new CacheConfiguration(CACHE_NAME);
cc.setCacheMode(CacheMode.PARTITIONED);
cc.setBackups(1); // privzeto število rezervnih vozlišč je nič
cc.setAtomicityMode(TRANSACTIONAL); // privzeti način je ATOMIC
cache = ignite.getOrCreateCache(cc);
Primer uporabe predpomnilnika:
cache. put("car", "Toyota");
String car = cache. get("car");
Apache Ignite podpira, da se lahko obstoječi Memcached ali Redis odjemalci povežejo na Ignite. Pri
Redisu je nekaj omejitev, ker niso podprti čisto vsi ukazi.
6. PRIMERJAVA
V naslednji tabeli smo poskušali primerjati različne parametre. Številke v tabeli pomenijo vrstni red: 1
– prvi (najboljši), 2 - drugi, 3 – tretji.
Tabela 1. Primerjava lastnosti
Infinispan
Redis
Apache Ignite
Programski jezik
Java
C
Java
Popularnost/razširjenost
2
1
3
Enostavna
1
3
2
instalacija/konfiguracija
Zmogljivost
3
1
2
Podprti programski jeziki
2
1
3
Podprte funkcionalnosti
3
2
1
Java knjižnica za odjemalca
infinispan-cachestore-
Jedis
Ignite-core
remote
Možnost izvajanja aplikacije
da
ne
da
znotraj podatkovne mreže
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
173
B. Štok, C. Petr in A. Krajnc: Primerjava odprtokodnih podatkovnih mrež
Infinispan
Redis
Apache Ignite
Podpora za Memcached
da
da
da
odjemalce
Uporabljena verzija
9.2.2 (prva verzija 4.0)
4.0.8
2.4.0
Začetek razvoja
2009
2010
2014
Sponzor
Red Hat
Pivotal Software
GridGain System
Izvedli smo tudi performančno primerjavo funkcionalnosti, ki jih implementirajo vse tri implementacije:
vpis put(key,value) in branje get(key). Primerjavo smo izvedli tako, da smo namestili podatkovno mrežo
na tri starejše strežnike (8GB RAM, 2 core). Med njimi je bila vzpostavljena 100 MB povezava. V praksi
se tipično uporablja 1GB ali pa celo 10GB povezava. V primeru hitrejše povezave bi bili rezultati seveda
še precej boljši. V primeru Infinispan in Ignite bi lahko naša aplikacija tekla kar znotraj istega JVM
navideznega stroja, v tem primeru bi bili rezultati še boljši. Mi pa smo aplikacijo namestili v drugo
omrežje, ki je bilo povezano s podatkovno mrežo preko 100 MB povezave. Tako je multicast omrežje
delovalo le med strežniki, ki so sestavljali podatkovno mrežo.
Za nastavitev podatkovnih mrež smo uporabili privzete vrednosti. Za dostop do Infinispan smo uporabili
oddaljen dostop oz. Hot Rod protokol. Za dostop do Redis smo uporabili knjižnico Jedis. Pri Apache
Ignite smo uporabili odjemalski način in knjižnico ignite-core.
Test smo izvedli tako, da smo v zanki izvedli tisoč ali milijon ponovitev na različnih ključih v eni nit ter
test ponovili s sto hkratnimi nitmi.
Tabela 2. Primerjava branje/pisanje
Branje (get)
Pisanje (put) 100 hkratnih branj
100 hkratnih
[sec]
[sec]
[sec]
pisanj [sec]
Infinispan n=1000
1,82
2,59
0,10
0,28
Infinispan n=1000000
439,36
1.809,37
161,34
192,79
Redis n=1000
0,90
0,92
0,08
0,08
Redis n=1000000
945,80
915,81
101,82
102,92
Apache Ignite
1,73
1,91
0,14
0,19
Replicated n=1000
Apache Ignite
1.652,57
1.728,36
63,08
55,85
Replicated n=1000000
Apache Ignite
1,81
1,77
0,11
0,14
Partitioned n=1000
Apache Ignite
1.619,76
1.689,41
61,70
52,73
Partitioned n=1000000
Pokazalo se je, da je Redis skoraj dvakrat hitrejši od ostalih dveh. Pri milijon ponovitvah in 100 nitih pa
je bil Apache Ignite hitrejši od Redis. Infinispan je bil cca. 10% počasnejši od Apache Ignite. Na treh
strežnikih in sorazmerno počasni povezavi (100MB) se pri pisanju ni opazila razlika, če smo uporabili
174
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
B. Štok, C. Petr in A. Krajnc: Primerjava odprtokodnih podatkovnih mrež
predpomnilnika tipa Cached ali Replicated. Rezultati se seveda lahko bistveno spremenijo, če
spremenimo konfiguracijo podatkovne mreže.
7. ZAKLJUČEK
Vse tri implementacije dobro opravljajo svojo nalogo, odločitev za izbiro podatkovne mreže pa je
odvisna od naših potreb. Če naše aplikacije oz. mikroservisi tečejo znotraj aplikacijskega strežnika
Wildfly, priporočamo uporabo Infinispan. Če pa imamo mikroservise implementirane v različnih
programskih jezikih ali pa ne uporabljamo aplikacijskega strežnika Wildfly, priporočamo uporabo
Redis. Zavedati se moramo, da je za postavitev strežnika Redis v produkcijskem okolju potrebnih vsaj
šest strežnikov. Če poleg podatkovne mreže želimo uporabljati SQL podatkovne baze v pomnilniku, ali
želimo hitro SQL podatkovno bazo za analitiko, je smiselno izbirati Apache Ignite.
8. LITERATURA
[1] Infinispan: the Start of a New Era in Open Source Data Grids, https://blog.infinispan.org/2009/04/,
obiskano 12. 5. 2018.
[2] Infinispan 9.2 User Guide, http://infinispan.org/docs/stable/user_guide/user_guide.html, obiskano
12. 5. 2018.
[3] Redis commands, https://redis.io/commands, obiskano 12. 5. 2018.
[4] Redis Cluster Tutorial https://redis.io/topics/cluster-tutorial, obiskano 12. 5. 2018.
[5] Apache Ignite, Documentation, https://apacheignite.readme.io/docs, obiskano 12. 5. 2018.
[6] Apache Ignite, Cluster Configuration, https://apacheignite.readme.io/docs/cluster-config, obiskano
12. 5. 2018.
[7] Apache Ignite REST API, https://apacheignite.readme.io/v2.4/docs/rest-api, obiskano 12. 5. 2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
UMETNA INTELIGENCA ZA TELEBANE –
PLATFORME STROJNEGA UČENJA
SAŠO KARAKATIČ, GREGA VRBANČIČ, JERNEJ FLISAR IN VILI PODGORELEC37
Povzetek: Uporaba procesov strojnega učenja za večino podjetij predstavlja
velik izziv, saj zahteva spremembo obstoječih poslovnih procesov, drag in
talentiran kader ter njihovo dodatno izobrazbo. Najnovejše tehnike
strojnega učenja predstavljajo velik napredek pri obdelavi podatkov, vendar
je področje preobširno za spoznavanje »čez vikend« ali »v popoldanskem
času« za ljudi, ki niso strokovnjaki s področja podatkovne znanosti (angl.
Data Science). Če gradimo nov Uber, Netflix ali Facebook je zahtevnost res
ogromna, ampak uporaba obstoječih storitev strojnega učenja znatno olajša
ta postopek. Z uporabo oblačnih storitev strojnega učenja lahko začnemo
graditi svoje prve modele umetne inteligence in tako vključiti dragocene
napovedi in inteligenco v obstoječe sisteme. V članku bomo razpravljali o
obstoječih platformah strojnega učenja – tako o spletnih kakor tudi o
lokalnih.
Ključne besede: • strojno učenje • podatkovna znanost • platforme • storitve
NASLOV AVTORJEV: dr. Sašo Karakatič, docent, Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo
in informatiko, Koroška cesta 46, 2000 Maribor, Slovenija, e-pošta: saso.karakatic@um.si. Grega Vrbančič, mladi
raziskovalec, Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko, Koroška cesta 46,
2000 Maribor, Slovenija, e-pošta: grega.vrbancic@um.si. Jernej Flisar, asistent, Univerza v Mariboru, Fakulteta
za elektrotehniko, računalništvo in informatiko, Koroška cesta 46, 2000 Maribor, Slovenija, e-pošta:
jernej.flisar@um.si. dr. Vili Podgorelec, redni profesor, Univerza v Mariboru, Fakulteta za elektrotehniko,
računalništvo in informatiko, Koroška cesta 46, 2000 Maribor, Slovenija, e-pošta: vili.podgorelec@um.si.
DOI https://doi.org/10.18690/978-961-286-162-9.19
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
176
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
1. UVOD
Strojno učenje predstavlja velik mejnik pri analizi velepodatkov, vendar je njegova uporaba zastrašujoča
za ljudi, ki niso strokovnjaki za področje podatkovne znanosti in niso tehnično podkovani iz algoritmov
strojnega učenja . Platforme podatkovne znanosti in strojnega učenja uporabljajo znanstveniki in
razvijalci pri opravljanju nalog v celotnem podatkovnem in analitičnem procesu. Vključujejo naloge, ki
se nanašajo na kreacijo in zajemanje podatkov, pripravo podatkov v primerno obliko, interaktivno
raziskovanje in vizualizacijo, napredno modeliranje, testiranje, učenje, uporabo ter inženiring modelov
strojnega učenja.
Izzivi uporabe podatkovne znanosti in platform za strojno učenje niso omejeni na izbiro prave platforme
za zadostitev analitičnih potreb organizacij. Hkrati je potrebno obravnavati podatke, ljudi in procese,
kar predstavlja še dodatni nivo težavnosti pri upravljanju organizacije. Upravljanje informacij ima zato
pomembno vlogo pri zagotavljanju, da modeli temeljijo na najnovejših znanstvenih dosežkih tega
področja in dobrih praksah, ki pridejo le z izkušnjami. Mnogokrat pa organizacije ne zaposlujejo
strokovnjakov, ki bi posedovali ta znanja in izkušnje. Namesto najema zunanjih človeških virov,
zaposlovanja in formiranja ekip podatkovnih znanstvenikov, je vedno bolj popularna uporaba
namenskih storitev, ki so enostavne za uporabo in rešujejo specializirane naloge podatkovne znanosti.
Včasih so algoritme in ogrodja strojnega učenja večinoma uporabljali znanstveniki, tehnološki
strokovnjaki ali domenski strokovnjaki. Vendar pa vse več organizacij zdaj uporablja storitve strojnega
učenja, ki so vse bolj dostopne širšemu spektru razvijalcev in raziskovalcev. Podobno, kakor
tradicionalne spletne storitve pomagajo razvijalcem ustvariti aplikacije, tako tudi storitve strojnega
učenja (angl. machine learning as a service ali MLaaS) omogočajo enostavno uporabo strojnega učenja
povprečnemu razvijalcu. Storitve strojnega učenja prikrijejo kompleksnost pri ustvarjanju in uporabi
modelov strojnega učenja, tako da se lahko razvijalci osredotočijo na pripravo podatkov, uporabniško
izkušnjo, oblikovanje, eksperimentiranje in uporabo znanja ter odkrivanje vzorcev iz podatkov.
Storitve strojnega učenja ponujajo abstraktni sloj za razvijalce, ki jim omogoča integracijo strojnega
učenja v aplikacije v realnem svetu, ne da bi morali skrbeti za skaliranje algoritmov na svoji
infrastrukturi in se ukvarjati s podrobnostmi metod strojnega učenja. Razvijalci aplikacij vedno iščejo
različne načine za olajšanje življenja svojih uporabnikov z uvedbo novih in inovativnih funkcij, ki
uporabnikom omogočajo prihranek časa. To je razlog za priljubljenost storitev strojnega učenja pri
razvijalcih aplikacij. Nekateri standardni primeri teh storitev vključujejo inteligentno označevanje,
priporočila, napovedovanje, segmentiranje in kategoriziranje. [1]
Najbolj pomemben del uporabe storitev strojnega učenja je prepoznava poslovnega problema, ki ga je
treba rešiti in oblikovanje toka podatkov skozi celotno aplikacijo. Vsake težave ni mogoče rešiti s
storitvami strojnega učenja, zato je pomembno identificirati problem, cilj in scenarij uporabe metod
strojnega učenja. Mnogokrat namreč uporaba takih storitev ni mogoča, saj zastavljeni primeri uporabe
zahtevajo aplikacijo podatkovne znanosti, ki jih ponujene storitve ne omogočajo.
Tekom naše raziskave smo identificirali tri tipe uporabnikov storitev in platform strojnega učenja:
(1) Tipični razvijalci programske opreme, hobi znanstveniki, podatkovni raziskovalci in
novinarji, ki potrebujejo podatkovno znanost in strojno učenje za reševanje specifičnega
problema ali primera uporabe.
(2) Operativni delavci, razvijalce strojne opreme in odločevalci, ki vsakodnevno sprejemajo
odločitve na podlagi modelov strojnega učenja.
(3) Visokokvalificirani inženirji strojnega učenja in podatkovni znanstveniki, ki oblikujejo
poskuse in učijo modele strojnega učenja za predstavljanje in optimizacijo poslovnih odločitev.
Vsak tip uporabnikov lahko uporabi platformo strojnega učenja, ki je prilagojena in optimizirana za
njegov primer uporabe. V sledečem poglavju so opisane specializirane storitve, ki rešujejo ozko določen
primer uporabe in so namenjene specifičnim zahtevam. Temu sledi poglavje, ki predstavi storitve in
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
177
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
platforme z vizualnim uporabniškim vmesnikom in so zasnovane bolj široko – potrebujejo prilagoditev
in posledično poznavanje strojnega učenja. Zadnje poglavje pa predstavi platforme, ki so osnova vsem
storitvam strojnega učenja in jih lahko uporabimo tudi v naših aplikacija, ampak za to zahtevajo tako
odlično poznavanje algoritmov strojnega učenja kakor tudi programiranja v splošnem.
2. SPECIALIZIRANE STORITVE STROJNEGA UČENJA
V zadnjih nekaj letih je v podjetjih prišlo do premika paradigme gradnje tehnoloških skladov v smeri
platform in mikrostoritev. Ta premik je bil omogočen zaradi razcveta računalništva v oblaku, še posebej
pa zaradi povečane rasti števila javnih oblačnih storitev, ki jih ponujajo glavni igralci na področju
računalništva v oblaku (Amazon, Google, Microsoft). Omenjena podjetja so močno poudarjala in
zagovarjala poslovni model ”kot storitev” (angl. as a service), kateri zunanjim podjetjem omogoča
izbiro zgolj tistih mikrostoritev, ki so za njih potrebne oz. nujne.
Infrastruktura kot storitev (angl. infrastructure as a service ali IaaS) ter platforma kot storitev (angl.
platform as a service ali PaaS) sta dve najpogosteje uporabljeni storitveni ponudbi ponudnikov
računalništva v oblaku. S hitrim napredkom in razvojem strojnega učenja in umetne inteligence v
splošnem pa se v zadnjem letu ali dveh na trgu vedno bolj razširjajo namenske – specializirane storitve.
Za takšne specializirane storitve strojnega učenja sta se uveljavila dva izraza in sicer strojno učenje kot
storitev (angl. machine learning as a service ali MLaaS) ter umetna inteligenca kot storitev (angl.
artificial intelligence as a service – AIaaS). Z integracijo orodij in storitev umetne inteligence oz.
strojnega učenja lahko podjetja izboljšajo zmožnosti svojih produktov, bolje komunicirajo s strankami,
racionalizirajo poslovanje in ustvarjajo natančne napovedne poslovne strategije. MLaaS storitve
omogočajo podjetjem brez namenskih oddelkov za strojno učenje oz. umetno inteligenco, da s svojim
obstoječim kadrom – razvijalci, hitro in učinkovito oplemenitijo in nadgradijo svoje produkte. Podatki
so gonilna sila strojnega učenja in ker velika podjetja – glavni igralci na področju IaaS in PaaS –
ustvarjajo ogromne količine podatkov do katerih imajo tudi dostop, obenem pa imajo tudi veliko
računskih virov, so sami zmožni zgraditi in naučiti modele, kar jim omogoča, da te ponujajo v obliki
MLaaS zunanjim podjetjem. Takšne storitve torej vsebujejo že v naprej pripravljene algoritme in
modele, za katere bi sicer potrebovali ogromno virov, da bi jih zgradili popolnoma od začetka. Hitrost,
enostavnost in stroškovna učinkovitost integracije z obstoječimi produkti so tako ključne prednosti
MLaaS v primerjavi s klasičnimi pristopi k strojnemu učenju oz. umetni inteligenci. [2]
MLaaS oz. strojno učenje kot storitev je krovna definicija avtomatiziranih in delno avtomatiziranih
oblačnih platform, ki naslavljajo problematiko večine infrastrukturnih problemov kot so pred-
procesiranje podatkov, učenje modelov, evalvacija naučenih modelov in napovedovanje s pomočjo
takšnih modelov. Rezultati napovednih modelov so z interno infrastrukturo podjetja povezani preko
REST API povezav. [4]
Amazon Machine Learning Services, Microsoft Azure Machine Learning in Google Cloud AI so
trije vodilni ponudniki oblačnih MLaaS storitev, ki omogočajo hitro učenje modelov in njihovo
namestitev z malo ali celo brez domenskega znanja s področja podatkovne znanosti in strojnega učenja.
Ponudniki MLaaS storitev ponujajo širok nabor funkcionalnosti teh storitev vse od prepoznave obrazov,
zaznave predmetov iz slik, pretvarjanja govora v besedilo in obratno, pa vse do namenskih
funkcionalnosti kot so pogovorni roboti (angl. chatbot) in podobno. V splošnem lahko glavne
funkcionalnosti vodilnih podjetij na področju MLaaS razdelimo v tri osnovne kategorije (glej Slika 1):
procesiranje govora in besedil,
analiza slik in video posnetkov, ter
namenske storitve.
Kategorija procesiranja govora in besedil je najbolj zastopana pri treh vodilnih ponudnikih. V to
kategorijo spadajo storitve, z integracijo katerih lahko podjetje svoje produkte nadgradi na nivoju
178
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
interakcije z uporabniki. Z apliciranjem takšnih storitev lahko na primer omogočimo strojno prevajanje
besedila v različne jezike ali pa analizo čustev iz besedila, s pomočjo katere lahko dodatno obogatimo
uporabniško izkušnjo. Tehnike procesiranja naravnega besedila so med drugim tudi primarna
tehnologija, ki stoji za raznimi pogovornimi roboti ali asistenti. V to skupino storitev pa spadajo tudi
storitve, ki omogočajo ”razumevanje” govora in so ga zmožne tudi pretvarjati v besedilo. Najbolj
poznani primeri aplikacij storitev te kategorije so pametni asistenti Apple Siri, Google Now, Microsoft
Cortana ter Amazon Alexa.
Slika 1. MLaaS storitve ponudnikov Amazon, Microsoft in Google
Storitve iz kategorije analiza slik in video posnetkov v glavnem bazirajo na metodah in tehnikah
globokega učenja. S pomočjo teh lahko podjetja svoje produkte nadgradijo z zmožnostjo prepoznave in
”razumevanja” slik ter video posnetkov. Storitve omogočajo analizo vizualnih vsebin vključno z
identifikacijo objektov kot tudi klasifikacijo zaznanih objektov. Dodatno storitve omogočajo napredno
analizo obraznih mimik subjektov, sledenje subjektom ipd.
V kategorijo namenske storitve so uvrščene storitve, ki so namenjene reševanju točno določenega
problema. Na primer Amazon Lex in Azure Service Bot sta namenski storitvi za gradnjo pogovornega
robota s katerim lahko komuniciramo preko govora ali besedila. Microsoftovi skupini aplikacijskih
programskih vmesnikov Search API in Knowledge API med drugim omogočata dostop do
funkcionalnosti iskalnika Bing in pa do naprednih funkcionalnosti za upravljanje z znanjem. Google
Cloud Job Discovery je storitev, ki omogoča kadrovskim službam podjetij ” plug and play” dostop do
iskalnika Google in njihovih zmogljivosti strojnega učenja, s čimer združujejo celoten ekosistem: strani
podjetij za iskanje kadrov, zaposlitvene oglase, sisteme sledenja prošenj za službo in kadrovske
agencije.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
179
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
Ena od največjih prednosti uporabe MLaaS v primerjavi s klasičnimi metodami in tehnikami strojnega
učenja je, da MLaaS podjetjem oz. organizacijam omogoča dostop do zmogljive infrastrukture, ki si je
sama najverjetneje ne bi mogla ali ne morejo privoščiti. Strojno učenje zahteva veliko računske moči in
sistemi, ki zagotavljajo to raven moči, so tradicionalno zelo dragi. Druga prednost, povezana s stroški,
je dostop do cenovno ugodne podatkovne hrambe. Količina podatkov kontinuirano raste in mnoga
podjetja se odločajo, da je stroškovno učinkoviteje, če podatke hranijo v oblaku. Ko ima podjetje
podatke že v oblaku, pa je tudi uporaba MLaaS obstoječega ponudnika oblačnih storitev še bolj
smiselna. Ključna prednost MLaaS je hitra in enostavna uporaba ter integracija v lastne produkte, brez
potrebnega predhodnega znanja o metodah in tehnikah strojnega učenja.
Kljub številnim prednostim MLaaS se podjetja oz. organizacije, ki uporabljajo te storitve, lahko soočijo
tudi z nekaj slabostmi. Največji problem pri uporabi MLaaS je skupen vsem storitvam, ki tečejo v
javnem oblaku in to je odvisnost od ponudnika. Podjetja skrbi, da v primeru, da bi uporabljali preveč
storitev posameznega ponudnika, prehod na drugega več ne bi bil mogoč. Obenem pa lahko to
predstavlja tveganje v primeru, če ponudnik storitev zviša ceno svojih storitev. Vključevanje podatkov
iz različnih virov prav tako lahko prestavlja oviro pri uporabi MLaaS. Mnogi produkti, ki uporabljajo
strojno učenje, se opirajo na podatke, ti pa navadno prihajajo iz veliko različnih virov. Takšno zbiranje
podatkov ter njihovo pred-procesiranje in obdelovanje je lahko težavna naloga ne glede na to ali
uporabljamo MLaaS ali ne. [2, 3, 5]
3. STROJNO UČENJE Z UPORABNIŠKIM VMESNIKOM
Zaradi razvijajočih se tehnologij strojnega učenja ter možnosti njihove uporabe v realnih projektih in
aplikacijah se je pojavila zahteva po enostavni integraciji takih tehnologij na različnih nivojih in
domenah aplikacij [5]. Metode strojnega učenja so namreč v domeni znanstvenikov oz. raziskovalcev v
raziskovalnih institucijah, ki imajo veliko domenskega znanja, katerega pa razvijalci v podjetjih, ki
razvijajo večinoma programsko opremo, nimajo. To je podaljšalo razvoj in apliciranje metod strojnega
učenja v podjetjih. S časom so se razvila orodja, ki omogočajo enostaven razvoj inteligentnih aplikacij
oz. integracijo naprednih metod strojnega učenja, brez naprednega domenskega znanja o samih metodah
strojnega učenja.
Orodja za uporabo strojnega učenja pri razvoju oz. apliciranju le-tega lahko uporabljamo tudi preko
naprednih grafičnih vmesnikov. Zaradi enostavne uporabe ni večje potrebe po poznavanju različnih
algoritmov in metod strojnega učenja. Reševanja domensko specifičnih problemov se lahko lotimo s
tako-imenovanim “povleci in spusti” načinom, kjer posamezne komponente odlagamo na delovno
površino ter jih povežemo v smiseln proces (ang. workflow), kateri nam na koncu zgradi želen model.
Model v tem primeru lahko predstavlja naučen klasifikator, ki nam npr. klasificira dokumente v
določene kategorije. Vsaka posamezna komponenta v procesu predstavlja posamezno nalogo iz domene
strojnega učenja za gradnjo učnega modela. Na voljo imamo številne metode podatkovnega rudarjenja,
od priprave in čiščenja podatkov, preko algoritmov gručenja in klasifikacije vse do validacije zgrajenih
modelov.
Ker moramo sami definirati cevovod procesa strojnega učenja, potrebujemo ustrezno osnovno znanje s
področja podatkovnega rudarjenja in strojnega učenja, saj se morajo posamezne komponente ustrezno
uporabiti. Večina orodij sicer preprečuje “napačno” uporabo komponent, ki nas vodi pri razvoju modela.
Poleg velikega števila posameznih algoritmov in metod imamo pri teh na voljo še mnogo različnih
nastavljivih parametrov, ki jih lahko dober strokovnjak s področja podatkovnega rudarjenja optimizira
glede na specifiko problema, ki ga rešuje, kar lahko občutno izboljša uspešnost razvitega modela. Kljub
temu je mogoče dobro razviti oz. aplicirati modele strojnega učenja tudi s pomanjkljivim domenskim
znanjem, saj določena orodja sama predlagajo metode ter njihove nekatere privzete vrednosti.
Vzdrževanje modela, zgrajenega z grafičnim vmesnikom, je zelo enostavno. Zaradi vizualizacije je
zgrajen model zelo pregleden. Tudi nadgrajevanje, spreminjanje in izboljševanje modela je dokaj
180
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
enostavno, saj lahko na enostaven način spremenimo podatkovni vir, iz katerega model črpa učne
podatke, ali pa zamenjamo klasifikacijski algoritem, katerega želimo uporabiti. Tipični predstavniki
orodij z grafičnim vmesnikom za namen obdelave podatkov so: RapidMiner (primer na Sliki 2), Knime,
Azure ML in Waikato Weka.
Slika 2. Primer gradnje modela v RapidMiner-ju.
Orodja strojnega učenja z uporabniškim vmesnikom lahko razdelimo v dve skupini, glede na “lokacijo”
izvajanja – lokalno ali na strežnikih (“oblakih”).
Orodja lahko namestimo in zaganjamo lokalno. V tem primeru potrebujemo dovolj dobro oz. problemu
primerno strojno opremo, saj so lahko nekateri napredni algoritmi strojno zelo zahtevni. Prednost
takšnih orodij je enostavnejša integracija z lastnim, že obstoječim sistemom, ali celo lastnimi
aplikacijami. Pomemben je tudi nadzor nad podatki, saj se ti vedno nahajajo na lastni infrastrukturi in
tako niso izpostavljeni na zunanjih strežnikih, ki niso v celoti pod našim nadzorom.
Na voljo so tudi orodja, ki se izvajajo na zunanjih strežnikih, ki smo jih že prej imenovali MLaaS.
Takšna orodja so primerna predvsem, kadar imamo potrebe po obdelavi velikih količin podatkov, saj so
infrastrukturno že pripravljena za izvajanje preko različnih sistemov. Slaba lastnost uporabe orodij v
oblaku je izguba popolnega nadzora nad podatki ter izguba nadzora nad konfiguracijo in parametrizacijo
nekaterih učnih algoritmov. Primer takšnih orodih so npr: MS Azure ML, AWS Machine Learning,
RapidMinerCloud. Slika 3 prikazuje arhitekturni pregled MLaaS.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
181
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
Slika 3. Primer Arhitekturni pregled MLaaS za storitev Azure ML. [10]
Tabela 1 prikazuje prednosti in slabosti razvoja modelov strojnega učenja z uporabo grafičnih
vmesnikov v orodjih.
Tabela 1. Prednosti in slabosti orodij strojnega učenja z uporabniškim vmesnikom.
Prednosti
Slabosti
Hitrejši in enostavnejši razvoj
Slabša kakovost/točnost modelov
Manjša razvojna ekipa
Počasnejše izvajanje
Enostavnejše vzdrževanje
Težja implementacija za specifične probleme
Manjša potreba po domenskih znanjih
Vizualizacija procesa
4. STROJNO UČENJE IZ NIČ
Tretji možen pristop k razvoju inteligentnih informacijskih rešitev z uporabo metod in tehnik strojnega
učenja je popolnoma samostojen razvoj, tako rekoč iz nič. Kot velja že za ostala področja razvoja, lahko
ugotovimo tudi tukaj – samostojnega razvoja » iz nič« se je smiselno lotiti predvsem takrat, ko želimo
imeti popoln nadzor nad uporabljenimi metodami in algoritmi v celotnem življenjskem ciklu razvoja in
uporabe tehnik strojnega učenja – t.i. cevovodu strojnega učenja (Slika 4). Ker obstoječe rešitve MLaaS
neenakomerno pokrivajo posamezne korake ML cevovoda (Slika 5), je tudi od tega, kateremu izmed
korakov želimo posvetiti večjo pozornost, odvisno, ali in v kolikšni meri se bomo lotili samostojnega
razvoja.
182
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
Slika 4. Standardni cevovod strojnega učenja. Od posamezne platforme je odvisno, katere korake je mogoče
nadzorovati.
Povsem intuitivno je, da večji nadzor nad vsakim korakom v cevovodu omogoča dobro obveščenim
uporabnikom, da gradijo bolj kakovostne modele [6]. Funkcija, model in izbira parametrov lahko
pomembno vplivajo na uspešnost nalog strojnega učenja (npr. točnost napovedi). Vendar pa je za
uspešno optimizacijo vsakega koraka potrebno preseči precejšnjo kompleksnost, kar je težko brez
poglobljenega znanja in izkušenj. Po drugi strani pa seveda ni samo po sebi umevno, da lahko
specializirane storitve, katerih uporaba seveda precej zmanjša kompleksnost, samodejno opravijo
učinkovito upravljanje cevovoda ter nastavitev parametrov algoritmov in metod do te mere, kot je včasih
potrebno.
Pri razumevanju odnosov med kompleksnostjo, uspešnostjo in preglednostjo na platformah MLaaS se
lahko osredotočimo na tri ključna vprašanja:
Kako kompleksnost (stopnja nadzora) sistemov strojnega učenja vpliva na točnost modelov?
Ali lahko povečan nadzor vodi do večjih tveganj pri oblikovanju slabih modelov?
Do kakšne mere lahko sistemi MLaaS optimizirajo avtomatizirane dele svojega cevovoda?
Slika 5. Različne platforme strojnega učenja omogočajo različno stopnjo nadzora nad posameznimi koraki v
procesu strojnega učenja; podatki povzeti po [6].
V [6] so avtorji opravili eksperimentalno primerjavo napovedne uspešnosti posameznih platform
strojnega učenja nad 119 podatkovnimi množicami. Rezultati so pokazali, da z večanjem kompleksnosti
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
183
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
oz. stopnje nadzora posamezne platforme raste tudi uspešnost najboljših zgrajenih modelov (Slika 6) –
tako lahko pri samostojnem razvoju dejansko zgradimo najboljše napovedne modele. A po drugi strani
z večanjem kompleksnosti platforme zelo raste tudi tveganje, da bomo dejansko uspeli zgraditi najboljši
možni model, ki ga orodje zmore (Slika 7). Preprost sklep bi lahko bil: uporabljajmo tisto platformo oz.
orodje, ki smo ga sposobni obvladati.
Slika 6. Z večanjem stopnje kompleksnosti se veča uspešnost zgrajenih modelov; povzeto po [6].
Slika 7. Z večanjem stopnje kompleksnosti se zelo veča potencialno tveganje; povzeto po [6].
No, resnici na ljubo »nič«, iz katerega gradimo rešitve strojnega učenja, zajema kopico odličnih
programskih knjižnic, večinoma odprtokodnih in podprtih z zelo močno skupnostjo razvijalcev. Tako
se potencialnemu razvijalcu ni potrebno ukvarjati z implementacijskimi podrobnostmi samih metod
strojnega učenja, hkrati pa njihova programska uporaba omogoča poln dostop do vseh parametrov, ki
vplivajo na učinkovitost izvajanja ter uspešnost izvedbe.
Med programskimi jeziki, v katerih se razvijalci najpogosteje lotevajo razvoja, izstopajo predvsem
Python, R, Java, C, C++, Scala in morda nekoliko presenetljivo tudi Javascript. Slika 8 prikazuje trend
števila oglasov za službe, ki zajemajo strojno učenje oz. podatkovno znanost, in zahtevajo poznavanje
določenega programskega jezika. Vidimo lahko, da predvsem Python vse bolj prednjači, medtem ko
Java med prvimi tremi jeziki, ki sicer od ostalih že precej odstopajo, nekoliko izgublja zagon.
184
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
Slika 8. Zahtevano znanje programskih jezikov v oglasih za službe na področju strojnega učenja in podatkovne
znanosti [vir: https://www.indeed.com/jobtrends/].
Pri podatkih na Sliki 8 je treba upoštevati dejstvo, da v prikaz niso zajeti le oglasi za razvijalce, pač pa
tudi podatkovne analitike ipd. Prav jezik R pa je, spet poleg Pythona, najbolj pogost prav med analitiki,
statistiki in drugimi, ki pri svojem delu obdelujejo in analizirajo podatke, ne razvijajo pa programske
opreme. Posledično velja, da so za razvoj inteligentnih rešitev najpogosteje uporabljeni jeziki Python,
Java, C/C++, R in Javascript. Tako kar 57% razvijalcev že sedaj uporablja Python, še 33% uporabnikov
pa meni, da je prav Python ustrezen za razvoj tovrstnih rešitev [7]. R po drugi strani sicer uporablja 31%
uporabnikov, ki se ukvarjajo s strojnim učenjem, vendar bi ga za namen razvoja uporabilo zgolj 5%.
Java in C/C++ sta precej izenačena, saj za oba jezika okrog 20% razvijalcev meni, da sta primerna izbira.
V Tabeli 2 je zbranih nekaj podatkov o uporabi različnih programskih jezikov za namene razvoja
inteligentnih rešitev.
Kot je razvidno iz Tabele 2, so jeziki C/C++, R in Javascript namenjeni precej specifičnim namenom –
tistim, pri katerih se tudi sicer posamezni programski jezik najpogosteje uporablja: C/C++ za razvoj iger
in vgrajenih sistemov, R za namene statističnih obdelav in analitike, Javascript pa za razvoj spletnih
rešitev, predvsem na strani odjemalca.
Tako ostaneta Python in Java tista programska jezika, ki sta najbolj primerna za razvoj raznovrstnih
inteligentnih rešitev. Pri tem se, spet podobno kot sicer, Java osredotoča na poslovno uporabo in
predvsem večje poslovne sisteme, medtem ko je Python primeren za praktično karkoli in je daleč najbolj
priljubljen predvsem pri vseh vrstah zagonskih podjetij in manjših, drznejših projektih.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
185
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
Tabela 2. Pregled uporabe programskih jezikov v projektih strojnega učenja.
Python
Java
C/C++
R
Javascript
procesiranje
iskalniki,
naravnega
upravljanje
AI
v
igrah,
bioinženiring,
upravljanje
Najpogostejše
jezika,
analiza
podpore strankam,
upravljanje
bioinformatika,
podpore
sentimenta,
omrežna varnost in robotov, omrežna
aplikacije
analiza sentimenta,
strankam,
tekstovno
in
detekcija
vdorov,
varnost
in
detekcija anomalij
različne
rudarjenje
po
detekcija goljufij
detekcija vdorov
specifične naloge
spletu
AI
v
igrah,
analiza sentimenta,
detekcija goljufij,
prepoznavanje
diagnostika
v
Najmanj
omrežna varnost bioinženiring,
priporočilni
govora, AI v igrah,
industriji,
pogoste
in
detekcija
bioinformatika,
sistemi,
analiza
upravljanje
bioinženiring,
aplikacije
vdorov
specifične naloge
sentimenta
robotov
bioinformatika
razvijalec aplikacij
Poklicno
podatkovni
inženir
za podatkovni
za
namizne
spletni razvijalec
ozadje
znanstvenik
računalnike
vgrajene sisteme
analitik, statistik
priključiti
se
dodajanje umetne
zagotovitev
oz.
podatkovna
Razlogi
za
valu
vpeljave
navodilo
vodstva
inteligence
v
pridobitev
znanost je (bila) del
uporabo AI
metod strojnega
podjetja
obstoječe
študija
profitabilnih
učenja
aplikacije
projektov
Za konec omenimo še nekatera trenutno najpogosteje uporabljana ogrodja in knjižnice za strojno učenje.
Za Javo je smiselno pregledati naslednje: ADAMS, Deeplearning4j, ELKI, JavaML, JSAT, Mahout,
MALLET, Massive Online Analysis, RapidMiner in Weka. Za Python pa je nabor še bistveno obširnejši.
Med temeljne knjižnice sodijo: NumPy, SciPy in Pandas. Za namene vizualizacije so na voljo:
Matplotlib, Seaborn, Bokeh in Plotly. Najpogostejša ogrodja za strojno učenje so: SciKit-Learn, Theano,
TensorFlow in Keras. Za obdelavo naravnega jezika imamo na voljo NLTK in Gensim, medtem ko je
Scrapy odličen za zajem podatkov iz (nestrukturiranih) vsebin, za statistiko pa velja uporabiti
Statsmodels.
5. BISTVENO VPRAŠANJE RAZVOJA INTELIGENTNIH REŠITEV NI
VPRAŠANJE IZBIRE TE ALI ONE TEHNOLOGIJE
Tipična opravila strojnega učenja, ki se danes vse pogosteje vgrajujejo v sodobne aplikacije, z vidika
razumevanja strojnega učenja običajno niso preveč zahtevna. Samodejno identifikacijo neželene e-
pošte, razvrščanje izdelkov v priporočilnih sistemih, profiliranje uporabnikov spletne storitve in
podobne primere uporabe metod strojnega učenja bi praviloma povprečno usposobljen razvijalec moral
obvladati že po osnovni seznanitvi s področjem strojnega učenja. Tudi na videz zahtevne naloge, kot so
npr. prepoznava obrazov, identifikacija objektov na slikah ali ugotavljanje sentimenta v podanem
besedilu, ob uporabi sodobnih knjižnic ne bi smele predstavljati pretrdega oreha. Praviloma je v teh
primerih potrebno zbrati znane podatke, z njimi naučiti model znanja, ki ga lahko nato uporabimo za
predikcijo novih, neznanih situacij. Nekaj klicev ustreznih funkcij in rešitev je na dlani. S tega vidika
izbira med specializiranimi rešitvami za strojno učenje (MLaaS), uporabo metod strojnega učenja preko
uporabniškega vmesnika ali samostojen razvoj v izbranem programskem jeziku in z izbrano programsko
knjižnico ni vprašanje obvladanja strojnega učenja, pač pa drugih, poslovnih in osebnih faktorjev.
Vse nekaj drugega pa je, ko v teoriji delujoč in priporočen recept v praksi ne deluje. Ko rezultati niso
niti približno takšni, kot smo pričakovali ali si jih obetali. Takrat ni pravo vprašanje, katera tehnologija
je boljša, temveč kako rešiti problem, pred katerim smo se ustavili. Največji problem, ki ga mora
razvijalec na svoji poti do uspešnega razvijalca inteligentnih rešitev premagati, tako ni v obvladovanju
tehnologij, kompleksnosti knjižnic ali obilju algoritmov in njihovih nastavitev. Največji problem je
ustrezno povezati teorijo, algoritme in matematiko strojnega učenja s problemom, ki ga moramo rešiti.
Ko priporočen recept, ki običajno dobro deluje, in smo mu dosledno sledili, ne pričara pravega rezultata,
se zavemo prave, ogromne vrzeli.
186
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
Proces transformacije iz (običajnega) razvijalca v razvijalca, ki obvlada strojno učenje in morda še
naprej v podatkovnega znanstvenika, je prikazan na Sliki 9. Za čim lažjo dosego tovrstne transformacije
se velja držati top-down pristopa, prikazanega na Sliki 10. Za učinkovito uporabo strojnega učenja se
ne smemo ustaviti zgolj pri učnih algoritmih in ogrodjih, ki jih implementirajo in nam ponujajo možnost
njihove uporabe. Potrebujemo sistematičen pristop od zgoraj navzdol, kjer se osredotočimo na dejanski
rezultat, ki ga želimo: razvijati resnične rešitve »na ključ« z uporabo najboljših, sodobnih orodij in
platform. V ta namen pa moramo razumeti, za kaj pri strojnem učenju dejansko gre, ne zgolj znati
uporabiti vnaprej pripravljene rešitve.
Slika 9. Transformacija iz razvijalca v razvijalca, ki obvlada strojno učenje.
Slika 10. Pristop, ki se začne z dejanskimi problemi strojnega učenja in konča z rešitvijo »na ključ«.
6. ZAKLJUČEK
V prispevku smo pregledali tri nivoje storitev, kjer vsak nivo služi svojemu primeru uporabe. Če se
navežemo na tri tipe uporabnikov takih storitev, vidimo da so razvijalske ekipe s strokovno
usposobljenim kadrom na področju strojnega učenja in izdelkom, katerega osrednji del je inteligentna
obdelava podatkov, primarni uporabniki platform na najnižjem nivoju. Te namreč ponujajo tem
uporabnikom največjo svobodo pri implementaciji, a poleg strokovno usposobljenega kadra zahtevajo
mnogo več časa za implementacijo ter višje stroške vzdrževanja in skaliranja teh storitev. Tisti, ki s
pomočjo metod podatkovne znanosti in rezultatov teh metod sprejemajo poslovne odločitve, so primarni
uporabniki storitev na drugem nivoju, kjer platforme z vizualnim uporabniškim vmesnikom omogočajo
rešitve strojnega učenja. Te namreč omogočajo dovolj velik spekter prilagodljivosti, uporabi se jih lahko
v oblaku ali lokalno, in ne zahtevajo programerskega znanja. Razvijalci programske opreme, ki ne
temeljijo na strojnem učenju, raziskovalni novinarji in raziskovalci pa so primarni uporabniki
specializiranih in že optimiziranih storitev, ki jih kot storitve ponujajo različni ponudniki.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
187
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
Uporaba tehnologije podatkov in strojnega učenja je glavna prioriteta ali celo izdelek mnogih
organizacij. Na voljo so vedno bolj izpopolnjeni analitični postopki in storitve strojnega učenja, ki jim
omogočajo, da se ogromne količine podatkov, ki so na voljo, v celoti izkoristijo za namen optimizacije
poslovnega procesa. Zelo enostavno se je izgubiti v različnih razpoložljivih rešitvah. Te se razlikujejo
po ponujenih algoritmih, primerih uporabe in zahtevanem poznavanju strojnega učenja. Ustvarjanje
mostu med podatkovno znanostjo in poslovno vrednostjo je težaven proces, predvsem če primanjkuje
znanja o podatkovni znanosti ali domenskih izkušenj. Spodnji diagram prikazuje napoved Gartner-ja o
vodilnih platformah in vizionarjih na področju platform strojnega učenja. Gartner v naslednjih dveh do
treh letih pričakuje nadaljevanje turbulence na trgu podatkovne znanosti in platform strojnega učenja.
V njem bodo še naprej v celoti novi ponudniki, pa tudi obstoječi ponudniki sosednjih trgov (kot so
analitika in BI). [8]
Prihodki iz računalniških znanosti in platform za strojno učenje so se v letu 2016 povečali za 9,3%, na
2,4 milijarde USD. Ta rast je več kot dvakrat večja od celotnega analitičnega trga (4,5%), 2,4 milijarde
pa predstavlja 14,1% celotnega svetovnega analitičnega in BI prihodka (v letu 2015 je bil ta delež
13,5%). Rast trga podatkovne znanosti in strojnega učenja spodbuja željo končnih uporabnikov, da
uporabijo bolj napredne analitike za izboljšanje odločanja v celotnem podjetju. [7]
Po vseh prognozah rasti trga podatkovne znanosti je tako pričakovano, da bo število različnih ponujenih
platform, na vseh treh nivojih, le še raslo. To bo vsekakor imelo pozitiven vpliv na kvaliteto storitev, saj
bodo ponudniki takih platform in storitev tekmovali za enak ali podoben profil uporabnikov in
razvijalcev, kar pa je za končnega uporabnika pozitivno v smislu višje kvalitete storitev in nižjih
stroškov uporabe teh storitev.
Slika 11. Gartner-jev kvadrant za leto 2017 za podjetja, ki razvijajo platforme strojnega učenja [8].
7. LITERATURA
[1] https://www.gartner.com/document/3868668, Market Guide: Machine Learning Infrastructure as a
Service, obiskano 17.5.2018.
[2] https://blog.g2crowd.com/blog/trends/artificial-intelligence/2018-ai/machine-learning-service-
mlaas/, AI Trends 2018: Machine Learning as a Service (MLaaS), obiskano 17.5.2018.
188
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Karakatič, G. Vrbančič, J. Flisar in V. Podgorelec: Umetna inteligenca za telebane –
platforme strojnega učenja
[3] https://www.datamation.com/cloud-computing/artificial-intelligence-as-a-service-ai-meets-the-
cloud.html, Artificial Intelligence as a Service: AI Meets the Cloud - Datamation, obiskano
17.5.2018.
[4] https://www.altexsoft.com/blog/datascience/comparing-machine-learning-as-a-service-amazon-
microsoft-azure-google-cloud-ai/, Comparing MLaaS: Amazon AWS, MS Azure, Google Cloud
AI, obiskano 17.5.2018.
[5] https://www.datamation.com/cloud-computing/cloud-machine-learning-is-it-right-for-you.html,
Cloud Machine Learning: Is It Right for You? - Datamation, obiskano 17.5.2018.
[6] Yao Y, Xiao Z, Wang B, Viswanath B, Zheng H, Zhao BY. Complexity vs. performance: empirical
analysis of machine learning as a service. Proceedings of the 2017 Internet Measurement
Conference 2017, ACM, pp. 384-397.
[7] https://towardsdatascience.com/what-is-the-best-programming-language-for-machine-learning-
a745c156d6b7, What is the best programming language for Machine Learning?, Developer
Economics, 2017, obiskano 17.5.2018.
[8] https://www.gartner.com/document/3860063, Magic Quadrant for Data Science and Machine-
Learning Platforms, obiskano 17.5.2018.
[9] https://www.gartner.com/document/3772081, Hype Cycle for Data Science and Machine Learning,
2017, obiskano 17.5.2018.
[10] https://www.blue-granite.com/blog/bid/404378/azure-machine-learning-an-overview,
Aazure
Machine Learning: An Overview, obiskano 16.5.2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
ANALIZA INTELIGENTNIH OBLAČNIH STORITEV
NA PRIMERU PREPOZNAVE OBRAZOV
GREGA VRBANČIČ IN VILI PODGORELEC38
Povzetek: V zadnjih letih je strojno učenje postalo eden od temeljnih
elementov informacijske tehnologije in s tem osrednji, čeprav navadno
prikrit del našega življenja. Uporabniki so ozavestili inteligentno obnašanje
naprav ter storitev in to od ponudnikov v vedno večji meri tudi zahtevajo.
Podjetja so tako primorana nadgrajevati ter razvijati produkte in rešitve v
smeri integracije z metodami in tehnologijami strojnega učenja oziroma s
pomočjo umetne inteligence. Kljub enormnemu napredku na področju
strojnega učenja je slednje še vedno zahtevna naloga, ki zahteva obilico
domenskega znanja s področja podatkovne znanosti. Z namenom zapolnitve
omenjene vrzeli se na trgu pojavlja množica rešitev. Med najbolj
obetajočimi rešitvami omenjenega problema so metode strojnega učenja v
obliki storitev, integrirane z računalništvom v oblaku.
Ključne besede: • inteligentne oblačne storitve • strojno učenje •
prepoznava obrazov
NASLOV AVTORJEV: Grega Vrbančič, mladi raziskovalec, Univerza v Mariboru, Fakulteta za elektrotehniko,
računalništvo in informatiko, Koroška cesta 46, 2000 Maribor, Slovenija, e-pošta: grega.vrbancic@um.si. dr. Vili
Podgorelec, redni profesor, Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko,
Koroška cesta 46, 2000 Maribor, Slovenija, e-pošta: vili.podgorelec@um.si.
DOI https://doi.org/10.18690/978-961-286-162-9.20
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
190
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
1. UVOD
V zadnjih letih smo priča razcvetu na področju strojnega učenja oziroma umetne inteligence. Ključno
vlogo igra v širokem spektru aplikacij, kot so podatkovno rudarjenje, obdelava naravnega jezika,
prepoznava slik in podobno. Zaradi vedno večje količine podatkov, ki so na voljo, obstaja dober razlog
za domnevo, da bo inteligentna analiza podatkov postala še bolj razširjena in prisotna kot ključna
sestavina za tehnološki napredek. [1]
Kljub širokemu naboru uporabnosti pa je za uspešno uporabo metod strojnega učenja še vedno potrebna
kopica domenskega znanja s področja umetne inteligence, poleg tega pa je za uporabo strojnega učenja
nujna tudi velika količina računskih virov. Z namenom približanja metod in tehnik strojnega učenja
širši množici ljudi, tako posameznikom kot tudi podjetjem, je večina spletnih velikanov (Google,
Amazon, Facebook) ponudila produkte, ki omogočajo enostavno apliciranje metod strojnega učenja z
uporabo oblačne infrastrukture, brez oz. z minimalno potrebo po domenskem znanju s področja
strojnega učenja. Tako združeni tehnologiji strojnega učenja in računstva v oblaku sta poznani pod
imenom »inteligentni oblak«. Trenutna uporaba oblačnih storitev v večini predstavlja računstvo, hrambo
podatkov ter mreženje. Z dodano funkcionalnostjo strojnega učenja, vgrajenega neposredno v obstoječo
oblačno infrastrukturo, pa se zmožnosti takšnega oblaka močno povečajo. Z združitvijo omenjenih
tehnologij oblak postane zmožen učenja iz masovnih podatkov, predhodno hranjenih ali novo
ustvarjenih, z namenom izgradnje raznih napovednih modelov, iskanja vzorcev in analizo dogodkov,
kar se v končni fazi lahko odraža v obliki sprejemanja boljših, bolj racionalnih poslovnih odločitev ali
pripomore k izboljšanju, nadgradnji samega produkta ali storitve.
V nadaljevanju bomo predstavili računalništvo v oblaku ter inteligentne oblake oz. storitve večjih
ponudnikov ter njihove zmožnosti, zatem pa predstavili primer aplikativne uporabe inteligentnega
oblaka za problem prepoznave obrazov.
2. RAČUNALNIŠTVO V OBLAKU
Odkar je bila paradigma računalništva v oblaku zasnovana, je bilo podanih več definicij. Nekatere izmed
njih so se osredotočale na dinamično zagotavljanje virov procesiranja in shranjevanja, druge pa so
poudarjale storitveno usmerjen vmesnik in izkoriščanje tehnik virtualizacije. Ameriški nacionalni
inštitut za standarde in tehnologijo (angl. National Institute of Standards and Technology – NIST) je
podal referenčno opredelitev. NIST je računanje v oblaku opredelil kot model, ki deluje po načelu
»plačaj glede na porabo« in zagotavlja priročen, omrežen dostop na zahtevo do bazena nastavljivih
računalniških virov v skupni rabi (npr.: omrežja, strežniki, hramba podatkov, aplikacije, storitve), katere
lahko z minimalnim trudom enostavno upravljamo – instantno zagotavljamo in sproščamo. [2]
Računalništvo v oblaku v splošnem delimo na dva načina – glede na model dostave ter glede na
namestitev. Glede na model dostave so oblaki razdeljeni v tri skupine (glej sliko 1): [3]
infrastruktura kot storitev (angl. Infrastructure as a Service – IaaS),
platforma kot storitev (angl. Platform as a Service – PaaS) ter
programje kot storitev (angl. Software as a Service – SaaS).
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
191
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
Slika 1: Opredelitev oblakov glede na model dostave
Glede na namestitev poznamo štiri modele oblakov: [4]
javni oblak (angl. Public Cloud) – infrastruktura je dostopna splošni javnosti ali veliki gospodarski
skupini in je v lasti organizacije, ki prodaja oblačne storitve.
zasebni oblak (angl. Private Cloud) – infrastruktura operira zgolj za namene oz. potrebe organizacije;
upravljana je lahko s strani organizacije ali tretje osebe in je lahko vzpostavljena znotraj ali izven
organizacije.
skupnostni oblak (angl. Community Cloud) – infrastruktura je deljena med več organizacijami in
podpira specifično skupnost, ki ima skupne interese; upravljana je lahko s strani organizacije ali tretje
osebe.
hibridni oblak (angl. Hybrid Cloud) – infrastruktura je kompozija dveh ali več oblakov (zasebnih,
skupnostnih ali javnih), kateri ostajajo unikatne entitete, ki so med seboj povezane s standardizirano
ali lastniško tehnologijo za namene omogočanja podatkovne in aplikativne prenosljivosti.
3. INTELIGENTNI OBLAK
Računalništvo v oblaku zagotavlja dve osnovi zahtevi za izvajanje sistema umetne inteligence:
učinkoviti in stroškovno sprejemljivi viri (v glavnem hramba podatkov) ter računska moč, zmožna
obdelave velikih količin podatkov. Kot prvo, računalništvo v oblaku zagotavlja prilagodljivo, cenovno
dostopno računsko moč in kot drugo, odlično možnost hrambe in procesiranja velikih količin podatkov.
Taka združitev računskega oblaka z metodami in pristopi strojnega učenja koristi obema disciplinama.
[5]
Strojno učenje in umetna inteligenca postajata ključna elementa novega vala inovacij na trgu PaaS.
Začetniki PaaS kot so Amazon z AWS, Microsoft z Azure, IBM z Bluemix in Google s Cloud storitvijo
nenehno poskušajo z inoviranjem na področju strojnega učenja in umetne inteligence prehiteti svoje
konkurente. Medtem ko se je prvi val inovacij na področju PaaS osredotočal na ključno infrastrukturo
in aplikacijske platforme, je novi val osredotočen na podatke, pridobivanje poglobljenega vpogleda v
njih ter pridobivanje znanja iz podatkov. V bližnji prihodnosti se lahko nadejamo, da bodo storitve
192
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
strojnega učenja (angl. Machine Learning as a Service – MLaaS) in umetne inteligence (angl. Artificial
Intelligence as a Service – AIaaS) splošno uporabne kot so trenutno uporabni PaaS produkti.
Boj med največjimi konkurenti na trgu PaaS je osredotočen na zelo specifične vrste in domene strojnega
učenja oz. umetne inteligence in zdi se, da so si konkurenti kar se tiče vpeljave novih rešitev za
specifične domene kar precej konsistentni.
Trenutno aktualna področja, na katera se osredotočajo vodilni na področju PaaS, lahko opredelimo
sledeče: [6]
platforme za strojno učenje (angl. Machine learning platforms): domorodne oblačne storitve, ki
omogočajo ustvarjanje, izvajanje ter upravljanje tradicionalnih modelov strojnega učenja (npr.:
klasifikacija, regresija).
storitve obdelave naravnega jezika (angl. Natural language processing services): storitve, ki
omogočajo sintaktično in semantično analizo povedi v naravnem jeziku. Najpogostejše discipline v
tej kategoriji vključujejo analizo čustev, analizo namere, modeliranje pogovora ipd.
storitve za analitiko vida (angl. Vision analytic services): storitve, ki omogočajo razumevanje
vsebine iz slik. Najpogostejše tehnike v tej kategoriji vključujejo klasifikacijo slik, analizo čustev,
zaznavo obrazov in predmetov, itd.
storitve za procesiranje govora (angl. Speech processing services): storitve, ki omogočajo zmožnosti
analize govora, kot so pretvorba govora v besedilo, prevod govora ipd.
storitve za upravljanje z znanjem (angl. Knowledge services): storitve, ki dopolnjujejo oz.
nadgrajujejo obstoječe podatke z operacijami kot so ekstrakcija konceptov, povezovanje entitet ipd.
storitve za pridobivanje vpogleda v podatke (angl. Data insights services): storitve, ki omogočajo
vpogled v ciljne vire podatkov.
Poleg gigantov na področju PaaS se v boj za pridobitev strank oz. tržnega deleže na področju MLaaS
oz. AIaaS vključujejo tudi številna zagonska podjetja. Cilj večine takšnih zagonskih podjetij seveda ni
direktno konkurirati omenjenim gigantom, ampak čim bolje predstaviti svoje znanje s področja strojnega
učenja, z namenom privabiti čim več pozornosti pri velikih podjetjih, katera bi jih potencialno lahko
prevzela. Po drugi strani pa je ogromno zagonskih podjetij svoj trud usmerilo v apliciranje strojnega
učenja oz. umetne inteligence na zelo nišne industrijske probleme ter se na tak način poskušajo prebiti
na trgu. Na primer zagonsko podjetje Enlitic uporablja globoko učenje za pomoč zdravnikom pri
prepoznavanju določenih bolezni oz. zdravstvenih stanj iz zajetih rentgenskih slik ali posnetkov
magnetne resonance. Eno izmed trenutno bolj zastopanih področij je področje zaznave in prepoznave
ljudi in objektov iz slik ter video posnetkov, s katerim se ukvarja veliko število zagonskih podjetij
(Kairos, CloudSight, …). [7]
3.1. Inteligentne storitve
MlaaS oz. AIaaS je krovna definicija avtomatiziranih in polavtomatskih oblačnih platform oz. storitev,
ki pokrivajo večino infrastrukturnih vprašanj, kot so predhodna obdelava podatkov, učenje in
vrednotenje modelov ter nadaljnje napovedovanje s pomočjo omenjenih modelov. Rezultate napovedi
je mogoče povezati z obstoječo notranjo IT infrastrukturo prek REST API. Omenjene storitve strankam
pomagajo izkoriščati zmožnosti strojnega učenja brez večjih dodatnih stroškov v obliki časa in tveganja
za vzpostavitev internega oddelka strojnega učenja. [8, 9]
Inteligentne storitve združujejo nabor predpripravljenih, generičnih rešitev strojnega učenja, ki
naslavljajo različne probleme vse od prepoznave obrazov iz slik, procesiranja naravnega jezika in
napovednih analitik pa do vizualizacije podatkov. V zaledju teh storitev so uporabljeni različni algoritmi
strojnega učenja za namene iskanja vzorcev iz podatkov. Z uporabo teh vzorcev in algoritmov so nato
zgrajeni matematični modeli, ki omogočajo napovedovanje na novo ustvarjenih oz. nepoznanih
podatkov. Ključno je, da organizacije ki uporabljajo takšne storitve, ne potrebujejo poglobljenega
domenskega znanja s področja strojnega učenja. [9]
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
193
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
3.2. Tipi inteligentnih storitev
Strojno učenje oz. še bolj splošno umetna inteligenca naslavlja širok nabor problemskih področij kot
tudi različnih tehnologij. Trenutno lahko obstoječ nabor inteligentnih storitev razdelimo v sledeče
kategorije: kognitivno računalništvo, osebni asistenti in roboti za pogovor (angl. Chatbot), ogrodja za
strojno učenje ter popolnoma upravljane storitve strojnega učenja.
3.2.1.
Kognitivno računalništvo
Velike količine podatkov, hranjenih v oblaku, predstavljajo za proces strojnega učenja ogromen vir
informacij, ki skupaj z milijoni uporabnikov računalništva v oblaku in milijoni dnevno izvedenih
procesov tvorijo veliko učno množico, nad katero se lahko stroj uči. Trenutno so na trgu nekateri primeri
kognitivnega računalništva naredili izjemen napredek, predvsem na področju umetne inteligence. Tukaj
lahko izpostavimo predvsem Microsoft z njihovim paketom kognitivnih storitev (Microsoft Cognitive
Services), IBM s platformo Watson ter AWS s skupkom aplikacijskih storitev strojnega učenja (AWS
ML Application Services). Ob tem je potrebno poudariti, da so kljub izjemnemu napredku v splošnem
kognitivni računalniški sistemi trenutno še vedno v začetni fazi. Pričakovati pa je, da se bodo v
naslednjih nekaj letih razvili do te mere, da bodo lahko takšni sistemi prevzemali tudi pomembnejše
odločitve. [10]
3.2.2.
Osebni asistenti in roboti za pogovor
Osebni asistenti posameznikom do določene mere že olajšujejo življenje. Produkti kot so Microsoft
Cortana, Google Assistant in Apple Siri so sistemi za prepoznavo govora, ki strojem dajejo občutek
človeškosti. Vendar pa imajo takšni asistenti omejene zmožnosti, saj so njihovi odzivi precej splošni in
ne toliko personalizirani. Z masovnimi podatki v oblaku, zmožnostmi strojnega učenja in kognitivnimi
sposobnostmi pa postajajo osebni asistenti vedno bolj personalizirani in sposobni ljudem podobne
glasovne interakcije.
Roboti za pogovor so bili v svojih začetkih v središču pozornosti v storitveni industriji s ponujanjem
rešitev in informacij uporabnikom preko spletnega klepeta, kar je delno olajšalo uporabniško podporo
storitvenih podjetij. Z implementacijo strojnega učenja lahko zvišamo kognitivne sposobnosti takšnih
botov, saj se ti lahko učijo iz predhodnih pogovorov in namesto golih sej »vprašanje – odgovor« med
uporabnikom in robotom ponudijo interakcijo, podobno človeški. Glavni cilj pri tem je ustvariti robote
čim bolj »človeške« in čim bolj personalizirane, kolikor je to pač mogoče. [10]
3.2.3.
Ogrodja za strojno učenje
Ogrodja za strojno učenje v oblaku omogočajo razvijalcem ustvarjanje aplikacij, ki imajo sposobnost
izboljšanja skozi čas. V splošnem zahtevajo, da razvijalci oz. podatkovni znanstveniki zgradijo model
ter ga učijo z obstoječimi podatki. Takšna ogrodja so še posebej priljubljena pri razvoju aplikacij,
povezanih z analizo masovnih podatkov (angl. Big Data Analytics), uporabiti pa jih je možno za
ustvarjanje številnih drugih aplikacij. Dostop do teh ogrodij preko oblačnih storitev je navadno lažji in
cenejši kot pa vzpostavitev lastne infrastrukture za opravljanje nalog strojnega učenja, kar je tudi ena
izmed največjih prednosti uporabe takšnih storitev. [11]
3.2.4.
Popolnoma upravljane storitve strojnega učenja
Včasih si organizacije želijo integracije zmožnosti strojnega učenja v aplikacije, vendar se pri tem
soočijo s pomanjkljivim ali neobstoječim znanjem, potrebnim za uporabo metod in tehnik strojnega
učenja. V takšnih primerih lahko uporabijo popolnoma upravljane storitve strojnega učenja, ki jim
ponujajo vnaprej izdelane modele in / ali »povleci in spusti« orodja, ki omogočajo poenostavitev in
pospešitev uporabe strojnega učenja. [11]
194
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
3.3. Prednosti in slabosti inteligentnih storitev
Mnoge organizacije, navadno večje, investirajo v lasten oddelek za strojno učenje oz. umetno
inteligenco, kot tudi v nakup ustrezne lastne infrastrukture. Znaten delež organizacij pa se vendarle
odloči za uporabo MLaaS oz. AIaaS predvsem zaradi številnih koristi, ki jih te vrste storitev prinašajo.
Med njimi velja izpostaviti predvsem napredno infrastrukturo, manjše stroške, prilagodljivost računskih
zmožnosti ter uporabnost. Aplikacije, ki uporabljajo metode in tehnike strojnega učenja, se najbolj
učinkovito izvajajo na hitrih grafičnih procesnih enotah, katere naloženo delo izvajajo paralelno. Takšni
sistemi so praviloma dragi in marsikateri organizaciji stroškovno nedosegljivi. MLaaS omenjenim
organizacijam omogočajo dostop do visoko zmogljivih, prilagodljivih virov po ceni, katero si lahko
privoščijo. Čeprav je večina najbolj razširjenih orodij, ogrodij in knjižnic odprtokodnih in tako
organizacijam lahko dosegljivih, pa ta niso vedno enostavna za uporabo. Storitve MLaaS naslavljajo
tudi to problematiko, saj strankam oz. organizacijam ponujajo vmesnike, navadno REST API, ki so
enostavni za uporabo in integracijo v obstoječe okolje ter za njihovo uporabo ne zahtevajo domenskih
strokovnjakov s področja strojnega učenja oz. umetne inteligence.
Dve največji pomanjkljivosti MLaaS oz. AIaaS kot storitve sta težavi, ki sta skupni tudi klasičnim
računalniškim storitvam v oblaku – varnost in skladnost. Veliko aplikacij, ki uporablja metode in tehnike
strojnega učenja, se zanaša na velike količine podatkov. Če se bodo ti podatki prenašali oz. bodo hranjeni
v oblaku, morajo organizacije zagotoviti ustrezne varnostne ukrepe in šifriranje tako prenašajočih se,
kot tudi hranjenih podatkov. V nekaterih primerih lahko predpisi tudi preprečijo hrambo določenih vrst
občutljivih podatkov v oblaku ali pa je hramba podatkov omejena na določeno geografsko področje
(kontinent, država), kar lahko predstavlja organizacijam veliko težavo. [11, 12]
4. UPORABA INTELIGENTNIH OBLAČNIH STORITEV
Za primer aplikativne uporabe inteligentnih oblačnih storitev smo se osredotočili na področje
prepoznave obrazov. Kot cilj smo si zadali razvoj REST storitve, ki omogoča registracijo in avtorizacijo
uporabnika s pomočjo prepoznave obraza iz slike, zajete s pomočjo spletne kamere, ter zajem video
posnetka in analizo čustev osebe na posnetku. Ključen del pri implementaciji primera predstavljajo
spletni aplikacijski vmesniki MLaaS storitev. V našem primeru smo implementirali MLaaS storitve za
prepoznavo obrazov z rešitvami treh ponudnikov in sicer z Amazon Rekognition, Microsoft Face API
ter Kairos Human Analytics API. Za demonstracijske namene delovanja ustvarjene REST storitve smo
implementirani tudi spletnega odjemalca.
4.1. Primerjava funkcionalnosti storitev
Za namen pridobitve boljšega vpogleda v funkcionalnosti oz. zmožnosti inteligentnih oblačnih storitev
izbranih ponudnikov smo opravili primerjavo med njimi, prikazano v tabeli 1. Iz rezultatov je razvidno,
da imajo različni ponudniki večinoma podprte enake oz. zelo podobne funkcionalnosti.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
195
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
Tabela 1: Primerjava funkcionalnosti inteligentnih oblačnih storitev med posameznimi ponudniki
Amazon Rekognition
Microsoft Face API
Kairos Human Analytics
API
Zaznava obraza
✔
✔
✔
Prepoznava obraza (slika)
✔
✔
✔
Prepoznava obraza (video)
✔39
✔40
✔
Čustvena globina (%)
✘
✔
✔
Prisotna čustva (Da/Ne)
✔
✔
✔
Starost in spol
✔
✔
✔
Sledenje več obrazom
✔
✔
✔
SDK
(brez
povezave
s
✘
✘
✔41
spletom)
API
✔
✔
✔
Amazon Rekognition ponuja prepoznavo slik, temelječo na globokem učenju. Storitev je integrirana v
obstoječ Amazonov AWS ekosistem. Sama tehnologija temelji na tehnologiji leta 2015 prevzetega
podjetja Orbeus in je bila prvič predstavljena konec leta 2016. Glavne funkcionalnosti storitve so analiza
objektov in scen, zaznava ter prepoznava obraza in analiza čustev. Omejitve storitve se odražajo v:
maksimalnem številu zaznanih obrazov na sliki (15),
maksimalni velikost (15MB) hranjene slike v obliki Amazonovega S3 objekta,
minimalni ločljivosti slike; minimalna višina in širina je 80 slikovnih točk,
maksimalni velikosti slike (5MB) v obliki surovih bajtov, poslanih kot parameter API-ju,
formatu slike (zgolj JPG in PNG),
brez poglobljene analize čustev,
maksimalnem številu obrazov, ki jih lahko hranimo v eni sami kolekciji (1 milijon), ter
v maksimalnem številu ujemajočih se obrazov (4096), ki jih vrača iskanje preko API-ja.
Microsoft Face API (poznan tudi kot »Project Oxford«) je storitev, ki omogoča analizo slik in video
posnetkov. Storitev je del Microsoftove platforme za kognitivne storitve Microsoft Cognitive Services.
Glavne funkcionalnosti storitve so zaznava obrazov, verifikacija obrazov, prepoznava obrazov oz.
identifikacija ter zaznava emocij. Omejitve storitve se odražajo v:
maksimalnem številu slik v galeriji (1000),
zaznava samo 27 obraznih značilnosti,
maksimalnem številu zaznanih obrazov na posamezni sliki (64),
maksimalni velikosti videa (100MB; 10 – 20 sekund videa pri ločljivosti 1080p in manj kot 30
sekund videa pri ločljivosti 720p) za zaznavo emocij,
maksimalni velikosti slik (4MB), ter
maksimalnem številu transakcij na sekundo (10).
Kairos Human Analytics API je osrednja storitev podjetja Kairos, ustanovljenega leta 2012,
specializiranega za področje prepoznave obrazov. Glavne funkcionalnosti storitve so zaznava obrazov,
identifikacija in prepoznava obrazov, zaznava in prepoznava emocij ter prepoznava demografskih
podatkov. Omejitve storitve se odražajo v:
zahtevanem minimalnem razmiku (75 slikovnih točk) med očmi fotografirane osebe,
formatu podprtih slik (JPG, PNG) ob uporabi API-ja,
39 Predhodno je potrebno ustvariti kolekcijo obrazov (funkcionalnost CreateCollection) iz video posnetka ter nato
izvesti prepoznavo obraza oz. obrazov.
40 Predhodno je potrebno iz video posnetka pridobiti posamezne okvirje (angl. Frame) ter nato nad temi okvirji
izvesti prepoznavo obraza oz. obrazov.
41 Samo v primeru uporabe plačljive naročnine na storitev.
196
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
samodejni kompresiji in pretvorbi slik v sivinski spekter,
brez podpore za hrambo slik ali video posnetkov,
vsak klic na API se šteje v kvoto klicev,
omejitev števila klicev na interval minuta/dan/mesec glede na zakupljen paket, ter
SDK, ki je na voljo samo pri plačljivih paketih.
4.2. Zasnova primera uporabe
Primer uporabe inteligentnih oblačnih storitev smo zasnovali na način (slika 2), da ta deluje kot ovojnica
obstoječim inteligentnim oblačnim storitvam. Zamislili smo si tri scenarije in sicer registracijo
uporabnika, identifikacijo uporabnika ter analizo čustev iz zajetega video posnetka. Pri registraciji
uporabnik določi ponudnika inteligentnih oblačnih storitev, preko katerega želi, da se proces izvede,
določi svoje uporabniško ime ter zahtevku doda sliko, zakodirano z algoritmom Base64. Implementiran
REST API poskrbi za nadaljnjo izvedbo scenarija pri izbranem ponudniku ter ob zaključku le-tega vrne
statusno sporočilo v obliki JSON. Identifikacija uporabnika deluje na podoben način, le da v tem primeru
uporabniku ni potrebno zraven slike pošiljati še uporabniškega imena. Po končani izvedbi procesa na
implementiranem REST API-ju pa le-ta s strani izbrane inteligentne oblačne storitve vrne identificiran
subjekt, prav tako v obliki JSON. Pri analizi video posnetka je enako kot pri identifikaciji, s to razliko,
da v slednjem z algoritmom Base64 zakodiramo video posnetek, ga shranimo na datotečni sistem naše
REST storitve ter ga nato pošljemo v analizo izbranemu ponudniku MLaaS storitve. Po končani analizi
posnetka se odjemalcu vrne odgovor v obliki JSON, ki vsebuje prepoznane vrednosti oz. nivo zaupanja
v posamezna čustva subjekta za vsak okvir video posnetka.
Slika 2: Konceptualni model primera uporabe
Primer uporabe smo implementirali v programskem jeziku Python z uporabo podpornih knjižnic (Boto3
za Amazon Rekognition, Kairos Face SDK Python za Kairos Human Analytics API ter Cognitive Face
Python za Microsoft Face API) – ovojnic za posamezno inteligentno oblačno storitev. Za vzpostavitev
spletne REST storitve smo uporabili ogrodje Flask.
4.3. Implementacija primera uporabe
Implementacije REST API smo se lotili na način, da smo najprej definirali posplošen vmesnik servisnih
razredov, kateri v nadaljevanju, prav tako preko REST API, komunicirajo s posameznimi MLaaS
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
197
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
storitvami ponudnikov. Implementirane servisne razrede smo povezali z REST aplikacijskim
vmesnikom s pomočjo metod kontrolnega razreda. Razredni diagram (slika 3) prikazuje zasnovo
implementiranega primera uporabe.
Slika 3: Razredni diagram primera uporabe
Kontrolni razred implementira tri metode, katere so izpostavljene preko REST, in sicer metodo za
registracijo, metodo za identifikacijo ter metodo za analizo čustev iz video posnetka. Metoda za
registracijo v telesu zahtevka HTTP prejme tri parametre: uporabniško ime, preko katerega ponudnika
želimo izvesti registracijo, ter sliko, zakodirano z algoritmom Base64. Prejete parametre validiramo,
pridobimo format poslane slike ter jo shranimo na datotečni sistem za nadaljnjo uporabo. Glede na s
parametrom izbranega ponudnika MLaaS kličemo razredno metodo za dodajanje osebe razreda, ki
implementira nadaljnjo komunikacijo z REST API izbranega ponudnika. Po uspešnem vnosu nove
osebe vrnemo v odgovoru na zahtevek HTTP stanje izvedene operacije v obliki JSON ter izbrišemo prej
shranjeno sliko.
Metoda za identifikacijo v telesu zahtevka HTTP prejme dva parametra: ponudnika storitev in sliko,
zakodirano z algoritmom Base64. Kot pri predhodni metodi, se tudi v tej naprej validirajo prejeti
podatki. Za uspešno validacijo podatkov pridobimo format prejete slike ter jo shranimo na datotečni
sistem. Glede na izbranega ponudnika MLaaS storitev nato kličemo metodo za identifikacijo osebe
ustreznega razreda, ki implementira nadaljnjo komunikacijo z REST API. S strani REST API ponudnika
MLaaS dobimo v obliki JSON polje oseb, za katere je model našel podobnosti s poslano sliko ter nivo
prepričanosti oz. zaupanja za posamezno osebo. Kot odgovor na zahtevek HTTP vrnemo identificirano
osebo z najvišjim nivojem prepričanosti oz. zaupanja, prav tako v obliki JSON. V nasprotnem primeru,
torej v primeru, da oseba ni bila prepoznana, pa vrnemo statusno sporočilo. Na koncu, tako kot v prejšnji
metodi, tudi v tej predhodno shranjeno sliko izbrišemo iz datotečnega sistema.
Metoda kontrolnega razreda za analizo čustev iz video posnetka deluje podobno kot metoda za
identifikacijo, s to razliko, da namesto slike v telesu zahtevka HTTP prejme video posnetek, zakodiran
z algoritmom Base64. Tega najprej shranimo na datotečni sistem ter zatem glede na izbranega
ponudnika MLaaS storitev kličemo metodo za analizo čustev iz video posnetka ustreznega servisnega
razreda. S strani REST API ponudnika MLaaS storitev dobimo v obliki JSON vrednosti za posamezna
identificirana čustva (jeza, gnus, strah, veselje, žalost, presenečenost) v obliki realnih števil (med 0 in
198
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
100) za vsak okvir poslanega video posnetka. Prejete rezultate vrnemo kot odgovor na prejet zahtevek
HTTP. Predhodno lokalno shranjen video posnetek izbrišemo iz datotečnega sistema.
4.4. Rezultati
4.4.1.
Prikaz delovanja
Za potrebe testiranja delovanja razvite storitve v praksi smo razvili enostaven odjemalec v obliki spletne
aplikacije. Razvita aplikacija z uporabo spletne kamere preko brskalnika omogoča zajem slik, ki se
uporabijo za potrebe registracije ter identifikacije, ter zajem video posnetka, iz katerega s pomočjo
MLaaS storitev poskušamo izluščiti čustva posnetega subjekta.
Za identifikacijo uporabnika smo s pomočjo spletne kamere zajeli sliko, s pomočjo katere smo z uporabo
inteligentnih oblačnih storitev identificirali predhodno registriranega uporabnika. Uporabljene storitve
nam kot rezultat identifikacije, poleg identificiranega uporabnika, vrnejo še razpoznane lastnosti obraza
(Slika 4). V prikazanem primeru je storitev s slike razpoznala starost osebe 29 let, pravilna starost pa je
27 let. Z 99,66% nivojem prepričanja je pravilno določila spol osebe. Prepoznala je, da oseba ne nosi
očal ter ima zaprta usta. Dodatno je s slike razbrana rasa osebe, v našem primeru je z 98,04% razpoznala
belca, z 1,5% latino-američana ter z 0,4% drugo oz. nekategorizirano raso.
V primeru razpoznave čustev z video posnetka smo s spletno kamero posneli 10 sekundni video
posnetek ter ga analizirali z uporabo omenjenih storitev. Rezultati analize čustev so prikazani v obliki
stolpičnega diagrama pod video posnetkom, kjer vsak izmed stolpcev prikazuje nivo prepričanja glede
posameznega čustva. Na sliki 5 sta zaslonska posnetka spletnega odjemalca, kjer je na levi strani
prikazana prepoznava čustva veselja z nivojem prepričanja 66%, na desni strani pa ravno nasprotje –
žalosti, katerega je storitev prepoznala z nivojem prepričanja 19,5%.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
199
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
Slika 4: Prikaz prepoznave lastnosti osebe za podlagi fotografije zajete za potrebe identifikacije uporabnika
Slika 5: Prikaz delovanja razpoznave čustev iz video posnetka
200
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
4.4.2.
Uspešnost prepoznave
Za potrebe testiranja uspešnosti prepoznave obraza posamezne inteligentne oblačne storitve smo
uporabili slike iz zbirke slik »Georgia Tech Face Database«42 . V vsako storitev smo dodali novega
uporabnika z eno sliko, pri čemer je subjekt na sliki imel pogled usmerjen direktno v kamero brez
obraznih mimik. Identifikacijo uporabnika smo testirali s štirimi različnimi fotografijami:
Slika 1: pogled naravnost v kamero, rahlo odprta usta.
Slika 2: pogled naravnost v kamero, z očali.
Slika 3: obraz obrnjen proti kameri, pogled usmerjen v tla.
Slika 4: pogled naravnost v kamero, nasmeh.
Rezultati v tabeli 2 predstavljajo nivo zaupanja oz. prepričanja storitve, da je uporabnik pravilno
identificiran. Kot je razvidno, se je najbolje, v vseh pogledih, odrezala storitev Amazon Rekognition,
medtem ko imata preostali dve storitvi podobno povprečje zaupanja oz. prepričanja. Zanimivo je, da
imata obe omenjeni storitvi slabši nivo zaupanja pri testu identificiranja uporabnika s fotografijo z
dodanimi očali in z nasmeškom fotografirane osebe, medtem ko imata pri ostalih fotografijah bistveno
boljše rezultate, a še vedno opazno slabše kot storitev Amazon Rekognition.
Tabela 2: Rezultati uspešnosti identifikacije subjekta
Amazon Rekognition
Microsoft Face API
Kairos Human Analytics API
slika 1
0,9997
0,8949
0,9146
slika 2
0,9999
0,7244
0,7609
slika 3
0,9998
0,9174
0,9265
slika 4
0,9998
0,7776
0,686
Povprečje zaupanja
0,9998
0,8286
0,822
5. ZAKLJUČEK
V članku smo predstavili osnovni koncept računalništva v oblaku ter inteligenten oblak oz. inteligentne
oblačne storitve, ki predstavljajo združitev že uveljavljenega koncepta računalništva v oblaku z
naprednimi metodami in pristopi strojnega oz. globokega učenja. Povzeli smo potencialne vplive
omenjene združitve tehnologij ter predstavili osnovne trenutne smernice oz. gibanja na trgu.
V nadaljevanju smo podrobneje analizirali inteligentne oblačne storitve treh različnih ponudnikov ter se
pri tem osredotočili na področje prepoznave obrazov. Primerjali smo funkcionalnosti storitev
ponudnikov Amazon, Microsoft in Kairos ter izpostavili njihove omejitve. Zatem smo predstavili
praktični primer uporabe teh storitev – implementacijo registracije oz. dodajanje novega uporabnika ter
identifikacijo uporabnika glede na podano fotografijo. Analizirali smo tudi rezultate uspešnosti
prepoznave posameznih storitev, pri čemer smo ugotovili, da se je najbolje izkazala storitev Amazon
Rekognition, medtem ko sta preostali storitvi imeli nekoliko slabše rezultate v primerih, ko smo
poskušali identificirati uporabnika s korekcijskimi očali ter obrazno mimiko, kar tudi sicer na področju
prepoznave obrazov še vedno predstavlja izziv.
Ne glede na vse pozitivne vidike uporabe inteligentnih oblačnih storitev, pri čemer je potrebno v prvi
vrsti izpostaviti predvsem dejstvo, da za nadgradnjo obstoječe oz. razvoj nove rešitve z uporabo
strojnega učenja ne potrebujemo poglobljenega domenskega znanja s področja strojnega učenja, je po
drugi strani potrebno izpostaviti tveganja, ki izhajajo iz tveganj uporabe računalništva v oblaku. Kot dve
ključni tveganji bi izpostavili nadzor in varovanje osebnih podatkov, ki v primeru uporabe takšnih
storitev ni več v naši domeni, ter odvisnost od ponudnika storitve.
42
Prosto
dostopna
zbirka
slik
Georgia
Tech
Face
Database
dostopna
na:
http://www.anefian.com/research/face_reco.htm
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
201
G. Vrbančič in V. Podgorelec: Analiza inteligentnih oblačnih storitev na primeru prepoznave
obrazov
V splošnem smo z uporabo vseh omenjenih storitev imeli pozitivne izkušnje. Izpostaviti bi veljalo, da
izmed vseh ponudnikov Kairos ne omogoča fleksibilnosti v tolikšni meri kot jo omogočata preostala
dva ponudnika. Ugotovljeno pravzaprav ne preseneča, če vemo, da Kairos predstavlja specializirano
storitev, medtem ko sta obe ostali rešitvi precej bolj splošno namenski, s čimer ohranjata višjo stopnjo
nadzora. Razlika med preskušenimi rešitvami je razvidna tudi pri kvaliteti in obširnosti dokumentacije,
ki prav tako govori v prid ponudnikoma Amazon in Microsoft.
6. LITERATURA
[1] SMOLA Alex, Introduction to Machine Learning, Cambridge University Press, 2010.
[2] MELL Peter, Grance Timothy, "The NIST Definition of Cloud Computing", Recommendations of
the National Institute of Standards and Technology, National Institute of Standards and
Techonology, 2011.
[3] HOFER C. N., KARAGIANNIS Georgios, "Cloud computing services: taxonomy and
comparison.", Journal of Internet Services and Applications, številka 2, 2011, str. 81-94.
[4] MARINESCU Dan C, Cloud Computing: Theory and Practice, Morgan Kaufmann, 2017.
[5] https://www.botmetric.com/blog/machine-learning-impact-on-cloud-computing/,
Machine
Learning's Impact on Cloud Computing, obiskano 2. 4. 2018.
[6] https://medium.com/@jrodthoughts/which-paas-is-winning-the-machine-learning-and-artificial-
intelligence-race-2640e1e96eed, Which PaaS is Winning the Machine Learning and Artificial
Intelligence Race?, obiskano 3. 4. 2018.
[7] HSU Jeremy, "For Sale: Deep Learning", IEEE Spectrum, številka 8, Avgust 2016, str. 12-13.
[8] https://www.altexsoft.com/blog/datascience/comparing-machine-learning-as-a-service-amazon-
microsoft-azure-google-cloud-ai/, Comparing MLaaS: Amazon AWS, MS Azure, Google Cloud
AI, obiskano 12. 5. 2018.
[9] https://analyticsindiamag.com/what-is-machine-learning-as-a-service-mlaas/, What Is Machine
Learning As A Service (MLaaS)?, obiskano 8. 5. 2018.
[10] https://www.botmetric.com/blog/machine-learning-impact-on-cloud-computing/,
Machine
Learning's Impact on Cloud Computing, 9. 5. 2018.
[11] https://www.datamation.com/cloud-computing/artificial-intelligence-as-a-service-ai-meets-the-
cloud.html, Artificial Intelligence as a Service: AI Meets the Cloud – Datamation, obiskano
9.5.2018.
[12] https://www.datamation.com/cloud-computing/cloud-machine-learning-is-it-right-for-you.html,
Cloud Machine Learning: Is It Right for You? – Datamation, obiskano 12. 5. 2018.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
RAZVOJ INTELIGENTNE REŠITVE WATSON
ZLITINE
SARA HMELAK, MATIC STRAJNŠAK IN GREGOR KOVAČEVIČ43
Povzetek: Prispevek predstavlja tehnologijo uporabljeno pri razvoju
inteligentne rešitve Watson Zlitine. Gre za rešitev, ki s pomočjo kognitivnih
algoritmov in z uporabo umetne inteligence vodi pogovor z virtualnim
asistentom o pripravi in sestavi nove aluminijaste zlitine ter njenih ključnih
mehanskih lastnosti. S pomočjo virtualnega asistenta lahko simuliramo
sestavo nove zlitine ter na ta način minimiziramo porabo primarnih
elementov in maksimiziramo porabo odpadkov (scrap-a). Hkrati pa z
naprednimi kognitivnimi algoritmi predvidimo lastnosti končnega izdelka.
S tem pa se že v fazi načrtovanja zlitine optimizirajo stroški, poraba surovine
na skladišču ter predvidi ustreznost končnih lastnosti zlitine.
Ključne besede: • virtualni asistent • kognitivno računalništvo • umetna
inteligenca • BigData • speech to text – text to speech
NASLOV AVTORJEV: Sara Hmelak, BI Specialist, Alcad d.o.o., Mroževa 5, 2310 Slovenska Bistrica, e-pošta:
sara.hmelak@alcad.si. Matic Stajnšak, Študent FERI Maribor, e-pošta: matic.strajnsak@gmail.com. Gregor
Kovačevič, Študent FERI Maribor, e-pošta: gregor.kovacevic@gmail.com.
DOI https://doi.org/10.18690/978-961-286-162-9.21
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
203
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
1. UVOD
Krepko smo že vstopili v čas kognitivne sfere, velikih količin podatkov in novih tehnologij obvladovanja
le-teh. Zaradi digitalizacije in mobilnosti podatki nastajajo neprestano, hkrati pa jih zaradi vedno
zmogljivejših računalnikov lahko shranjujemo in obdelujemo. Izkazalo se je, da ni pomembno koliko
podatkov generiramo in shranimo, temveč predvsem kako učinkovito znamo le-te izkoriščati. Podatki
sami zase ne predstavljajo konkurenčne prednosti, dodano vrednost prinese hitra in učinkovita analiza.
Kako podatke napraviti učinkovite in hitre? Učinkovite, take ki z analitično obdelavo dobijo odločitveno
vrednost in hitre, da so odločitvenih zmožnosti zmožni v realnem času. Hkrati pa ne posegamo več le
po strukturiranih podatkih. Podatki niso več le številčni, strukturirani objekti in tabele, vedno več je
nestrukturiranih podatkov – slike, grafi, tekst… - teh pa ne zmoremo več obvladovati na klasičen način.
Zato posegamo po novih konceptih kot je kognitivno računalništvo, ki zajema naslednjo stopnjo
razumevanja.
Doba množičnih podatkov in korelacij, ki nam jih te zbirke podatkov ponujajo kaže, da se bomo morali
navaditi na način odzivanja, ki ni ne intuitivni in ne vzorčni, ampak korelacijski. Gre za analizo množice
podatkov, ki ne išče vzrokov ampak zgolj verjetne povezave. In to omogočajo napredni, inteligentni,
kognitivni algoritmi. Kognitivno računalništvo se nanaša na sisteme, ki so sposobni učenja iz izkušenj,
namesto da bi jim znanje naložili s programom oz. jih sprogramirali.
Kako množico podatkov (BigData) pametno uporabiti ter vključiti dodano vrednost kognitivne
tehnologije v rednih procesih proizvodnje?
Proizvodnji procesi ustvarjajo velik nabor najrazličnejših podatkov. Končni izdelek je odvisen od
množice nastavljenih parametrov. Če te nastavljene parametre sistematično zbiramo, jih uparimo še z
izmerjenimi parametri ter jih oblikujemo v BigData matrike, lahko s pomočjo umetne inteligenco
simuliramo obnašanje v proizvodnji.
Osnovna ideja našega projekta je bila povezati procesne parametre različnih proizvodnih procesov in s
pomočjo umetne inteligence ter kognitivnega računalništva ugotoviti medsebojne vplive kemijske
sestave in ključnih parametrov procesa na mehanske lastnosti izdelkov in obratno. Vse to pa povezati z
virtualnim asistentom, ki zahtevke sprejema kot nativni pogovor z uporabnikom ter zna iz teksta ali
govora izluščiti bistvo, sprožiti akcijo ter podati rešitev.
2. OSNOVNI POJMI
2.1. Nameni pogovora
Nameni pogovora (angleško intents) se pri virtualnem asistentu uporabljajo, da iz danega teksta
ugotovimo kakšni so nameni uporabnika. Preko razpoznanih namenov pogovora tako virtualni asistent
ve o kateri temi ga sprašujemo in zna pripraviti odgovor. Definiramo toliko namenov kolikor
funkcionalnosti (odgovorov) želimo, da naš virtualni asistent podpira in prepozna v tekstu.
2.2. Entitete
Z entitetami virtualnemu asistentu povemo kaj so stvari zanimanja v pogovoru. Z entitetami določamo
objekte, ki so relevantni glede na naše namene pogovora. Entiteta definira tip objekta ter njegov kontekst
za namen pogovora.
Primer: entiteta »Zlitina« z vrednostmi »EN 6082, EN 5005, EN 3100«, kjer so EN** primeri različnih
serij zlitin. Virtualni asistent v stavku, kjer se katera izmed zgoraj naštetih zlitin pojavi, prepozna, da se
v danem besedilu z določenim namenom pojavi entiteta »Zlitina«.
204
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
Slika 1 prikazuje primer namena in entitete, ki nastopita v stavku. Virtualni asistent, ki bi bil naučen na
namen »tellmeabout« in entitete »NationalParks«, bi nam stavek razpoznal kot je razvidno iz slike.
Slika 1. Primer entitete in namena pogovora v stavku.
2.3. Pogovorna drevesa (dialogi)
Pogovorna drevesa so vnaprej definiran diagram poteka pogovora z virtualnim asistentom. Definirajo
tok pogovora in dane odgovore v odvisnosti od zaznanih namenov pogovora in entitet. Pogovorno drevo
zgradimo na podlagi potreb poteka pogovora.
Iz slike 2 je razvidno, da se pogovorna drevesa uporabljajo za vodenje pogovora. Komunikacija med
virtualnim asistentom in uporabnikom tako ni samo vprašanje - odgovor, vendar lahko ob zaznanih
specifičnih namenih in entitetah podamo specifične odgovore ali pa postavimo dodatna vprašanja na
katera podan uporabnikov odgovor odloči v katero smer drevesa se bo pogovor nadaljeval. Gre za neke
vrste kreiranje odločitvenega drevesa za pogovor.
Slika 2. Primer preprostega pogovornega drevesa
3. RAZVOJ POGOVORNEGA ASISTENTA
3.1. Ustvarjanje novega okolja
Virtualni asistent rešitve Watson Zlitine je napravljen s pomočjo IBM spletne platforme IBM Cloud,
prej poznane kot IBM Bluemix. Za razvoj virtualnega asistenta ni potrebno eksplicitno znanje
programiranja zato razvoj poteka precej hitro in enostavno.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
205
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
Na platformi lahko ustvarimo več okolij za razvoj same rešitve. To pomeni, da lahko hkrati načrtujemo
več različnih verzij asistenta ter se kasneje odločimo katero bomo uporabili v dejanski aplikaciji. Seveda
vsake izmed verzij ni potrebno razvijati od začetka. Asistenta lahko v kateremkoli stadiju razvoja
izvozimo ter ga po potrebi uvozimo v novo okolje. Končna razlika za razvijalca je le v tem kateri servis
se kliče iz IBM strežnika.
3.2. Kreacija namenov
Razvoj virtualnega asistenta se prične z dodajanjem namenov. Asistentu lahko dodamo poljubno število
namenov, ki jih bo razumel. Število je v celoti odvisno od tega kakšno funkcionalnost želimo podpreti.
Za vsak namen, ki ga podpremo, moramo asistenta naučiti kakšne vnose uporabnika lahko pričakuje.
Zadostuje že, da za vsak namen podamo 6 primerov uporabe, večje kot pa bo število primerov uporabe,
boljši bo asistent pri razpoznavanju končnega namena uporabnika. Iz podanih primerov uporabe se nato
IBM-ova programska oprema, preko umetne inteligence, sama nauči razpoznavanja namena, tudi če
uporabnik asistenta ni povprašal povsem na enak način kot je podano v primerih.
Slika 3: Dodajanje namena »Informations«, ter primerov uporabe
3.3. Dodajanje entitet
Podobno kot dodajanje namenov je tudi ustvarjanje entitet zelo hitro opravilo. Definirati je potrebno
ime entitete - torej stvar, ki jo hočemo v besedilu uporabnika zaznati, ter njene sopomenke v kolikor te
obstajajo in pričakujemo, da se bodo uporabljale.
206
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
Slika 4: Dodajanje entitet »NationalParks«, ter njihovih sinonimov
3.4. Ustvarjanje dialoga
V dialogu razvijalec nastavi na kakšen način se bo virtualni asistent odzval glede na zaznane namene in
entitete. Odziv se lahko specificira samo na določen namen ter entiteto ali pa na kombinacijo le-teh.
Tako lahko natančno definiramo odgovor, ki ga prejme uporabnik oz. strežnik v kolikor podatke na
strežniku pred posredovanjem končnemu uporabniku še dodatno obdelamo.
Odziv asistenta na enako zaznane namene in entitete pri različnih časovnih in lokalnih povpraševanjih
se lahko razlikuje v kolikor je razvijalec definiral več možnih odgovorov. Ti odgovori se lahko izbirajo
zaporedno ali pa naključno pri čemer se naključen izbor odgovora vrši preko IBM-ove programske
opreme.
Ko virtualni asistent poda odgovor, ponovno čaka na nov vnos uporabnika ali pa preide v neko drugo
stanje, v kolikor je razvijalec to specificiral, ter tam poda nek drug odgovor.
Možno je tudi gnezdenje zaznavanja namenov in entitet. S tem poskrbimo, da vodimo tok pogovora.
Tako lahko na primer uporabnik zahteva neke splošne informacije o nekem dogodku npr. kakšen
dogodek je, potem pa pričakujemo, da ga bodo zanimale še ostale informacije v zvezi s tem dogodkom
kot so čas in kraj dogodka. Zato je logično, da te odgovore ugnezdimo. S tem poskrbimo, da je tok
pogovora bolj naraven, hkrati pa izvzamemo neposredne odgovore na prvo vprašanje.
Slika 5: Ustvarjanje dialoga z več možnimi odgovori ter ugnezdenim zaznavanjem
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
207
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
3.5. Hitro testiranje ustvarjenega asistenta
Ko je osnutek virtualnega asistenta končan ga lahko preprosto preskusimo kar v IBM-ovi spletni
aplikaciji. Tam vidimo, ali so zaznani ustrezni nameni in entitete ob določenem vnosu, ter v kolikor niso
to tudi ročno ustrezno popravimo. V tem primeru se asistent s pomočjo umetne inteligence ponovno
nauči novih povezav. V kolikor pa testiramo preko našega strežnika, imamo dostop tudi do dodatnih
podatkov, kot je npr. prepričanost asistenta v pravilno zaznan namen, kar nam poda nek dodaten vpogled
v delovanje.
Pri testiranju je omogočeno tudi dodajanje določenih spremenljivk v kontekst, kar se večinoma
uporablja kasneje pri povezovanju s strežnika, kjer na takšen način prenašamo podatke med asistentom
in strežnikom.
Slika 6: Preprost primer testiranja ustvarjenega virtualnega asistenta. V modrem so prikazani nameni in entitete,
ki jih je asistent zaznal ter odgovori, ki jih je podal.
4. REŠITEV WATSON ZLITINE
4.1. IBM Cloud konfiguracija
Na platformi IBM Cloud smo ustvarili servis IBM Watson Conversation (sedaj Watson Assistant) do
katerega smo nato dobili url naslov, uporabniško ime ter geslo. Te podatke kasneje v NodeJS delu
uporabimo za dostop do naše storitve. Nato smo ustvarili novo delovno okolje imenovano »Zlitine«.
Glede na zahteve aplikacije Watson Zlitine smo ustvarili štiri namene pogovora:
208
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
Namen »tellmeabout« je splošen namen, ki nam določa tematiko Impolskih zlitin. Zraven sodijo
informacije o internih nomenklaturah44 podjetja za te zlitine, kot tudi splošne informacije o zlitinah
iz spletne enciklopedije Wikipedija.
Namen »impolProducts« je bil snovan za potrebe splošnih informacij o produktih podjetja Impol.
Namen »maxValue« uporabljamo za pogovore o maksimalnih mehanskih lastnostih ( npr. natezna
trdnost, raztezek …). Sem sodi iskanje zlitine pri kateri podana sestava (npr. vsebnost aluminija v
zlitini je vsaj 96%) ustreza zlitini in je najboljša glede na želeno mehansko lastnost.
Namen »newalloy« uporabljamo za iskanje hipotetičnih novih zlitin tako da podamo sestavo zlitine
in nam Watson ob pomoči IBM SPSS Modeler, kjer je zgrajen napovedni model nevronskih mrež,
vrne teoretične mehanske lastnosti zlitine za podano sestavo.
Slika 7 prikazuje primer namenov za namenov »impolProducts« levo, ter »newalloy« desno.
Slika 7: Namen pogovora
Ko so nameni bili definirani je bilo potrebno specificirati in definirati entitete. Entitete nam definirajo
objekte zanimanja.
V našem primeru to pomeni, da potrebujemo glavne entitete:
»impolProduct« da lahko razločimo za katere produkte podrobneje uporabnik želi informacije
»kemijski_elementi« za sestavo zlitin - tako imamo definirane vse elemente, ki nastopajo v zlitinah
»mehanske_lastnosti« preko katere pridobimo informacijo katera mehanska lastnost je uporabniku
v interesu
»metals« za potrebe določevanja zlitin - entiteta predstavlja primerke imen vseh zlitin, ki se v
podjetju pojavljajo in tudi vse njihove sinonime
»procesni_parametri« za potrebe pridobivanja informacij o procesnih parametrih zlitine, s katero
tudi določamo za kateri parameter uporabnik išče informacije
44 Nomenklatura je sestava zlitine podana v intervalih posameznih kemijskih elementov.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
209
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
Slika 8 prikazuje uporabljene entitete in nekaj vidnih primerov, ki določajo posamezne entitete.
Slika 8: Ustvarjene entitete
Po definiranju namenov in entitet je na vrsti pogovorno drevo. Veje pogovornega drevesa smo definirali
za vsak predviden namen pogovora. Pogovorna drevesa smo gradili na zaznavanju namenov pogovora
in entitet.
Slika 9 prikazuje vejo pogovora o maksimalnih lastnostih zlitine. Uporabili smo namen »maxValues«
in entiteto »metals«. V primeru, da Watson v uporabniškem vnosu v stavku zazna oboje bo sklepal, da
gre za pogovor o maksimalnih lastnostih in bo vstopil v to vejo pogovora ter podal definiran odgovor.
Nato Watson čaka na nov vnos v tej veji. V našem primeru dobimo odgovor: »Do you want to enter
additional parameters (limitations) for this alloy? (Yes/No)«, in nato čaka na potrditev, kar je razvidno
iz slike (tretji in četrti dialog), saj se pričakuje entiteta YN, ki ima vrednost da ali ne.
Na podoben način so razvite veje pogovornega drevesa za vse možne dialoge, ki virtualni asistent
»Watson Zlitine« podpira.
Slika 9: Primer veje pogovornega drevesa za "maxValues"
210
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
4.2. Končna implementacija
Aplikacija je sestavljena iz različnih delov, med katerimi so glavni strežnik, klient, virtualni asistent in
baza podatkov, ki delujejo vzajemno ter dopolnjujejo funkcionalnost programa. Klient se uporablja za
prikaz uporabniškega vmesnika ter služi za vnos uporabniških vprašanj, ki so osnova saj celotna
aplikacija temelji na kognitivnem delovanju. Postavljeno vprašanje se nato prenese na lokalni server
kjer se takoj za tem, preko API poizvedbe storitve Watson Conversation, pošlje povpraševanje na IBM-
ov strežnik, ki odgovori z zaznanimi namen i ter entitetami. Glede na dobljene podatke API klica
uporabniku takoj vrnemo želen odgovor, oziroma v kolikor je to potrebno, dodatne podatke pridobimo
iz podatkovne baze ter nato strukturiramo odgovor.
4.2.1.
Strežnik
Pri izboru strežniškega okolja smo bili omejeni glede na podporo IBM-ovega API-ja - storitve Watson
Conversation. V času našega razvoja so bili podprti jeziki Curl, NodeJS, Java in Python. Kot potencialna
programska jezika za razvoj strežnika sta bili izbrana NodeJS, ki ga je priporočal IBM in Java v obliki
Java servleta, ki je sicer v večini primerov uporabljen na produkciji.
Tako je bila prva verzija strežnika napisana v NodeJS, kasneje pa tudi v programskem jeziku Java. Ob
tem se je izkazalo, da je ob primerjavi pošiljanja poizvedb na oba strežnika ter merjenju časa, strežnik
napisan v NodeJS hitrejši pri dostavljanju odgovorov končnemu uporabniku. Ob tem je bila logika obeh
strežnikov zelo podobna, saj je nato v primeru Java strežnika šlo le za prepis JavaScript kode v ustrezne
strukture, ki jih podpira Java. Razlog za hitrejše delovanje lahko pripišemo asinhronemu delovanju
NodeJS strežnika pri katerem ni blokiranja poizvedb in posledično čakanja na obdelavo zahteve.
Slika 10: Primerjava strežnika NodeJS (levo) in Java strežnika (desno)
Glavna naloga strežnika je pred-obdelava podatkov, ki se posredujejo uporabniku, sprejemanje
vnesenega teksta s strani klienta, ter razni klici API-jev. Tako strežnik najprej sprejme besedilo, ga
posreduje IBM-ovi storitvi Watson Conversation, ta pa strežniku nazaj vrne zaznane namene, parameter
prepričanosti v pravilno detekcijo in entitete. Odgovori IBM-ove storitve so v notaciji JSON, ki ga
vsakič ustrezno razčlenimo, da lahko izluščimo podatke, ki so nam pomembni. V kolikor je parameter
prepričanosti dovolj velik (vsaj 70 % prepričanost, da je bil zaznan pravilen namen), strežnik pripravi
ustrezen odgovor. V nasprotnem primeru uporabnik prejme sporočilo, da njegovega namena ni možno
razbrati. Ob pravilni detekciji strežnik pogovor vodi dalje ter operira s podatki iz spleta oz. podatkovne
baze IBM DB2.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
211
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
Slika 11: Primer JSON odgovora IBM-ove storitve Watson Conversation. V ključu »msg« so vidni zaznani
nameni, entitete ter prepričanja v pravilnost zaznave (»confidence«).
4.2.2.
Klient
Za prikaz vmesnika uporabniku smo uporabili tehnologijo React, ki se vse bolj pogosto uporablja za
hiter razvoj uporabniškega vmesnika. Ker je šlo za prvo različico aplikacije je bil vmesnik narejen tako,
da je omogočal zahtevane funkcionalnosti, glede samega izgleda pa je možnih še veliko izboljšav.
Podatkov na klientu v večini primerov nismo obdelovali, v redkih primerih smo uporabili funkcije za
spremembo pisave, barve ali pa prikaz slik.
Uporabnik preko tipkovnice vnaša vprašanja in aplikacija mu podaja odgovore. Vse je vodeno kot
pogovor z virtualnim asistentom. Primer uporabe in izgled klienta na sliki 12.
4.2.3.
Podatkovna baza
Podatkovna baza, ki se uporablja za interne informacije je je IBM-ova relacijska baza DB2. Podatkovna
baza je bila že v uporabi, njene tabele zgrajene, zato smo za pridobivanje podatkov zgolj morali napisati
ustrezne poizvedbe, ter jih vključiti na ustrezna mesta v logiki strežnika. V nekaterih primerih smo
morali opraviti osnovne operacije združevanje različnih tabel glede na določene parametre, tako da smo
pridobili vse želene podatke.
212
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
Slika 12: Primer uporabe in izgled klienta
4.3. Mobilna aplikacija
Aplikacija je podprta tudi na mobilnih napravah kjer lahko, namesto klasičnega vnosa teksta preko
tipkovnice, uporabimo funkcionalnost speech to text – text to speech.
Za uporabniški vmesnik na mobilnih platformah IOS ter Android smo uporabili okolje IBM MobileFirst,
ki omogoča razvoj poslovnih mobilnih aplikacij. Prednost uporabe MobileFirst platforme je
prenosljivost kode, saj ustvarjamo hibridne mobilne aplikacije, katere nato samo izvažamo na ciljne
platforme. Hibridna aplikacija predstavlja koncept pisanja kode v vmesnem programskem jeziku. Kodo
aplikacije pišemo le enkrat in jo nato koristimo na več ciljnih platformah (npr. Windows phone, IOS,
Android, Blackberry ipd).
Mobilno aplikacijo smo nadgradili s funkcionalnostjo govor v tekst ter tekst v govor. Pri implementaciji
smo uporabili servisa IBM Watson Speech-To-Text ter IBM Watson Text-To-Speech. Na ta način
koristimo prednosti virtualnega asistenta tudi preko govornih uporabniških vnosov, asistent pa nam zna
odgovore zvočno podati tudi nazaj.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
213
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
Slika 13:Speech to text in text to speech pretvorba
Zaradi konsistentnosti in efektivnosti prikazovanja podatkov je izgled mobilne aplikacije podoben
izgledu spletne aplikacije. Mobilna aplikacija uporablja za pridobivanje podatkov in komunikacijo z
Watson Conversations storitev strežnik iz poglavja 4.2.1.
Slika 14: Mobilna aplikacija Watson Zlitine
214
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
S. Hmelak, M. Strajnšak in G. Kovačevič: Razvoj inteligentne rešitve Watson Zlitine
5. ZAKLJUČEK
Osnovna ideja projekta je bila raziskati novo področje kognitivnega računalništva ter se srečati z
Watsonom. Cilj je bil prehoditi pot od podatkov do znanja. Tekom projekta smo spoznavali kognitivne
pristope, metode in produkte, hkrati pa si zastavili smernice za naprej.
Nove tehnologije na področju računalništva povečujejo našo sposobnost za smiselno urejanje podatkov
in informacij, s čimer si zagotavljamo podporo za odločitve in tako omogočimo spremembe v številnih
panogah in tudi metalurgija ni izjema.
Razvili smo program Watson Zlitine, ki je uporaben kot pomoč pri sestavi zlitine. Minimizira porabo
primarnih elementov in maksimizira uporabo scrapa (odpadnega aluminija), hkrati pa nam omogoča
predvideti in napovedati končne mehanske lastnosti pri izbrani recepturi. S tem se že v fazi načrtovanja
zlitine optimirajo stroški, optimira se poraba surovine na skladišču ter se predvidi ustreznost končnih
lastnosti. Rešitev je osnova za razvoj platforme, ki se bo uporabljala pri razvoju novih zlitin, tehnologij
ter obdelavi povpraševanja, kot močno analitično orodje v rokah tehnologov. Kot orodje za obdelavo in
obvladovanje procesnih parametrov različnih procesov, iskanje vpliva spremembe posameznega
parametra na soodvisnost do drugih parametrov procesne verigi. Takšna platforma pa podjetju omogoča
tehnološko prednost pred konkurenco.
6. LITERATURA
[1] Predstavitev IBM Watson Conversation Workshop: 2. Developing Cognitive Applications with
IBM Watson Services.pdf (4.7.2017)
[2] Predstavitev IBM Watson Conversation Workshop: 3. Watson Conversation - Building blocks.pdf
(4.7.2017)
[3] Predstavitev IBM Watson Conversation Workshop: 4. Intents.pdf (4.7.2017)
[4] Predstavitev IBM Watson Conversation Workshop: 5. Entities.pdf (4.7.2017)
[5] https://www.ibm.com/watson/ (17.5.2018)
[6] https://watson-assistant.ng.bluemix.net (17.5.2018)
[7] https://strongloop.com/strongblog/node-js-is-faster-than-java (17.5.2018)
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
ZBORNIK TRIINDVAJSETE KONFERENCE, MARIBOR, 19. IN 20. JUNIJ 2018
M. HERIČKO IN K. KOUS
SPLETNE KOMPONENTE IN KNJIŽNICA X-TAG
VIKTOR TANESKI IN GREGOR JOŠT45
Povzetek: JavaScript, en bolj popularnih programskih jezikov, se izvaja na
več kot 90% spletnih straneh. V zadnjih nekaj letih smo priča pojavu
programskega jezika JavaScript tudi na različnih platformah in napravah.
Glede na obseg in kompleksnost aplikacij, ki jih lahko razvijemo s
programskim jezikom JavaScript, običajno stremimo k čim večji ponovni
uporabi programske kode (angl. code reuse). V ta namen imamo na voljo
programska ogrodja (angl. frameworks), ki prav tako zmanjšujejo
kompleksnost programske kode in posledično razvoja. Programska ogrodja
so preizkušena in uporabljena v različnih scenarijih in situacijah ter običajno
razvita s strani večjih podjetij, kot sta Google (Angular) in Facebook
(React). Pogosta kritika programskih ogrodij JavaScript je, da so številna,
se pogosto posodabljajo, razvijalci pa posledično težko sledijo spremembam
in novostim. Po drugi strani spletne komponente (angl. Web components)
predstavljajo drugačen pristop razvoja elementov po meri (angl. Custom
elements) z ovitimi (angl. encapsulate) funkcionalnostmi, ki jih lahko
večkrat uporabimo kjer koli v kodi. Za razliko od obstoječih ogrodij so
spletne komponente skupek W3C specifikacij, ki se hitro pomikajo proti
standardizaciji. Ker so te specifikacije v različnih stanjih podprtosti v
brskalnikih, je trenutno še priporočljivo uporabiti eno izmed obstoječih
knjižnic za razvoj spletnih komponent. V tem članku bomo predstavili
knjižnico X-Tag, razvito s strani Mozille in trenutno pod okriljem
Microsofta. X-Tag je zelo preprosta JavaScript knjižnica, ki za delovanje
zahteva le eno izmed W3C specifikacij spletnih komponent. Podprta je s
strani brskalnikov, kot so Internet Explorer 9+, Edge, Firefox, Chrome,
Safari in Opera.
Ključne besede: • spletne komponente • X-Tag • JavaScript
NASLOV AVTORJEV: Viktor Taneski, asistent, Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in
informatiko, Smetanova ulica 17, 2000 Maribor, Slovenija, e-pošta: viktor.taneski@um.si. Gregor Jošt, asistent,
Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko, Smetanova ulica 17, 2000
Maribor, Slovenija, e-pošta: gregor.jost@um.si.
DOI https://doi.org/10.18690/978-961-286-162-9.22
ISBN 978-961-286-163-6
© 2018 Univerzitetna založba Univerze v Mariboru
Dostopno na: http://press.um.si.
216
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
V. Taneski in G. Jošt: Spletne komponente in knjižnica X-TAG
1. UVOD
Včasih je bil razvoj spletnih aplikacij preprost; dovolj je bila že uporaba privzetih elementov HTML
(Hypertext Markup Language) z nekaj stilov CSS (Cascading Style Sheets) in osnovnih funkcionalnosti
programskega jezika JavaScript. Ker so spletne aplikacije postajale vse bolj kompleksne, je bilo
potrebno poskrbeti tudi za primerno odziven in privlačen uporabniški vmesnik (angl. user interface, v
nadaljevanju UV). V ta namen je nastalo precej ogrodij, ki olajšajo razvoj naprednih, dinamičnih
spletnih aplikacij. Večina teh ogrodij (npr. React, Angular) omogoča razvoj komponent, ki jih lahko
ponovno uporabimo v različnih delih aplikacij. Takšnih ogrodij je precej, njihove posodobitve so
običajno zelo pogoste in včasih spremembe vplivajo na obnašanje obstoječih aplikacij [1], [2]. Potrebno
je torej ostajati v koraku z novostmi, kar je lahko časovno in finančno neugodno. Uporaba takšnih
knjižnic oz. ogrodij je pri razvoju odjemalca spletnih aplikacij nujna, saj brskalniki privzeto ne ponujajo
razvoja lastnih komponent [3]. Omenjeno pomanjkljivost rešujejo spletne komponente.
Spletne komponente so standard W3C in omogočajo razvoj lastnih značk HTML, ki jih lahko ponovno
uporabljamo znotraj spletnih aplikacij. Sodobni brskalniki trenutno že delno podpirajo nekatere
standarde, vendar se obseg podpore razlikuje. V ta namen je zato priporočljivo uporabiti enega izmed
obstoječih ogrodij za razvoj spletnih komponent. Ko bodo brskalniki v celoti podprli vse standarde
spletnih komponent, bo mogoče razvijati takšne komponente brez uporabe kakršnega koli ogrodja [4],
[5].
V tem članku bomo najprej predstavili spletne komponente in kaj le-te omogočajo. Opisali bomo štiri
specifikacije, na katerih temeljijo spletne komponente, pregledali njihovo podprtost v brskalnikih in
predstavili obstoječa ogrodja, ki omogočajo razvoj spletnih komponent. Na koncu bomo predstavili eno
izmed teh knjižnic, X-Tag, ki omogoča razvoj elementov po meri.
2. KAJ SO SPLETNE KOMPONENTE?
Spletne komponente so bile prvič predstavljene leta 2011 s strani konzorcija W3C (World Wide Web
Consortium). Glavni namen spletnih komponent je implementacija ponovno uporabnih gradnikov (angl.
widget) oz. komponent, ki jih lahko uporabimo znotraj spletnih strani in spletnih aplikacij [6]. Spletne
komponente temeljijo na štirih glavnih specifikacijah, in sicer [6]–[8]:
Specifikacija elementov po meri (angl. custom elements) predstavlja način, kako razširimo obstoječe
ali ustvarimo nove elemente HTML. S tem pridobimo na bolj modularni programski kodi, ki se lahko
ponovno uporabi v različnih kontekstih.
Prikriti DOM (angl. shadow DOM) standard omogoča enkapsulacijo spletne komponente, tj., da so
konstrukcija, stil CSS in obnašanje komponente ločeni od ostale kode na spletni strani.
Predloge (angl. templates) omogočajo, da se komponenta opredeli v obliki predloge HTML, ki lahko
vključuje kakršne koli elemente HTML.
Uvoz HTML (angl. HTML imports) standard opredeli, kako uvoziti dokumente HTML znotraj
drugih dokumentov HTML.
Vsako izmed naštetih specifikacij bomo v nadaljevanju podrobno predstavili.
2.1. Elementi po meri
Elementi po meri (angl. custom elements) so ključni oz. najpomembnejši del standarda spletnih
komponent, saj omogočajo razvoj novih elementov (značk) HTML, obenem pa tudi omogočajo
razširitev že obstoječih elementov HTML. Poznamo torej dva večja tipa elementov po meri, in sicer
»avtonomni elementi po meri« (angl. autonomous custom element) in »razširitev obstoječih elementov
po meri« (customized built-in element) [9]. Elementi po meri naj bi delovali povsod, kjer deluje že
obstoječ HTML, kar vključuje tudi uporabo znotraj vseh ogrodij (angl. frameworks) JavaScript. Brez
elementov po meri uporaba spletnih komponent ne bi bila mogoča, saj nudijo [10]:
Definicijo novih elementov.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
217
V. Taneski in G. Jošt: Spletne komponente in knjižnica X-TAG
Razvoj elementov, ki dedujejo od drugih elementov.
Združevanje funkcionalnosti znotraj ene značk HTML.
Razširjanje programskih vmesnikov programskih vmesnikov oz. API-jev (angl. Application
Programing Interface) obstoječih elementov.
Nov element po meri lahko implementiramo z uporabo programskega jezika JavaScript. Globalni objekt
customElements se uporablja za definiranje novega elementa preko metode define(). Definicija metode
je naslednja: customElements.define(ime, konstruktor, možnosti), kjer posamezni parametri
predstavljajo:
ime - ime značke HTML,
konstruktor - razred JavaScript, ki deduje od razreda HTMLElement in
možnosti - (opcijsko) objekt z metodo extends, namenjen razširitvi obstoječih elementov po meri.
Slika 1 prikazuje preprost primer implementacije elementa po meri, ki se nato uporabi v dokumentu
HTML.
Slika 1: Implementacija elementa po meri
Elementi po meri so trenutno podpri v brskalnikih Chrome 54 in Safari 10.1, medtem ko so v
Microsoftov Edge in Mozilli še v fazi vključevanja [11].
2.2. Prikriti DOM
Ko brskalnik naloži dokument HTML, takoj pretvori to strukturo (statično besedilo) v podatkovni model
objektov in vozlišč. Brskalnik torej ohrani hierarhijo dokumenta HTML tako, da ustvari drevo vseh teh
vozlišč – DOM (Document Object Model). Za razliko od statičnega dokumenta HTML, DOM struktura
vsebuje lastnosti in metode. DOM torej predstavlja API, ki definira logično strukturo dokumentov in
zagotavlja njihov dostop in manipulacijo [12].
Prikriti DOM (angl. shadow DOM) omogoča pripenjanje skritih DOM dreves na elemente običajne
DOM strukture. Naslavlja pomemben del spletnih komponent, in sicer enkapsulacijo, tj. zmožnost
skrivanja strukture, stilov CSS in obnašanja od preostale kode na spletni strani. V tem kontekstu prikriti
DOM omogoča pripenjanje skritega, ločenega DOM na določen element HTML [13]. Uporaba
prikritega DOM-a ni pogoj za razvoj spletnih komponent, vendar doprinese precej funkcionalnosti
218
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
V. Taneski in G. Jošt: Spletne komponente in knjižnica X-TAG
(ustvarjanje ločenega dosega CSS, enkapsulacija DOM, kompozicija). Uporaba prikritega DOM in
elementov po meri skupaj izjemno poveča ponovno uporabo [12].
Prikriti DOM za določen element ustvarimo z uporabo metode attachShadow, kot prikazuje slika spodaj
(Slika 2).
Slika 2: Uporaba prikritega DOM
Kot je razvidno iz slike zgoraj, prikriti DOM lahko vključuje tudi stil CSS, na elemente znotraj prikritega
DOM pa se ne moremo sklicevati kasneje v JavaScript programski kodi. Za zgornji primer bi
naslavljanje document.getElementById('content') vrnilo null, čeprav v DOM obstaja element z ID
vrednostjo content.
2.3. Predloge
Večina ogrodij, ki omogočajo razvoj spletnih aplikacij, običajno uporabljajo predloge za prikaz
podatkov, npr. Smarty (PHP) [14] in Razor (ASP.NET MVC). V splošnem lahko definiramo predlogo
kot dokument ali datoteko, ki ima vnaprej definirano obliko. Takšne strukture posledično ni potrebno
ponovno definirati vsakič, ko jo želimo uporabiti. Spletne komponente vključujejo ta koncept preko
elementa HTML [15]. Element torej definira standardni pristop, ki temelji na vmesniku
DOM in je namenjen ustvarjanju predlog na strani odjemalca. Uporablja se za ustvarjanje delov
dokumentov HTML, ki predstavljajo želeno predlogo. Te predloge lahko nato kloniramo in vstavimo v
dokument s pomočjo programskega jezika JavaScript.
Z ovijanjem vsebine v element pridobimo naslednje lastnosti [14]:
Vsebina elementa ni dostopna, dokler se ne aktivira z že prej omenjenim načinom (kloniranje in
vključitev preko programskega jezika JavaScript). Do takrat je vsebina elementa dejansko skrita in
se ne prikazuje.
Vsebina znotraj predloge ne bo delovala (npr., skripte se ne bodo zagnale in slike se ne bodo naložile)
do eksplicitne uporabe predloge.
OTS 2018 SODOBNE INFORMACIJSKE TEHNOLOGIJE IN STORITVE
219
V. Taneski in G. Jošt: Spletne komponente in knjižnica X-TAG
Vsebina predloge ni del dokumenta HTML, zato manipulacija s programskim jezikom JavaScript ni
možna (npr. uporaba document.getElementById() ali querySelector() ne bo vrnila želenega elementa
znotraj predloge.
Predloge lahko postavimo kjer koli znotraj , ali