Naredna decenija će nam doneti veliki broj izazova i tehnoloških inovacija ali već sada znamo da ćemo se boriti sa obradom velike količine podataka, pogotovo ako su oni udaljeni od mesta na kojima se vrši obrada. Postoje razne studije koje se bave elastičnošću sistema upravljanja podacima, koji bi bili potrebni za IoT, streaming, analitike, odlučivanja i mašinsko učenje, koje nagoveštaju da će se broj podataka u narednoj deceniji nekoliko puta povećati. Možda bismo se već sada zabrinuli ali znamo da je naš prvi zid odbrane: Edge computing i IoT.

Edge Computing je pre svega nastao iz potrebe za komunikacijom više uvezanih uređaja koji razmenjuju podatke ili stanja. Jedan od naših čestih govornika, Dejan Bosanac, podelio je s nama nekoliko rešenja Open Source koji omogućavaju povezivanje pametnih uređaja i funkcionisanje Edge Computing-a.

Distribuirani sistemi u 2021

Možda je priča o distribuiranim sistemima tema kojoj se vraćamo svakog Heapcon-a ali danas, nakon COVID-19 pandemije, znamo koliko obrada podatka u realnom vremenu na nivou distribuiranog sistema utiče na funkcionisanje pametnih bolnica,fabrika i kompanija. Dok je lekarsko osoblje, širom sveta vredno radio, zdravstvo je doživelo transformaciju potrebom da pasivne uređaje pretvori u IoT pametnih sistema koji omogućavaju remote nadzor pacijenata a potom pračenje procesa vakcinacije širom sveta. Bez distribuiranih sistema ne bismo imali funkcionalne zdravstvene ustanove. Pitanje je: Kako se sve to dogodilo za ovo kratko vreme došlo do promena? Zapravo, nije. IoT i Distribuirani sistemi su postojali oduvek, promena se dogodila na nivou Event-Driven arhitekture.

Šta je Edge Computing?

Ne poznajemo prihvatljiv termin na srpskom jeziku kako bismo preveli Edge Computing, kojim se objašnjava proces decentralizovanog procesiranja. Veliki broj tehnologija zahteva direktnu obradu podataka u realnom vremenu i malu latenciju, pa se Edge Computing-om vrši obrada podataka mestu njihovog nastanka kako bi se izbeglo kašnjenje signala. Podaci se ne šalju do centara za obradu, već se obrađuju tamo gde se i generišu – bilo da se radi o prodavnici, fabrici ili pametnom gradu.

Kako spojiti sve uređaje koji su IoT i sinhrono vršiti obradu podataka?

Odgovor na ovo pitanje leži u primeni Event-Driven arhitekture. IoT i Edge rešenja uvezuju distribuirane sisteme kao i mogućnost sinhronizacije više uređaja unutar jedne komunikacione mreže. Danas, postoji puno rešenja otvorenog koda koja su prilagođena različitim softverskim izazovima. Kako Dejan navodi u svojem predavanju IoT i Edge rešenja predstavljaju vrhunac kompleksnosti distribuiranih sistema.

edge computing networks

Source: redhat.com

Jedna od karakteristika Edge Computing-a je da se umesto jedne velike mreže koristi više manjih mreža. Edge Computing je dodatni nivo između Cloud-a i uređaja. Edge serveri mogu biti na istoj ili na različitim fizičkim lokacijama. Ukoliko sistem nije lokalizovan, više se udaljavamo od klijent-server arhitekture i tako se uvodi srednji sloj arhitekture koji se naziva Messaging oriented middleware.Ovaj sloj arhitekture mreže omogućava obradu velike količine podataka i sinhronizaciju IoT uređaja. Danas, IT inženjeri se fokusiraju pre svega na koncepciju događaja, tj da jedan sistem pokušava da dojavi drugom sistemu asinhrono promenu stanja ili očitavanja podataka sa senzora.

Vrste događaja i Edge Computing

  1. Immutable: Događaj kod kojeg ne dolazi do promene stanja, već se radi o obaveštenju drugim sistemima da se nešto dogodilo – Prodali smo nešto sa stanja, cena akcija je pala ili temperatura pacijenta je 36.
  2. Command: Komande su vrsta događaja od kojih ocekujemo da se promeni stanje sistema kojem šaljemo komandu, najbliže komadi povestovetimo je API call između dva sistema
  3. Query: Upiti kojim saznajemo stanje nekog sistema.

Kako što postoje različiti tipovi događaja, tako imamo i različite obrasce komunikacije između događaja koji su nam važni jer će odrediti tip open source rešenja koje ćemo kasnije primeniti.

  1. Volatile: Nekoizistenti događaji koji se dešavaju ali mogu da se izgube u sistemu. Recimo, ukoliko se na svakih par minuta očitava temperatura u nekom sistemu, ali možemo sebi da dozvolimo gubitak ovih informacija jer nam funkcija sistema ne zavisi od njih.
  2. Durable događaji: Ovi događaji su recimo komande, ako izdamo ona mora da se desi. I to mora da prolazi kroz strukturu koja podržava durability prenosa poruka
  3. Replayable: Svakako najpopularniji događaji, veoma slični sa durable, samo ovi sistemi omogućavaju skladištenje ovih događaja u određenom sistemu., tako da novi sistemi koji dolaze mogu da se vrate u proslost i da pristupe dođajima koji su se desili.

Source: Arpit Jain

Open source projekti za Edge Computing

Open source softveri se obično razvijaju u okviru određenih zajednica, pa je tako i kada govorimo o distribuiranim sistemima. Svi navedeni projekti postoje transparentni i sa otvorenom mogučnosti da joj se bilo ko priključi u procesu razvoja. Osim kontrole i skalabilnosti, Open source kod je i siguran pritom vam omogućava promenu delova koji vam nisu od koristi. Kako smo u Heapconu, veliki ljubitelji principa zajednice i deljenja znanja, navodimo nekoliko open source rešenja koje je Dejan podelio s nama na Heapcon Lite-u

Apache Kafka

Apache Kafka je distribuirana platforma za strimovanje događaja otvorenog koda koju hiljade kompanija koriste za podelu podataka, streaming analitiku i integraciju podataka. Apache Kafka je dizajniran da podržava veliki broj događaj. Njegov core projekat je Broker koji funkcioniše na raznim programskim jezicima. Apache Kafka se koristi u LinkedIn-u za strimovanje podatke o toku aktivnosti i operativne metrike. On pokreće različite feauture poput LinkedIn Newsfeed, LinkedIn Today, kao i Linkedinov oflajn analitičkih sistema poput Hadoop-a. Koriste ga i Pinterest, New York Times i Coursera.

Apache Kafka documentation

Source: ipt.ch

AMQ Broker

AMQ Broker je posrednik za procesiranje poruka između distribuiranih sistema koji je u potpunosti izgrađen na Java programskom jeziku. Izgrađen je na efikasnom, asinhronom jezgru sa brzim matičnim dnevnikom za postojanost poruka i opcijom replikacije stanja u zajedničkom niču za visoku dostupnost. Ovo je jedan od Red Hat open source platformi kojima se izvršava integracija na nivou Edge-a distribuirane arhitekture. Za razliku od Apache Kafke, on se više fokusira na malo tradicionalniji pristup prenošenja poruka. AMQ Broker predstavlja odlicno rešenje za rešavanje durability problema ali ne toliko efikasan za deplaying.

AMQ Broker diagram

Source: graemecolman.medium.com

Apache Qpid

Apache Qpid je izgrađen na naprednom protokolu za razmenu poruka (AMQP) je otvoreni standard za prosleđivanje poslovnih poruka između aplikacija. Ovaj protokol se koristi za povezivanje sistema, pružanje informacijama poslovnih procesa koje su im potrebne i pouzdano prenošenje uputstva. Apache Qpid API podržava nekoliko programskih jezika poput C++ i Jave. Ovaj projekat se fokusira na Volatile događaje, posto on za razliku od gore navedena Open Source platformi nije broker vec je router. Izuzetno je koristan pri povezivanju sistema koje proizvode i konzumiraju dogadjaje i poruke, ukoliko ne postoji direktni posrednik između njih.

Jedan od glavnih izazova Edge Computinga upravo povezivanje svih ovih sistema. Ukoliko u svojoj kompaniji imamo cloud koji je u javnoj mreži koja sadrži kako dostupne servise tako i drudge mreže, problem je kako sve uvezati u jedan sistem koji radi zajedno. U poslednjih nekoliko godina, popularnost platformi za orkestraciju kontejnera Kubernetes. Ovim promenama pojavio se novi niz izazova u radu sa aplikacijama raspoređenim na Kubernetes klasterima u stvarnom svetu. Jedan od izazova je kako se nositi sa komunikacijom između više klastera koji se mogu nalaziti u različitim mrežama (čak i privatnim), iza zaštitnih zidova itd.

Apache Qpid documentation

Source: qpid.apache.org

Skupper

Jedan od projekta Red Hat-a, koji omogućava komunikaciju između više cloud-a je Skupper. U pitanju je servisna interkonekcija nivoa koja omogućava sigurnu komunikaciju preko Kubernetes klastera bez VPN-ova ili posebnih pravila zaštitnog zida. Pomoću Skuppera jedna aplikacija može da obuhvati više provajdera Cloud-a ili centra podataka.

Source: redhat.com

Eclipse Hono

Eclipse Hono pruža udaljene servisne interfejse za povezivanje velikog broja IoT uređaja. Hono podržava uređaje koji komuniciraju putem uobičajenih IoT protokola kao što su HTTP, MKTT, AMKP i CoAP. Hono pruža API-je za važne IoT komunikacione obrasce: Telemetrija i poruke o događajima mogu da koriste uređaji za prijavljivanje očitavanja senzora, dok aplikacije mogu da koriste Command & Control za pozivanje operacija na uređajima.

Source: eclipse.com

Ukoliko želite još informacija o tome kako open source kod zapravo rešava izazove na koje nailazimo u Edge Computing-u ili IoT poslušajte predavanje Dejana Bosanca, Senior softver inženjer, Red Hat-s u celosti: