소개

네트워크에 직접적인 의존성을 줄이고, 서비스간 디커플링과 폴리글랏 환경으로 마이크로서비스와 분산 아키텍처를 자유롭게 구축하세요.

PMR은 메세징 아키텍쳐가 필요로 하는 대부분의 도구들을 빌딩 블럭으로써 제공합니다. 또한 이러한 빌딩 블럭을 통해 명시적으로 마이크로서비스화 할 수 있도록, 다양한 네트워크 구성과 분산환경에 즉시 적용할 수 있습니다.

추상화된 빌딩 블럭을 사용하며 얻게되는 장점은 프로그래머가 특정 메세징 흐름을 설계해야할때 그에 대한 세부적인 사항을 신경쓰지 않고 오로지 애플리케이션에만 집중할 수 있다는 것입니다.

예를 들어 분산 아키텍처에서 메세지 브로커나 애플리케이션 레벨의 메세지 라우터는 암묵적으로 필수적인 요소가 되었습니다. PMR을 활용한다면 'Topic and Actors', 'Publish and Subscribe' 를 통해 별다른 비용없이 메세지 흐름과 분산을 손쉽게 구성할 수 있습니다.

PMR routing topology · KS_F message fan-out 236, 217, 269, 271 4 channels KS_F log · route · route KS_qos route KS_F_qos_emit emit KS_F_emit modify · emit KS_Q_emit modify · emit

분산 애플리케이션을 더 빠르게 구축하세요

PMR은 분산 애플리케이션을 구축하기 위한 모범 사례와 패턴이 내장된 통합 API 세트입니다. PMR은 워크플로, 에이전트 기반 QoS, 퍼블리시/서브스크라이브(pub/sub), 상태 관리, 시크릿 저장소, 외부 구성, 바인딩, 액터, 작업(job), 분산 트랜잭션과 같은 즉시 사용 가능한 기능을 통해 개발자의 생산성을 높여줍니다. 내장된 보안, 안정성 및 가시성 기능을 활용할 수 있으므로, 프로덕션 환경에 바로 배포 가능한 애플리케이션을 구축하기 위해 반복적인 코드를 작성할 필요가 없습니다.

Bolt Log · 3-tier write path: log → buffer paging → indexed storage Bolt Log every frame Buffer Paging (MMF) 4 M bytes (8/12/16 …) 4 M bytes I/O Indexed Storage Sync. / Commit

볼트 로그

고속 스토리지 환경을 위한 영구 키-값 저장소.

고성능:

PMR의 Bolt Log는 최고의 성능을 위해 전적으로 C++로 작성된 로그 구조의 추가 전용(append-only) 데이터베이스 엔진을 사용합니다. 키와 값은 단순히 임의의 크기를 가진 바이트 스트림입니다.

고속 스토리지에 최적화:

PMR의 Bolt Log는 플래시 드라이브 및 고속 디스크 드라이브와 같은 고속, 저지연 스토리지에 최적화되어 있습니다. Bolt Log는 플래시 또는 버퍼가 제공하는 높은 읽기/쓰기 속도의 잠재력을 최대한 활용합니다.

실용성:

Bolt Log는 다양한 워크로드에 유연하게 적용할 수 있습니다. 풀스펙 데이터베이스 스토리지 엔진부터 임베디드 워크로드를 위한 애플리케이션 데이터 캐싱에 이르기까지, Bolt Log는 다양한 데이터 요구 사항에 활용될 수 있습니다.

Programmable Routing · content-based fan-out from PMR PMR log · route · route PMR UDP 메인시세 KQP UDP 통합시세 PMR UDP 유량제어 BROKER TCP 송출 PMR UDP 송출

프로그래머블 라우팅

PMR의 프로그래머블 라우팅(Programmable Routing)은 고급 콘텐츠 기반 라우팅(CBR)을 지원하여, 메시지 페이로드 내의 특정 데이터를 기반으로 정교하고 동적인 경로 제어를 가능하게 합니다.

사용자는 복잡한 라우팅 로직을 직접 완전히 프로그래밍할 수 있으며, 정의된 로직은 재시작 없이 실행 시 즉시 적용되므로 서비스 중단 없이 유연하게 대응할 수 있습니다. 비즈니스 요구 사항을 충족하고 변화하는 트래픽 상황에 민첩하게 대응하기 위해 데이터 흐름을 실시간으로 최적화하십시오.

프로그래머블 속도 제한기 (QoS)

이 기능은 정교한 프로그래머블 속도 제한기를 구현합니다. 단순히 전체 트래픽을 제한하는 것을 넘어, 메시지 속성이나 토픽 상태를 기반으로 하드웨어 수준의 정밀도로 전송 간격과 대역폭을 제어합니다.

콘텐츠 기반 트래픽 제어:

차등 속도 제한(Differential Rate Limiting)을 지원하여, 메시지 내의 특정 필드나 우선순위에 따라 서로 다른 처리 속도를 적용할 수 있습니다.

동적 임계값 설정:

시스템 부하 상태나 비즈니스 정책에 따라 런타임 중에 실시간으로 처리 한도를 조정할 수 있어, 변화하는 인프라 환경에 유연하게 적응할 수 있습니다.

지능형 백프레셔 관리:

액터 체인 내의 특정 조건에 따라 전송 지연 시간과 대역폭 제어를 직접 프로그래밍함으로써, 다운스트림 시스템의 과부하를 방지하고 전체 서비스의 안정성을 보장합니다.

Topics and Actors · sequential action injection into a topic pipeline topic action action action

토픽과 액터

토픽과 액터 아키텍처는 메시지 수집부터 처리까지의 전체 프로세스를 동적인 실행 파이프라인으로 정의함으로써 고정된 로직의 한계를 뛰어넘습니다. 메시지가 특정 토픽으로 수집되면, 등록된 일련의 액션 함수(액터)가 순차적으로 호출되어 메시지 컨텍스트를 처리하고 변환합니다.

논리적 유연성:

정의된 순서에 따라 데이터가 흐르는 “체인 기반 구조”를 통해, 복잡한 비즈니스 로직을 모듈형 액션의 조합으로 명확하게 구현할 수 있습니다.

런타임 액션 주입:

새로운 처리 로직(액터)을 실행 중인 시스템에 실시간으로 주입하거나 순서를 변경할 수 있어, 변화하는 요구 사항에 즉각적으로 대응할 수 있습니다.

연중무휴 24시간 고가용성 보장:

코드 수정이나 기능 확장을 위해 전체 시스템을 재시작할 필요가 없습니다. 런타임 업데이트를 통해 진정한 무중단 운영을 실현하며, 서비스 중단 없이 시스템을 진화시킬 수 있습니다.

Distributed transaction spine · TRAN → participants → COMMIT TRAN COMMIT DB #1 Query MSA #2 Query MSA #3 Tran.

다단계 / 분산 트랜잭션

PMR은 정교한 상태 관리 메커니즘을 통해 다단계 분산 트랜잭션의 전체 프로세스를 원활하게 제어합니다.

각 단계의 상태 값을 실시간으로 유지 및 추적함으로써, 복잡한 마이크로서비스 환경에서도 완벽한 데이터 원자성과 가시성을 보장합니다. 장애 발생 시, 정교한 추적 데이터를 기반으로 즉각적인 원인 분석과 일관성 복구를 수행하여 시스템 운영 안정성을 극대화합니다.

코드로서의 인프라

PMR은 “코드를 통한 네트워크 아키텍처 재구성”이라는 혁신적인 패러다임을 도입하여, 하드코딩된 정적 네트워크 구조의 한계를 뛰어넘습니다. Moonscript 기반의 레이아웃 구성을 활용하면, 소프트웨어를 설계할 때와 마찬가지로 메시지 흐름과 프로세스 레이아웃을 자유롭게 정의할 수 있습니다.

코드로 정의된 토폴로지:

복잡한 네트워크 프로세스 구성이 직관적인 코드로 추상화되어, 아키텍처의 가독성과 관리 효율성을 극대화합니다.

즉각적인 반영:

수정된 코드는 시스템 재시작 없이 런타임 시 즉시 반영됩니다. 이는 단순한 구성 변경을 넘어 전체 네트워크 토폴로지의 실시간 재구성을 가능하게 합니다.

애자일 인프라 관리:

물리적 인프라의 제약에 얽매이지 않고, 변화하는 비즈니스 요구 사항이나 트래픽 패턴에 대응하여 논리적 아키텍처를 유연하게 최적화하고 발전시킬 수 있습니다.