1.5.2 스케일 업(Scale-up)과 스케일 다운(Scale-down)의 완벽한 조화

1.5.2 스케일 업(Scale-up)과 스케일 다운(Scale-down)의 완벽한 조화

에지 컨티뉴엄(Edge-to-Cloud Continuum)이라는 거대한 분산 통신 인프라 지도를 펼쳐보면, 네트워크의 상단과 하단은 도저히 같은 미들웨어 패밀리로 묶을 수 없을 만큼 끔찍한 하드웨어 체급의 부조화를 보여준다. 섭씨 수십 도를 견뎌내며 밧데리로 버티는 불과 100 KB 급의 빈약한 RAM 용량 마이크로컨트롤러(MCU)부터, 페타바이트 단위의 스냅샷 로깅 트래픽을 토스하며 80코어 이상을 병렬 풀 가동(Scale-out) 시키는 거대 퍼블릭 클라우드의 엔터프라이즈 게이트웨이 파이프라인까지, 이 모든 기형적인 폼팩터를 완벽하게 단 하나의 통일된 통신 언어와 와이어 프로토콜 핏(Wire Protocol Fit)으로 통제하겠다는 것이 Zenoh(제노)가 제창하는 스케일의 혁명이다.

본 절에서는 단 하나의 스탠다드 프로토콜 아키텍처가 어떠한 공학적 마법과 모듈성 분할 해킹을 통해 초소형 스케일 다운(Scale-down)의 극한 압축과, 무한대의 멀티코어 병렬화 스케일 업(Scale-up) 확장성을 동시에 성취해 내었는지 그 컴포넌트 동적 로딩 아키텍처와 컨텍스트 스위칭 전술을 심층 해부한다.

1. 100KB RAM 한계를 타파하는 마이크로컨트롤러(MCU)용 Zenoh-Pico 구조체 삭감 전술

가장 최하단의 빈곤한 컴퓨팅 계층, 바로 베어메탈(Bare-metal) 수준의 MCU 단말에 고수준의 분산 통신 코어를 밀어 넣기 위해서는 시스템 코어 소스 단부터의 압도적인 칼질(Slicing)과 다이어트가 강제되어야만 했다. C를 베이스 언어로 극한의 메모리 통제권을 쥔 Zenoh-Pico 에디션은 이러한 스케일 다운의 결정판 역작이다.

JVM 런타임 머신이나 둔중한 C++ 템플릿 메타프로그래밍 따위의 묵직한 허울을 완전히 벗어던진 이 경량 엔진은, 실행을 영원히 정지시키지 않고 힙 영역 동적 메모리 스택 펌프(Malloc Heap) 자체 사용을 법률로 금지시켰다. 이 미들웨어 포팅 기술은 단말기가 컴파일될 시점에 모든 네트워크 소켓 링 버퍼와 세션 포인터, 프로토콜 구조체 트리를 ’완벽하게 정적(Static Array Buffer)’인 배열 공간 안에 컴파일 타임 픽스 타겟으로 매핑해버린다. 결과적으로 디바이스 운영체제의 스레드 분리도 없고 가비지 컬렉터도 없는 청정 구역 속에서 단지 10~20 KB 수준의 ROM 바이너리와 플래시 메모리 점유만으로, 상단 백본 클라우드 코어와 단 하나의 위화감 없이 P2P 트래픽 협상을 달성해 내는 기적적인 생존 스케일 다운력을 뿜어내는 것이다.

2. 100Gbps 클라우드 백본망 대응을 위한 NUMA-aware 멀티 스레드 파이프라인 확장

정반대의 전장을 올려다보면 상황은 180도 뒤집힌다. 인터넷 중심가의 허브(Hub) 코디네이터 서버나 퍼블릭 VPC 단에 위치한 Zenoh 메인 라우터는 전 세계 수십만 개의 로보틱스 터널을 한 몸에 부여잡고 초당 수백만 개의 라우팅 이벤트 블록 및 필터 교차 쿼리 매칭을 뿜어내야 한다.

여기서 엔진은 앞선 100KB 병아리 코드가 취했던 고정 스레드 옹색한 싱글 이벤트 루프(Single Event Loop) 모델을 과감히 폐기하고, 즉각적으로 시스템에 탑재된 모든 CPU 80 코어를 탐욕스럽게 전부 잡아먹기 시작하는 무한 스케일 업 타겟팅 모드로 메탈 진화를 개시해야 한다. 인프라 머신 내부의 메모리 병목 지연을 통제하기 위하여 각 비동기 워커 스레드 파이프라인의 물리적 위치 구조를 고려한 NUMA (Non-Uniform Memory Access)-Aware 메모리 친화적 스레드 락 할당 루프를 가동한다.

각 통신 세션 커넥션에서 떨어지는 바이트 트래픽 이벤트들은 시스템 코어 단위의 자율 쪼개기(Sharding) 레이어 망을 타며 극단적으로 병렬 포워딩 해시 연산 처리에 몸을 맡긴다. 이 경이로운 확장성 아키텍처는 리소스가 주어지면 주어지는 대로 네트워크 백플레인 성능의 끝을 향해 송수신 전송량 한계를 파괴하며 광대역(High Throughput) 멀티플렉싱을 지배하는 무자비한 괴물 포식자로 돌격하게 된다.

3. 운영 환경 자원 제약을 감지하는 컨텍스트 인지형(Context-aware) 동적 모듈 로딩 아키텍처

거대한 엣지망 인프라스트럭처의 배포 효율을 높이기 위해, 이렇게 극단적으로 갈라지는 두 기형적 스펙트럼의 체급을 미들웨어가 어떻게 심리스(Seamless)하게 넘나드는 것일까? 그 근간에는 플러그인(Plug-in) 기반 아키텍처 철학과 실행 타임(Run-time) 컨텍스트 인지 결합 엔진이 비밀의 열쇠로 작용하고 있다.

Zenoh 데몬 라우터 코어 코드는 순수한 가장 핵심 뼈대인 최단 경로 해시 테이블 FIB 검색 엔진과 와이어 프로토콜 송수신 포워딩 파이프라인 단 하나만 덩그러니 남겨둔 채, 나머지 기능의 살껍데기들은 전부 외부 모듈 플러그인 동적 패키지 박스로 분리해 내버렸다(Separation of Concerns).

따라서 만약 라우터가 배포된 물리적 노드의 환경이 빈약한 로컬 에지 포그 라우터임이 감지되면, 무거운 분산 스토리지 RocksDB 엔진 플러그인 모듈이나 REST API 클라이언트 웹서핑 로드 밸런스 모듈을 런칭 패키지 트로이 목록에서 영원히 배제한다. 그러나 동일한 데몬 바이너리 파일이 초거대 데이터센터(Data Center)로 밀어 올려 배포(Deploy)된 순간, 인프라의 막대한 리소스를 빨아들이기 위해 비로소 무거운 InfluxDB 스토리지 플러그인과 다기종 멀티캐스트 오토 터널링 스위치 모듈 등을 순차적으로 자기 모듈 뼈대 위에 동적으로 결속(Dynamic Linking)하여 괴력을 덧입는다.

동일한 바이너리 코드 단일체가 자신이 속한 물리 하드웨어의 한계 컨텍스트 계급을 자율적으로 훔쳐보고 필요한 기능의 무기만을 핀셋처럼 로딩/언로딩해 내는 이 똑똑한 플러그인 다목적 파생 패러다임이 곧, 에지(Edge)의 빈약한 나락과 클라우드의 스케일 풍요로움을 단 하나의 프로토콜로 모자람 없이 포옹해 낸 예술적인 마스터피스 설계 철학인 것이다.