본문 바로가기

CS/개발지식3

데이터베이스 시스템에서 동시성을 제어하는 방법? 대표적인 동시성 제어 방식으로 MVCC(Multi-Version Concurrency Control) 와 Lock-Based Concurrency Control이 있습니다.1. MVCC(Multi-Version Concurrency Control/ 잠금 없는 읽기)MVCC는 데이터의 여러 버전을 유지하여 트랜잭션이 동시에 데이터를 읽고 쓸 수 있도록 하는 방식입니다. 각 트랜잭션은 자신만의 일관된 스냅샷(MySQL::언두 로그)을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항에 영향을 받지 않습니다.데이터의 각 버전을 유지하여 읽기 작업이 쓰기 작업과 독립적으로 이루어질 수 있습니다. 트랜잭션은 시작 시점의 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항을 보지 못합니다.또한 읽기 작업.. 2024. 12. 18.
동기 방식으로 외부 서비스를 호출할 때 외부 서비스 장애 조치 방법 외부 서비스 장애로 인해 응답이 오래 걸린다고 했을 때 외부 API 응답으로 대기하는 자원들이 운영 서버 내부에 쌓이면서 성능에 악영향을 줄 수 있습니다. 이를 해결하기 위한 가장 기본적인 방법은 타임아웃을 설정하는 것입니다. 크게 타임아웃에는 커넥션 타임아웃과 리드 타임아웃, HTTP 커넥션 풀 타임아웃을 설정해 볼 수 있습니다.다음과 같이 특정 서비스의 장애가 전체 서비스에 영향을 주는 경우는 어떻게 해결할 수 있을까요? 🤔이 경우는 벌크헤드 패턴을 적용해 볼 수 있습니다. 벌크헤드 패턴은 기능의 종류마다 자원 사용을 분리하는 것을 의미하는데요. 자원을 격리하여 서비스 일부에 장애가 발생해도 전체로 전파되지 않도록 보장해 주는 패턴입니다. 위 예시에서는 외부 서비스마다 다른 HTTP 커넥션 풀을 사.. 2024. 12. 11.
실생활 예시로 이해하는 동기/비동기 & 블로킹/논블로킹 동기 (Synchronous)패스트푸드점에서 햄버거를 주문하고 카운터 앞에서 기다리는 상황주문 접수 → 조리 → 완성 → 수령의 순서가 보장됨다른 손님의 주문이 중간에 끼어들 수 없음블로킹 (Blocking)식당에서 1시간 웨이팅을 하는 상황웨이팅 동안 자리에서 이탈할 수 없음 (다른 일 불가능)내 차례가 되기 전까지 계속 기다려야 함 🔍 핵심 차이점:동기: 작업의 순서와 결과에 초점 (A 작업 후 B 작업)블로킹: 다른 작업 수행 가능 여부에 초점 (다른 작업 불가능한 상태)비동기 (Asynchronous)배달 앱으로 음식을 주문하고 다른 일 하는 상황주문 후 배달되는 동안 다른 일을 할 수 있음여러 가게에 동시에 주문할 수 있음논블로킹 (Non-blocking)식당 웨이팅 등록 후 전화나 문자로 알.. 2024. 12. 10.