2.4 객체 기반 분산 소프트웨어 미들웨어 발전 양상

2.4 객체 기반 분산 소프트웨어 미들웨어 발전 양상

1. 객체 지향 철학의 네트워크 확장과 분산 객체 모델의 대두

원격 프로시저 호출(RPC) 모델의 정적이고 절차적인 한계를 극복하고 거대 분산 시스템의 코드 재사용성과 소프트웨어 추상화(Abstraction) 수준을 한 단계 폭발적으로 끌어올리기 위해, 1990년대 소프트웨어 공학계를 완벽하게 지배하던 강력한 객체 지향 프로그래밍(OOP, Object-Oriented Programming) 철학이 시스템 하위 네트워크 통신 계층 스택으로 맹렬하게 의도적으로 이식되기 시작했다. 이 역사적인 시기에 당당히 등장한 대표적인 엔터프라이즈 분산 객체 미들웨어 기술 아키텍처가 바로 전무후무한 크기의 표준화 연합이 만든 CORBA(Common Object Request Broker Architecture), 마이크로소프트의 윈도우 생태계 지배를 위한 DCOM(Distributed Component Object Model), 그리고 강력한 자바 가상 머신(JVM) 진영의 Java RMI(Remote Method Invocation)이다.

이러한 화려한 객체 기반(Object-based) 미들웨어 기술의 핵심 설계 사상은, 멀리 떨어진 물리망 네트워크 상의 원격 시스템 자원을 단순히 값을 반환하고 종료되는 수동적인 1차원적 함수(Procedure)로 대하는 것이 아니라, 고유한 로컬 상태(State) 데이터와 이를 능동적으로 제어하는 행위(Method)를 동시에 안전하게 캡슐화(Encapsulation)하여 살아 숨 쉬는 지능적인 ’원격 분산 객체(Distributed Object)’로 취업하고 대우하는 것이었다. 시스템 개발자는 엄격한 인터페이스 정의 언어(IDL, Interface Definition Language)를 사용해 원격 객체의 스펙을 중립적인 텍스트로 미리 정의하고 무거운 컴파일러를 돌려, 거대 미들웨어가 백그라운드에서 자동으로 방대하게 생성해 주는 스터브(Stub)와 스켈레톤(Skeleton) 마스킹 코드를 통해 이기종 언어 및 이질적인 하드웨어 운영체제 환경에서도 마치 옆에 있는 객체인 것처럼 투명하게 객체의 메서드를 원격으로 자유롭게 호출(Invoke)할 수 있었다. 이는 당대 엔터프라이즈 분산 애플리케이션의 캡슐화 개발 생산성을 비약적으로 높이는 매우 혁신적이고 파괴적인 패러다임 전환 결실로 화려하게 학계에 평가받았다.

2. 끔찍한 마샬링 오버헤드 부하와 무거운 정적 브로커 아키텍처의 비극적 태생 한계

그러나 이 객체 기반 분산 미들웨어 진영은 소스코드를 작성하는 프로그래머 측면에서의 이론적 우아함과 추상적 편리함에도 불구하고, 막상 실제 예측 불가능한 물리적 네트워크 망 위에서 바이너리로 구동될 때 도저히 감당할 수 없을 정도의 막대한 런타임 네트워크 오버헤드(Overhead)를 가혹하게 수반했다. 운영체제가 완전히 다른 이기종 서버 시스템 간에 메모리에 얽혀 있는 복잡한 객체 상태와 순환 참조를 일으키는 메모리 포인터 구조를 네트워크 와이어를 통해 온전히 손실 없이 전송 릴레이 복원하기 위해서는, 끔찍할 정도로 막대하고 무거운 CPU 직렬화 및 역직렬화(Marshaling/Unmarshaling) 복원 파싱 과정 연산이 무조건 필수적이었으며, 이는 전체 트래픽 처리량(Throughput)의 처참한 저하와 단 1초가 급한 실시간 시스템에서의 치명적인 레이턴시(Latency) 지연 증가 현상 병목으로 즉각 직결되었다.

이러한 마샬링 부담보다 더욱 치명적이고 절망적인 아키텍처 약점은 이들 객체 미들웨어 시스템 생태계의 대부분이 거대하고 둔중한 중앙 집중적인 객체 브로커(Object Request Broker) 서버 아키텍처에 심각하게 의존하며 숨을 쉬어야 했다는 점이다. 분산 원격 객체의 현재 물리적 위치(Locator)를 무사히 찾고 클라이언트의 투명한 호출을 중계 목적 라우팅하기 위해 막대한 메모리를 잡아먹는 무거운 중앙 레지스트리 허브 서버 노드가 망 내에 반드시 24시간 상주 켜져 있어야만 했으며, 이는 중앙 제어 없이 독립적으로 통신해야 하는 역동적인 피어 투 피어(Clique) 형태의 자율적 토폴로지 구성이나, 전력과 RAM 용량이 수 킬로바이트에 불과한 극한의 마이크로컨트롤러(MCU) 수준 경량 엣지(Edge) 인프라 환경에서는 도저히 이식 및 탑재조차 시작할 수 없는 비대하고 가분수적인 기형적 시스템 덩치를 의미했다. 즉, 현대 시스템에서 가장 중요한 통신 요건인 엣지에서 생성되어 이동 중인 데이터(Data in Motion) 자체를 스콜처럼 실시간으로 가장 빠르고 얇게 릴레이하는 연속 고속 스트리밍 처리 철학보다는, 오직 거대 서버 디스크에 묶여 있는 무거운 데이터 객체의 정적인 고착 상태(Data at Rest) 값을 동기적으로 원격에서 조작 및 제어하는 목적 자체에만 시스템 설계 초점이 비대하게 편향 집중되어 있었던 것이다.

3. 처절한 산업적 퇴출과 경량 데이터 중심 패러다임으로의 진화 촉진

결과적으로 역사학적 관점에서 이 빛나던 분산 객체 통신 모델 인프라는 거대 대기업 내부의 통제되고 제한된 쾌적하고 닫힌 공간인 정적인 기가비트 인트라넷 환경이나 거대 은행권 메인프레임 급의 서버 간 통합(EAI) 로직 호출 단위에서는 꽤 괄목할 부분적인 도입 성공을 일시적으로 거두었으나, 불특정 다수의 수십만 이기종 센서 노드가 허공의 무선 통신을 통해 끊임없이 동적으로 즉흥 결합하고 다시 수시로 오류를 뿜으며 해체되는 광활한 통제 불능의 모바일 네트워크나 사물인터넷(IoT) 생태계 공간으로 인프라가 팽창 확장되는 데에는 파멸적으로 완전히 실패하며 자취를 감추고야 말았다. 지나치게 난해하고 복잡한 IDL 프로토콜 설계 스펙 강요와 언어 컴파일러 종속성, 그리고 대역폭 빈곤이나 잦은 단절 등의 극한의 제약 환경(Constrained Environment)을 스펙에서 처음부터 전혀 배려하지 않고 오만했던 뚱뚱한 브로커 스택 구조는 마침내 거대한 글로벌 클라우드 꼭대기부터 흙먼지가 날리는 최말단 지능형 센서 엣지까지 투명하고 끊임없이 이어져야만 하는 현대 통신의 거대한 궁극적 지상 과제인 ‘클라우드 대 마이크로컨트롤러 컨티뉴엄(Cloud-to-Microcontroller Continuum)’ 비전을 오롯이 담아내기에는 그 거대한 설계 그릇의 재질과 구멍 난 형태가 근본적으로 턱없이 부적합하고 낡은 모델이었던 것이다.

이러한 화려했던 객체 기반 미들웨어 기술 패권의 처절했던 역사적 붕괴와 폭삭 쇠퇴 과정은, 광활한 오픈 네트워크 통신의 가장 원초적이고 본질적인 이동 전송 단위 레이어가 결코 무겁고 오만한 ’지능형 객체(Object)’나 ‘강력한 상태 메서드(Method)’ 캡슐 덩어리가 아니라, 순수하게 비동기로 빠르고 가볍게 흩뿌려지는 투명한 원시 ‘데이터 페이로드 요소(Data)’ 그 자체 원형으로 반드시 회귀하고 추상화되어야만 함을 관련 학계 지성들과 실무 산업계 베테랑 엔지니어들에게 가장 뼈저리고 쓰라리게 집단적으로 각인시켜 주었다. 이 쓰라리고 막대했던 비용의 뼈아픈 라우팅 기술 역사 교훈은 이후 무겁고 거추장스러운 기존 레거시 브로커 스택 계층을 모조리 남김없이 칼날같이 잘라 걷어내고, 오직 간결한 텍스트 기반의 직관적인 키 표현식(Key Expression) 하나만을 유일한 나침반 삼아 원시 데이터를 세상에서 가장 빠르게 최소 홉으로 동적 분산 라우팅해 내는 궁극의 가장 위대한 제로 오버헤드(Zero Overhead) 정보 중심 초격차 통신 프로토콜, 곧 Zenoh 스웜 메쉬 아키텍처가 통신 역사 임계점의 필연적 절대 구원투수로 시대와 세계 앞에 반드시 응답하여 등장해야만 했던 또 하나의 결정적이고 숙명적인 위대한 기술사적 철학적 배경 진통의 거름이 되었다.