비동기 시스템의 핵심: 요청 추적과 성능, 정확성의 균형
비동기 시스템(Asynchronous Systems)은 높은 처리량(Throughput)과 낮은 지연 시간(Latency)을 위해 여러 요청을 동시에 처리하지만, 응답의 순서 보장(Order Guarantee)을 잃음
요청 추적(Request Tracking)은 응답을 요청에 매칭하고, 타임아웃(Timeout)과 재시도(Retries)로 인한 불확실성을 관리하는 핵심 기술임
결제 시스템(Payment Systems)은 ISO8583 메시지를 사용하여 요청을 식별하고, STAN(System Trace Audit Number)과 같은 식별자를 활용하여 응답을 추적함
HTTP/2는 스트림 ID(Stream ID)를 통해 전송 계층(Transport Layer)에서 요청을 추적하지만, 애플리케이션 레벨(Application Level)의 정확성 문제는 개발자가 직접 해결해야 함
비동기 시스템의 핵심 과제: 요청 추적
비동기 시스템(Asynchronous Systems)은 높은 성능을 위해 여러 요청을 동시에 처리하지만, 응답의 순서가 보장되지 않는다는 근본적인 문제를 안고 있다. 요청 추적(Request Tracking)은 이러한 비동기 환경에서 응답을 올바르게 매칭하고, 타임아웃(Timeout)과 재시도(Retries)로 인한 불확실성을 관리하는 핵심 기술이다. 특히, 결제 시스템(Payment Systems)과 같이 정확성이 중요한 시스템에서는 요청 식별자(Request Identifier), 상태 관리(State Management), 그리고 원자성(Atomicity)이 필수적이다. 이러한 요소들을 통해 시스템은 지연 시간(Latency)을 최소화하면서도 데이터의 일관성을 유지할 수 있다.
결제 시스템에서의 요청 추적: ISO8583
결제 시스템(Payment Systems)은 ISO8583 메시지를 사용하여 요청을 식별하고 추적하는 대표적인 사례이다. ISO8583 메시지는 STAN(System Trace Audit Number)과 같은 식별자를 포함하여 요청과 응답을 연결한다. 이러한 식별자는 요청의 상태를 추적하고, 타임아웃 발생 시 리버설(Reversal)과 같은 보상 조치를 가능하게 한다. 하지만, STAN은 글로벌 유일 식별자(Globally Unique Identifier)가 아니므로, 시스템은 중복 감지(Duplicate Detection)를 위한 추가적인 메커니즘을 구현해야 한다. 결제 시스템은 이러한 기술들을 통해 높은 처리량과 정확성을 동시에 달성한다.
HTTP/2의 요청 추적: 전송 계층에서의 해결
HTTP/2는 스트림 ID(Stream ID)를 사용하여 전송 계층(Transport Layer)에서 요청 추적 문제를 해결한다. HTTP/1과 달리, HTTP/2는 단일 연결에서 여러 요청을 동시에 처리할 수 있으며, 스트림 ID를 통해 응답을 올바른 요청에 매칭한다. 하지만, HTTP/2는 애플리케이션 레벨(Application Level)의 정확성 문제를 해결하지는 못한다. 따라서, 개발자는 재시도(Retries), 취소(Cancel), 그리고 지연된 응답(Late Responses)과 같은 상황에 대한 보상 로직(Compensation Logic)을 직접 구현해야 한다. HTTP/2는 전송 계층의 효율성을 높이지만, 애플리케이션 레벨의 설계는 여전히 중요하다.
비동기 시스템 설계의 핵심 원칙
비동기 시스템(Asynchronous Systems)을 설계할 때, 몇 가지 핵심 원칙을 준수해야 한다. 첫째, 각 요청에 대한 고유한 식별자(Unique Identifier)를 사용해야 한다. 둘째, 요청 상태(Request State)는 신뢰할 수 있고 원자적으로 관리되어야 한다. 셋째, 라우팅(Routing)은 요청과 응답이 동일한 위치에서 처리되도록 보장해야 한다. 마지막으로, 불확실성(Uncertainty)을 고려하여 설계해야 한다. 타임아웃, 재시도, 그리고 지연된 응답과 같은 상황에 대비하여, 시스템은 안전하게 동작할 수 있도록 설계되어야 한다. 이러한 원칙들을 따르면, 비동기 시스템의 성능과 정확성을 모두 확보할 수 있다.