Tehniskais kopsavilkums
Galvenie secinājumi:

Rakstā uzsvērts, ka droša izvēršana bez dīkstāvēm prasa izmaiņu izsekojamību, sagatavotu arhitektūru un skaidrus noteikumus izmaiņu nodošanai ražošanas vidē. Lielākais risks izriet nevis no pašas ieviešanas, bet gan no kļūdaina izmaiņu ietekmes uz procesu novērtējuma un darbības paredzamības.

  • Atjauninājumi bez dīkstāves ir jāplāno jau projektēšanas posmā, ņemot vērā izmaiņu robežas un komponentu savstarpējās atkarības.
  • Izšķiroši ir nemainīgi ieviešanas nosacījumi: datu konsekvence, procesa paredzamība un kontrole pār izmaiņu apjomu.
  • Organizācijai jāspēj ieviest, ierobežot un atsaukt izmaiņas, kā arī noteikt, kura versija ir darbojusies attiecīgajā resursā.
  • Risks palielinās arī izmaiņu gadījumā, kas tiek uzskatītas par nelielām, jo īpaši tad, ja tās ietekmē secību, inicializāciju vai datu apmaiņu.
  • Ja atjauninājums maina iekārtu darbību vai drošības signālus, tā vairs nav tikai parasta lietojumprogrammas izmaiņa.

Droša programmatūras atjaunināšana ražošanas vidē nesākas brīdī, kad tiek publicēta jaunā versija. Tā sākas daudz agrāk — kad komanda nosaka izmaiņu robežas, atkarības starp komponentiem un nosacījumus, kuri ieviešanas laikā nedrīkst mainīties. Tieši šajā posmā tiek izlemts, vai izmaiņas var ieviest bez dīkstāves, nezaudējot datu konsekvenci un nepārnesot risku uz operatoriem un uzturēšanas dienestiem. Ja šie pieņēmumi netiek noteikti iepriekš, dīkstāves neesamība var izrādīties tikai šķietams panākums: sistēma darbojas, bet process zaudē paredzamību, un organizācija vairs nespēj nepārprotami pierādīt, kas, kad un uz kāda pamata tika mainīts.

Programmatūras atjauninājumi ražošanas vidē jau sen vairs nav tikai tehnisks jautājums. Ikviena izmaiņa, kas tiek ieviesta ražošanā, vienlaikus ietekmē darbības nepārtrauktību, procesa drošumu un atbildības apjomu pēc ieviešanas. Praksē jautājums vairs nav par to, vai atjaunināt, bet gan par to, kā to izdarīt, neapturot procesu, nezaudējot kontroli pār izmaiņām un neradot situāciju, kurā lēmumu sekas jāuzņemas operatīvajam personālam.

Tāpēc ieviešanu plānošana bez dīkstāves ir jāuztver kā sistēmas projektēšanas elements, nevis darbība, kas tiek veikta pašās beigās. Ja lietojumprogrammas arhitektūra, komponentu versiju pārvaldības veids un atkarības no datubāzēm, malas ierīcēm un saskarnēm ar automatizācijas sistēmām nav sagatavotas ar domu par atjauninājumiem, vienlaikus saglabājot pieejamību, komanda ražošanas vidē nonāk ar slēptu operacionālo parādu. Tad katra nākamā izmaiņa kļūst par kompromisu starp pieejamību un kontroli. Šāda pieeja ir saskanīga ar skatījumu, kurā izmaiņu projektēšana, domājot par drošību jau projekta posmā ir priekšnoteikums vēlākai ieviešanu paredzamībai.

Vislabāk tas redzams tur, kur programmatūra ietekmē operāciju secību, procesa parametrus vai datu apmaiņu ar izpildierīcēm. Šķietami lokāla izmaiņa, piemēram, ziņojuma validācijas loģikā, var neizraisīt lietojumprogrammas atteici, taču tā var radīt stāvokļu neatbilstību starp virssistēmu un darba vietu, aizkavēt partijas atbrīvošanu vai apgrūtināt notikumu gaitas atjaunošanu pēc incidenta. Šādā situācijā atjaunināšanas problēma ātri kļūst par izsekojamības problēmu: organizācijai ir jāzina, kurš ieviesa izmaiņas, kas tieši tika ieviests, kad tas notika un kādā vidē konkrētā versija darbojās. Praksē tas nozīmē nepieciešamību nodrošināt izmaiņu un versiju izsekojamību ražošanas vidē.

No pārvaldības viedokļa tas noved pie vienkārša, bet prasīga kritērija. Komandai jāspēj ieviest izmaiņas, ierobežot to tvērumu, atsaukt tās un nepārprotami norādīt, kura versija konkrētajā brīdī darbojās uz konkrētā resursa. Ja atbilde uz jebkuru no šiem jautājumiem ir neskaidra, problēma nav tikai ieviešanas rīkos, bet visā izmaiņu pārvaldības modelī.

Būtiskuma robeža vēl vairāk pārbīdās tur, kur atjauninājums ietekmē iekārtu darbību vai kustības palaišanas nosacījumus. Ja ieviešana maina palaišanas secību, bloķēšanas loģiku, drošības signālu apstrādi vai darba atjaunošanas veidu pēc elektroapgādes zuduma, tā vairs nav parasta lietojumprogrammas izmaiņa. Šādā gadījumā jautājums par ieviešanu bez dīkstāves jāpapildina ar jautājumu, vai izmaiņas nerada stāvokli, kurā sistēma atsāks darbu neparedzētā vai personālam neprognozējamā veidā. Tieši šeit parādās atbilstošais normatīvo atsauču konteksts, tostarp prasības, kas saistītas ar enerģijas atslēgšanu un negaidītas iedarbināšanas novēršanu, bet tikai tad, ja izmaiņu tvērums patiešām skar funkcijas, kas ietekmē lietošanas drošumu.

Tāpēc šīs tēmas nozīmi nenosaka tikai ieviešanu biežums. To nosaka fakts, ka atjaunināšana ir kļuvusi par saskares punktu starp tehniku, atbildību un atbilstību. Organizācija, kurai nav skaidru noteikumu par izmaiņu pieļaušanu ražošanā, vēlāk par to maksā ar paredzamības zudumu. Tāpēc jau projektēšanas un operacionālajā līmenī ir jāizlemj, kuras izmaiņas drīkst ieviest bez apturēšanas, kurām nepieciešams kontrolēts servisa logs, kādi pierādījumi jāsaglabā pēc ieviešanas un kurā brīdī ar parastu versiju pārvaldību vairs nepietiek.

Kur visbiežāk pieaug izmaksas vai risks

Atjauninājumos, kas tiek veikti bez dīkstāves, izmaksas visretāk izriet no pašas jaunās versijas ieviešanas. Visbiežāk tās pieaug tur, kur organizācija kļūdaini uzskata izmaiņas par nelielām un līdz ar to operacionāli nebūtiskām. Tieši šādas modifikācijas visbiežāk noved pie stāvokļu nekonsekvences starp pakalpojumiem, konfigurācijas atjaunojamības zuduma, nespējas droši atsaukt izmaiņas vai sistēmas pagaidu darbības režīma, kas atšķiras no procesa īpašnieka apstiprinātā.

Galvenā kļūda rodas tad, ja ieviešanas plāns tiek veidots ap jautājumu: “vai to var ieviest bez apstādināšanas?”, nevis: “kādiem nosacījumiem ieviešanas laikā un pēc tās ir jāpaliek nemainīgiem?”. Šai atšķirībai ir praktiska nozīme. Ja atjauninājums maina secības loģiku, inicializācijas veidu, laika atkarības, datu apmaiņas formātu vai sistēmas reakciju uz savienojuma zudumu, risks vairs neattiecas tikai uz pieejamību. Tas attiecas uz darbības paredzamību procesa, iekārtas un operatora pusē.

Labs piemērs ir starpkomponenta atjaunināšana starp lietojumslāni un procesa vadību. Formāli tas nemaina biznesa funkciju, tāpēc to nereti klasificē kā izmaiņu ar nelielu ietekmi. Taču praksē tas var mainīt signālu nodošanas secību, apstiprinājumu laikus vai stāvokļa atjaunošanas veidu pēc restartēšanas. Ja testēšanas vide neatveido reālās atkarības, ieviešana izskatās korekta līdz pirmajai pārslēgšanai, sakaru traucējumam vai darba atsākšanai pēc īsa pārtraukuma. Izmaksas tad nerodas pašas programmēšanas kļūdas dēļ, bet gan nepareizas izmaiņu klasifikācijas dēļ. Īpaši svarīga šeit kļūst lietotņu projektēšana ar noturību pret restartēšanu un savienojuma zudumu.

Tāpēc pirms atjauninājuma apstiprināšanas ir vērts novērtēt vismaz trīs jautājumus: vai izmaiņas ietekmē sistēmas pārejas stāvokļus, vai tās var atsaukt, nezaudējot datu konsekvenci, un vai ražošanas novērojamība ļauj atšķirt īslaicīgu anomāliju no atteices sākuma. Ja komanda pirms ieviešanas nespēj aprakstīt drošu stāvokli, atsaukšanas nosacījumus un nepareizas darbības pazīmes, ko iespējams noteikt reāllaikā, izmaiņas nav gatavas ieviešanai bez dīkstāves.

Atsevišķa kategorija ir atjauninājumi, kas skar robežu starp informācijas tehnoloģijām un mašīnas vai iekārtas drošumu. Ne katra versijas maiņa nonāk šajā jomā, taču, ja modifikācija ietekmē apturēšanas loģiku, barošanas atjaunošanu, bloķējumus, apstiprinājuma signālus vai sadarbību ar izpildmehānismiem, tā vairs nav tikai darbības nepārtrauktības tēma. Šādā apjomā jānovērtē, vai nemainās ar lietošanas drošumu saistītā funkcija, tātad vai nav nepieciešama pilnīgāka izmaiņu riska analīze, kas ietekmē mašīnas drošumu, tostarp praksē, kas zināma no ISO/TR 14121-2. Ja izmaiņas attiecas uz hidrauliskajām sistēmām vai mašīnas elektrisko aprīkojumu, projektēšanas lēmumus nedrīkst ierobežot tikai ar programmatūras administrēšanu.

Tieši šeit atklājas patiesais atbildības mērogs. Kļūdaina ieviešana ne vienmēr beidzas tikai ar sistēmas nepieejamību. Tā var nozīmēt arī nepareizu izmaiņu apstiprināšanu, lai gan patiesībā tās pārkāpa procesa vai mašīnas drošuma pieņēmumus.

Kā šai tēmai pieiet praksē

Praktisku pieeju ir vērts sākt ar vienu tēzi: ieviešana bez dīkstāves nav pašmērķis, bet gan labi izstrādātu izmaiņu rezultāts. Ja komanda versijas publicēšanu uztver kā programmēšanas darbu noslēdzošo posmu, parasti par to nākas samaksāt pēdējā brīdī ar papildu manuālām pārbaudēm, pagaidu apiešanas risinājumiem vai piekrišanu riskam, kas iepriekš nav bijis aprakstīts. Tāpēc lēmums par ieviešanas veidu jāpieņem jau izmaiņu apjoma definēšanas laikā.

Praksē tas nozīmē nepieciešamību atbildēt uz dažiem pamatjautājumiem. Vai atjauninājums ir atgriezenisks? Vai tas prasa vairāku komponentu savietojamību vienlaikus? Vai tas maina datu modeli? Vai tas skar savienojumus starp ražošanas cehu un biznesa sistēmām? Tie ir svarīgāki kritēriji nekā pašas korekcijas nozīmīgums, jo tieši tie nosaka, vai izmaiņas var ieviest pakāpeniski vai arī būs nepieciešams kontrolēts servisa logs. Pie šādām atkarībām izšķiroša ir arī datu konsekvence starp sistēmām ieviešanas laikā.

No tā izriet nākamais lēmums: ne katras izmaiņas ir piemērotas vienam un tam pašam publicēšanas režīmam. Ja jaunajai versijai vienlaikus nepieciešamas izmaiņas lietotnē, datubāzē, datu apmaiņas saskarnēs un iekārtu konfigurācijā, problēma vairs nav operacionāla, bet kļūst arhitektoniska. Sistēma, kas nepieļauj īslaicīgu versiju nesaderību abās integrācijas pusēs, paliek dārga uzturēšanā neatkarīgi no koda kvalitātes. Vērtēšanas kritērijs šeit ir ļoti konkrēts: vai pēc viena elementa ieviešanas pārējie joprojām funkcionāli darbojas korekti un vai datiem nav nepieciešama manuāla korekcija. Šāda tipa vidēs būtiska kļūst arī integrētu ražošanas sistēmu drošība izmaiņu laikā.

Ja atbilde ir noliedzoša, izmaiņas jāuztver kā koordinēta pakete ar skaidru lēmumu par darbību secību, atsaukšanas nosacījumiem un atbildību par pārejas datiem. Šāda lēmuma trūkums pārnes izmaksas no projekta posma uz ražošanu, kur katra kļūda ir dārgāka un grūtāk rekonstruējama.

To labi parāda moduļa atjauninājums, kas apkopo notikumus no līnijas un nodod tos plānošanas, kvalitātes vai ražošanas uzskaites sistēmai. Ja izmaiņas maina ziņojuma formātu, statusa nozīmi vai notikuma reģistrēšanas brīdi, pat tad, ja lietotne joprojām ir pieejama, var rasties klusa nekonsekvence. Partija tiks reģistrēta, taču tā nebūs pareizi sasaistīta ar operāciju, darba laiku vai kontroles rezultātu. Šāda kļūda līniju neapturēs, bet tā var apšaubīt ražošanas uzskaiti, reklamācijas izmeklēšanu vai iespēju pierādīt procesa gaitu.

Šajā brīdī ieviešanas tēma tieši sasaucas ar izmaiņu un procesa izsekojamību. Organizācijai jāspēj nepārprotami norādīt, kura programmatūras versija ir ģenerējusi konkrēto ierakstu, pēc kāda noteikuma un kurā laikā tā bija spēkā. Ja to nav iespējams pierādīt, pilnīga kontrole pār ieviešanas sekām nepastāv, pat ja tehniski viss noritējis bez atteicēm.

Tāpēc saprātīgam atjaunināšanas plānam ražošanā jābalstās ne tikai uz testiem, bet arī uz skaidri noteiktiem operatīvā lēmuma un pierādāmības nosacījumiem.

  • Izmaiņām jābūt definētam nosacījumam ieviešanai ražošanā, nevis tikai publicēšanas termiņam.
  • Jānorāda atgriezeniskuma punkts: līdz kuram brīdim un ar kādiem datiem versiju var droši atsaukt.
  • Jānosaka, kādas pēdas paliek pēc ieviešanas: kurš apstiprināja izmaiņas, kas tika ieviests un kā atpazīt tās sekas datos.

Tikai šajā līmenī ir vērts sasaistīt tēmu ar atbilstību un atbildību. Runa nav par formālismu, bet gan par iespēju pierādīt, ka izmaiņas tika apstiprinātas apzināti, atbilstošā kārtībā un ar izvērtētu ietekmi uz procesu. Ja atjauninājums ietekmē ražošanas sistēmu darbību, datu apmaiņu, partiju reģistrēšanu vai operāciju secību, organizācijai jāspēj parādīt pilnu ceļu: no projekta lēmuma līdz ieviešanas apstiprināšanai un konkrētā brīdī darbojošās versijas identificēšanai. Ja turklāt izmaiņas var ietekmēt procesa drošību vai ar lietošanas drošību saistītās funkcijas, ar pašu laidiena pārvaldību vairs nepietiek un ir nepieciešama atsevišķa izmaiņu riska analīze, kas veikta ar tās apjomam atbilstošu metodi.

Kam pievērst uzmanību ieviešanas laikā

Visbiežākā kļūda, plānojot atjauninājumu bez dīkstāves, ir uztvert ieviešanu kā tehnisku darbību, nevis kā visa ražošanas kopuma darba apstākļu maiņu. Veiksmi nenosaka tikai pakotnes korektums, bet gan tas, vai jaunā versija maina saskarņu darbību, apstrādes secību, datu nozīmi vai atbildes laiku procesa kritiskajos punktos. Ja šīs atkarības netiek atpazītas iepriekš, projekts šķietami ietaupa laiku, bet patiesībā pārceļ izmaksas uz ražošanas posmu.

Īpaša piesardzība jāievēro tad, ja izmaiņas vienlaikus ietekmē vairāk nekā vienu avota vai saņēmēja sistēmu. Šādā gadījumā tas vairs nav tikai ieviešanas jautājums, bet arī izmaiņu arhitektūras un tās ierobežojumu jautājums. Dīkstāves neesamība nenozīmē riska neesamību. Atjauninājumu var ieviest, neapturot līniju, un tomēr izjaukt biznesa procesa nepārtrauktību vai operatīvo izsekojamību.

Tas īpaši attiecas uz sistēmām, kas sinhronizē datus starp ražošanas cehu un plānošanas, atskaišu vai uzskaites slāni. Ja jaunā versija notikumus marķē citādi, maina identifikatorus, aizkavē replikāciju vai ievieš citus validācijas noteikumus, sekas parādās ārpus paša ieviešanas loga. Tāpēc pirms publicēšanas jānovērtē ne tikai iespēja atsaukt versiju, bet arī seku atgriezeniskums datos. Ja organizācija nespēj nepārprotami norādīt, kuri ieraksti jau radušies pēc jaunās loģikas un kā tos nodalīt no iepriekšējiem, ieviešana neatbilst drošas atgriezeniskuma prasībai, pat ja infrastruktūra ļauj ātri atgriezties pie iepriekšējā laidiena.

To labi var redzēt izmaiņās, kas formāli izskatās nelielas: partiju numerācijas algoritma korekcijā, statusu kartēšanas izmaiņās no iekārtām vai operācijas izpildes apstiprināšanas veida maiņā. Šāds atjauninājums var nepārtraukt darba vietu darbību, bet pēc kāda laika atklāt neatbilstību starp to, ko redz operators, un to, kas nonāk augstāka līmeņa sistēmā. Tad problēma vairs nav tikai iepriekšējās versijas atjaunošana, bet arī noteikšana, kuri uzdevumi, partijas vai ziņojumi tika reģistrēti pēc jaunajiem noteikumiem un vai pēc izmaiņu atsaukšanas tos vēl var pareizi interpretēt.

Tieši šajā vietā ieviešanas tēma pāriet izmaiņu un procesa izsekojamības jomā. No projekta skatpunkta tas nozīmē nepieciešamību mērīt ne tikai ieviešanas laiku un pakalpojuma atjaunošanas laiku, bet arī korekciju prasošo transakciju skaitu, manuālās saskaņošanas apjomu un laiku, kas vajadzīgs uzticamas notikumu vēstures atjaunošanai. To atvieglo pieeja, kas balstīta uz izmaiņu un versiju izsekojamību ražošanas vidē, kā arī izmaiņu projektēšanu, domājot par drošību jau projekta posmā.

Trešais jautājums attiecas uz atbildības robežām. Daudzās organizācijās piekrišana ieviešanai galvenokārt balstās uz funkcionālajiem testiem un biznesa akceptu, lai gan reālais risks slēpjas savstarpējās atkarībās starp sistēmām, iekārtām un procesa vadības veidu. Ja atjauninājums ietekmē operāciju secību, datu apmaiņu ar automatizācijas sistēmām, partiju reģistrēšanu, ražošanas partiju atbrīvošanu vai funkcijas, kas saistītas ar lietošanas drošību, ar rutīnas publicēšanas procedūru vairs nepietiek. Nepieciešams atsevišķs riska novērtējums izmaiņām ar skaidri noteiktu tvērumu, lēmuma īpašnieku un pieļaušanas nosacījumiem. Plašākā organizatoriskā skatījumā tā bieži vien ir vienkārši riska analīze projektā.

Atbilstības ziņā šeit nav runa par formālu procesa noslēgšanu, bet gan par iespēju pierādīt, ka ietekmes tvērums ir noteikts atbilstoši iespējamām sekām. Ja šī saikne nav viennozīmīga, drošāk ir izvēlēties stingrāku novērtēšanas režīmu, nevis pieņemt, ka, tā kā ieviešana notika bez dīkstāves, izmaiņas procesam bija neitrālas. Gadījumos, kas ietver tehniskos un regulatīvos aspektus, nozīme var būt arī tam, ko vēl regulē Mašīnu direktīva 2006/42/EC.

Galu galā uzticama ieviešana bez dīkstāves prasa atbildēt uz trim jautājumiem vēl pirms publicēšanas: kas tieši var mainīties procesa darbībā, kādas sekas iespējams novērst, neapdraudot datus, un kurš apstiprinās pareizu darbību no operacionālās, ne tikai lietotnes puses. Ja organizācija nespēj atbildēt uz šiem jautājumiem, dīkstāves neesamība nav pierādījums izmaiņu drošumam, bet tikai problēmas atlikšana.

Droši programmatūras atjauninājumi ražošanas vidē – BUJ

Tas sākas ar iepriekšēju izmaiņu robežu, komponentu savstarpējo atkarību un nosacījumu noteikšanu, kam ieviešanas laikā jāpaliek nemainīgiem. Tieši šajā posmā tiek izvērtēts, vai ir iespējams saglabāt pieejamību, datu konsekvenci un kontroli pār izmaiņām.

Ja tas ietekmē iekārtu darbību, palaišanas secību, bloķēšanas loģiku, drošības signālu apstrādi vai darba atsākšanas veidu pēc elektroapgādes pārtraukuma. Tad jānovērtē ne tikai pieejamība, bet arī nejaušas vai neparedzamas iedarbināšanas risks.

Ir vērts pārbaudīt, vai izmaiņas ietekmē sistēmas pārejas stāvokļus, vai tās var atsaukt, nezaudējot datu konsekvenci, un vai ražošanas novērojamība ļauj atšķirt anomāliju no atteices sākuma. Bez tā ieviešana bez dīkstāves var izrādīties tikai šķietams panākums.

Jo tās bieži kļūdaini tiek uzskatītas par no ekspluatācijas viedokļa nenozīmīgām, lai gan tās var mainīt signālu secību, apstiprinājumu laikus vai stāvokļa atjaunošanu pēc restartēšanas. Tad risks izriet nevis no pašām izmaiņām, bet gan no to nepareizas klasificēšanas.

Komandai jāspēj ieviest izmaiņas, ierobežot to tvērumu, atsaukt tās un nepārprotami norādīt, kura versija konkrētajā brīdī darbojās konkrētajā resursā. Ja to nav iespējams pierādīt, problēma skar visu izmaiņu pārvaldības modeli, nevis tikai izvietošanas rīkus.

Dalīties: LinkedIn Facebook