본문으로 건너뛰기

분석 방법과 결과 모델링: Allotrope와 OBI

📍 현재 위치: 2부 · 모델링된 발견과 개발 — 8장. 통제 전략(control strategy)은 어떤 품질 속성을 반드시 확인해야 하는지를 말합니다. 이 장은 그 확인 자체 — 방법, 시험법, 결과 — 를 모델링하고, 그래프가 보관하는 수치와 그래프가 그저 가리키기만 하는 데이터 사이에 선을 긋습니다.

지난 장의 통제 전략에 담긴 모든 CQA는 측정으로 검증되며, 측정은 그것이 내놓는 수치보다 훨씬 더 구조적입니다. 이 책 전체를 꿰뚫어 온 98.611 단량체 순도는 빙산의 일각입니다. 그 아래에는 방법, 시료, 장비, 분석가, 수천 점으로 이루어진 크로마토그램, 그리고 원시 신호에서 보고된 결과로 이어지는 추론의 사슬이 자리합니다. 이 장은 그 빙산을, 바로 그것을 위해 만들어진 온톨로지로 모델링합니다 — 그리고 그에 못지않게 중요하게, 어느 부분이 그래프에 속하고 어느 부분이 그래프가 그저 참조하는 파일에 속하는지를 결정합니다.

쉽게 말하면

실험실 결과는 설명이 달린 사진과 같습니다. 설명 — "단량체 순도 98.611%, 크기배제 크로마토그래피로, 이 시료에 대해, 이날 측정" — 은 검색 가능한 기록에 두고 싶은 간결한 사실입니다. 사진 그 자체 — 여기서는 수천 데이터 점으로 이루어진 크로마토그램, 곧 고해상도 전체 이미지 — 는 거대해서, 모든 색인 카드에 붙여 넣는 대신 보관소에 두고 링크만 겁니다. 이 장은 그 설명을 그래프가 질의할 수 있는 사실로, 그 사진을 그래프가 가리키는 파일로 모델링합니다. 그래야 수치는 찾을 수 있으면서도 그래프가 원시 신호에 빠져 허우적대지 않습니다.

이 장에서 다루는 내용

우리는 방법(method)을 plan으로, 시험법(assay)을 occurrent로, 결과(result)를 타입이 부여된 벤더 중립의 사실로 모델링하며, 조사(investigation)에는 OBI를, 분석적 의미에는 Allotrope(AFO)를 끌어옵니다. 하나의 HPLC 출하 결과를 해부하고, 스칼라는 그래프에 두고 크로마토그램은 ADF 파일에 두는 색인 대 페이로드(index-versus-payload) 경계를 긋습니다. 그리고 이 장이 건드리는 세 온톨로지 세계의 비용과 아직 완성되지 않은 정렬(alignment)을 짚으며 마무리합니다.

방법, 시험법, 결과는 서로 다른 종류의 사물이다

분자 장의 세 범주 구분 원칙이 여기에도 그대로 적용되며, 이는 가장 흔한 분석 모델링 오류 — "그 시험"을 하나의 노드로 다루는 것 — 를 막아 줍니다. 방법 — 크기배제 크로마토그래피를 위한 검증된 절차 — 은 plan, 곧 generically dependent continuant입니다. 정보이고, 복제 가능하며, 오늘 돌리든 내년에 돌리든 같은 SEC 방법입니다. 시험법 — 그 방법을 특정 시료에 특정 날짜에 실제로 돌리는 것 — 은 occurrent, 곧 프로세스이며, 바로 OBI가 모델링하려고 만들어진 종류입니다 [2]. 그리고 결과98.611 % 단량체 — 는 specifically dependent continuant, 곧 시료에 관한, 그리고 시료를 통해 배치에 관한 측정값입니다. 이 셋을 따로 두면, 그래프는 하나의 방법이 여러 시험법으로 돌아가 여러 결과를 냈다거나, 두 결과가 같은 방법에서 나왔다거나, 두 시험법 사이에 방법이 개정되었다고 말할 수 있습니다 — 하나로 뭉친 "시험" 노드로는 그중 무엇도 표현할 수 없습니다.

시료(sample) 또한 자기만의 노드를 가질 자격이 있습니다. 시료는 실험실에서 공정으로 되돌아가는 다리이기 때문입니다. 시료는 그것이 뽑혀 나온 배치로부터 derivedFrom된 물질 개체(material entity)이므로, 시료에 관한 결과는 추이적으로(transitively) 배치에 관한 증거입니다. 이것이 분석 수치가 계보에 다시 합류하는 방식입니다 — 배치 문자열을 도장처럼 찍어서가 아니라, 배치로부터 파생된 시료에 관함으로써이며, 이 사슬은 추이적 derivedFrom이 자동으로 따라 걷습니다.

Allotrope는 결과에 벤더를 넘나드는 하나의 의미를 부여한다

분석 결과가 QUDT 이상을 필요로 하는 까닭은 그 의미가 벤더에 얽혀 있기 때문입니다. 같은 SEC 순도가 Agilent 시스템에서 나올 수도, Waters 시스템에서 나올 수도 있으며, 각자 자기 파일 형식과 자기 필드 이름을 내보냅니다 — 바로 데이터 책이 장비에서 마주친 이질성입니다. Allotrope는 이를 온톨로지와 데이터 형식의 스택 — Allotrope Foundation Ontologies(AFO) — 으로 해결하며, 어느 벤더가 만들었든 상관없이 실험실 결과, 장비, 시료, 방법에 하나의 표준화된 의미를 부여합니다 [1]. AFO에 맞춰 모델링하면, monomerPct 결과는 단위가 붙은 수치에 그치지 않습니다. 그것은 알려진 측정 유형의 결과이고, 타입이 부여된 장치에 의해, 타입이 부여된 시료에 대해, 이름이 붙은 방법으로 산출된 결과입니다 — 실험실이 장비를 바꾸든 작업이 위탁 실험실로 옮겨가든 같은 사실입니다. AFO가 실험실에 하는 일은 IOF 바이오파마 온톨로지가 공장에 하는 일과 같습니다. 지식 그래프가 한쪽을 다른 쪽에 끼워 맞추는 대신 실험실 데이터와 공정 데이터를 병합하게 해 주는 도메인 어휘인 것입니다. 데이터셋 안에서 그 의미는 하나의 정렬(alignment) 파일입니다. 시험법, 그 결과, 그리고 그 칼럼이 각각 실재하고 검증된 AFO 또는 OBI 용어를 서브클래스로 삼습니다:

# align.ttl — the assay/result/column/sample typed up to Allotrope (AFO) and OBI (verified IRIs).
@prefix bp: <https://example.org/bioproc#> .
@prefix af-p: <http://purl.allotrope.org/ontologies/process#> .
@prefix af-r: <http://purl.allotrope.org/ontologies/result#> .
@prefix af-e: <http://purl.allotrope.org/ontologies/equipment#> .
@prefix obo: <http://purl.obolibrary.org/obo/> .

bp:Sample rdfs:subClassOf obo:OBI_0000747 . # OBI 'specimen' (material sample taken for study)
bp:Assay rdfs:subClassOf obo:OBI_0000070 . # OBI 'assay' (a planned process)
bp:SECAssay rdfs:subClassOf af-p:AFP_0000843 . # AFO 'size-exclusion chromatography'
bp:SECResult rdfs:subClassOf af-r:AFR_0000410 . # AFO 'size-exclusion chromatogram'
bp:SECColumn rdfs:subClassOf obo:OBI_0000618 , af-e:AFE_0000354 . # OBI 'size exclusion column' / AFO 'device'
bp:HCPAssay rdfs:subClassOf obo:OBI_0000661 . # OBI 'ELISA' (the HCP assay; verified via OLS4)
bp:ResidualDNAAssay rdfs:subClassOf obo:OBI_0000415 . # OBI 'PCR' (the residual-DNA qPCR; verified via OLS4)

타입이 고정되면, 출하 결과는 본문이 묘사한 그 구조적 빙산이 됩니다 — plan인 방법, occurrent인 시험법, 로트로 거슬러 올라가는 시료, 그리고 크로마토그램을 박아 넣는 대신 가리키는 스칼라 결과:

# instances.ttl — method (plan) / assay (occurrent) / sample / result, with the curve referenced.
bp:SEC-Method a bp:Method . # the validated SEC method — information
bp:SMP-DS-001 a bp:Sample ; bp:derivedFrom bp:DS-001 . # the sample, traceable to the lot
bp:SEC-Assay-001 a bp:SECAssay ; # one running of the method — an occurrent
bp:realizes bp:SEC-Method ;
bp:hasInput bp:SMP-DS-001 ;
bp:hasDevice bp:HPLC-07 ; # the typed instrument
bp:performedBy bp:Analyst-AB ; # the analyst (a prov:Agent)
bp:assayDate "2026-03-10"^^xsd:date ;
bp:hasResult bp:SEC-Result-001 .
bp:SEC-Result-001 a bp:SECResult ; # the result — about the sample
bp:isAbout bp:SMP-DS-001 ;
bp:monomerPct "98.611"^^xsd:float ;
bp:specLow 95.0 ; bp:verdict "PASS" ; # spec limit + verdict, in the graph
bp:hasChromatogram bp:ADF-SEC-001 . # the heavy curve, referenced not embedded
bp:ADF-SEC-001 a bp:AnalyticalDataFile ; # the Allotrope ADF payload node
rdfs:seeAlso <https://example.org/adf/SEC-Result-001.adf> .

Allotrope와 OBI로 모델링한 하나의 HPLC 출하 결과를 해부한 신분증: 검증된 SEC 방법을 plan(정보)으로 가리키는 방법 행, OBI 프로세스로 타입이 부여된 시험법 행과 그 날짜·분석가, 원료의약품 로트 DS-001로부터 derivedFrom된 시료 행 — 그 DS-001은 다시 BATCH-2026-001로 거슬러 올라가며, 타입이 부여된 장비 HPLC-07을 가리키는 장치 행, monomerPct 98.611을 QUDT 단위 PERCENT가 붙은 xsd로 담고 시료에 관하며 규격 한계와 PASS 판정을 지닌 결과 핵심 블록, 그리고 원시 곡선을 박아 넣는 대신 IRI로 Allotrope ADF 파일을 가리키는 hasChromatogram 페이로드 포인터 행. 각 행은 어느 온톨로지가 제공하는지 — OBI, AFO, QUDT — 로 태그가 달려 있습니다. 하나의 출하 결과를 온전히 모델링한 모습: OBI 시험법이 AFO 타입의 방법을, 배치로부터 파생된 시료에 대해 돌려, QUDT 타입의 값을 규격과 판정과 함께 산출하고 — 곡선 자체가 아니라 크로마토그램 파일을 가리키는 포인터를 담습니다. 저자가 AI의 도움을 받아 직접 제작한 그림입니다.

색인 대 페이로드 경계

이제 그래프를 쓸 만하게 유지하는 결정입니다. 스칼라 결과 — 98.611, 타입이 부여된 단일 수치 — 는 트리플(triple)로 깔끔하게 사상됩니다. 타입이 부여된 하나의 수치는 그래프가 추론하고 SHACL로 제약하며 규격과 비교할 수 있는 사실이기 때문입니다. 크로마토그램은 그렇지 않습니다. 그것은 강도 대 시간을 나타내는 수천 점의 조밀한 계열이고, 스펙트럼은 강도 대 파수를 나타내는 천 점입니다. 둘 중 어느 것이든 주어-술어-목적어 트리플로 펼치면 그래프가 폭발하면서도 배열의 형태는 여전히 잃게 됩니다 — 오픈소스 장이 그은 것과 똑같은 경계입니다. 그래서 무거운 수치 페이로드는 마땅한 자리에 둡니다. 벤더 중립 분석 컨테이너 — Allotrope ADF(n차원 데이터 큐브를 중심으로 만든 HDF5 바이너리)나 AnIML(분석 데이터를 위한 ASTM 개방형 XML 형식) — 에 두고, 그래프는 result hasChromatogram <file://…/run.adf> 같은 트리플, 곧 곡선이 아니라 포인터를 보관합니다 [1][3].

이것은 타협이 아니라 옳은 아키텍처입니다. 그래프는 분석 지식의 색인(index) — 모든 결과가 찾을 수 있고, 타입이 부여되고, 규격 확인을 거치며, 자기 배치에 묶여 있는 — 이고, 분석 파일은 원시 신호의 창고(warehouse)입니다. 조사자는 어떤 결과가 실패했고 그것이 무엇에 관한 것이었는지를 그래프에 질의해 찾고, 원시 데이터를 다시 살펴야 할 때에만 IRI를 따라 크로마토그램으로 갑니다. 그래프는 작고 질의 가능한 상태로 남고, 배열은 그것을 담으려고 만들어진 형식 안에 남습니다. 이 선을 잘못 긋는 것 — 배열을 그래프에 욱여넣거나, 결과를 그래프 바깥의 타입 없는 덩어리로 내버려 두는 것 — 은 분석 그래프가 쓸모없어지거나 무가치해지는 가장 흔한 단 하나의 방식입니다.

두 구역 다이어그램: 왼쪽 색인 구역은 스칼라 사실 — 방법, 시험법, 시료, 장치, 그리고 규격과 PASS 판정이 붙은 monomerPct 98.611 결과 — 을 담고 모두 질의 가능하며 SHACL로 확인 가능한 지식 그래프를 보여 줍니다. 오른쪽 창고 구역은 조밀한 크로마토그램과 스펙트럼 배열을 담은 벤더 중립 분석 파일(Allotrope ADF 데이터 큐브와 AnIML XML 계열)을 보여 줍니다. 단 하나의 hasChromatogram IRI 포인터 화살표가 그래프 결과 노드에서 창고의 파일로 건너가며, 스칼라는 그래프에 색인되고 배열은 참조될 뿐 결코 펼쳐지지 않는다는 캡션이 달려 있습니다. 분석 그래프를 정직하게 지키는 경계: 타입이 부여된 스칼라 결과는 질의 가능한 사실로 그래프 안에 살고, 크로마토그램과 스펙트럼은 그래프가 IRI로 가리키는 ADF나 AnIML 파일 안에 산다 — 창고가 아니라 색인이다. 저자가 AI의 도움을 받아 직접 제작한 그림입니다.

미해결 과제: 아직 온전히 정렬되지 않은 세 온톨로지 세계

정직한 어려움은, 이 장이 목표는 공유하지만 아직 매끄러운 접합은 공유하지 못한 세 갈래의 큰 온톨로지 노력이 만나는 지점에 놓여 있다는 점입니다. OBI는 조사를 모델링하고, AFO는 분석 결과를 모델링하며, IOF 바이오파마 온톨로지는 시료가 나온 제조 공정을 모델링합니다 — 그리고 원리상으로는 셋 다 조화될 수 있지만, 이들을 융합하는 단일한 턴키(turnkey) 사상은 없습니다. AFO로 모델링된 결과와 IOF로 모델링된 배치는 오직 팀이 직접 작성한 크로스워크(crosswalk)를 통해서만 만나며, 이는 발견 장이 이름 붙인 바로 그 OBO–IOF 이음매가 이제 제3의 당사자로 한층 더 벌어진 것입니다. AFO의 monomerPct오픈소스 로더가 배치에 붙이는 bp:monomerPct와 어떻게 관련되는지를 고르는 일은 임포트가 아니라 진짜 모델링 결정입니다.

두 번째 어려움은 비용입니다. AFO는 크고 진정으로 복잡하며, 완전한 채택 — 모든 결과를 완전한 AFO 주석이 달린 적합한 ADF로 내보내는 것 — 은 많은 실험실이 아직 해내지 못한 무거운 작업입니다. 데이터 책이 사실로서의 FAIR주장으로서의 FAIR에 뒤처진다고 짚은 까닭이 이것입니다. 공장은 수천 개의 결과를 벤더 메타데이터가 붙은 맨숫자로 보관하면서, 그중 어느 것도 AFO 의미를 지니지 않았는데도 표준화되었다고 부를 수 있습니다. 도구는 존재하고 표준은 실재합니다. 장벽은 규율과 마이그레이션 비용입니다. 그래서 이 장이 세우는 표준은 냉정합니다. 아키텍처(스칼라는 색인하고, 배열은 참조하고, 모든 것에 타입을 부여하라)는 명료하고 옳지만, 그것이 값어치를 하게 만드는 벤더 중립 의미론의 채택은 2026년 현재 고르지 않고 비쌉니다.

왜 중요한가

분석 결과는 배치를 통과시키는 증거이며, 출하 결정은 그 뒤를 받치는 결과가 잘 모델링된 만큼만 믿을 만합니다. 자기 방법, 시료 계보, 장치, 단위, 규격을 타입이 부여된 사실로 지닌 결과는 출하 시점에 기계적으로 확인할 수 있습니다 — 모든 CQA가 이 배치에서 파생된 시료에 관한 적합한 결과를 가지고 있는가? — 반면 벤더 파일 속 맨숫자인 결과는 그 모든 맥락을 사람이 보증해야 합니다. 색인 대 페이로드 규율은 공장이 그래프를 빠뜨리지도 원시 데이터를 잃지도 않으면서 수백만 개의 결과를 보관하게 해 주는 것이고, 벤더 중립 의미론은 실험실 데이터와 공정 데이터가 마침내 병합되게 해 주는 것입니다. 이 장은 데이터 그림자(data shadow)의 가장 크고 풍부한 흐름이 질의 가능한 전체의 일부가 되는 곳입니다.

통신선에서 그래프까지

이 모든 것이 그래프에 안착하기 전에, 먼저 측정값은 기기에서 나와야 하며, 이를 실어 나르는 통신선(wire) 자체가 하나의 표준 이야기를 담고 있습니다. 수집 경로 — 분석기가 자신의 측정값을 실험실 시스템으로 스트리밍하는 경로 — 는 점점 더 SiLA 2OPC UA LADS로 모델링되고 있는데, 이들은 SEC 분석 실행 결과를 공유 폴더에 떨궈진 벤더 파일이 아니라 구조화된 페이로드로 넘겨주는 장치 통합 표준입니다. 둘 다 실재하는 표준이며 오늘날 바이오의약품 실험실에서 파일럿 단계로 검증되고 있습니다. 그러나 어느 쪽도 아직 상용 단계의 기본값은 아니어서, 대부분의 공장은 여전히 결과를 AnIML 또는 ADF 익스포트 형태로 수신합니다. 어느 경로든, 도착한 페이로드는 결국 Turtle이 단언하는 것과 동일한, 타입이 부여된 bp:SEC-Result-001이 되어야 합니다.

Allotrope는 그 사실(fact)에 도달하는 두 가지 수집 경로를 제공합니다. 무거운 쪽은 완전한 ADF — 완전한 AFO 주석을 갖춘 HDF5 데이터 큐브 — 입니다. 가벼운 쪽은 ASM, 즉 Allotrope Simple Model입니다. 이는 JSON-LD 문서로, 그 @context가 각각의 평범한 키를 Turtle이 사용하는 바로 그 bp:, af-r:, qudt: IRI에 매핑합니다. 동반 파일 examples/platform/ontology/asm-sec-result.jsonld가 바로 그것으로, 생성하고 파싱하기에 더 저렴하면서도 의미는 동일합니다:

{
"@context": {
"bp": "https://example.org/bioproc#",
"af-r": "http://purl.allotrope.org/ontologies/result#",
"qudt": "http://qudt.org/schema/qudt/",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"isAbout": { "@id": "bp:isAbout", "@type": "@id" },
"monomerPct": { "@id": "bp:monomerPct", "@type": "xsd:float" },
"specLow": { "@id": "bp:specLow", "@type": "xsd:float" },
"verdict": { "@id": "bp:verdict" },
"hasChromatogram": { "@id": "bp:hasChromatogram", "@type": "@id" }
},
"@id": "bp:SEC-Result-001",
"@type": [ "bp:SECResult", "af-r:AFR_0000410" ],
"isAbout": "bp:SMP-DS-001",
"monomerPct": "98.611",
"specLow": "95.0",
"verdict": "PASS",
"hasChromatogram": "bp:ADF-SEC-001"
}

로더 examples/platform/ontology/asm_to_rdf.py는 이 하나의 문서를 RDF로 파싱하고, 핵심 트리플들이 데이터셋과 일치하는지 확인합니다 — af-r:AFR_0000410까지 타입이 부여된 동일한 bp:SECResult, 동일한 98.611monomerPct, 동일한 PASS 판정, 그리고 instances.ttl이 Turtle로 단언하는 것과 동일한 bp:ADF-SEC-001을 가리키는 hasChromatogram 포인터까지 말입니다. 더 저렴한 Allotrope 수집 경로이지만, 그래프에 남는 사실은 동일합니다. 이 하나의 SEC 브리지 너머로, 컴패니언 데이터셋은 캠페인의 배치 역가(titer)를 구체적인 컨테이너 인스턴스로 담고 있습니다 — Allotrope의 공개 매니페스트에 기반한 완전한 Allotrope Simple Model 문서(examples/datasets/hplc_titer.asm.json)와 ASTM AnIML 파일(examples/datasets/hplc_titer.animl.xml) — 이 장이 이름 붙인 벤더 중립 분석 컨테이너의 경량 JSON 형태와 개방 XML 형태로, 오픈소스 분석 실험실 장이 실행되는 코드로 포착합니다. 공장이 이 표준들 가운데 어느 것을 상용 환경에서 실제로 운영하고 어느 것을 파일럿하는지는, Part VII가 실제로 사용되는 온톨로지와 통제 어휘에서 매핑하는 바로 그 계층적 현실입니다.

실제 현장에서는

Allotrope의 온톨로지와 데이터 형식은 실제 실험실에 배치되어 크로마토그래피와 분광 결과에 벤더 중립의 의미를 부여하고, AnIML은 분석 데이터 교환을 위한 ASTM 표준입니다 [1][3]. OBI는 생의학 연구 전반에서 조사가 기술되는 방식을 떠받칩니다 [2]. 오픈소스 분석 실험실 장은 같은 패턴을 실행되는 코드로 보여 줍니다 — HPLC 순도 결과가 헐거운 칼럼이 아니라 표준화된 의미와 함께 포착되고, 원시 파일은 펼쳐지는 대신 참조됩니다. 여전히 살아 있는 최전선은, 공장의 모든 결과가 기본적으로 그 의미를 지니게 만드는 것, 그리고 OBI·AFO·IOF 모델을 모든 접합마다 손수 만든 어댑터 없이 하나의 그래프로 꿰매는 것입니다 — 적합한 파일 더미를 하나의 질의 가능한 분석 지식 본체로 바꾸는 작업입니다. 7부는 이 생태계를 정면으로 다룹니다. 이 분석 실험실 어휘들을 유지하는 사전 경쟁 컨소시엄인 Allotrope Foundation과 그 동류 기관 Pistoia Alliance, 그리고 무엇이 실제로 상용 단계인지의 성숙도 티어링 — AFO와 그 경량 JSON 형제인 ASM이 그 목록의 최상단에 있는 — 을 말입니다.

핵심 용어

  • 방법(method) — 검증된 분석 절차로, 그것을 한 번 돌리는 것과는 구별되는 plan(정보)으로 모델링됩니다.
  • 시험법(assay) — 특정 시료에 대한 한 번의 방법 실행으로, 날짜·분석가·장치를 지닌 occurrent(OBI 프로세스)로 모델링됩니다.
  • 결과(result) — 측정값으로, 시료에 관한 타입이 부여된 사실(98.611, xsd:float, QUDT unit:PERCENT)로 모델링됩니다.
  • 시료(sample) — 배치에서 뽑힌 물질로, 배치로부터 derivedFrom된 것으로 모델링되어, 그에 관한 결과가 추이적으로 배치에 관한 증거가 됩니다.
  • Allotrope Foundation Ontologies(AFO) — 분석 결과, 장비, 시료, 방법에 하나의 벤더 중립 의미를 부여하는 온톨로지들.
  • ADF / AnIML — 벤더 중립 분석 데이터 컨테이너(Allotrope의 HDF5 기반 Data Format, ASTM XML 형식)로, 그래프가 IRI로 참조하는 원시 배열을 담습니다.
  • 색인 대 페이로드(index versus payload) — 스칼라 결과는 질의 가능한 사실로 그래프에 두고, 조밀한 배열(크로마토그램, 스펙트럼)은 참조되는 파일에 두어 결코 트리플로 펼치지 않는 경계.

다음 이야기

우리는 품질을 검증하는 방법과 결과를 모델링할 수 있고, 수치와 원시 신호 사이에 선을 그었습니다. 2부의 마지막 개체는 개발에서 공장으로 실려 가는 지식의 꾸러미입니다. 다음 장 레시피와 기술 이전 모델링: 이식 가능한 공정 지식은 레시피를 생산에서 실현되는 정보 산출물(information artifact)로, 그것이 요구하는 설비를 한 사이트가 보유한 설비와 견주어, 그리고 한 사이트에서 완벽하게 모델링된 공정이라도 다른 사이트로의 이동을 견뎌 내야 한다는 불편한 현실을 모델링합니다.