
물리적 한계를 코드로 돌파하다: MASI 논문에서 발견한 분산 시스템의 해답
Nature Communications에 실린 MASI 논문을 통해 본 물리적 제약의 해결책. 하드웨어의 한계를 소프트웨어와 계산적 통합으로 돌파하는 분산 시스템의 철학을 공유합니다.
송찬영
CTO

안녕하세요. 풀링포레스트 CTO 송찬영입니다.
최근 네이처 커뮤니케이션즈(Nature Communications)에 실린 'Multiscale Aperture Synthesis Imager (MASI)'라는 논문을 읽고 꽤나 큰 지적 충격을 받았습니다. 광학 이미징 기술에 관한 논문이지만, 이 안에 담긴 문제 해결의 철학이 우리가 매일 고민하는 소프트웨어 아키텍처, 특히 대규모 분산 시스템의 난제를 해결하는 방식과 놀라울 정도로 맞닿아 있었기 때문입니다. 오늘은 개발자의 시선으로 이 논문을 해석해 보고, 우리가 기술적 난관을 마주했을 때 어떤 태도를 가져야 할지 이야기해 보려 합니다.
개발자라면 누구나 '동기화(Synchronization)'라는 단어만 들어도 머리가 지끈거리는 경험이 있을 겁니다. MSA(Microservices Architecture) 환경에서 데이터의 정합성을 맞추거나, 멀티 스레드 환경에서 레이스 컨디션을 피하기 위해 고군분투했던 밤들이 떠오르기 때문이죠. 그런데 광학 분야에서의 동기화는 차원이 다른 난이도를 자랑합니다. 여러 개의 렌즈나 센서를 이용해 하나의 거대한 이미지를 만드는 'Synthetic Aperture' 기술은 수신된 신호 간의 위상을 완벽하게 일치시켜야 합니다. 레이더 같은 긴 파장은 그나마 수월하지만, 가시광선 영역은 파장이 너무 짧아 아원자(sub-wavelength) 수준의 정밀한 하드웨어 정렬이 필수적입니다.
솔직히 말해, 이는 물리적으로 '거의 불가능'에 가까운 요구사항입니다. 기존에는 이 문제를 해결하기 위해 복잡한 간섭계(Interferometry)를 설치하거나, 실험실 수준의 정밀한 통제 환경을 구축해야만 했습니다. 하드웨어의 복잡도가 기하급수적으로 증가하는 것이죠. 우리가 레거시 시스템의 결합도를 낮추지 못해 거대한 모놀리식 괴물을 만들어내는 상황과 비슷하지 않나요?
MASI 연구진이 제시한 해법은 바로 이 지점에서 빛을 발합니다. 그들은 "물리적으로 맞추기 힘들다면, 계산적으로 맞추자"라고 발상을 뒤집었습니다.

이들은 렌즈도 없는 분산형 센서 배열을 사용해 회절면(Diffraction Plane)에서 날것의 데이터를 수집합니다. 센서들끼리 물리적으로 겹치거나(Overlap) 정밀하게 동기화될 필요가 없습니다. 각 센서는 독립적으로 동작하며 파동장(Wavefield)을 기록합니다. 그리고 이 데이터들을 디지털 공간, 즉 '물리적 제약이 없는 공간'으로 가져와서 계산적으로 위상을 동기화합니다. 마치 클라이언트가 보낸 비동기 요청들을 서버가 나중에 정합성을 맞춰 처리하는 'Eventual Consistency' 모델을 보는 듯했습니다.
특히 인상 깊었던 것은 이들이 사용한 '계산적 위상 동기화' 방식입니다. 센서 간의 상대적인 위상 오프셋을 반복적으로 조정하며 재구성된 이미지의 에너지가 최대화되는 지점을 찾아냅니다. 이는 우리가 머신러닝 모델을 학습시킬 때 손실 함수(Loss Function)를 최소화하는 방향으로 파라미터를 최적화하는 과정, 혹은 Adaptive Optics에서 파면을 제어하는 방식과 본질적으로 같습니다.
결과적으로 MASI는 하드웨어라는 'Hard Constraint'를 소프트웨어라는 'Soft Constraint'로 치환함으로써 문제를 해결했습니다. 덕분에 렌즈 없이도 마이크로미터 단위의 해상도를 얻었고, 센티미터 규모의 3D 형상까지 복원해 냈습니다. 불가능해 보였던 광학적 동기화 문제를 관리 가능한 계산 문제(Computational Problem)로 바꿔버린 것입니다.
풀링포레스트에서 AI 기반의 워크플로우를 설계할 때도 우리는 비슷한 벽에 부딪히곤 합니다. 서로 다른 모델, 서로 다른 데이터 소스, 그리고 각기 다른 속도로 일하는 인간 사용자들을 하나의 파이프라인 안에서 실시간으로 동기화하려다 보면 시스템은 비대해지고 오류는 잦아집니다.
이 논문을 보며 다시금 확신했습니다. 시스템의 복잡도가 임계점을 넘을 때, 우리는 물리적(또는 구조적) 통제를 강화하는 방향이 아니라, 개별 구성 요소의 자율성을 보장하고 사후적으로 맥락을 일치시키는 '계산적 통합'의 방향으로 나아가야 합니다.
개발자 여러분, 혹시 지금 하드웨어의 한계나 레거시 코드의 물리적 제약 때문에 막막해하고 계신가요? 시야를 조금만 돌려보세요. 그 제약을 뚫고 나가는 것이 아니라, 문제의 정의를 바꾸어 '계산의 영역'으로 가져올 방법은 없는지 고민해 보시기 바랍니다. MASI가 빛의 파장을 계산으로 제어했듯, 우리도 코드와 아키텍처를 통해 불가능을 가능으로 바꿀 수 있습니다. 그것이 바로 우리가 엔지니어링을 하는 이유니까요.


