Техническо резюме
Ключови изводи:
  • Тази статия обхваща ключови аспекти на безопасността.

Въпросът дали REST API е подходящо за индустрията днес вече не е спор за предпочитан стил на интеграция, а решение къде проектът ще поеме разхода, забавянето и оперативната отговорност. В индустриална среда комуникационният интерфейс много бързо престава да бъде „технически слой“ и започва да влияе върху непрекъснатостта на процеса, възпроизводимостта на действията, възможността за одит и начина на реакция при откази. REST работи добре там, където се очаква просто извикване, еднозначен отговор и ясен контрол върху състоянието на заявката. Проблемът започва, когато системата трябва да работи въпреки временна недостъпност на някой от участниците, когато съобщенията трябва да бъдат доставени с потвърждение или когато едно събитие трябва да предизвика последствия в няколко независими области. Тогава изборът между синхронна заявка и опашка, брокер и комуникация, базирана на събития, престава да бъде технически неутрален.

Това е важно именно сега, защото все повече индустриални проекти свързват управлението, поддръжката, системите за качество, производственото отчитане и външните услуги в една верига от зависимости. Ако архитектурата се изгради изцяло върху синхронни извиквания, екипът често получава система, която изглежда проста, но е крехка при нарастване на броя интеграции, при нестабилна мрежа или при изискване за стриктна проследимост на събитията. Цената на такова решение не се вижда на етап демонстрация на функционалността, а по-късно: в блокиране на процеси заради недостъпен компонент, в трудно възстановяване на хода на инцидента, в ръчно съгласуване на състоянията между системите и в спорове дали операцията е била изпълнена, или само е била възложена. За собственика на продукта и ръководителя на проекта практичният критерий е прост: трябва да се прецени дали даденият обмен на данни е от типа „въпрос–отговор тук и сега“, или по-скоро „регистрирай факта и осигури по-нататъшната му обработка дори при смущения“. От този отговор зависи не само технологията, но и моделът на отговорност между екипите.

На практика това се вижда ясно в машинните системи, при които едно операторско действие или едно процесно събитие трябва да бъде регистрирано, предадено и потвърдено на няколко места. Ако надзорното приложение изпраща синхронна заявка към последователни услуги и чака пълен комплект отговори, временен проблем в един елемент може да спре цялата последователност, въпреки че част от бизнес последствията би трябвало да настъпят независимо. От друга страна, брокерът или опашката позволяват да се раздели моментът на приемане на информацията от момента на нейната обработка, да се запази следа от събитието и по-лесно да се управлява повторението след грешка. Това не означава, че комуникацията, базирана на събития, винаги е по-добра: ако е необходимо незабавно решение, което блокира по-нататъшното движение на машината, или операторът трябва веднага да получи обвързващ отговор, асинхронният модел без добре проектирани междинни състояния може да увеличи несигурността. Затова още в началото на проекта си струва да се измерват не само времената за отговор, но и броят на изгубените или дублирани съобщения, времето за съгласуване на разминаващи се състояния и възможността за възстановяване на последователността от събития след инцидент.

Тази тема естествено се свързва с оценката на риска в индустриалните проекти, защото изборът на начин на комуникация влияе върху последствията от грешка, откриваемостта на отклоненията и възможността за въвеждане на ефективни мерки за ограничаване на риска. Ако през интерфейса преминават функции, чието неправилно изпълнение може да доведе до неволно задействане, опасна промяна на състоянието или загуба на контрол върху енергията, темата престава да бъде изцяло ИТ въпрос и преминава в областта на проектирането на машинната система и оценката на защитните мерки. Тук се появява и границата, от която трябва да се разглеждат свързани въпроси, включително защита срещу неочаквано пускане и практическата оценка на риска съгласно ISO 12100 според приетата методика. С други думи: решението за REST, опашка или брокер не бива да се взема след демо на интеграцията, а тогава, когато екипът може ясно да назове последствията от грешно или забавено съобщение за процеса, безопасността и отчетността на действията.

Къде най-често нарастват разходите или рискът

Най-много погрешни решения не произтичат от избора на „неправилна технология“, а от възлагането на REST API на задачи, за които то не е проектирано. В индустрията разходите нарастват, когато интерфейсът тип заявка–отговор трябва да пренася комуникация, чувствителна към временна недостъпност, последователност на събитията или необходимост от надеждно потвърждение за изпълнение. Ако системата трябва само да прочете текущото състояние на устройството или да приеме команда, чиято липса може лесно да се открие и повтори без странични ефекти, REST може да е достатъчен. Ако обаче резултатът зависи от това дали съобщението е достигнало точно веднъж, в правилния ред и с възможност за възстановяване на историята след инцидент, цената за заобикаляне на ограниченията на REST бързо надхвърля привидната простота на внедряването. На практика това означава допълнителна логика за повторни опити, собствени механизми за буфериране, съгласуване на разминаващи се състояния и по-трудно установяване на отговорност, когато устройството е изпълнило операцията по-късно от очакваното или я е изпълнило два пъти.

На етапа на проектиране проблемът обикновено изглежда безобиден: екипът приема, че мрежата е стабилна, услугите са постоянно достъпни и състоянието от двете страни на интеграцията е еднозначно. В индустриална среда тези допускания рядко се запазват за дълго. Появяват се прекъсвания на връзката, рестарт на устройство, актуализация на междинна система, а понякога просто претоварване в часовете на производствена смяна. Тогава архитектура, изградена изцяло върху синхронни извиквания, започва да прехвърля риска към приложенията и операторите. Цената на проекта нараства не само заради програмни корекции, но и заради възстановителни тестове, допълнителни оперативни процедури и спорове коя страна „е трябвало да знае“, че заявката не е била изпълнена. Практическият критерий за решение е прост: ако недостъпността на получателя не бива да спира подателя, а съобщението трябва да бъде безопасно съхранено и обработено по-късно, трябва сериозно да се обмисли опашка, брокер или комуникация, базирана на събития, вместо чист REST.

Добър пример е интеграцията на надзорна система с линия, при която една система задава промяна на рецепта, а няколко други трябва да приемат тази промяна, да я потвърдят и да я приложат в правилния момент от цикъла. При REST е лесно да се изгради извикване от типа „задай параметри“, но е по-трудно да се гарантира, че всички заинтересовани елементи са получили една и съща информация, че по-старо съобщение няма да презапише по-ново и че след авария ще може да се установи кой е видял коя команда. Брокерът на събития или опашката подреждат този проблем по различен начин: съобщението се превръща в траен факт в системата, който може да бъде проследен, обработен повторно и независимо получен от множество получатели. Това не е избор само от техническо естество. От него зависи дали при рекламация на партида, престой или инцидент ще може да се докаже ходът на решенията на системата, а следователно и да се определи договорна, оперативна или вътрешна отговорност. Там, където отчетността е важна, има смисъл да се измерва не само закъснението на отговора, но и броят на съобщенията, които изискват повторение, времето за съгласуване на състоянието след авария и възможността да се възстанови последователността на събитията без ръчна реконструкция от множество дневници.

Тази тема преминава в областта на оценката на риска, когато грешно или закъсняло съобщение може да промени поведението на машина, процес или защитна мярка. В такъв случай вече не е достатъчен въпросът за удобството на интеграцията; трябва да се оцени ефектът, откриваемостта и възможността за ограничаване на последствията, което е в съответствие с практиката, позната от ISO 12100. Ако комуникацията засяга функции, свързани с безопасността, блокировки, условия за пускане или потвърждения за състоянието на енергията, границата на проектната отговорност се измества от нивото на приложението към нивото на цялата машинна система. Подобно и при изпълнителни системи, включително хидравлични, погрешното допускане за навременно доставяне на информация може да влезе в противоречие с принципите за проектиране на защитни мерки и безопасни състояния, което естествено води до въпроси, свързвани с БДС EN ISO 4413. С други думи, опашките и брокерите не са „по-добри по дефиниция“, но се превръщат в правилния избор там, където проектът трябва да издържи отказ на комуникацията без загуба на контрол, история и отговорност за извършените действия.

Как да се подходи към темата на практика

На практика въпросът не е дали REST API е добро или лошо, а дали съответства на последствията от грешка, закъснение и липса на отговор в даден индустриален процес. Ако комуникацията служи основно за четене на данни, иницииране на административни действия или интеграция с бизнес системи, интерфейсът заявка–отговор често е най-простото и най-евтиното решение. Проблемът започва тогава, когато проектът предполага непрекъснат обмен на информация въпреки временната недостъпност на една от страните, необходимост от подредена обработка на събития или задължение да се възстанови кой, кога и на какво основание е предизвикал определена промяна на състоянието. В такава конфигурация изборът на REST като механизъм по подразбиране често намалява първоначалните разходи, но повишава разходите за обработка на откази, съгласуване на състоянието след прекъсване и изясняване на инцидент. Това е моментът, в който опашките, брокерите и комуникацията, базирана на събития, престават да бъдат „архитектурна добавка“ и се превръщат в инструмент за ограничаване на проектния риск и оперативната отговорност.

За екипа и мениджъра това означава необходимост архитектурното решение да се вземе въз основа на няколко измерими характеристики на процеса, а не според предпочитанията на изпълнителя. Най-полезният критерий е прост: трябва да се определи какво трябва да се случи със съобщението, когато получателят не отговаря в момента на изпращането. Ако правилният отговор е „нищо критично, операцията може безопасно да се повтори или да се отхвърли“, REST обикновено е достатъчен. Ако обаче съобщението трябва да бъде запазено, доставено след възобновяване на работата, обработено само веднъж или в ред, който може да бъде доказан, тогава синхронната архитектура започва да се разминава с изискванията на процеса. Добре е това да се запише още на етапа на изходните допускания като критерии за приемане: допустимо време на недостъпност на партньора, начин на повторение, правила за дедупликация, възможност за проследяване на корелацията между събитията и начин за възстановяване на състоянието след авария. Без такива уточнения проектът привидно тръгва по-бързо, но по-късно се връща под формата на скъпи интеграционни промени, спорове за обхвата на отговорността и експлоатационни несъответствия, които трудно се затварят.

Добър пример е линия или клетка, в която надсистемата подава задания, а контролерите и работните станции отчитат изпълнение, брак, блокировки или преминаване между режими на работа. Ако всяко събитие се „изпитва“ незабавно чрез REST, при краткотрайна загуба на свързаност много бързо се появява разминаване между реалното състояние и състоянието, видимо в приложението. От гледна точка на производството това завършва с ръчно съгласуване, от гледна точка на качеството – с празнина в историята на партидата, а от гледна точка на поддръжката – с несигурност дали дадена команда е изпълнена, или само е изпратена. Брокер с трайно записване на съобщенията не решава всичко, но подрежда отговорностите: подателят е предал събитието, междинната система го е съхранила, получателят го е потвърдил или не. Това е съществена разлика при анализа на причините за престой и при изясняването дали грешката е произтекла от логиката на процеса, от мрежова повреда или от неправилна последователност на действията на оператора. Именно затова решението за модела на комуникация влияе не само върху разходите за внедряване, но и върху времето за пускане, сервиз и одит.

Тази тема преминава в областта на практическата оценка на риска съгласно ISO 12100, когато съобщението вече не е само информация, а условие за действието на машината, процеса или защитното средство. Ако възможността за пускане, възобновяване на работа след спиране, деблокиране на последователност или потвърждаване на безопасното енергийно състояние зависи от коректното предаване на състоянието, тогава интеграционното решение става част от проектно решение с по-голяма тежест. В такъв случай трябва да се оценят не само наличността на комуникацията, но и последиците от нейната загуба, закъснение, дублиране и погрешно тълкуване; тук естествено се появява методологията, позната от ISO 12100. От своя страна, там, където комуникацията засяга условията за предотвратяване на неочаквано пускане, информационният слой не бива да се разглежда като заместител на решенията, предвидени за изключване на енергията и безопасно състояние. Това е границата, при която темата вече се допира до анализа на защитата срещу неочаквано пускане и в по-широк план до проектирането на машинната система, което излиза извън рамките на самата функционалност. С други думи, REST е подходящ за индустрията, когато ограниченията му са съзнателно приети от процеса; когато това не е така, по-подходящи стават механизмите за опашки и комуникация, базирана на събития, защото по-добре отговарят на изискванията за непрекъсваемост, проследимост и контрол върху последиците от откази.

За какво да се внимава при внедряване

Най-честата грешка при внедряването е, че изборът между REST API и комуникация, базирана на събития, се разглежда като чисто техническо решение, докато в индустрията това е решение с оперативни и организационни последици. REST не престава да работи само защото попада в производствена среда, но много бързо разкрива ограниченията си там, където системата трябва да поема прекъсвания на свързаността, неравномерно натоварване, временна недостъпност на услуги и необходимост от последващо възстановяване на хода на събитията. Ако архитектурата предполага, че всеки отговор трябва да пристигне незабавно и още при първия опит, проектът става крехък. Последицата обикновено е предвидима: разходите за интеграция нарастват, механизмите за заобикаляне се множат, а отговорността за грешното състояние на процеса се размива между доставчиците на системи. От друга страна, опашките и брокерите не решават проблема автоматично; те въвеждат собствени рискове, като забавена обработка, дублиране на съобщения, необходимост от подреждане на последователността и по-сложно наблюдение. Затова въпросът не е дали REST винаги е подходящ за индустрията, а дали даден процес допуска особеностите на тази форма на комуникация, без рискът да се прехвърля върху производството, поддръжката и съответствието.

На етапа на проектиране си струва да се приеме прост критерий за оценка: какво точно ще се случи с процеса, ако съобщението не пристигне, пристигне два пъти или пристигне твърде късно. Ако последицата е само забавено опресняване на данните в отчетната система, REST може да е достатъчен. Ако обаче липсата на отговор блокира последователност, налага ръчна намеса, води до загуба на историята на изпълнението на операцията или затруднява установяването кой и на какво основание е взел решение, тогава синхронната архитектура започва да генерира разходи още на етапа на пускане. В такава ситуация комуникацията, базирана на опашка или брокер, обикновено подрежда по-добре отговорностите: подателят потвърждава предаването, получателят обработва със собствено темпо, а екипът има възможност да наблюдава натрупвания, повторни опити и грешки. За ръководителя на проекта това означава необходимост да измерва не само наличността на услугата, но и показатели като време на престой на съобщението в опашката, дял на повторните опити, брой неуредени съобщения и време, необходимо за възстановяване на историята на събитията след инцидент.

На практика проблемът се проявява особено ясно там, където една интеграция започва да изпълнява няколко роли едновременно. Например: надсистемата изпраща задание към работна станция, получава потвърждение за изпълнение и междувременно записва състояние, което е условие за следващото пускане на линията. Докато говорим за обмен на бизнес данни, закъснение от няколко секунди може да е приемливо. Ако обаче същият комуникационен път започне да влияе върху изпълнителното решение в процеса, той престава да бъде неутрално ИТ допълнение. Тогава неправилният избор на механизъм се отразява не само върху разходите от престои, но и върху отговорността за това дали системата реагира предвидимо при липса на свързаност, рестарт на услуга или дубликат на съобщение. Това е моментът, в който темата естествено преминава в областта на проектирането на машинната система, излизащо извън рамките на самата функционалност: трябва да се определи кои последици от отказ са допустими и кои изискват отделяне от интеграционния слой.

Границата става още по-важна, когато комуникацията започне да засяга условия, свързани с функционалната безопасност или с оценката на риска. Ако от правилния обмен на данни зависи изпълнението на условие за безопасно състояние, разрешението за възобновяване на работа, потвърждението за отпадане на опасна енергия или друга функция със защитно значение, добрата практика при интеграцията не е достатъчна. Тогава трябва ясно да се определи дали разглежданият елемент остава единствено на информационно ниво, или вече попада в обхвата на проектирането на елементи от системите за управление, отговорни за функциите за безопасност. Именно тук възникват съществените въпроси от областта на БДС EN ISO 13849-1 и на практическата оценка на риска съгласно ISO 12100, но едва след като са дефинирани функцията и последиците от повреда. За екипа това означава задължение ясно да разграничи какво може да се обслужва чрез опашка, broker или REST и какво не бива да се основава единствено на комуникация с общо предназначение. Ако тази граница не бъде определена в началото, по-късно цената се връща под формата на промени по проекта, спорове при приемането и отговорност за взетите решения, която трудно може да бъде защитена.

Подходящ ли е REST API винаги за индустрията? Кога е по-добре да се заложи на опашки, брокери и комуникация, базирана на събития?

Не. REST е подходящ за простия модел въпрос–отговор, но се справя по-зле в ситуации, когато съобщението трябва да преживее временната недостъпност на получателя или да бъде обработено по-късно.

Когато е необходима текуща информация за състоянието или еднозначно извикване с незабавен отговор. Подходящо е и там, където липсата на изпълнение може лесно да се установи и безопасно да се повтори без странични ефекти.

Когато подателят не може да чака получателя, а съобщението трябва да бъде запазено и обработено въпреки смущенията. Това е важно и когато едно събитие трябва да предизвика ефекти в няколко независими системи.

Проблемите с повторните опити, съгласуването на разминаващи се състояния и възстановяването на историята след инцидент нарастват. На практика временната недостъпност на един компонент може да блокира цялата последователност от действия.

Не. Ако е необходим незабавен, обвързващ отговор или решение, което блокира по-нататъшното движение на машината, асинхронният модел може да увеличи неопределеността, ако междинните състояния не са проектирани добре.

Споделяне: LinkedIn Facebook