Tehnični povzetek
Ključne točke:
  • Ta članek obravnava ključne vidike varnosti.

Vprašanje, ali je REST API primeren za industrijo, danes ni več spor o tem, kateri slog integracije je boljši, temveč odločitev o tem, kje bo projekt prevzel strošek, zamik in operativno odgovornost. V industrijskem okolju komunikacijski vmesnik zelo hitro preneha biti zgolj »tehnična plast« in začne vplivati na neprekinjenost procesa, ponovljivost izvajanja, možnost revizijske sledi in način odzivanja na okvare. REST se dobro obnese tam, kjer pričakujemo preprost klic, enoznačen odgovor in jasno kontrolo nad stanjem zahteve. Težava se začne, ko mora sistem delovati tudi ob začasni nedosegljivosti enega od udeležencev, ko morajo biti sporočila dostavljena s potrditvijo ali ko mora en dogodek sprožiti učinke na več neodvisnih področjih. Takrat izbira med sinhrono zahtevo ter čakalno vrsto, posrednikom in dogodkovno komunikacijo ni več tehnično nevtralna.

To je pomembno prav zdaj, ker vse več industrijskih projektov povezuje krmiljenje, vzdrževanje, sisteme kakovosti, poročanje o proizvodnji in zunanje storitve v eno verigo odvisnosti. Če je arhitektura zasnovana izključno na sinhronih klicih, ekipa pogosto dobi sistem, ki je navidez preprost, vendar postane krhek ob povečanju števila integracij, ob nestabilnem omrežju ali ob zahtevi po strogi sledljivosti dogodkov. Strošek takšne odločitve se ne pokaže v fazi predstavitve funkcij, temveč pozneje: v blokiranju procesov zaradi nedosegljive komponente, v zahtevnem rekonstruiranju poteka incidenta, v ročnem usklajevanju stanj med sistemi in v sporih o tem, ali je bila operacija izvedena ali le naročena. Za lastnika produkta in vodjo projekta je praktično merilo preprosto: treba je odločiti, ali ima določena izmenjava podatkov značaj »vprašanje–odgovor tukaj in zdaj« ali prej »zabeleži dejstvo in zagotovi njegovo nadaljnjo obdelavo tudi ob motnjah«. Od tega odgovora ni odvisna le tehnologija, temveč tudi model odgovornosti med ekipami.

V praksi je to dobro vidno v strojnih sistemih, kjer mora biti eno dejanje operaterja ali en procesni dogodek zabeležen, posredovan in potrjen na več mestih. Če nadzorna aplikacija pošilja sinhrone zahteve zaporednim storitvam in čaka na celoten nabor odgovorov, lahko začasna težava v enem elementu ustavi celotno zaporedje, čeprav bi se del poslovnih učinkov moral zgoditi neodvisno. Posrednik ali čakalna vrsta pa omogočata ločitev trenutka sprejema informacije od trenutka njene obdelave, ohranitev sledi dogodka in lažji nadzor nad ponovitvijo po napaki. To ne pomeni, da je dogodkovna komunikacija vedno boljša: če je potrebna takojšnja odločitev, ki blokira nadaljnje gibanje stroja, ali če mora operater takoj prejeti zavezujoč odgovor, lahko asinhroni model brez dobro zasnovanih vmesnih stanj poveča negotovost. Zato je že na začetku projekta smiselno meriti ne le odzivni čas, temveč tudi število izgubljenih ali podvojenih sporočil, čas usklajevanja neskladnih stanj in možnost rekonstrukcije zaporedja dogodkov po incidentu.

Ta tema se naravno povezuje z oceno tveganja v industrijskih projektih, saj izbira načina komunikacije vpliva na posledice napake, zaznavnost nepravilnosti in možnost uvedbe učinkovitih ukrepov za zmanjšanje tveganja. Če prek vmesnika potekajo funkcije, katerih napačna izvedba lahko povzroči nenameren zagon, nevarno spremembo stanja ali izgubo nadzora nad energijo, tema ni več zgolj informacijska, temveč preide na področje načrtovanja strojnega sistema in presoje zaščitnih ukrepov. Na tej točki se pokaže tudi meja, od katere je treba obravnavati sorodna vprašanja, vključno z zaščito pred nepričakovanim zagonom ter praktično oceno tveganja v skladu z ISO 12100 po sprejeti metodologiji. Z drugimi besedami: odločitev o REST, čakalni vrsti ali posredniku ne bi smela pasti po demonstraciji integracije, temveč takrat, ko ekipa zna poimenovati posledice napačnega ali zakasnjenega sporočila za proces, varnost in sledljivost izvedenih dejanj.

Kje strošek ali tveganje najpogosteje naraščata

Največ napačnih odločitev ne izhaja iz izbire »napačne tehnologije«, temveč iz tega, da se REST API dodeli nalogam, za katere ni bil zasnovan. V industriji strošek naraste takrat, ko mora vmesnik zahteva–odgovor prenašati komunikacijo, občutljivo na začasno nedosegljivost, vrstni red dogodkov ali potrebo po zanesljivi potrditvi izvedbe. Če mora sistem le prebrati trenutno stanje naprave ali sprejeti ukaz, katerega izostanek je mogoče zlahka zaznati in ga brez stranskih učinkov ponoviti, je REST lahko zadosten. Če pa je rezultat odvisen od tega, ali je sporočilo prispelo natanko enkrat, v pravilnem vrstnem redu in z možnostjo rekonstrukcije zgodovine po incidentu, strošek obvoda omejitev REST hitro preseže navidezno preprostost uvedbe. V praksi to pomeni dodatno logiko ponavljanja, lastne mehanizme medpomnjenja, usklajevanje neskladnih stanj in težje ugotavljanje odgovornosti, kadar je naprava operacijo izvedla pozneje, kot je bilo pričakovano, ali jo je izvedla dvakrat.

V fazi načrtovanja je težava običajno videti nedolžna: ekipa predpostavi stabilno omrežje, stalno razpoložljivost storitev in enoznačno stanje na obeh straneh integracije. V industrijskem okolju te predpostavke redko dolgo zdržijo. Pojavijo se prekinitve povezave, ponovni zagon naprave, posodobitev vmesnega sistema, včasih pa preprosto preobremenitev v času proizvodne izmene. Takrat arhitektura, ki temelji izključno na sinhronih klicih, začne tveganje prenašati na aplikacije in operaterje. Strošek projekta ne raste le zaradi programskih popravkov, temveč tudi zaradi reprodukcijskih testov, dodatnih operativnih postopkov in sporov o tem, katera stran »bi morala vedeti«, da zahteva ni bila izvedena. Praktično merilo za odločitev je preprosto: če nedosegljivost prejemnika ne sme ustaviti pošiljatelja, sporočilo pa mora biti varno shranjeno in obdelano pozneje, je treba resno razmisliti o čakalni vrsti, posredniku sporočil ali dogodkovni komunikaciji namesto čistega REST.

Dober primer je integracija nadzornega sistema s proizvodno linijo, v kateri en sistem naroči spremembo recepture, več drugih pa mora to spremembo sprejeti, potrditi in uveljaviti v pravem trenutku cikla. Pri REST je klic »nastavi parametre« enostavno zgraditi, težje pa je zagotoviti, da so vsi zadevni elementi prejeli isto informacijo, da starejše sporočilo ne bo prepisalo novejšega in da bo po okvari mogoče ugotoviti, kdo je videl kateri ukaz. Posrednik dogodkov ali čakalna vrsta ta problem uredita drugače: sporočilo postane trajno dejstvo v sistemu, ki ga je mogoče slediti, ponovno obdelati in neodvisno prevzeti pri več prejemnikih. To ni zgolj tehnična izbira. Od nje je odvisno, ali bo ob reklamaciji serije, zastoju ali incidentu mogoče dokazati potek odločitev sistema in s tem tudi pripisati pogodbeno, operativno ali notranjo odgovornost. Kjer je pomembna sledljivost odgovornosti, je smiselno meriti ne le zakasnitev odgovora, temveč tudi število sporočil, ki zahtevajo ponovno pošiljanje, čas uskladitve stanja po okvari ter možnost rekonstrukcije zaporedja dogodkov brez ročnega sestavljanja iz več dnevnikov.

Ta tema preide na področje ocene tveganja takrat, ko lahko napačno ali prepozno sporočilo spremeni obnašanje stroja, procesa ali zaščitnega ukrepa. V takem primeru vprašanje udobja integracije ni več dovolj; oceniti je treba posledico, zaznavnost in možnost omejitve posledic, kar je skladno s prakso, poznano iz ISO 12100. Če komunikacija zadeva funkcije, povezane z varnostjo, blokade, pogoje za zagon ali potrditve stanja energije, se meja projektantske odgovornosti premakne z ravni aplikacije na raven celotnega strojnega sistema. Podobno lahko tudi pri izvršilnih sklopih, vključno s hidravličnimi, napačna predpostavka o pravočasni dostavi informacij pride v navzkrižje z načeli načrtovanja zaščitnih ukrepov in varnih stanj, kar naravno vodi do vprašanj, povezanih s SIST EN ISO 4413. Z drugimi besedami: čakalne vrste in posredniki niso »boljši po definiciji«, temveč postanejo prava izbira tam, kjer mora zasnova prenesti okvaro komunikacije brez izgube nadzora, zgodovine in odgovornosti za izvedena dejanja.

Kako se teme lotiti v praksi

V praksi vprašanje ni, ali je REST API dober ali slab, temveč ali ustreza posledicam napake, zakasnitve in odsotnosti odgovora v konkretnem industrijskem procesu. Če komunikacija služi predvsem branju podatkov, sprožanju administrativnih opravil ali integraciji s poslovnimi sistemi, je vmesnik zahteva–odgovor pogosto najpreprostejša in najcenejša rešitev. Težava se začne takrat, ko zasnova predvideva neprekinjeno izmenjavo informacij kljub začasni nedosegljivosti ene od strani, potrebo po urejeni obdelavi dogodkov ali obveznost rekonstrukcije, kdo, kdaj in na kakšni podlagi je sprožil določeno spremembo stanja. V takšni postavitvi izbira REST kot privzetega mehanizma pogosto zniža vstopni strošek, vendar poveča strošek obvladovanja okvar, usklajevanja stanja po prekinitvi in pojasnjevanja incidenta. To je trenutek, ko čakalne vrste, posredniki in dogodkovna komunikacija prenehajo biti »arhitekturni dodatek« in postanejo orodje za omejevanje projektnega tveganja in operativne odgovornosti.

Za ekipo in managerja to pomeni, da je treba arhitekturno odločitev sprejeti na podlagi nekaj merljivih značilnosti procesa, ne pa preferenc izvajalca. Najuporabnejše merilo je preprosto: določiti je treba, kaj se mora zgoditi s sporočilom, če prejemnik v trenutku pošiljanja ne odgovori. Če je pravilen odgovor »nič kritičnega, operacijo je mogoče varno ponoviti ali zavrniti«, REST praviloma zadostuje. Če pa mora biti sporočilo ohranjeno, dostavljeno po ponovni vzpostavitvi delovanja, obdelano samo enkrat ali v dokazljivem zaporedju, se sinhrona arhitektura začne razhajati z zahtevami procesa. To je smiselno zapisati že v fazi izhodišč kot prevzemna merila: dopustni čas nedosegljivosti partnerja, način ponavljanja, pravila deduplikacije, možnost sledenja korelaciji dogodkov in način obnove stanja po okvari. Brez takih dogovorov se projekt navidezno začne hitreje, pozneje pa se vrne v obliki dragih integracijskih sprememb, sporov o obsegu odgovornosti in obratovalnih neskladnosti, ki jih je težko zaključiti.

Dober primer je linija ali celica, v kateri nadrejeni sistem posreduje delovne naloge, krmilniki in delovna mesta pa poročajo o izvedbi, izmetu, blokadah ali prehodih med načini delovanja. Če se vsak dogodek takoj »poizveduje« prek REST, se ob kratkotrajni izgubi povezave zelo hitro pojavi razkorak med dejanskim stanjem in stanjem, ki je vidno v aplikaciji. Z vidika proizvodnje to pomeni ročno usklajevanje, z vidika kakovosti vrzel v zgodovini serije, z vidika vzdrževanja pa negotovost, ali je bil določen ukaz izveden ali samo poslan. Posrednik s trajnim zapisom sporočil ne reši vsega, vendar jasno razmeji odgovornost: pošiljatelj je dogodek predal, posredniški sistem ga je shranil, prejemnik pa ga je potrdil ali pa ne. To je bistvena razlika pri analizi vzrokov zastoja in pri ugotavljanju, ali je napaka izvirala iz logike procesa, izpada omrežja ali napačnega zaporedja operaterjevih dejanj. Prav zato odločitev o komunikacijskem modelu ne vpliva le na strošek uvedbe, temveč tudi na čas zagona, servisa in presoje.

To vprašanje preide na področje praktične ocene tveganja takrat, ko sporočilo ni več zgolj informacija, temveč pogoj za delovanje stroja, procesa ali zaščitnega ukrepa. Če je od pravilnega prenosa stanja odvisna možnost zagona, ponovnega zagona po zaustavitvi, odblokiranja zaporedja ali potrditve varnega energijskega stanja, potem integracijska odločitev postane del projektne odločitve z večjo težo. V takem primeru je treba oceniti ne le razpoložljivost komunikacije, temveč tudi posledice njene izgube, zamude, podvajanja in napačne interpretacije; tu se naravno pojavi metodologija, znana iz ocene tveganja v skladu z ISO 12100. Kjer pa komunikacija posega v pogoje za preprečevanje nepričakovanega zagona, informacijske plasti ni dovoljeno obravnavati kot nadomestilo za rešitve, predvidene za odklop energije in varno stanje. To je meja, kjer se tema že dotika analize zaščite pred nepričakovanim zagonom in širše načrtovanja sistema stroja, ki presega samo funkcionalnost. Z drugimi besedami: REST je za industrijo primeren takrat, ko proces njegove omejitve zavestno sprejema; kadar jih ne, so primernejši mehanizmi čakalnih vrst in dogodkovne komunikacije, ker bolje odgovarjajo zahtevam po neprekinjenosti, sledljivosti in nadzoru posledic okvar.

Na kaj paziti pri uvedbi

Najpogostejša napaka pri uvedbi je, da se izbira REST API ali dogodkovne komunikacije obravnava kot povsem tehnična odločitev, čeprav gre v industriji za odločitev z operativnimi in organizacijskimi posledicami. REST ne preneha delovati samo zato, ker se uporablja v proizvodni hali, vendar zelo hitro pokaže svoje omejitve tam, kjer mora sistem absorbirati prekinitve povezave, neenakomerno obremenitev, začasno nedosegljivost storitev in potrebo po poznejši rekonstrukciji poteka dogodkov. Če arhitektura predpostavlja, da mora vsak odgovor prispeti takoj in že v prvem poskusu, postane projekt krhek. Posledica je običajno predvidljiva: stroški integracije rastejo, obvodni mehanizmi se množijo, odgovornost za napačno stanje procesa pa se razprši med dobavitelje sistemov. Po drugi strani čakalne vrste in posredniki težave ne rešijo samodejno; prinašajo lastna tveganja, kot so zakasnjena obdelava, podvajanje sporočil, potreba po urejanju zaporedja in zahtevnejše spremljanje. Vprašanje torej ni, ali je REST vedno primeren za industrijo, temveč ali določen proces dopušča značilnosti te oblike komunikacije, ne da bi se tveganje preneslo na proizvodnjo, vzdrževanje in skladnost.

V fazi načrtovanja je smiselno sprejeti preprosto merilo presoje: kaj natančno se bo zgodilo s procesom, če sporočilo ne prispe, prispe dvakrat ali prispe prepozno. Če je posledica le zakasnjena osvežitev podatkov v poročevalskem sistemu, je REST lahko zadosten. Če pa odsotnost odgovora blokira zaporedje, zahteva ročni poseg, povzroči izgubo zgodovine izvedbe operacije ali oteži ugotavljanje, kdo je sprejel odločitev in na kakšni podlagi, potem sinhrona arhitektura začne ustvarjati stroške že v fazi zagona. V takem primeru komunikacija, ki temelji na čakalni vrsti ali posredniku, običajno bolje razmeji odgovornost: pošiljatelj potrdi predajo, prejemnik obdeluje v lastnem tempu, ekipa pa lahko spremlja zaostanke, ponovne poskuse in napake. Za vodjo projekta to pomeni, da mora meriti ne le razpoložljivost storitve, temveč tudi kazalnike, kot so čas zadrževanja sporočila, delež ponovnih poskusov, število neporavnanih sporočil in čas, potreben za rekonstrukcijo zgodovine dogodkov po incidentu.

V praksi se težava posebej jasno pokaže tam, kjer ena integracija začne hkrati opravljati več vlog. Na primer: nadrejeni sistem pošlje delovni nalog na delovno mesto, prejme potrditev izvedbe, obenem pa zapiše stanje, ki pogojuje nadaljnji zagon linije. Dokler govorimo o izmenjavi poslovnih podatkov, je lahko zamik nekaj sekund sprejemljiv. Če pa ista komunikacijska pot začne vplivati na izvršilno odločitev v procesu, preneha biti nevtralen informacijski dodatek. Takrat se napačna izbira mehanizma ne odrazi le v stroških zastojev, temveč tudi v odgovornosti za to, ali se sistem na izgubo povezave, ponovni zagon storitve ali podvojeno sporočilo odziva predvidljivo. To je trenutek, ko tema naravno preide na področje načrtovanja sistema stroja, ki presega samo funkcionalnost: odločiti je treba, katere posledice okvare je še dopustno tolerirati in katere je treba ločiti od integracijske plasti.

Ta meja postane še pomembnejša, ko komunikacija začne posegati v pogoje, povezane s funkcionalno varnostjo ali z oceno tveganja. Če je od pravilne izmenjave podatkov odvisna izpolnitev pogoja za varno stanje, dovoljenje za ponovni zagon, potrditev odsotnosti nevarne energije ali druga funkcija z varovalnim pomenom, dobra praksa integracije ne zadostuje. Takrat je treba jasno določiti, ali obravnavani element ostaja izključno na informacijski ravni ali pa že sodi v področje načrtovanja delov krmilnih sistemov, odgovornih za varnostne funkcije. Tu se pojavijo ustrezna vprašanja s področja SIST EN ISO 13849-1 ter praktične ocene tveganja v skladu z ISO 12100, vendar šele po opredelitvi funkcije in posledic okvare. Za ekipo to pomeni obveznost, da loči med tem, kar je mogoče obravnavati prek čakalne vrste, posrednika ali REST, in tem, česar ni dovoljeno opreti izključno na komunikacijo splošnega namena. Če te meje ne določimo na začetku, se strošek pozneje vrne v obliki sprememb projekta, sporov ob prevzemu in odgovornosti za sprejete odločitve, ki jo je težko utemeljiti.

Ali je REST API vedno primeren za industrijo? Kdaj se je bolje odločiti za čakalne vrste, posrednike in komunikacijo, ki temelji na dogodkih?

Ne. REST se dobro prilega preprostemu modelu vprašanje–odgovor, vendar je manj primeren za primere, ko mora sporočilo preživeti začasno nedosegljivost prejemnika ali biti obdelano pozneje.

Kadar je potreben sproten odčitek stanja ali nedvoumen klic s takojšnjim odgovorom. Primeren je tudi tam, kjer je neizvedbo mogoče zlahka zaznati in jo varno ponoviti brez stranskih učinkov.

Kadar pošiljatelj ne more čakati na prejemnika in je treba sporočilo kljub motnjam shraniti ter obdelati. To je pomembno tudi takrat, ko mora en dogodek sprožiti učinke v več neodvisnih sistemih.

Težave s ponovnimi poskusi, usklajevanjem neskladnih stanj in rekonstruiranjem zgodovine po incidentu se povečujejo. V praksi lahko že začasna nedosegljivost ene komponente blokira celotno zaporedje dejanj.

Ne. Če je potreben takojšen, zavezujoč odgovor ali odločitev, ki preprečuje nadaljnje premikanje stroja, lahko asinhroni model poveča negotovost, če vmesna stanja niso dobro zasnovana.

Deli: LinkedIn Facebook