[개발지식] 동시요청에 대한 무결한 처리를 보장하는 방법

Hyo Kyun Lee·2024년 8월 29일
0

개발지식

목록 보기
44/69

1. 개요

  • API를 통신(대내->대외기관으로 데이터를 송수신할때)하면서 하나의 데이터를 동시에 송신요청을 하려고 한다. 어떻게 제어 해야할까?

2. 트래픽 제어

  • 사용자의 트래픽 집중(병목현상)이 발생할때, 트래픽을 조절하거나 제한하는 등 제어하는 방법을 일컫는다.
  • 트래픽을 제어하는 방법은 다양하게 존재한다.
    -> 시스템 이용자 수를 제한한다(유량제어) / 사용자에게 에러를 반환하여 근본적인 해결책이 되지 못한다.
    -> 사용자 트래픽 증가에 맞춰 서버를 늘려 트래픽 처리에 대한 스케일아웃한다.
    -> 트래픽 처리를 멀티스레드화, 병렬화하여 처리능률을 향상한다 / 대부분의 트래픽 제어는 네트워크 I/O 관점에서 처리해야 하므로 큰 영향을 주지 못할 수 있다.
    -> async 처리, 다음 처리를 기다리지 않고 바로 다음 처리를 진행한다.

유량제어는 트래픽을 제어하는 방법 중 하나이다.

3. 동시성 제어

  • 동시성 제어는 데이터베이스 시스템에서, 데이터 처리의 고립성을 유지하여, 여러 요청이 있어도 무결성과 일관성을 유지할 수 있도록 하는 특징이자 기법이다.

  • Locking, 이 중 분산락은 메시지 큐라는 것을 활용하여, 분산 시스템(서버)에서의 무결성을 유지하는데 사용한다.
    ** Redis가 이 분산락 기법을 제공한다.

4. FEP 동시요청에 대한 처리

  • 기본적으로 Header에 유일한 처리를 보장하는 key값을 넣고, 통신하는 전문마다 전문내역에 저장하므로 동시성이 저해될 일은 없다고 판단된다.
  • 다만, 해당 key값을 그대로 후처리에도 활용하여 처리된 데이터가 끝까지 정상적으로 전문통신내역 저장 및 전산처리까지 완료할 수 있도록 구성이 필요하다.
  • 기본적으로 전산처리와 통신은 서로 별개의 개념으로, rollback이 불가능하다. 다만 통신내역을 전문내역에 저장하여 사용자가 통신상태를 알 수 있도록 조치해야 하는 것이다.

5. 참고자료

0개의 댓글