OZ_2018_1-2

32 ORGANIZACIJA ZNANJA 2018, LETN. 23, ZV. 1 - 2 RE[ITVE IN ORODJA Reaktivne rešitve z asinhronim pristopom so zelo težko izvedljive, če prej ne napravimo miselnega preskoka, saj le- te od razvijalcev v osnovi zahtevajo drugačno razmišljanje. Seveda je to lažje priporočiti kot izvesti. Vpeljava novega pristopa ni vedno preprosta, ker smo ljudje postavljeni v okolja, kjer že obstajajo ustaljeni postopki in rešitve. Zato potrebujemo nova orodja, ki bodo imela v jedru vgrajeno reaktivnost oziroma bodo izkoriščala reaktivnost programskega jezika. Tako je danes najbolj razširjen programski jezik go ( https://www.golang-book.com/ books/intro) , ki razvijalcem v osnovi pomaga pristopiti k reaktivnemu razvoju. Ker količine podatkov neprestano rastejo, bo obdelovanje v realnem času postalo dejstvo, paketne obdelave (angl. offline/batch processing ) pa preteklost. Tu se pojavljajo različna orodja za obdelavo procesiranja tokov podatkov, kot soApache Spark, Apache Kafka, Riak ipd. Pri procesiranju tokov se pojavljajo različne obremenitve, zato se predlaga standard (Reactive Streams 1.0.0) za asinhrono obdelavo podatkov. Eden od konceptov reševanja procesiranja tokov je povratni pritisk (angl. back pressure ), ko sistem izvoru javi, da ne more obdelovati takih količin podatkov, izvor pa nato začne pošiljati manjše količine podatkov (angl. pull ). Ko sistem zazna, da je manj obremenjen, javi viru, da naj pošilja več podatkov (angl. push ). Standard tako definira minimalno množico vmesnikov ter metod in protokolov za doseganje asinhronega procesiranja podatkov, kar je implementirano v orodjih, kot so Akka Streams, MongoDb, Ratpack, Reactive Rabbit ipd. Specifikacija je odprtokodna rešitev (licenca Creative Commons ). Pri razvoju reaktivnih rešitev se pojavljajo različni pristopi. Za reaktivne rešitve so primerni funkcionalni jeziki, ki imajo vgrajene nekatere koncepte za obdelavo podatkov. Eden od načinov je uporaba knjižnice ReactiveX in se pojavlja tudi v programskem jeziku java kot RxJava , precej reaktivnih rešitev pa je tudi v jeziku go (RxGo) . Pri reaktivnih rešitvah je treba razmišljati tako na strani strežnika kot na strani odjemalca. Na podlagi izkušenj predstavljamo knjižnico RxJava , ki vsebuje med drugim razred Observable in vmesnik Observer (za obdelavo tokov), imena metod pa so OnCompleted, OnError in OnNext. Vse metode se kličejo kot povratni klici (angl. callback ). Za vsak dogodek se kliče metoda OnNext ; če so dogodki končani, se kliče metoda OnCompleted, sicer pa metoda OnError . ZAKLJU^EK Ob uporabi vse večjega števila pametnih naprav in ob vse večjem številu uporabnikov na eni strani ter storitev na drugi strani se nam zdi ključnega pomena razmišljanje, da se v okolje, kjer nimamo lastnosti reaktivnega pristopa, uvede uporaba konceptov reaktivnega programiranja, kot sta asinhronost in povratni pritisk. S tem ne mislimo, da se morajo spremeniti rešitve, kajti te lastnosti lahko uporabljamo tudi v monolitnih rešitvah. Kakor koli, zanimivo bi bilo npr. na spletnih straneh uporabnikom postopno ponuditi različne informacije, ki so na voljo v danem trenutku. Je pa potreben razmislek o tem, kaj uporabiti za razvoj in dostavo mikroservisov (npr. Docker, https://www.docker.com/) ter orkestracijo (npr. Kubernetes, https://kubernetes.io/ ) (Krajnc, et al., 2017), kajti gre za nova orodja, ki zahtevajo veliko truda, da se jih spozna, pravilno uporablja in integrira v obstoječi razvoj. Reference Bonér, J., Farley, D., Kuhn, R. in Thompson, M., 2014. The Reactive Manifesto (v2.0) . [online] Dostopno na: http://www.reactivemanifesto.org/ [13. 2. 2019]. Krajnc, A., Štok, B. in Petr, C., 2016. Reaktivni model spleta in programiranja. V: Heričko, M. in Kous, K. ur. Sodobne tehnologije in storitve: OTS 2016 : zbornik enaindvajsete konference, Maribor, 14. in 15. junij 2016 . Dostopno na: http://ots.si/Prejsnje_konference/ OTS_2016/OTS2016/wp-content/uploads/2016/06/OTS_2016_ Zbornik_Web_z.pdf [13. 2. 2019]. Krajnc, A., Zaletel, U., Štok, B. in Petr, C., 2017. Orkestracija mikroservisov z uporabo Kubernetes. V: Heričko, M. in Kous, K. ur. Sodobne tehnologije in storitve: OTS 2017 : zbornik dvaindvajsete konference, Maribor, 13. in 14. junij 2017 . Dostopno na: https:// www.ots.si/Prejsnje_konference/OTS_2017/OTS2017/wp- content/uploads/2017/06/OTS_2017_zbornik_splet-zasciten.pdf [13. 2. 2019]. Staltz, A., 2014. The introduction to Reactive Programming you've been missing . [blog] Dostopno na: https://gist.github.com/ staltz/868e7e9bc2a7b8c1f754 [13. 2. 2019]. Wikipedia, 2018 . Reactive programming. [online] Dostopno na: https:// en.wikipedia.org/wiki/Reactive_programming#Definition_of_ Reactive_Programming [13. 2. 2019]. Janko Žigart: REAKTIVNO PROGRAMIRANJE

RkJQdWJsaXNoZXIy MTAxMzI5