편집자 주: 이 프레젠테이션은 Jim Webber 님이 Connections: Knowledge Graphs for Innovation에서 발표한 내용이에요.
저는 Neo4j의 수석 과학자로서 Knowledge Graph 관련 보고서를 작성하고 있는데요, 보고서를 쓰면서 특히 관심을 갖게 된 주제가 바로 이에요. 디지털 트윈이 여러분의 비즈니스에 어떻게 도움이 될 수 있는지 함께 알아볼까요?
먼저 디지털 트윈이 무엇인지, 어디에서 왔는지, 그리고 현재 기술 수준을 정의하는 것부터 시작해 볼게요. 그다음 Knowledge Graph과 디지털 트윈으로 전환할 때 겪을 수 있는 어려움과 유형을 살펴볼 거예요. 마지막으로, 몇몇 사례를 통해 사람들이 Knowledge Graph 또는 Neo4j 위에 디지털 트윈을 구축한 방법을 알아보고, 디지털 트윈을 위한 Knowledge Graph에 대해 자세히 이야기해볼게요. 흥미롭죠? 그럼 계속 읽어보세요!
디지털 트윈이란 무엇일까요?
'디지털 트윈'이라는 용어는 2002년 미시간 대학의 Michael Grieves가 만들었어요. 2010년 NASA의 수석 기술자인 John Vickers에 의해 널리 알려지긴 했지만, 그 뿌리는 컴퓨터 과학, 특히 모델링 및 고성능 컴퓨팅 분야에서 수십 년 전으로 거슬러 올라간답니다.
위키피디아는 디지털 트윈을 "물리적 객체 또는 프로세스의 실시간 디지털 대응 역할을 하는 가상 표현" 또는 "수작업 제도에서 컴퓨터 지원 제도/설계, 모델 기반 시스템 엔지니어링으로 진행된 제품 도면 및 엔지니어링 사양"으로 정의하고 있어요.
이 정의에서 흥미로운 점은 "실제 품목"이 물리적인 물체라고 가정한다는 거예요. 그래서 저는 이 글을 읽을 때 제트 엔진 터빈이나 제트 엔진 터빈 자금 같은 것을 떠올렸고, 이는 디지털 트윈이 이 실제 물리적 물체의 대응물이라는 아이디어를 떠올리게 했죠.
물론 이것도 디지털 트윈의 중요한 부분이에요. 하지만 세상에서 가장 복잡한 시스템 중 일부는 소프트웨어와 사람으로 구성되어 있다는 사실을 잊으면 안 돼요. 과거에 물리적 엔진이나 교량이 어떻게 실패하거나 진화할 수 있는지 이해함으로써 가치를 얻었던 것처럼, 매우 복잡한 소프트웨어와 사람 시스템에 동일한 디지털 트윈 기술을 적용해서 작동 방식, 실패 방식, 진화 방식을 이해함으로써 큰 가치를 얻을 수 있어요.
날씨 이야기를 좀 해볼까요?
일기 예보는 우리 주변에서 흔히 볼 수 있는 디지털 트윈의 예시죠. 실제 세계에서 데이터를 가져와서 모델을 만들고, 그 모델이 어떻게 진화해서 내일 비가 올지 등을 예측할 수 있는지 물어볼 수 있어요. 저는 런던에 살고 있는데, 런던은 내일도 항상 비가 온다는 뜻이죠! 그래서 여기서는 계산이 더 쉬울 것 같아요. 그럼 현재 기술 수준은 어디까지 와 있을까요?
최신 기술
2010년부터 Neo4j에서는 디지털 트윈이 계속해서 등장하는 것을 봐왔어요. 항상 Knowledge Graph 개념과 함께 언급되는 것 같아요. 몇 가지 예를 들어볼게요.
- 마이크로서비스 기반의 대규모 복합 소프트웨어 시스템
- 풍력 터빈 서비스 최적화와 같은 발전
- 런던 지하철처럼 지하철 등을 이용해서 런던 주변의 노선을 계획하는 교통 분야
미래는 이미 우리 곁에 와 있지만, 고르게 분포되어 있지는 않아요. 예를 들어 NASA는 디지털 트윈과 Knowledge Graph 기술을 사용해서 2년이나 일찍 화성에 도착했죠. 정말 놀라운 일이지만, 대부분의 사람들은 구현의 복잡성 때문에 어려움을 겪고 있어요. 우리 대부분은 지속적으로 실행할 수 있는 로컬 슈퍼컴퓨터 연구실이나 슈퍼컴퓨터 모델이 없잖아요. 그럼 어떻게 해야 할까요?
우리를 돕기 위해 기본적으로 데이터 기술을 사용해야 해요. 데이터를 구축하고 데이터에서 유용한 정보를 끌어낼 수 있다면 디지털 트윈이 될 수 있지만, 많은 데이터 기술이 복잡하게 상호 연결된 도메인을 처리하는 데는 적합하지 않은 것 같아요. 모델은 행이나 문서, 또는 간단한 키와 값에 더 적합하기 때문에, 디지털 트윈에는 딱 맞지 않죠.
구현의 함정
실제로 우리는 이러한 구현의 함정에 빠지곤 해요. 고성능 컴퓨팅과 관계형 데이터베이스를 사용하면 구식 디지털 트윈을 사용해서 고성능 컴퓨팅 문제를 해결하거나, 모델을 단순화해서 관계형 데이터베이스에서 작동하게 만들 수 있어요. 제트 터빈은 복잡하지만 단일 CAD 모델로 관리할 수 있죠. 하지만 다른 사용 사례를 위해 이 기능을 확장하려고 하면 어려움을 겪게 될 거예요.
엄청나게 복잡한 스키마를 사용해서 모델을 구축하고 유지 관리하는 것은 어렵고 오류가 발생하기 쉬우며, 계산 속도도 느려요. 이러한 모델을 이해하려고 할 때 종종 JOIN 폭탄 문제에 직면하게 되죠. 즉, 우리가 이 테이블을 통해 JOIN할 때 주 메모리와 가상 메모리에 가하는 압력이 디스크로 넘쳐서 끔찍한 속도로 느려지는 거예요.
몇 개의 테이블에 걸쳐 간단한 JOIN을 수행할 때는 관계형 데이터베이스가 괜찮지만, 여러 테이블을 JOIN하기 시작하면 쿼리가 합리적인 시간 내에 완료될지 예측하기 어렵고 완전히 비결정적이에요. 근본적인 수학 자체가 현대 세계의 복잡성을 다룰 수 없는 거죠. 그래서 우리는 디지털 트윈을 지원하기 위해 Knowledge Graph를 사용하는 거예요.
디지털 트윈을 위한 Knowledge Graph
그래프는 고도로 상호 연결된 도메인에 적합한 데이터 구조예요. 그래프는 최신 하드웨어에서 효율적으로 처리(계산, 저장, 쿼리)될 수 있죠. Neo4j에서는 그래프 쿼리를 수행할 때 실제로 하는 작업은 네트워크에서 포인터를 쫓는 것뿐이라는 사실을 숨기지 않아요. 포인터 확인을 통한 이 가져오기-실행 주기는 현대 컴퓨터가 매우 잘 수행하는 작업이거든요. 모델을 선택하고 이를 그래프 표현으로 변환하면 복잡성을 해결할 좋은 기회를 얻게 될 거예요.
