공통
[대규모 시스템 설계 기초 정리] 분산 키-값 저장소 with Cassandra DB
요구사항 높은 가용성을 제공. 높은 규모 확장성을 제공. 데이터 일관성 수준은 조정이 가능해야 한다. 단일 서버 Key-Value 저장소 모든 데이터를 단일 서버 Key-Value 저장소 내의 메모리에 해시 테이블로 저장하는 경우, 모든 데이터를 메모리에 두는 것이 불가능하며 데이터 압축 혹은 자주 쓰이는 데이터만 메모리에 두고 나머지는 디스크에 저장을 통해 어느정도 개선은 가능해도 한계가 존재한다. 분산 Key-Value 저장소 분산 키 값 저장소는 분산 해시 테이블이라고도 하며, Key-Value 쌍을 여러 서버에 분산시키는 것이다. CAP 정리 데이터 일관성 (Consistency), 가용성 (Availability), 파티션 감내 (Partition tolerance)라는 세 가지 요구사항을 동시..
[대규모 시스템 설계 기초 정리 + Cassandra] 안정 해시 설계 + Cassandra Virtual Node
카산드라 DB를 요즘 공부하고 있는데, 해당 개념에 이번 장의 개념이 들어가 있어서 공부해보며 정리해봅니다. Cassandra DB Cassandra DB는 대용량의 데이터 시스템을 관리하기 위해 개발되었으며, 대용량 저장 장치 및 가용성을 요구한다. Cassandra DB는 가용성을 확보하기 위해 여러 노드를 다음 그림처럼 논리적으로 링 구조로 구성하였다. 여러 개의 노드로 클러스터를 구성하여, 동일 데이터를 여러 노드에 복제하여 저장함으로써, 특정 노드에 장애가 발생하더라도 복제된 노드에서 데이터를 제공해서 가용성을 충족한다. (여기서 노드는 Master-Slave 개념이 아닌 모두 동등 위치를 갖는다) Cassandra DB에서 데이터를 저장할 때, 여러 노드 중 어떤 노드에 저장할지 결정해야 하는..
[CORS] CORS 정리
Same-Origin Policy & Cross-Origin Policy HTTP 요청에 대해서 HTML → 기본적으로 Cross-Origin 정책을 따름 link 태그에서 다른 origin의 css 등의 리소스에 접근하는 것이 가능하며, img 태그등에서 다른 리소스에 접근하는 것이 가능 XMLHttpRequest, Fetch API 등 script 태그 내 → 기본적으로 Same-Origin 정책을 따름 기본적으로 다른 Origin에 있는 리소스에 접근할 수 없다. 여기서 Origin이란? 같은 출처 (Origin)이란 URL 구성 요소 중 Scheme, Host, Port 이 동일한 경우 같은 Origin이라고 판단한다. URL이 https://will.seungho.com:443 인경우를 예로 들..
[대규모 시스템 설계 기초 정리] 알림 시스템 설계
알림 시스템 설계 고객에게 중요할 만한 정보를 비동기적으로 제공하는 시스템. 모바일 푸쉬 알림, SMS 메시지, 이메일 등 연락처 정보 수집 절차 & 연락처 테이블 구조 알림을 보내려면 모바일 단말 토큰, 전화번호, 이메일 주소 등의 정보가 필요하다. 사용자가 우리 앱을 설치하거나 처음으로 게정을 등록하면 API 서버는 해당 사용자의 정보를 수집하여 데이터베이스에 저장한다. 한 사용자가 여러 단말을 가질 수 있고, 알림은 모든 단말에 전송되어야 한다는 점을 고려. 단일 알림 시스템의 한계 SPOF 알림 서비스에 서버가 하나밖에 없다는 것은, 그 서버에 장애가 생기면 전체 서비스의 장애로 이어진다는 뜻. 규모 확장성 한 대 서비스로 푸쉬 알림에 관계된 모든 것을 처리하므로, 데이터베이스나 캐시 등 중요 컴..
[대규모 시스템 설계 기초 정리] 분산 시스템 유일 ID 생성기
요구사항 ID는 유일해야 하며 숫자로만 이루어짐 64비트로 표현 가능해야 하며, 발급 날짜에 따라 정렬이 가능해야 한다 초당 10,000개의 ID를 만들 수 있어야 한다. 분산 시스템에서 유일성이 보장되는 ID를 만드는 방법 다중 마스터 복제 UUID 티켓 서버 트위터 스노플레이크 접근법 다중 마스터 복제 데이터베이스의 auto_increment 기능을 활용하는 것 ID의 값을 1만큼 증가시켜 얻는 것이 아니라, 현재 사용 중인 데이터베이스의 서버의 수인 k만큼 증가시켜 얻는 접근법 어느 정도 규모 확장성 문제를 해결할 수 있는 반면 다음과 같은 한계가 존재한다. 여러 데이터센터에 거쳐 규모를 늘리기 어렵다 ID의 유일성을 보장할 수는 있지만, 시간 흐름에 맞추어 커지도록 보장할 수 없다. 서버를 추가하..