20.6.2.3 MQTT 데몬 단일 병목 극복을 위한 로컬 브로커-브릿지 단위 분할 처리(Sharding) 아키텍처

20.6.2.3 MQTT 데몬 단일 병목 극복을 위한 로컬 브로커-브릿지 단위 분할 처리(Sharding) 아키텍처

MQTT의 자동 텍스트 파싱을 억누르고 원시 바이트(Raw Bytes) 덤프 모드로 브릿지를 개조하여 CPU 연산을 극소화(Zero-Overhead)시켰다(20.6.2.2장 참조).
하지만 스웜 로보틱스 공장에서 10만 대의 센서가 동시에 Mosquitto 브로커 1대를 향해 트래픽을 집중시키면, 아무리 짐(Bytes)만 나르는 똑똑한 Zenoh 브릿지가 뒤에서 대기하고 있다 한들, 단일 MQTT 브로커(Single Point of Failure) 소켓단 자체가 TCP 커넥션 한계(C10K 문제)에 짓눌려 터져버린다.

낡은 IoT 통신의 허브인 싱글 브로커는 L4 네트워크 대역폭(Bandwidth) 이전에 리눅스 커널의 파일 디스크립터(File Descriptor) 한계를 초과하며 시스템 크래시를 유발한다.
본 절에서는 단일 브로커/단일 브릿지가 10만 연결을 독박 쓰는 집중형 지옥을 피하기 위해, 센서들의 지리적/논리적 군집 단위로 소형 브로커와 Zenoh-Bridge 조를 수십 개로 찢어(Shariding) 엣지 단에 분산 배치하는 수평 확장(Horizontal Scaling) 및 메시(Mesh) 토폴로지 승격 런북을 갈파한다.

1. 중앙 집중형 Broker-Bridge 의 데드락(Deadlock) 한계

초보 아키텍트는 공장 한가운데에 거대한 64코어짜리 서버를 두고 거대한 MQTT 브로커 1대와 Zenoh-Bridge 1대를 맞물려 놓는다.
공장의 모든 센서(10만 개)는 이 1개의 서버 IP를 향해 Publish 패킷을 쏘아 올린다.

  • 문제 1: 네트워크 병목: 10만 개의 커넥션이 중앙 스위치를 거치며 큐(Queue)를 가득 채우고 병목 압살 지체 지연이 터진다.
  • 문제 2: 커널 포화: Mosquitto 데몬 1개가 포트 스레드 처리 속도의 한계를 넘지 못하고 연결을 거부(Connection Refused)하기 시작한다. 결국 백프레셔로 인해 센서들의 로컬 캐시가 뻗는다.

Zenoh 는 무한한 메시(Mesh) 네트워크를 지원하는 최첨단 분산 엔진인데, 그 앞단의 구닥다리 인터페이스(MQTT)를 단일 병목으로 구성한 것은 최첨단 전기차 엔진 앞에 말(Horse)을 매달아 놓는 짓과 같다.

2. 지리적 분할(Sharding)과 무수한 마이크로-브릿지 쌍의 살포

아키텍트는 단일 중앙 허브를 박살 내고 파편화(Fragmentation) 전술을 강행한다.
공장 내 100개의 기둥이 있다면, 각 기둥 바닥(Edge)에 3만 원짜리 Raspberry Pi 급 초소형 보드를 하나씩 박아 넣는다.
그리고 그 초소형 보드 안에 아주 조그마한 Mosquitto 데몬 1개와, Zenoh-Bridge-MQTT 데몬 1개를 한 쌍(Pair) 으로 묶어 띄운다!

이로써 공장에는 중앙 브로커가 사라지고 무려 100개의 독립적인 마이크로 게이트웨이(Micro-Gateways) 가 생성되었다.

  1. 로컬 샤딩(Sharding): 반경 10미터 안에 있는 센서(약 1,000대)는 오직 자기 머리통 위에 있는 기둥의 로컬 MQTT 브로커 IP 로만 쏜다.
  2. 로컬 브로커는 동력을 전혀 소모하지 않고 1,000대 체급의 가벼운 TCP 소켓을 무리 없이 처리한다.
  3. 기둥 안에 같이 묶인 Zenoh-Bridge 프록시는 이 1,000대의 트래픽만 가볍게 주워 담아 원시(Raw) 바이트로 뒤집어쓴 뒤, 공장 전체를 아우르는 거대한 Zenoh L7 Mesh 네트워크 속으로 사출(Publish)시킨다.

3. 분산 메시(Mesh)의 백본 승격과 SPOF 회피

이제 10만 대의 레거시 MQTT 타격 부하는 100개의 엣지 브로커로 분산(Load Balancing)되어 커널 병목이 완전히 소멸하였다 (분산 1000 커넥션 * 100 = 10만 개).

개별 기둥에서 올라온 데이터들은 그 순간부터 구닥다리 MQTT 영역을 탈출했다. 그 바이트들은 Zenoh 엔진단이 스스로 구축한 다중 접속 릴레이(Mesh/Peer-to-Peer) 알고리즘을 타며 클라우드를 향하는 백본 고속도로 위에 올라탑니다. 만일 기둥 3번 장비가 벼락을 맞아 고장 났다 한들, 오직 그 반경 센서들만 죽을 뿐 나머지 99%의 거대 공장 시스템은 단 1마이크로초의 간섭이나 연산 스냅도 겪지 않고 정상 가동된다(Zero SPOF).

아키텍트의 임무는 새로운 모던 엔진(Zenoh) 을 도입했다고 레거시를 단일 창구 한 곳에서 한꺼번에 역살 시키고 압박하는 게 아니다. 레거시 종단점이 감당할 수 있는 한계치(Connection Limit)만큼 잘게 잘게 찢어서(Sharding) 물리적 전초 기지로 뿌려버리고, 그 찢어진 수백 개의 전초 기지들을 새로운 모던 패러다임(Zenoh Mesh) 이 무한정으로 수용하고 포옹하게 설계하는 것. 인프라의 파고를 지능적인 논리망의 파편화로 회피하는, 분산 게이트웨이 통치술의 최고 경지다.