연결성과 상호운용성 표준
📍 현재 위치: 지난 장에서는 참조 아키텍처로 시스템들을 정리했다면, 이번 장에서는 데이터가 실제로 그 시스템들 사이를 오갈 수 있도록 공통의 언어를 부여합니다.
지난 장에서는 ISA-95 / 퍼듀(Purdue) 계층 구조를 사용해 공장을 여러 계층으로 쌓아 올렸습니다. 맨 아래에는 센서가, 맨 위에는 전사 시스템이 있었죠. 그리고 운영 기술(operational technology, OT)과 정보 기술(information technology, IT)이 에지에서 클라우드로 이어지는 경로를 따라 어떻게 수렴하고 있는지 살펴보았습니다. 하지만 깔끔하게 정리된 계층 다이어그램 그 자체만으로는 데이터가 흐르지 않습니다. 생물반응기(bioreactor)의 제어기, 크로마토그래피 스키드(skid), 실험실 분광계(spectrometer), 그리고 공장의 제조 시스템이 그 다이어그램 위에 완벽하게 배치되어 있어도 숫자 하나조차 주고받지 못할 수 있습니다. 각각이 자기만의 사적인 방언을 쓰도록 만들어졌기 때문입니다. 이번 장은 이들이 서로 대화할 수 있게 해 주는 합의 — 즉 표준(standards) — 에 관한 이야기입니다.
모든 의사, 간호사, 기계가 서로 다른 언어를 쓰는 거대한 병원을 떠올려 보세요. 사람 한 쌍마다 통역사를 한 명씩 고용할 수도 있겠지만, 100명이라면 통역사가 수천 명이 필요하고, 새 간호사 한 명을 들이면 100명을 더 고용해야 합니다. 더 똑똑한 해법은 모두가 배우는 하나의 공통 언어를 정하는 것입니다. 연결성 표준은 기계들을 위한 바로 그 공통 언어입니다. 함정은 이것입니다. 같은 언어를 말한다는 것이 서로를 이해한다는 것과 같지는 않다는 점이고, 바로 그 간극이 이번 장 끝부분의 핵심입니다.
이번 장에서 다루는 내용
우리는 데이터를 공장 현장에서 위쪽으로 따라갑니다. 먼저 공정(process) 장비를 연결하는 표준(OPC UA와 MTP), 그다음 이를 보완하는 가벼운 발행/구독 백본(MQTT / Sparkplug B), 이어서 실험실(laboratory)(SiLA 2, AnIML, Allotrope), 다음으로 비즈니스(business) 계층(ISA-95 / B2MML), 그리고 마지막으로 이 모든 것이 드러내는 구분 — 바이트를 옮기는 것과 의미를 보존하는 것의 차이 — 을 살펴봅니다.
연결성 스택: 전송 계층과 의미 계층
점대점 통합이 무너지는 이유
시스템을 연결하는 단순한 방법은 점대점(point-to-point) 방식입니다. 대화가 필요한 한 쌍마다 맞춤형 소프트웨어 — 즉 인터페이스(interface) — 를 작성하는 것이죠. 시스템 두 개에는 인터페이스 하나가 필요합니다. 하지만 가능한 쌍의 수는 n×(n−1)/2로, 대략 시스템 수의 제곱에 비례해 늘어나므로 — 시스템 열 개에는 최대 마흔다섯 개의 인터페이스가, 스무 개에는 백구십 개가 필요할 수 있습니다. 엔지니어들은 이것을 n² 문제(n² problem)라고 부릅니다. 연결 비용이 공장이 커지는 속도보다 더 빠르게 폭발한다는 뜻입니다. 더 나쁜 것은, 각 인터페이스가 독점적이고 취약하다는 점입니다. 장비 하나만 바꿔도 그것에 닿아 있는 모든 인터페이스가 깨집니다.
같은 네 개의 시스템을 두 가지 방식으로 연결한 모습: 맞춤형 연결이 뒤엉킨 형태와 하나의 공통 표준을 쓰는 형태.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
공통 표준은 그 엉킴을 시스템당 단 하나의 연결로 줄여 줍니다. 이것이 표준의 경제적 논거 전체입니다. 표준은 이차(quadratic) 문제를 일차(linear) 문제로 바꿔 줍니다.
전송 표준과 의미 표준
이번 장의 표준들은 두 가지 층층이 쌓인 역할로 깔끔하게 나뉘며, 둘을 혼동하는 것이 공장 통합에서 가장 흔한 실수입니다. 전송 표준(transport standards)은 시스템 사이로 바이트를 옮깁니다. 통신 프로토콜, 세션, 보안 봉투, 그리고 값에 주소를 부여하는 방식을 정의하죠. OPC UA와 MQTT가 여기에 속합니다. 의미 표준(semantic standards)은 의미를 보존합니다. 어휘, 단위, 관계를 정의해, 값이 이동한 뒤에도 여전히 같은 뜻을 갖게 합니다. Allotrope의 온톨로지, AnIML의 기법 정의, NIST UnitsML이 여기에 속합니다. 같은 물리적 측정값 — 생산 생물반응기에서 측정된 CHO(Chinese hamster ovary, 업계 표준 항체 생산 세포주) 생물반응기의 역가(titer) — 이 온전하게, 그리고 이해된 채로 도착하려면 두 계층 모두가 필요합니다. 전송은 얻었지만 의미를 얻지 못하면, 모호함을 실어 나르는 빠른 파이프를 갖게 됩니다. 바로 그 간극이 이번 장의 종착점입니다.
각 연결성 표준이 자리하는 곳: 전송 표준은 바이트를 옮기고, 의미 표준은 뜻을 보존합니다.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
공정 연결하기: OPC UA와 MTP
OPC UA: 요청 기반 표준
공정 장비를 연결하는 지배적인 표준은 OPC UA — OPC Unified Architecture로, 국제 표준 IEC 62541로 발행되었습니다 [1]. ("OPC"는 원래 OLE for Process Control을 뜻했지만, 현대의 표준은 그 약어를 넘어설 만큼 성장했습니다.) 지멘스(Siemens), ABB, 로크웰 오토메이션(Rockwell Automation) 같은 벤더들은 OPC UA가 내장된 산업용 제어 시스템을 출하하며, 자토리우스(Sartorius)와 에펜도르프(Eppendorf) 같은 바이오공정 장비 제조사들은 OPC UA 드라이버가 탑재된 생물반응기와 크로마토그래피 스키드를 출하합니다. 이 표준의 핵심 발상은 단순히 원시 숫자를 실어 나르는 것 이상을 한다는 데 있습니다. OPC UA는 정보 모델(information model)을 담아 운반합니다. 값 37.0 옆에, 이것이 온도이고 섭씨 단위로 측정되었으며 생물반응기 BR101에 속하고 타임스탬프와 품질 플래그를 지닌다는 정보를 함께 싣는 것입니다. 이렇게 구조화되고 자기 기술적인 객체 공간을 주소 공간(address space)이라고 부릅니다 [1]. 그 주소 공간 안의 한 노드는 예컨대 ServerName/Bioreactor/BR101/Temperature/Value로 주소가 지정될 수 있으며, 단위(°C), 타임스탬프(2026-06-13T14:23:07.123Z), 그리고 품질 플래그(Good, Uncertain, 또는 Bad)에 대한 속성을 함께 담습니다. 수신 시스템은 각 숫자가 무슨 뜻인지 미리 들을 필요가 없습니다. 데이터가 스스로를 설명하기 때문입니다.
OPC UA는 요청 기반(request-driven)입니다. 클라이언트가 연결을 열고 서버에게 무엇을 가지고 있느냐고 물은 뒤, 원하는 노드를 읽거나 그것을 구독합니다. 그 대화는 실제 보안 모델로 감싸여 있습니다. 데이터가 오가기 전에 클라이언트와 서버는 암호화 정책으로 보안 채널(secure channel)을 협상하고, 애플리케이션 인증서(certificate)를 교환·검증하며, 그 인증서를 신뢰 목록(trust list) — 서버가 대화조차 허용하는 피어들의 명시적 집합 — 과 대조해 서로를 신뢰할지 결정합니다. 그런 다음에야 세션(session)이 사용자 신원을 실어 나릅니다. 보안 정책이란 채널이 사용하는 암호 알고리즘 — 데이터를 어떻게 암호화하고, 변조되지 않았음을 증명하기 위해 각 메시지에 어떻게 서명하는지 — 을 고정하는, 이름 붙은 묶음일 뿐입니다. 오랫동안 자리를 지켜 온 기준선 정책은 Basic256Sha256이라는 이름의 정책으로, 현재 배치된 대부분의 장비가 여전히 협상하는 정책이자 오픈소스 동반 구현(이 시리즈의 Book 3으로, 이 표준들이 실행 가능한 코드가 되는 책)이 코드로 세우는 정책입니다. 다만 OPC 재단(OPC Foundation, OPC UA 표준을 관리하고 그 등록부를 발행하는 산업 컨소시엄)이 Basic256Sha256을 공식적으로 폐기 예정(deprecated)으로 지정하고 더 새로운 AES 기반 정책인 Aes128_Sha256_RsaOaep와 Aes256_Sha256_RsaPss를 선호하도록 했다는 점에 유의해야 합니다. 따라서 오늘날 새로 짓는(greenfield) 공장이라면 그쪽을 택하는 편이 낫습니다 — "현대의 기준선"이라는 것이 한 표준 안에서조차 계속 움직이는 과녁임을 일깨워 주는 대목이죠. 이것은 Book 3이 코드로 세우는 바로 그 주소 공간·인증서·신뢰 목록 장치이며 OT를 말하다: OPC UA, MQTT, Sparkplug B에서 Basic256Sha256 정책과 클라이언트가 읽어 들이는 DataValue까지 그대로 다룹니다.
OPC UA는 플랫폼 중립적이며 안전한 공장 네트워크를 위해 설계되었습니다. 이러한 강점 때문에 비교 공학 연구들은 이를 이른바 인더스트리 4.0(Industry 4.0, 디지털화되고 네트워크로 연결된 제조로의 전환)의 기준 연결성 프로토콜로 벤치마킹하며, MQTT 같은 더 가벼운 메시징 프로토콜과 견주어 그 성능을 시험합니다 [9]. 그러한 보안성과 자기 기술성은 규제 측면의 이점도 함께 가져옵니다. FDA 데이터 무결성 지침과 EU Annex 11에 따라 시스템 사이에 전송되는 데이터는 귀속 가능(attributable)하고 변조되지 않은 상태를 유지해야 하는데, OPC UA의 구조화된 주소 공간과 내장 보안은 그 관리 연속성(chain of custody)을 전자적으로 보존하는 데 도움을 줍니다 — 다음 장이 형식화하는 바로 그 ALCOA+ 관리 연속성입니다.
그림을 정직하게 유지하는 한 가지 미묘한 점이 있습니다. 요청 기반이 OPC UA가 취하는 유일한 형태는 아니라는 것입니다. 이 표준의 Part 14는 네이티브 PubSub 모델(클라이언트별 세션이 없는 발행/구독으로, UDP 멀티캐스트나 MQTT 자체 위에서 동작 가능)을 추가하고, OPC UA FX(Field eXchange)는 이를 결정론적인 제어기 대 제어기 트래픽 — 장비를 구동하는 프로그래머블 제어기들 사이의 직접 교환으로, 최선 노력(best-effort) 전달이 아니라 보장된 타이밍을 갖는 것 — 까지 아래로 확장합니다. 요청/응답 클라이언트-서버 모델은 데이터 관리를 다루는 독자가 가장 많이 마주치는 형태이지만, OPC UA와 다음 절에서 소개하는 발행/구독의 세계가 엄밀히 경쟁 진영인 것은 아닙니다.
플러그 앤 프로듀스(plug-and-produce)라는 표현은 플러그 앤 플레이(plug-and-play)의 공장 버전입니다. 새 장비를 연결하면 손으로 작성한 통합 작업을 거의 하지 않고도 작동하는 것이죠. 표준이 바로 이것을 가능하게 합니다.
MTP: 모듈형 플러그 앤 프로듀스
OPC UA는 기계들이 어떻게 대화하는지를 해결합니다. 두 번째 표준은 생산 모듈(module) 전체를 어떻게 기술해 블록을 쌓듯 조립할 수 있게 할지를 다룹니다. 바로 VDI/VDE/NAMUR 2658에 정의된 모듈 타입 패키지(Module Type Package, MTP)입니다 [2]. 이 표준은 세계를 두 가지 역할로 나눕니다. 물리적 모듈 — 예를 들어 자기 완결형 여과 스키드 — 은 공정 장비 어셈블리(Process Equipment Assembly, PEA)이며, MTP와 함께 출하됩니다. MTP는 그 모듈의 인터페이스, 서비스, 그리고 운영자 인터페이스(HMI)에 대한 기술을 담은 벤더 중립적 디지털 명세서입니다. 그러한 명세서들을 읽어 모듈들을 지휘하는 감독 시스템은 공정 오케스트레이션 계층(Process Orchestration Layer, POL)입니다. POL은 각 PEA의 MTP를 가져와 그 모듈을 자동으로 통합하며, OPC UA를 통해 통신합니다 [2]. 이것이 모듈형 플러그 앤 프로듀스(modular plug-and-produce)입니다. 모든 것을 다시 엔지니어링하는 대신, 제조사가 교체 가능한 단위들로 생산 라인을 재구성할 수 있게 해 주죠. 바로 집약화되고 일회용(single-use) 방식인 바이오공정이 요구하는 그 유연성입니다. 자토리우스(Sartorius)와 폴(Pall)을 비롯한 장비 제조사들은 최근 몇 년 사이 크로마토그래피, 완충액 조제, 여과 같은 단계를 위한 MTP 호환 스키드를 출시했습니다.
다운스트림 예시: Protein A 포획 스키드가 쏟아 내는 데이터
위의 표준들은 구체적인 다운스트림 단위공정에서 가장 실감 나게 다가옵니다. 정제 스키드야말로 가장 풍부하고 의사결정이 많이 실린 데이터 스트림이 태어나는 곳이기 때문입니다. 첫 번째 정제 단계인 Protein A 친화 포획(Protein A affinity capture) — 정화된 수확액에서 단일클론 항체를 붙잡아 내고 대부분의 불순물을 버리는 크로마토그래피 단계(Book 1의 포획 장에서 설명) — 을 봅시다. 포획 스키드는 바로 MTP 표준이 상정하는 자기 완결형 PEA의 전형입니다. Protein A 레진을 충전한 컬럼, 펌프, 밸브, UV 검출기를 갖추고, 네 단계의 로드 / 세척 / 용출 / 세정(load / wash / elute / clean) 주기를 POL이 시작하고 모니터링할 수 있는 MTP 서비스로 실행하죠. 가동 중에 그 OPC UA 주소 공간은 자기 기술적 DataValue의 실시간 스트림을 노출합니다 — UV280 흡광도(absorbance)(밀리흡광도 단위 mAU로, 단백질 용출 트레이스), 전도도(mS/cm), 입·출구 압력(bar), 유량(L/min), pH — 각각이 단위, 타임스탬프, 품질 플래그를 위쪽 BR101의 온도가 그랬던 것과 똑같이 함께 싣습니다. 스키드는 n² 문제 때문에 손으로 통합하기 까다로운 이벤트 데이터도 내보냅니다 — 단계 전환, 로드 용량을 산정할 때 기준으로 삼은 동적 결합 용량(dynamic binding capacity, DBC)(레진 리터당 항체 그램), 그리고 무엇보다 가치 있는 기록인, 용출 피크의 어느 구간을 제품으로 취할지를 결정하는 두 개의 운영자 설정 풀링 윈도우(pooling window) 컷 포인트입니다. 그 풀링 결정은 귀속 가능하고 변조되지 않은 채 배치 기록에 들어가야 하는 실시간 품질 판단입니다. 그것을 로컬 차트에서 다시 키 입력하는 대신 OPC UA 같은 자기 기술적 전송 위에 실어 나르는 것은, 검토 가능한 전자 기록과 감사에서 실패할 전사(transcription) 사이의 차이입니다. 한 권 더 나아가서 Book 3은 바로 이 다운스트림 크로마토그래피 다리를 코드로 구축해, 스키드의 태그와 그 풀링 결정을 맥락화된 기록으로 바꿉니다.
MQTT 위의 Sparkplug B: 발행/구독 백본
OPC UA는 요청 기반이고 풍부하지만, 장치가 수백 개이고 네트워크 링크가 가느다란 공장은 모든 소비자가 모든 서버를 폴링(polling)할 필요가 없는 가볍고 팬아웃(fan-out)되는 경로도 원합니다. 이것이 바로 참조 아키텍처 장이 그려 낸 OT/IT 이음새를 가로질러 데이터를 실어 나르는 발행/구독 백본입니다 — 에지 장치의 숲이 각각에 점대점 케이블을 두지 않고도 클라우드와 전사 소비자에게 데이터를 공급하게 해 주는 계층이죠. 그 전송 수단이 바로 MQTT(OASIS 표준이자 ISO/IEC 20922로도 발행됨 [12])입니다. 장치가 토픽(topic)에 발행하고 브로커(broker)가 각 메시지를 구독자 모두에게 부채꼴로 펼쳐 보내는 발행/구독(publish/subscribe) 프로토콜이죠. MQTT는 토양 센서나 생물반응기 스키드에서도 돌릴 만큼 검소하지만, 원시(raw) MQTT는 상태가 없고 토픽이 무질서합니다. 어떤 장치든 아무 문자열에나 무엇이든 발행할 수 있고, 구독자는 조용한 장치와 값이 변하지 않은 장치를 구분할 수 없습니다.
Sparkplug B(Eclipse Sparkplug 3.0.0)는 산업용으로 MQTT에 규율을 부여하는 개방형 명세입니다 [13]. 다섯 개 필드로 이루어진 엄격한 토픽 네임스페이스와 생/사 수명주기(birth/death lifecycle)를 고정합니다. 에지 노드(edge node)가 연결되면 출생(birth) 메시지(노드에 대한 NBIRTH, 그 아래 각 장치에 대한 DBIRTH)를 발행하는데, 이 메시지는 그 노드가 앞으로 보고할 모든 메트릭을 정의합니다 — 이름, 데이터 타입, 현재 값까지. 출생은 일종의 계약입니다. 출생에서 선언되지 않은 것은 이후에 나타날 수 없습니다. 그 뒤로 노드는 변한 것만 보냅니다 — NDATA / DDATA가 변경된 값만 싣고 나머지는 보내지 않죠. 이 예외 보고(report by exception)는 OPC UA 구독의 데드밴드(deadband) — 값이 다시 보낼 만큼 충분히 변하지 않았다고 보는 임계값 — 와 같은 절약 방식이며, 안정적인 공정에서 Sparkplug 버스가 조용히 유지되는 이유입니다.
영리한 부분은 죽음입니다. Sparkplug는 MQTT의 유언 메시지(Will message)에 기댑니다. 에지 노드가 연결될 때, 미리 작성한 NDEATH 페이로드를 QoS 1 — 메시지가 조용히 사라지지 않고 최소한 한 번은 도착함을 보장하는 MQTT 전달 보장 — 로 등록해 조용히 버려지지 않도록 브로커에게 넘겨줍니다. 그 후 연결이 끊기면 — 충돌, 케이블 분리, 정전 — 브로커가 스스로 그 미리 장전된 사망 증명서를 발행합니다. 폴링도, 타임아웃 추측도 없습니다. 네트워크는 킵얼라이브(keep-alive) 시간 — 장치가 연결될 때 설정되며, 그 시간이 지나도록 조용한 클라이언트는 사라진 것으로 간주되는 타임아웃 — 안에 그 장치가 사라졌음을 알게 됩니다. 조용히 죽은 센서 하나가 알아채지 못한 온도 일탈을 뜻할 수 있는 공정에서, 그 보장은 제값을 합니다.
대화를 시작하고 멈추는 두 가지 방식: OPC UA는 요청에 따라 보안 세션을 협상하고, Sparkplug B는 자신의 출생을 알리고 자신의 죽음을 미리 장전해 두어 버스가 결코 추측하게 두지 않습니다.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
Sparkplug는 통신 회선에 품질(quality)도 함께 싣는데, 알아 둘 만한 반전이 있습니다. 많은 에지 노드가 레거시 OPC DA 서버 — OPC Data Access로, OPC UA가 대체한 원조 OLE-for-Process-Control 인터페이스이며 설치된 장비 상당수에 여전히 내장되어 있습니다 — 를 앞에 두고 그 품질을 그대로 통과시켜, Good 판독이 OPC UA의 0이 아니라 정수 192(레거시 OPC DA의 "Good" 코드)로 나타나는 경우가 잦습니다. 같은 발상, 두 계통입니다 — 한 장치 안에서도 값이 서로 다른 두 품질 관례를 입을 수 있다는 작지만 실제적인 상기죠. Book 3은 바로 이 Sparkplug 버스와 seq/bdSeq 시퀀싱, 그리고 192 대 0의 미묘함을 OT를 말하다: OPC UA, MQTT, Sparkplug B에서 구축합니다.
연결성 데이터 포인트의 해부: OPC UA DataValue와 Sparkplug 메트릭
다른 장들은 모두 가만히 있는 기록 — 태그, 배치 행, 시료 — 을 해부했습니다. 연결성의 데이터 포인트는 다릅니다. 그것은 이동 중인 판독값이며, 두 지배적 표준은 그 같은 판독값을 두 가지 다른 형태로 실어 나릅니다. 아래 그림은 둘을 나란히 놓습니다. 왼쪽에서 OPC UA 클라이언트는 생물반응기의 역가를 읽고 맨숫자 4.902가 아니라 DataValue — 값, 품질, 시간이 한데 묶인 것 — 를 돌려받는데, 이는 단위, 유효 범위, 그리고 이웃 노드를 향한 타입 지정 참조(References)까지 함께 광고하는 노드에 매달려 있습니다. 오른쪽에서 같은 판독값은 Sparkplug 버스를 타고 메트릭(metric)으로 흐릅니다. 주소는 토픽에 있고, 봉투(envelope)는 타임스탬프와 한 바퀴 도는 시퀀스 번호(구독자가 누락된 메시지를 알아챌 수 있게 해 주는 카운터로, 최댓값 255를 넘기면 0으로 되돌아갑니다)를 싣고, 메트릭 자체는 값, 별칭(alias), 데이터 타입, 그리고 단위와 품질을 담은 properties 카드를 이름과 함께 담습니다.
같은 4.902 g/L 역가 판독값을 두 가지 방식으로 실어 나른 모습: 요청에 따라 답해진 OPC UA
DataValue와 버스에서 알려진 Sparkplug B 메트릭 — 둘 다 값을 품질·단위·시간에 묶으며, 어느 쪽도 결코 맨숫자가 아닙니다.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
요점은 어느 형태가 "더 낫다"가 아닙니다. 두 표준 모두 이 책 전체가 주장하는 바로 그 규율에 독립적으로 도달했다는 것입니다. 측정값은 결코 그냥 숫자가 아니라, 숫자 더하기 그 의미라는 규율 말입니다. 그 구조화된 판독값이 바로 센서에서 태어난 자기 기술적 데이터 포인트이고, ISA-95 계층을 타고 공장 정보 시스템으로 올라가는 제어 시스템 신호이며, 한 권 더 나아가서는 Book 3이 코드로 세우는 구체적인 OPC UA 노드와 Sparkplug 메시지입니다.
실험실 연결하기: SiLA 2, AnIML, Allotrope
실험실은 자체적인 연결성 전통을 가지고 있습니다. 장비가 공정 장비보다도 훨씬 더 다양하기 때문입니다. 가장 중요한 표준은 세 가지입니다.
SiLA 2는 장치 통합(device integration) — 실험 장비를 어떻게 제어하고 그 값을 읽어 내는지 — 를 표준화합니다 [3]. 이 표준은 서비스 지향(service-oriented) 설계를 사용합니다. 각 장비가 자신의 기능을 네트워크 서비스로 노출하고(작고 독립적인 단위들이 각각 하나의 일을 맡는 마이크로서비스(microservice) 방식), 그 기능들이 기계가 읽을 수 있는 기능 정의 언어(Feature Definition Language)로 기술되어, 소프트웨어가 맞춤형 드라이버 없이도 장비가 무엇을 할 수 있는지 발견할 수 있게 합니다 [3]. 내부적으로 SiLA 2는 그 서비스 호출을 gRPC — HTTP/2와 프로토콜 버퍼(Protocol Buffers)를 사용하는 현대적이고 언어 중립적인 원격 프로시저 호출(remote-procedure-call) 프레임워크 — 위에 실어 나릅니다. 바로 이 덕분에 파이썬 오케스트레이션 스크립트와 벤더의 C++ 장비 펌웨어가 손으로 작성한 드라이버 없이도 같은 기능(Feature)을 말할 수 있는 것이죠. 테칸(Tecan)과 해밀턴(Hamilton) 같은 실험실 자동화 벤더들은 자사 장비와 플랫폼에서 SiLA 2 지원을 진전시키고 있는 곳들에 속합니다. SiLA 2는 장비에 명령을 내리는 일을 관장합니다.
지금까지의 표준은 시스템들이 어떻게 대화하는지를 관장합니다. 하지만 장비가 만들어 내는 데이터 — 실제 숫자, 스펙트럼, 결과 — 에는 그 자체의 표준이 필요합니다. AnIML — Analytical Information Markup Language, ASTM(소위원회 E13.15)에서 개발한 개방형 XML 형식 — 은 초기의 토대가 된 노력이었으며, 안정적인 코어(core)에 측정 유형별로 끼워 넣을 수 있는 기법 정의(technique definitions)를 더한 구조로 되어 있습니다. 덕분에 서로 다른 방법에서 나온 결과들이 완전한 데이터 무결성(data integrity) 맥락을 갖춘 하나의 컨테이너를 공유하게 됩니다 [5]. 핵심은 모든 측정값이 파일 안에 자기 자신의 맥락을 함께 지닌다는 점입니다. 간소화한 AnIML 형식의 기록을 보면 이것이 구체적으로 와닿습니다.
<Result name="pH Measurement">
<SeriesSet>
<Series name="pH" dependency="dependent">
<IndividualValueSet>
<F>7.20</F>
</IndividualValueSet>
<Unit label="pH" />
</Series>
</SeriesSet>
<Method name="SOP-PH-001 pH Determination" />
<Instrument id="PH-METER-07" />
<Timestamp>2026-06-13T14:23:07.123Z</Timestamp>
</Result>
값, 그 단위, 그 값을 만들어 낸 방법, 장비, 그리고 측정 시각이 모두 함께 이동합니다. AnIML은 더 오래된 ASTM 분석 데이터 교환 규격들 — ANDI/NetCDF 분석 데이터 프로토콜로, 그 질량분석(mass-spectrometry) 쌍이 ASTM E2077 명세(specification)와 ASTM E2078 가이드(guide)입니다 — 에서 발전했습니다 [6].
가장 활발한 현대의 노력은 앨로트로프 재단(Allotrope Foundation)의 스택입니다. 그 중심축은 일련의 온톨로지(ontologies) — 이름뿐 아니라 각 용어의 정의된 관계와 의미까지 고정하는 형식적이고 기계가 읽을 수 있는 어휘 체계, 곧 AFO(Allotrope Foundation Ontologies로 알려짐) — 입니다 [4]. 이 스택은 그렇게 공유된 의미에 맞춰 데이터를 실어 나르는 두 가지 방법을 제공합니다. 앨로트로프 데이터 형식(Allotrope Data Format, ADF)은 원시 숫자와 맥락, 그리고 기술을 한데 담은 단일 자기 완결형 파일(대용량 과학 데이터셋을 위해 설계된 이진 컨테이너 형식인 HDF5 기반)로, 대용량 장비 데이터셋에 잘 맞습니다. 앨로트로프 단순 모델(Allotrope Simple Model, ASM)은 같은 모델링된 의미를 더 가볍게, JSON으로 표현한 것입니다. 평범한 JSON이기에 일상적인 소프트웨어에서 생성하고 소비하기가 훨씬 쉽고, 그래서 일상적인 결과 교환에서는 둘 중 더 널리 채택되어 왔습니다. 로슈(Roche) 같은 회원사와 애질런트(Agilent), 시마즈(Shimadzu) 같은 장비 제조사들이 이 재단을 통해 이러한 온톨로지에 기여하고 있습니다. 이 세 가지 조각 모두의 목표는 벤더에 구애받지 않는(vendor-agnostic) 분석 데이터입니다. 어느 회사의 장비가 그 결과를 만들어 냈든 같은 의미를 갖는 결과 말입니다 [4].
실험실 정보 시스템을 위한 표준은 이들과는 별개입니다. ASTM E1578(실험실 정보학(laboratory informatics)을 위한 표준 가이드)은 실험실 정보 관리 시스템(LIMS, laboratory information management system)과 그에 관련된 실험실 소프트웨어 시스템 — LES(laboratory execution system, 실험실 실행 시스템), ELN(electronic lab notebook, 전자 실험 노트), SDMS(scientific data management system, 과학 데이터 관리 시스템), CDS(chromatography data system, 크로마토그래피 데이터 시스템) — 곧 시료와 시험을 추적하는 소프트웨어를 포괄하며, 통신 형식(wire format)이 아니라 공통 용어와 모범 사례를 제공합니다. 어떤 표준이 어떤 계층을 관장하는지 아는 것만으로도 상당한 혼란을 막을 수 있습니다.
비즈니스 연결하기: ISA-95와 B2MML
더 위로 올라가면, 공장의 MES(제조실행시스템 — 실제 생산을 운영하는 소프트웨어)가 ERP(전사적 자원 관리 — 주문, 재고, 재무를 위한 비즈니스 소프트웨어)와 정보를 주고받아야 합니다. 여기서의 합의가 바로 ISA-95이며, 국제적으로는 IEC 62264로 표준화되어 있습니다 [7]. ISA-95는 지난 장에서 계층 구조를 정리하는 데 사용한 바로 그 표준입니다. 여기서는 그 객체 모델(object models) — ProductionSchedule과 그 안의 ProductionRequest들, MaterialLot, MaterialDefinition과 같은 이름 붙은 객체에 대한 형식적 정의 — 을 사용합니다 [7].
이 객체들을 시스템 사이에 보내기 위해, 업계는 B2MML(Business To Manufacturing Markup Language)을 사용합니다. 이는 무역 협회 MESA International이 관리하는 일련의 로열티 없는(royalty-free) XML 스키마로, ERP/MES 데이터를 양방향으로 교환하기 위해 ISA-95 객체 모델을 구현한 것입니다 [7]. (같은 스키마 계열에는 ISA-88 배치 제어 객체를 구현하는 BatchML도 포함됩니다. ISA-88은 MES와 ERP가 데이터를 어떻게 교환하는지가 아니라 배치(batch) 레시피가 어떻게 구조화되고 실행되는지를 다루는, ISA-95의 자매 표준입니다.) 비즈니스 시스템이 "제품 X 바이알 500개를 만들라"는 지시를 내리면, 그 ProductionRequest를 담은 B2MML ProductionSchedule을 공장으로 내려보내고, 공장은 그에 대응하는 ProductionResponse와 MaterialLot 기록을 다시 위로 돌려보냅니다. 규제 대상 공장에서 이러한 전자 메시지는 진공 속에서 오갈 수 없습니다. 그러한 교환이 GMP 전자 기록을 생성하거나 변경하는 경우 21 CFR Part 11과 EU Annex 11은 변조 흔적이 남는(tamper-evident) 감사 추적(audit trail)을, 그리고 전자적으로 승인되는 기록에는 유효한 전자 서명(electronic signature)을 기대합니다 — 두 법규 모두 별도의 장 기록, 서명, 그리고 법에서 다룹니다. 그래서 연결성 계층과 규정 준수 계층은 함께 설계됩니다.
표준은 스스로를 검증하지 않는다: 적격성 평가와 CSV에서 CSA로의 전환
OPC UA나 B2MML에 규격이 맞는 연결이라고 해서 그 사실만으로 GMP 사용에 적격(qualified)인 것은 아닙니다. 규격 준수는 바이트가 파싱된다는 것을 증명할 뿐, 통합이 목적에 부합함을 증명하지는 않습니다. 연결된 시스템이 규제 대상 배치를 가동하려면 그 전에 검증(validation)(증명되고 문서화되며 변경 관리 아래 유지됨)을 거치는데, 전통적으로는 세 가지 적격성 평가 단계 IQ / OQ / PQ를 통합니다 — 설치 적격성 평가(Installation Qualification)(시스템과 그 드라이버가 명세대로 설치됨), 운영 적격성 평가(Operational Qualification)(각 OPC UA 서비스, 주소 공간 노드, B2MML 메시지가 시험 환경에서 명세대로 동작함), 성능 적격성 평가(Performance Qualification)(통합된 라인이 실제 제품에서 수용 기준을 충족함). MTP의 플러그 앤 프로듀스 약속은 그 노력을 없애는 것이 아니라 어디에 떨어질지를 옮길 뿐입니다. 벤더의 적격한 PEA는 통합 담당자가 활용할 수 있는 자체 공장·현장 인수 시험(Factory and Site Acceptance Testing, FAT/SAT) 증거를 지니므로, POL은 모듈을 처음부터 다시가 아니라 인터페이스와 오케스트레이션을 다시 적격화합니다. 여기는 또한 연결성 계층이 컴퓨터화 시스템 검증 장이 온전히 풀어놓는 CSV(컴퓨터화 시스템 검증, Computerized System Validation)에서 위험 기반 CSA(컴퓨터 소프트웨어 보증, Computer Software Assurance)로의 전환과 만나는 지점입니다. GAMP 5 / CSA 관점에서 인터페이스에 들이는 보증 노력은 그 환자 위험에 비례합니다 — 단지 바이알 일정을 짜는 B2MML 링크는 멸균 필터에 설정값을 쓰는 OPC UA 채널보다 더 가볍고 스크립트 없는 점검을 받습니다. 그리고 데이터를 흐르게 하는 바로 그 연결성이 그 데이터를 끝에서 끝까지 ALCOA+ — 귀속 가능(Attributable), 판독 가능(Legible), 동시 기록(Contemporaneous), 원본(Original), 정확(Accurate), 더해 완전(Complete), 일관(Consistent), 영속(Enduring), 이용 가능(Available) — 으로 만듭니다. 안전하고 인증된 채널 위에 실린 자기 기술적 DataValue는 그 원천 노드에 귀속 가능하고 실제 타임스탬프에 동시 기록된 채로 도착하는데, 바로 다음 장이 형식화하는 그 속성들이죠. 같은 규율이 기술 이전(tech transfer) — 검증된 공정을 개발 사이트에서 제조 사이트로 옮기거나 스케일업하는 일 — 도 관장합니다. 레시피는 두 사이트의 시스템이 각 태그가 무엇을 뜻하는지에 합의할 때만 깔끔하게 이전되며, 그것이 바로 이번 장 끝부분이 되돌아가는 미해결의 의미적 정렬 문제이기 때문입니다.
구문적 상호운용성과 의미적 상호운용성
지금까지의 모든 표준은 한 문제의 일부를 풀면서 더 깊은 문제를 드러냅니다. 상호운용성(interoperability) — 시스템들이 함께 작동하는 능력 — 에는 서로 다른 두 종류가 있습니다.
구문적 상호운용성(syntactic interoperability)은 시스템들이 형식(format)에 합의한다는 뜻입니다. 메시지가 파싱되고, 필드가 맞아떨어지며, 바이트가 온전히 도착하는 것이죠. 의미적 상호운용성(semantic interoperability)은 시스템들이 의미(meaning)에 합의한다는 뜻입니다. 값이 같은 척도와 같은 단위로 표현된다는 것 [8], 그리고 한 시스템의 pH와 다른 시스템의 acidity가 같은 조건에서 동일한 물리량을 가리킨다는 것을 양쪽 모두가 합의하는 것입니다. 구문은 바이트를 옮기고, 의미는 뜻을 보존합니다.
이것은 말꼬리 잡기가 아닙니다. 두 장비가 모두 유효한 XML — 완벽한 구문 — 을 내보내면서도 같은 측정값에 서로 다른 이름표를 붙이거나 서로 다른 단위로 보고할 수 있고, 그러면 소프트웨어는 결코 합쳐서는 안 될 숫자들을 조용히 합쳐 버립니다. 한 분석기는 결과를 맨숫자 스칼라 7.2로 보고하는데, 다른 분석기는 이를 <pH units="pH_units" value="7.2"/>로 감싸는 경우를 떠올려 보세요. 두 데이터 피드를 병합하면서 단위 필드를 한 번도 확인하지 않는 프로그램은 서로 다른 스케일 팩터를 조용히 적용해, 어떤 오류도 표면에 드러나지 않은 채 병합된 데이터셋을 손상시킬 수 있습니다. 그 해법은 한 단계 더 깊은 곳에 있습니다. 바로 의미에 대한 기계가 읽을 수 있는 정의입니다. NIST의 UnitsML — AnIML 같은 형식 안에 모호하지 않은 측정 단위를 끼워 넣기 위한 마크업 — 은 그 의미 계층을 공급하는 구체적인 사례이며 [8], Allotrope 같은 표준이 온톨로지에 그토록 많은 투자를 하는 이유가 바로 이것입니다 [4].
의미 계층의 실제 모습
"기계가 읽을 수 있는 의미"가 실제로 무엇인지 보는 것은 가치가 있습니다. 뒤이은 두 장이 이것을 본격적으로 구축하며, 그 필요성이 처음으로 절실해지는 곳이 바로 이번 장이기 때문입니다. OPC UA를 통해 DataValue — 값, 단위, 품질, 시간 — 로 도착하는 판독값은 작은 RDF 트리플(triple) 집합(지식 그래프를 이루는 주어–술어–목적어 사실 진술)으로 쓸 수 있어서, 전송이 속성으로 실어 나른 의미가 추론기가 작동할 수 있는 의미가 됩니다. 같은 BR101 역가 판독값을 Turtle(RDF의 표준 텍스트 구문으로, bp:는 공장 어휘를 위한 자리표시자 네임스페이스, qudt:는 QUDT 단위 온톨로지)로 쓰면 이렇게 보입니다.
# 자기 기술적 역가 판독값 하나를 RDF 트리플로 — OPC UA DataValue의 의미적 쌍둥이
bp:BR101-titer-2026-06-13T1423 a bp:TiterMeasurement ;
bp:ofBatch bp:BATCH-2026-001 ;
bp:measuredOn bp:BR101 ;
bp:hasValue 4.902 ;
bp:hasUnit qudt:GM-PER-L ; # grams per litre, NOT mg/L
bp:hasQuality "Good" ;
bp:resultTime "2026-06-13T14:23:07.123Z"^^xsd:dateTime .
이것은 온톨로지와 FAIR 장과 Book 4가 형식화하는 바로 그 규율로, 온톨로지는 태그의 이름이 아니라 그 정의된 관계와 의미를 고정합니다. 그 책에서 빌려올 만한 두 가지 발상이 더 있는데, 이번 장이 드러낸 간극에 직접 닿아 있습니다. 첫째, 역량 질문(competency question) — 데이터가 답할 수 있어야 하는 질문으로, 온톨로지 명세의 단위(명세와 ORSD 참고) — 는 "내 그래프의 모든 역가에 단위가 있는가?"를 실행 가능한 SPARQL(RDF의 표준 질의 언어) 질의로 바꿔, 위반 사례를 반환하거나 아무것도 반환하지 않게 합니다.
# CQ: 모든 역가 측정은 명시적 단위를 선언해야 한다 — 그렇지 않은 것을 나열하라
PREFIX bp: <https://example.org/bioproc#>
SELECT ?m WHERE {
?m a bp:TiterMeasurement .
FILTER NOT EXISTS { ?m bp:hasUnit ?u }
}
둘째, 맨숫자 7.2가 위반한 단위 규칙은 사람이 기억해야 하는 SOP 속 산문이 아닙니다 — 그것은 단위가 없는 측정을 실패시키는 SHACL 셰이프(shape)(Shapes Constraint Language, 그래프 데이터에 대한 폐쇄 세계 게이트, 출시 게이트와 SHACL 참고)가 될 수 있으며, 출시 게이트가 누락된 무균 시험을 실패시키는 것과 똑같습니다.
# SHACL: 역가 측정은 정확히 하나의 명시적 단위를 지니지 않으면 무효
bp:TiterShape a sh:NodeShape ;
sh:targetClass bp:TiterMeasurement ;
sh:property [ sh:path bp:hasUnit ; sh:minCount 1 ; sh:maxCount 1 ;
sh:message "A titer measurement must declare exactly one explicit unit." ] .
Book 4가 BFO에서 끌어내는 더 깊은 모델링의 요점은, 이번 장이 이름을 붙이지 않은 채 이미 마주친 것입니다. 연결성 데이터 포인트는 발생자(occurrent) — 한순간에 일어나고 곧 끝나는 측정 사건 — 으로서, 역가를 시간에 걸쳐 지니고 지속하는 항체 배치인 지속자(continuant)에 묶여 있습니다. OPC UA의 sourceTimestamp와 Sparkplug의 봉투 타임스탬프는 둘 다 발생자가 언제 일어났는지를 못 박는 것이며, 그것을 측정된 대상과 구분해 두는 것이야말로 한 배치의 계보를 수천 개의 판독값에 걸쳐 추적할 수 있게 해 줍니다. 전송은 이 사실들을 속성으로 실어 날랐고, 의미 계층은 그것을 기계가 질의하고 제약하고 추론할 수 있는 진술로 바꿉니다 — 이것이 이번 장에서 뒤이은 의미적 상호운용성과 온톨로지 장으로 이어지는 다리입니다.
미해결 과제: 여러 벤더 배치에 걸친 의미적 정렬
이번 장을 해결된 문제로 읽고 싶은 유혹이 있습니다 — OPC UA를 도입하고 그 위에 온톨로지를 얹으면 의미는 알아서 해결된다는 식이죠. 그렇지 않으며, 그 간극은 구체적입니다. 두 벤더의 생물반응기 스키드 두 대가 모두 완전히 규격에 맞는 OPC UA 서버를 출하한다고 상상해 보세요. 둘 다 구문적으로는 완벽합니다. 그런데 한쪽은 역가 판독값을 Bioreactor/BR101/Titer라는 주소에 리터당 그램 단위로 노출하고 품질은 OPC UA의 0으로 보고하는 반면, 다른 한쪽은 그것을 Reactor1/PV/Product_Conc라는 주소에 리터당 밀리그램 단위로 노출하고 품질은 레거시 OPC DA의 192로 통과시킵니다. 깨진 것은 없습니다. 두 서버 모두 표준을 따릅니다. 두 서버를 모두 구독하는 컬렉터는 여전히 사람이 직접 알려 주어야 합니다 — 이 두 주소 공간이 같은 물리량을 가리키며, 둘을 비교하려면 한쪽 피드를 천 배로 스케일링해야 한다고 말이죠.
이 문제에 대한 OPC UA의 답은 컴패니언 명세(companion specification) — 주어진 종류의 장비에 대해 주소 공간 배치, 노드 이름, 단위를 고정하는 도메인별 합의로, 규격에 맞는 두 서버가 같은 측정값을 같은 방식으로 노출하게 합니다. OPC 재단(OPC Foundation)은 펌프, 공작 기계, 분석기기 등 여러 도메인에 대해 이러한 명세의 등록부(registry)를 발행합니다 [10]. 우리 업계의 문제는 그 등록부에 없는 것입니다. CHO(Chinese hamster ovary) 포유류 세포 생물반응기를 위한 발행된 컴패니언 명세는 존재하지 않습니다. 그래서 실제로는 통합 담당자마다 각 벤더의 주소 공간을 손으로 매핑하고, 그 매핑은 맞춤형이고 문서화되지 않았으며, 단위와 품질 관례가 엔지니어가 마침 예상한 그대로일 것이라고 조용히 가정합니다 — 잘못 구성된 서버 문제가 바로 경고하는 그 가정 말입니다. (OPC UA는 격리된 공장 네트워크를 위해 설계되었지만, 실제로는 잘못된 구성 탓에 일부 서버가 공개 인터넷에 노출되고 마는데 — 바로 그런 서버들을 찾아 스캔한 그 2020년 인터넷 전수 연구는 대부분의 도달 가능한 OPC UA 서버가 바로 이런 종류의 세부를 잘못 구성했다고 — Basic256Sha256 정책을 광고하면서도 그 정책과 맞지 않는 인증서를 제시한 서버가 수백 대였다는 점을 포함해 — 밝혔으며 [11], 이는 "규격 준수"와 "올바르게 배치됨"이 서로 다른 주장임을 일깨워 줍니다.) Allotrope의 AFO는 분석 의미의 공유 온톨로지로 실험실 쪽에서 같은 문제를 공략하지만 [4], AFO 역시 가동 중인 생물반응기의 공정 태그를 기술하지는 않습니다.
그러니 정직한 현 수준은 이렇습니다. 여러 벤더에 걸친 바이오공정 데이터의 전송은 해결되고 표준화되고 안전한 문제이지만, 그 데이터의 의미적 정렬은 여전히 대체로 수작업이고 배치마다 다르며 발행된 생물반응기 컴패니언 명세의 뒷받침이 없습니다. 그것이 뒤이어 나오는 의미적 상호운용성과 온톨로지 장이 승리의 한 바퀴가 아니라 진정으로 열려 있는 최전선인 이유이며, Book 3이 히스토리언에서 MES와 ERP에 이르기까지 실제 시스템들을 손으로 잇는 데 여러 장을 쓰는 이유입니다 — 어떤 표준도 그것을 대신 해 주지 않기 때문이죠.
누락된 컴패니언 명세는 머신러닝 문제이기도 하다
위의 두 벤더 불일치는 단지 통합상의 골칫거리가 아닙니다. 그것은 합쳐진 데이터로 학습한 모든 모델을 조용히 죽이는 살인자입니다. 소프트 센서(느리고 비싼 실험실 값 — 여기서는 역가 — 을 값싼 온라인 신호로부터 추론하는 소프트웨어 모델로, Book 5의 핵심 객체)는 바로 이번 장이 기술하는 DataValue 스트림을 소비합니다. 즉 자기 기술적 주소 공간이 그것을 먹여 살리는 것이죠. 그래서 한 스키드가 Bioreactor/BR101/Titer를 리터당 그램으로 보고하고 다른 스키드가 Reactor1/PV/Product_Conc를 리터당 밀리그램으로 보고할 때, 손으로 작성한 매핑으로 두 피드를 잇는 모델은 그 매핑이 틀린 모든 가정을 그대로 물려받습니다 — 천 배의 스케일 오류가 천 배의 피처 오류가 되어, 마치 그것이 생물학인 양 학습됩니다. 위의 의미 계층은 모델을 위한 학술적 위생이 아닙니다. 그것은 피처(feature)와 잡음(artifact)의 차이입니다.
세 가지 머신러닝상의 귀결이 직접 따라오며, 각각은 Book 5에서 전개됩니다.
- 주소 공간 드리프트는 모델이 감시해야 하는 입력 분포 이동입니다. Book 5의 MLOps 장은 모델 성능 저하를 공변량 이동(covariate shift)(입력이 움직임)과 개념 드리프트(concept drift)(입력-답 관계가 움직임)로 나누고, 앞쪽을 모집단 안정성 지수(Population Stability Index, PSI) — 입력 분포가 모델이 학습한 분포로부터 얼마나 멀어졌는지를 재는 표준 척도 — 로 감시합니다. 태그를 조용히 다시 스케일하는 벤더 펌웨어 업데이트나, 장비 교체 후 다시 매핑된 주소 공간은 모델이 한 번도 겪지 않은 공변량 이동으로 잡힙니다 — 공정 드리프트와 연결성 드리프트가 같은 통계적 신호를 입는 셈이죠. 교훈은 날카롭습니다. 정렬되지 않은 주소 공간이 먹이는 모델은 실제 생물학적 일탈과 단위 재매핑을 구분할 수 없으며, 오직 의미 계층만이 둘을 갈라놓습니다.
- 벤더 간 데이터는 배치 그룹 분할과 누수 없는 분할을 강제합니다. Book 5의 데이터 장은 바이오공정 모델을 검증하는 올바른 방법이 배치 그룹 분할(batch-grouped split) — 주어진 배치의 모든 판독값을 학습 또는 시험 한쪽에 통째로 넣고 결코 양쪽에 걸치지 않음 — 이며, 그룹별 또는 한 배치씩 빼는(leave-one-batch-out) 교차검증(어느 배치를 보류할지 회전)으로 채점한다고 보여 줍니다. 행 단위 무작위 분할은 거의 동일한 이웃 판독값들을 학습/시험 경계에 흩뿌려 환상의 점수를 보고합니다. 오직 맥락화가 붙여 주는
batch_id— 연결성 계층이 온전히 실어 날라야 하는 바로 그 정체성 — 만이 정직한 분할을 가능하게 합니다. 두 벤더의 주소 공간을 정렬하는 컴패니언 명세가 없으면, 그 분할이 기대는 배치 정체성 자체가 손으로 매핑되고 취약합니다. - 컴패니언 명세의 공백은 곧 배치 간 일반화의 공백입니다. 한 벤더의 스키드에서 보정된 소프트 센서는 두 주소 공간을 화해시키는 무언가가 있기 전까지는 다른 벤더의 스키드로 옮겨지지 않습니다 — 바로 Book 5가 검증 역설(validation paradox)이라 부르는 배치 간·장비 간 일반화 문제죠. 모델은 한 배치 안에서는 훌륭해 보이다가 다르게 매핑된 서버의 첫 판독값에서 완전히 실패할 수 있습니다. 정렬되지 않은 단위 필드가 병합을 손상시키는 것과 같은 이유에서입니다. 이번 장이 열린 채로 남기는 의미적 정렬이야말로 신뢰할 수 있고 이전 가능한 모델이 필요로 하는 전제조건 — 추적 가능한 정체성을 갖춘 깨끗하고 거버넌스된 피처 — 이며, 그래서 Book 5는 이 책의 데이터 관리 작업을 나중에 덧붙일 일이 아니라 장애물 1순위로 취급합니다.
왜 중요한가
데이터 관리에서 얻는 교훈은 연결성은 필요하지만 충분하지는 않다는 것입니다. OPC UA, MTP, SiLA 2, AnIML, Allotrope, B2MML을 도입하면 n² 문제를 푼 셈입니다. 이제 데이터가 공장과 실험실 전반에 걸쳐 저렴하고 안정적으로 흐릅니다. 하지만 흐르는 데이터가 신뢰할 수 있고 비교 가능한 데이터와 같지는 않습니다. 의미가 끝에서 끝까지 보존되지 않으면, 오해를 효율적으로 전달하는 빠른 파이프라인을 짓는 셈이 됩니다. 따라서 표준을 고르는 일은 두 부분으로 이루어진 결정입니다. 전송에 관한 선택(어떤 프로토콜을 쓸 것인가)과 의미에 관한 선택(어떤 의미의 어휘를 쓸 것인가)이며, 두 번째를 건너뛰는 것이 이 분야에서 가장 값비싼 실수입니다.
실제 산업 현장에서는
이 표준들은 이상에 머무는 것이 아니라, 실제로 가동되는 공장이 만들어지는 방식입니다. OPC UA는 새로운 공정 자동화의 기본 골격이고 [1][9], MTP 기반의 모듈형 단위는 주요 장비 벤더들이 출하하고 있으며 [2], SiLA 2와 Allotrope는 제약회사와 장비 제조사로 이루어진 산업 컨소시엄을 통해 발전하고 있습니다 [3][4]. 실제로 두 전송 방식이 단독으로 끝에서 끝까지 가동되는 경우는 드뭅니다. 에지 게이트웨이(edge gateway)가 OT/IT 이음새에 자리해 아래로는 장비에 OPC UA로 말하고 위로는 Sparkplug 버스에 다시 발행하죠 — Book 3이 에지 게이트웨이 장에서 구축하는 패턴입니다. 실시간 실험 데이터 개념 증명(proof of concept) 노력들은 바로 이번 장이 드러낸 그 이음새에 존재합니다. 장비, 실험실, 협력 조직을 단순히 연결하는 데 그치지 않고 의미적으로 정렬하여, 한곳에서 측정된 숫자가 그것이 거쳐 가는 모든 곳에서 같은 뜻을 갖게 하는 것이죠. 그것이 이번 장에서 이 책의 제4부로 이어지는 다리입니다.
핵심 용어
- 표준(standard) — 서로 다른 시스템이 같은 방식으로 데이터를 교환할 수 있게 해 주는, 발행되고 공유된 합의.
- 점대점 통합(point-to-point integration) — 시스템을 쌍마다 하나의 맞춤형 인터페이스로 연결하는 방식; n² 문제를 겪는 구조.
- n² 문제(n² problem) — 시스템이 늘어남에 따라 필요한 연결 수가 폭발하는 현상.
- OPC UA (IEC 62541) — 지배적이고 요청 기반인 공정 연결성 표준으로, 단순한 원시 값이 아니라 자기 기술적인 정보 모델을 실어 나르는 표준.
- 정보 모델 / 주소 공간(information model / address space) — OPC UA 내부에서 데이터를 구조화되고 자기 기술적으로 조직한 것.
- DataValue — 값을 그 품질(
StatusCode)과 시간(원본·서버 타임스탬프)에 묶어, 판독값이 결코 맨숫자가 되지 않게 하는 OPC UA의 묶음. - MQTT / Sparkplug B — 가벼운 발행/구독 전송(MQTT)을, Sparkplug B의 엄격한 토픽 네임스페이스와 생/사 수명주기로 산업용으로 규율한 것.
- 예외 보고(report by exception) — 최초 정의 이후에는 변경된 값만 보내는 것으로, Sparkplug 데이터 메시지와 OPC UA 구독이 공유하는 절약 방식.
- 컴패니언 명세(companion specification) — 주소 공간 배치, 노드 이름, 단위를 고정해 규격에 맞는 서버들이 같은 측정값을 같은 방식으로 노출하게 하는 도메인별 OPC UA 합의.
- 플러그 앤 프로듀스(plug-and-produce) — 손으로 작성하는 통합을 최소화하면서 장비를 추가할 수 있는 공장의 능력.
- MTP (Module Type Package, VDI/VDE/NAMUR 2658) — 생산 모듈(각각이 하나의 공정 장비 어셈블리, PEA)을 공정 오케스트레이션 계층(POL) 아래에서 블록처럼 조립할 수 있게 해 주는 벤더 중립적 명세서.
- SiLA 2 — gRPC 위에서 실어 나르며 실험 장비를 통합하고 명령하기 위한 서비스 지향 표준.
- AnIML — 분석 결과를 완전한 맥락과 함께 저장하기 위한, ASTM에서 개발한 개방형 XML 형식.
- Allotrope (ADF / ASM / AFO) — 의미의 온톨로지를 포함해 벤더에 구애받지 않는 분석 데이터를 위한 현대적 스택.
- ASTM E1578 — 실험실 정보학(laboratory informatics, LIMS 및 관련 시스템)을 위한 표준 가이드.
- ISA-95 / IEC 62264 — 전사-제어 통합 표준과 그 객체 모델.
- B2MML — ERP-MES 메시징을 양방향으로 하는 데 쓰이는 ISA-95의 XML 구현.
- 구문적 상호운용성(syntactic interoperability) — 데이터 형식에 대한 합의.
- 의미적 상호운용성(semantic interoperability) — 데이터 의미에 대한 합의.
- Protein A 포획 스키드(Protein A capture skid) — 첫 번째 다운스트림 정제 PEA로, 그 OPC UA 주소 공간이 UV280, 전도도, 압력, 유량, pH, 로드 기준으로 삼은 동적 결합 용량, 그리고 용출 피크의 어느 구간을 제품으로 취할지 결정하는 운영자 설정 풀링 윈도우 컷 포인트를 노출한다.
- RDF 트리플 / SPARQL / SHACL — 의미 계층의 삼총사: 주어–술어–목적어 사실 진술, 그것을 읽는 질의 언어, 그리고 그것을 게이트하는 폐쇄 세계 셰이프(예: 단위가 없는 역가를 실패시킴).
- 지속자 대 발생자(continuant vs. occurrent) — 지속하는 것(항체 배치)과 일어나고 끝나는 사건(측정)을 가르는 BFO의 구분; 연결성 데이터 포인트는 지속자에 묶인 발생자다.
- 소프트 센서(soft sensor) — 값싼 온라인 신호로부터 느리고 비싼 실험실 값(예: 역가)을 실시간으로 추론하는 소프트웨어 모델; 자기 기술적
DataValue스트림이 먹이므로 단위나 주소 공간 불일치를 피처 오류로 그대로 물려받는다. - 배치 그룹 분할(batch-grouped split) — 한 배치의 모든 판독값을 학습 또는 시험 한쪽에 통째로 두는 누수 없는 검증 규율; 연결성 계층이 온전히 실어 날라야 하는
batch_id에 키를 둔다. - 드리프트(공변량 이동) / PSI — 입력 분포 이동에서 비롯한 모델 성능 저하로, 모집단 안정성 지수로 감시; 다시 매핑된 주소 공간이나 조용히 재스케일된 태그는 모델이 겪지 않은 드리프트로 잡힌다.
- IQ / OQ / PQ — 설치·운영·성능 적격성 평가; 연결된 시스템이 GMP 배치를 가동하기 전에 명세대로 설치·운영·성능을 발휘함을 증명하는 세 단계.
- CSV → CSA — 망라적 컴퓨터화 시스템 검증에서 위험 기반 컴퓨터 소프트웨어 보증으로의 전환으로, 각 인터페이스에 들이는 보증 노력을 그 환자 위험에 비례시킨다.
이 다음은
표준은 데이터를 움직이게 하고, 올바른 의미 계층과 함께라면 데이터가 어디서나 같은 뜻을 갖게 합니다. 하지만 움직임과 의미만으로는 충분하지 않습니다. 흐르는 모든 숫자는 또한 신뢰할 수 있어야 합니다. 참임이 증명되고, 변조되지 않았으며, 누가 언제 기록했는지까지 추적할 수 있어야 하죠. 다음 장 데이터 무결성과 ALCOA+는 데이터를 믿을 수 있게 만드는 원칙들을 소개합니다. 귀속 가능(Attributable), 판독 가능(Legible), 동시 기록(Contemporaneous), 원본(Original), 정확(Accurate)에 더해 완전(Complete), 일관(Consistent), 영속(Enduring), 이용 가능(Available)까지, 그리고 감사 추적(audit trail)과 함께 업계 전체를 재편한 데이터 무결성 집행의 물결을 다룹니다.