본문 바로가기

대규모 시스템

대규모 시스템이란?

대규모 시스템이란?

  • 대규모 시스템이란, 많은 사용자, 데이터, 트래픽을 동시에 처리할 수 있도록 설계된 확장 가능하고 고가용성을 갖춘 분산 시스템입니다
  • 단순히 많은 사용자를 처리하는 것뿐만 아니라, 안정성과 신뢰성을 유지하면서 고성능을 제공해야 합니다.

 

분산 트랜잭션

  • 분산 트랜잭션은 여러 개의 독립된 시스템이나 데이터베이스에서 동시에 일어나는 트랜잭션을 일관되게 관리하는 방법입니다.
  • 단일 트랜잭션이 여러 시스템에 걸쳐 발생할 때, 모든 시스템이 해당 트랜잭션을 성공적으로 완료하거나, 모든 시스템이 트랜잭션을 실패로 처리하도록 보장합니다. 이를 통해 데이터의 일관성을 유지할 수 있습니다.
  • 분산 트랜잭션이 필요한 이유는 마이크로서비스 아키텍처에서 여러 서비스가 독립적으로 운영되기 때문입니다

 

분산 트랜잭션 관리 기법

  • 2PC(Two-Phase Commit)
    • 분산 트랜잭션을 관리하는 프로토콜로, 준비(Prepare) 단계와 커밋(Commit) 단계로 나누어 트랜잭션을 처리합니다.
    • 준비 단계(Prepare Phase): 각 참여 노드는 트랜잭션 준비 상태를 확인하고, 준비 완료를 마스터 노드에 알립니다.
    • 커밋 단계(Commit Phase): 마스터 노드는 모든 참여 노드가 준비되었음을 확인하고, 트랜잭션을 커밋하도록 지시합니다. 만약 준비가 완료되지 않은 노드가 있다면 트랜잭션을 롤백합니다.
  • 사가 패턴(Saga Pattern)
    • 트랜잭션을 여러 단계로 나누어 처리하고, 각 단계가 독립적으로 커밋됩니다. 실패 시 보상 트랜잭션을 실행하여 상태를 롤백합니다.
    • 주문 생성 단계: 사용자가 주문을 생성합니다.
    • 결제 처리 단계: 결제 서비스가 주문 결제를 처리합니다.
    • 재고 감소 단계: 재고 서비스가 주문된 상품의 재고를 감소시킵니다.
    • 각 단계가 성공적으로 완료되면 다음 단계로 넘어가고, 실패하면 이전 단계에서 수행된 작업을 취소합니다.
  • 이벤트 소싱(Event Sourcing)
    • 상태 변화를 이벤트로 기록하고, 해당 이벤트를 재생하여 현재 상태를 유지합니다. 이를 통해 분산 트랜잭션의 일관성을 유지할 수 있습니다.

 

분산 트랜잭션의 장점

  • 데이터 일관성 보장:
    • 분산된 여러 데이터 소스에 걸쳐 일관된 데이터 상태를 유지할 수 있습니다. 모든 트랜잭션이 성공적으로 완료되거나 모두 실패하도록 보장합니다.
  • 확장성:
    • 분산 트랜잭션을 통해 여러 시스템이 독립적으로 동작하면서도, 필요한 경우 협력하여 일관된 상태를 유지할 수 있습니다. 이를 통해 시스템의 확장성을 높일 수 있습니다.
  • 신뢰성:
    • 트랜잭션의 ACID 속성을 분산 환경에서도 유지할 수 있어 시스템의 신뢰성을 높입니다. 데이터 무결성과 일관성을 유지할 수 있습니다.
  • 복구 가능성:
    • 트랜잭션 실패 시 롤백 메커니즘을 통해 상태를 복구할 수 있어, 시스템 안정성을 높일 수 있습니다.

 

분산 트랜잭션 단점

  • 복잡성 증가:
    • 분산 트랜잭션을 구현하고 관리하는 것은 복잡합니다. 특히, 여러 시스템 간의 트랜잭션 동기화와 데이터 일관성을 유지하는 것은 어려운 작업입니다.
  • 성능 저하:
    • 2PC와 같은 프로토콜을 사용할 경우, 트랜잭션의 준비와 커밋 단계에서 지연이 발생할 수 있습니다. 이는 시스템의 성능을 저하시킬 수 있습니다.
  • 네트워크 오버헤드:
    • 여러 시스템 간의 통신이 필요하므로 네트워크 오버헤드가 증가할 수 있습니다. 이는 트랜잭션 처리 속도를 저하시킬 수 있습니다.
  • 복구의 어려움:
    • 분산 트랜잭션 실패 시, 모든 시스템에서 일관된 상태로 롤백하는 것이 어려울 수 있습니다. 특히, 부분적으로 실패한 트랜잭션을 처리하는 데 어려움이 있을 수 있습니다.

'대규모 시스템' 카테고리의 다른 글

SAGA Pattern  (0) 2024.08.14
Kafka 기본 설정  (0) 2024.08.14
Kafka란?  (0) 2024.08.14
RabbitMQ 기본 설정  (0) 2024.08.14
RabbitMQ란?  (0) 2024.08.14