본문 바로가기
Daily/디지털 뱃지

[디지털 뱃지] 일일 스터디 Day 07

by S.W 2026. 5. 28.

[디지털 뱃지] 일일 스터디 Day 07

General(Concurrency) & Developer(Architecture) 핵심 돌파

1. 오늘의 핵심 이론 설명

General Engineering - Data Engineering

낙관적 락(Optimistic Lock) vs 비관적 락(Pessimistic Lock)

다수의 사용자가 동시에 동일한 데이터(인프라 설정, 자원 수량 등)를 수정할 때 데이터 무결성을 보장하는 동시성 제어 메커니즘입니다.

  • 비관적 락 (Pessimistic Lock): 데이터 충돌이 빈번하게 발생할 것이라고 '비관적'으로 가정하여, 데이터를 읽는 시점부터 무조건 락(Shared Lock 또는 Exclusive Lock)을 걸어 선점하는 방식입니다. 데이터 무결성은 완벽히 보장되나, 다른 트랜잭션이 대기 상태에 빠지므로 시스템 동시 처리 성능(Throughput)이 크게 저하되고 데드락(Deadlock)이 발생할 위험이 있습니다.
  • 낙관적 락 (Optimistic Lock): 데이터 충돌이 거의 없을 것이라고 '낙관적'으로 가정하고 하드웨어/DB 단에 실제 락을 걸지 않는 방식입니다. 대신 데이터에 버전(Version)이나 타임스탬프 컬럼을 두어 관리합니다. 데이터를 수정할 때 내가 처음 읽은 버전이 맞는지 확인하고, 그사이 버전이 바뀌었다면 충돌로 간주하여 롤백(Application 레벨 처리)합니다. 락 오버헤드가 없어 성능상 유리하지만 충돌 시 복구 로직을 직접 구현해야 합니다.
Developer Engineering - Software Architecture

메시지 큐(Message Queue)를 활용한 비동기 아키텍처 및 시스템 결합도 완화

MSA 환경에서 서비스 간 직접적인 동기 호출(HTTP/REST)로 인한 연쇄 장애를 방지하고 시스템을 안정적으로 확장하는 중추 메커니즘입니다.

  • 동기(Synchronous) 호출의 한계: 서비스 A가 서비스 B를 직접 호출할 때, 서비스 B가 다운되거나 응답이 지연되면 서비스 A의 스레드도 함께 블로킹(Blocking)됩니다. 이는 시스템 전체의 가용성을 무너뜨리는 원인이 됩니다.
  • 메시지 큐(MQ) 기반 비동기 통신: 송신자(Producer)는 메시지 큐에 메시지를 던지기만 하고 즉시 자신의 비즈니스 로직을 계속 수행합니다. 수신자(Consumer)는 큐에서 메시지를 자신의 처리 속도에 맞춰 비동기적으로 가져가(Pulling) 처리합니다. (RabbitMQ, ActiveMQ 등이 대표적입니다.)
  • 느슨한 결합(Loose Coupling)과 수평 확장: 두 서비스가 물리적 주소나 실시간 가동 상태에 종속되지 않으므로 시스템 결합도가 극도로 낮아집니다. 트래픽이 폭증할 때 메시지 큐가 버퍼 역할을 하여 시스템 다운을 막아주며(Load Leveling), 컨슈머 인스턴스만 늘려 쉽게 스케일 아웃할 수 있습니다.

2. 디지털 뱃지 레벨 1~2 예상 문제집

Q1. 데이터베이스 동시성 제어 기술 중 '낙관적 락(Optimistic Lock)'에 대한 설명으로 가장 올바른 것은?

1) 트랜잭션이 시작될 때 테이블이나 로우에 실제 물리적인 배타적 락(Exclusive Lock)을 선점한다.
2) 데이터 충돌이 매우 빈번하여 동시성 제어 오버헤드가 무조건 크게 발생하는 환경에 가장 적합하다.
3) 데이터 자체에 버전(Version) 번호 등을 부여하여, 수정 시점에 데이터 충돌 여부를 감지하는 메커니즘이다.
4) 데이터베이스 엔진 자체에서 데드락(Deadlock)을 원천적으로 완벽히 방지해 주므로 별도의 어플리케이션 예외 처리가 필요 없다.
정답 및 해설 보기

정답: 3)
해설: 낙관적 락은 실제 DB 하드웨어 자원에 락을 걸지 않고, 데이터의 버전 상태를 비교하여 트랜잭션 종료 시점에 충돌을 감지하는 논리적인 방식입니다. 충돌 발생 시 최초 쿼리 시점과 버전이 다르면 어플리케이션 단에서 예외가 발생하므로, 롤백이나 재시도 로직을 개발자가 직접 구현해야 합니다.

Q2. MSA 환경에서 서비스 간 메시지 큐(Message Queue)를 도입하여 비동기 아키텍처를 구성했을 때 얻을 수 있는 이점으로 가장 거리가 먼 것은?

1) 호출 대상 서비스가 일시적인 장애 상태이더라도 송신 서비스는 무중단으로 요청을 발행할 수 있다.
2) 트래픽 폭증 시 큐가 완충 장치(Buffer) 역할을 하여 백엔드 시스템의 과부하를 방지한다.
3) 송신 서비스와 수신 서비스 간의 강한 결합(Tight Coupling) 상태를 유도하여 실시간 데이터 동기식 조회 처리 속도를 극대화한다.
4) 메시지를 처리하는 컨슈머(Consumer) 노드만 수평적으로 확장하여 대량의 데이터 처리를 유연하게 분산할 수 있다.
정답 및 해설 보기

정답: 3)
해설: 메시지 큐의 본질적인 이점은 서비스 간의 결합도를 '느슨하게(Loose Coupling)' 만드는 것입니다. 동기식 호출과 달리 실시간 직접 응답을 주고받지 않으므로, 즉각적인 실시간 데이터 동기 조회가 핵심인 비즈니스 구조에는 적합하지 않으며 이벤트 기반 최종적 일관성을 지향합니다.


💡 신기술 추가 지식 : 분산 락(Distributed Lock)과 글로벌 인프라 제어

단일 RDBMS 인프라 환경을 넘어, 쿠버네티스(K8s) 상에서 다수의 파드(Pod)나 여러 클라우드 리전으로 다중 분산된 마이크로서비스 생태계에서는 데이터베이스 고유의 낙관적/비관적 락만으로 동시성을 제어하는 데 한계가 있습니다. 서로 다른 DB 인스턴스나 인프라 환경 전체를 관통하는 상위 레이어의 자원 격리를 구현하기 위해, 최근 클라우드 아키텍처에서는 인메모리 데이터 스토어인 Redis(Redlock 알고리즘)나 분산 코디네이터인 Apache ZooKeeper/etcd를 활용한 분산 락(Distributed Lock) 메커니즘을 적극 도입하고 있습니다. 이는 가상 인프라 자원의 중복 할당을 막고, 대규모 마이그레이션 및 상태 동기화 과정에서 클러스터 전체의 정합성을 보장하는 핵심 분산 컴퓨팅 기술로 중요하게 다뤄지고 있습니다.