반응형

📝backoff (백오프)

요청이 실패했을 때 바로 재시도하지 않고 일정 시간 기다렸다가 다시 시도하는 전략

 

📝분산트레이싱

마이크로서비스처럼 여러 서버를 거쳐가는 하나의 요청 흐름을 처음부터 끝까지 추적하는 기술

 

📝멀티테넌시 (Multi-Tenancy)

하나의 시스템을 여러 고객(테넌트)이 함께 사용하는 구조로 Gmail(하나의 서버에 많은 이용자), Notion등이 있다.

 

📝keep-alive

한 번 만든 네트워크 연결(TCP 연결)을 끊지 않고 계속 재사용하는 것

 

📝트랜잭셔널 아웃박스 패턴 (Transactional Outbox)

DB에 데이터는 저장됐는데 메시지(Kafka, RabbitMQ 등)는 발행 실패로 데이터 불일치 발생합니다.

위 문제를 해결하기 위해 비즈니스 데이터와 이벤트를 같은 DB 트랜잭션으로 저장합니다.

근데 이런 경우는 프로듀서에서 DB저장로직이 있을때만 발휘되는 것으로 프로듀서는 단순로직만 있어야하고 자원은 안 쓰게끔 하면 된다.

 

동작방식

  1. 비즈니스 로직 실행 (주문 생성)
  2. 같은 트랜잭션 안에 비즈니스 처리 및 이벤트 저장 (order 테이블에 주문저장, outbox 테이블에 orderCreated 이벤트 저장)
  3. 트랜잭션 커밋
  4. 별도 프로세스(폴러/CDC)가 outbox를 읽어 메시지 브로커로 발행
  5. 발행 성공시 outbox 상태 변경 또는 삭제

 

📝인박스 패턴 (Inbox 패턴)

메시지(Kafka, RabbitMQ 등) 메세지를 컨슈머에 중복 전달하는 경우를 처리하기 위해 사용합니다.

받은 메세지를 먼저 DB에 저장하고 중복 여부를 체크합니다.

그렇게 많이 사용하진 않으며 DB 유니크로 멱등성을 강제하는 방식을 많이 사용합니다.

 

동작방식

  1. 메시지 수신
  2. 같은 트랜잭션 안에서 inbox 테이블에 메시지 ID저장이후 비즈니스 로직 수행
  3. 이미 처리된 메시지 ID면 무시한다.

 

📝IDOR (Insecure Direct Object Reference)

사용자가 접근하면 안 되는 객체(Object)에, 식별자(ID)만 바꿔서 접근할 수 있는 취약점으로 예를 들면 userId:1인 사람은 userId:2인 사람 거를 접근하면 안 된다.

 

 

반응형