시스템 구조 2

[대규모 시스템 설계 기초] 알림 시스템 설계

알림 시스템 설계 알림 시스템은 많은 애플리케이션에서 사용됩니다. 제품 업데이트, 이벤트, 피드 등 다양한 분야에서 정보를 제공하기 위해 사용됩니다. 비즈니스 로직을 처리하는 여러 서버들이 있다고 가정하고 알림 시스템을 설계해서 다양한 종류의 단말기에 알림을 전송하는 시스템을 설계해보겠습니다. 문제 이해 및 설계 범위 우선 문제를 정의해보겠습니다. 푸시 알림과 SMS, 이메일의 알림을 지원합니다. soft real-time 시스템, 가능한 빠르게 전달되어야합니다만, 부하에 따라 약간의 지연은 무방합니다. IOS와 안드로이드 단말기와 데스크톱을 지원합니다. 사용자가 알림을 받지 않도록 설정할 수 있습니다. 하루 천만 건의 푸시 알림, 백만 건의 SMS, 5백만 건의 이메일을 처리할 수 있어야합니다. 필수 ..

시스템 구조 2024.03.14

[대규모 시스템 설계 기초] 안정 해시 설계, Consistent hashing

안정 해시 설계, consistent hashing 수평적 규모 확장성을 달성하기 위해서는 데이터를 서버에 균등하게 나누는 것이 중요하다. 그리고 이를 실현시키는 기술로 안정 해시가 있다. 해시 키 재배치 문제, rehashing 먼저, 왜 안정 해시가 필요한지를 문제 상황을 통해 알아보자. N개의 캐시 서버가 있다고 가정하면, 요청에 응답하는 서버를 할당하기 위해 다음의 수식(modular arithmetic)을 사용한다. 몇 번째 server = hash(key) % N URI, 고유 식별자와 같은 요청에 적합한 key값을 선택하고 해시 함수의 결과를 N으로 나누어 서버에 요청을 보낸다. 서버에 개수가 일정하게 유지된다면 위 설계는 문제없이 작동한다. 하지만 auto scale로 서버가 추가되거나 ..

시스템 구조 2024.03.09