Distributed System
-
Rate Limiter (API 요청 제한) 설계: 시스템을 보호하는 방어막Tech Career/System designs 2025. 8. 10. 16:49
들어가며: 무분별한 요청으로부터 시스템을 지켜라대규모 서비스를 운영하다 보면, 예상치 못한 트래픽 폭증이나 악의적인 요청으로 인해 시스템이 마비되는 상황을 마주할 수 있습니다. 특정 사용자가 API를 과도하게 호출하거나, 봇이 무차별적으로 데이터를 긁어가는 경우 등이 대표적입니다. 이러한 상황은 시스템의 안정성을 위협하고, 모든 사용자에게 피해를 줄 수 있습니다.특히, 분산 서비스 거부(DDoS, Distributed Denial of Service) 공격은 수많은 IP 주소에서 대량의 요청을 보내 시스템을 마비시키는 것을 목표로 합니다. Rate Limiter(요청 제한기)는 이러한 문제를 해결하기 위한 필수적인 컴포넌트입니다. 이는 특정 단위 시간 동안 API에 접근할 수 있는 요청의 수를 제한하여,..
-
메시지 큐(Message Queue) 시스템 설계: 비동기 처리와 느슨한 결합Tech Career/System designs 2025. 8. 10. 16:29
들어가며: 시스템 간의 '대화', 더 똑똑하게 할 수는 없을까?웹 애플리케이션을 개발하다 보면, 사용자의 요청 하나가 여러 백엔드 서비스에 영향을 미치는 경우가 흔히 있습니다. 예를 들어, 사용자가 상품을 구매하면, 주문 처리, 결제 완료 알림, 재고 관리, 배송 정보 등록 등 여러 작업이 순차적으로 발생하죠. 이 모든 작업을 동기적으로(Synchronously) 처리하면 하나의 작업이 실패했을 때 전체 트랜잭션이 실패하고, 시스템의 응답 시간이 길어지는 문제가 발생합니다.이러한 문제를 해결하기 위해 등장한 것이 바로 메시지 큐(Message Queue)입니다. 메시지 큐는 시스템 간의 통신을 비동기적으로 처리하고, 느슨한 결합(Loose Coupling)을 가능하게 하는 핵심적인 분산 시스템 컴포넌트입..
-
Consistent Hashing (일관된 해싱): 데이터 분산의 핵심Tech Career/System designs 2025. 7. 31. 23:01
들어가며: 분산 시스템에서 데이터는 어떻게 '골고루' 분배될까?대규모 분산 시스템을 설계할 때 가장 중요한 과제 중 하나는 데이터나 요청을 여러 서버(노드)에 어떻게 효율적으로 분배할 것인가입니다. 단순히 hash(key) % N (N은 서버 개수)과 같은 모듈러 연산을 사용하면 되지 않을까 생각할 수 있습니다. 하지만 이 방식은 서버가 추가되거나 제거될 때 치명적인 문제점을 발생시킵니다. 서버 개수 N이 변하면 대부분의 키-서버 매핑이 바뀌어 대규모 데이터 재분배가 일어나고, 이는 곧 시스템 성능 저하와 장애로 이어질 수 있습니다.이러한 문제를 해결하기 위해 등장한 개념이 바로 Consistent Hashing (일관된 해싱)입니다. Consistent Hashing은 분산 시스템에서 노드가 추가되거나..