가상 면접 사례로 배우는 대규모 시스템 설계 기초 8장: URL 단축기 설계
·
Server/System Design
가상 면접 사례로 배우는 대규모 시스템 설계 기초 8장: URL 단축기 설계를 읽고 정리합니다. 개략적 설계안API 엔드포인트클라이언트는 서버가 제공하는 API 엔드포인트를 통해 서버와 통신합니다. 이 글에선 엔드포인트를 REST 스타일로 설계합니다. URL 단축키는 기본적으로 두 개의 엔드포인트를 필요로 합니다.URL 단축용 엔드포인트: 새 단축 URL을 생성하고자 하는 클라이언트는 이 엔드포인트에 단축할 URL을 인자로 실어서 POST 요청을 보내야 합니다. 이 엔드포인트는 다음과 같은 형태를 띕니다:POST /api/v1/data/shorten- 인자: {longUrl: longURLstring}- 반환: 단축 URLURL 리디렉션용 엔드포인트: 단축 URL에 대해서 HTTP 요청이 오면 원래 UR..
가상 면접 사례로 배우는 대규모 시스템 설계 기초 7장: 분산 시스템을 위한 유일 ID 생성기 설계
·
Server/System Design
가상 면접 사례로 배우는 대규모 시스템 설계 기초 7장: 분산 시스템을 위한 유일 ID 생성기 설계를 읽고 배운 점을 정리합니다. 분산 환경에서는 auto_increment 같은 방법을 적용하기 어렵습니다. 분산 시스템에서 유일성이 보장되는 ID를 만드는 것은 아래와 같은 방법이 있습니다.multi-master replicationUUIDticket servertwitter snowflake 접근법Multi-master replication다중 마스터 복제는 아래와 같은 구성을 가집니다.이 접근법은 데이터베이스의 auto_increment를 사용하며, 증가시킬 때 1만큼 증가시키는 것이 아닌 k(데이터베이스 수)만큼 증가시키는 방법입니다. 이렇게 하면 규모 확장성 문제를 어느정도 해결할 수 있습니다. 데..
가상 면접 사례로 배우는 대규모 시스템 설계 기초 6장: 키-값 저장소 설계
·
Server/System Design
가상 면접 사례로 배우는 대규모 시스템 설계 기초 6장: 키-값 저장소 설계를 읽고 배운 내용을 정리합니다. key-value 데이터베이스는 비관계형 데이터베이스이다. 여기에 저장되는 값은 고유 식별자(identifier)를 키로 가져야 한다. 키와 값 사이의 연결 관계를 key-value pair 라고 합니다. 키는 성능상의 이유로 짧을수록 좋습니다. key-value pair에서 값은 문자열, list, object 등 무엇이든 될 수 있습니다. 문제 이해 및 설계 범위 확정해당 글에서는 아래의 조건으로 설계해볼 예정입니다.key-value pair의 크기는 10KB 이하이다.큰 데이터를 저장할 수 있어야 한다.높은 가용성을 보장해야 한다.높은 규모 확장성을 보장한다. (오토스케일링이 가능해야 함)데..
가상 면접 사례로 배우는 대규모 시스템 설계 기초 5장: 안정 해시 설계
·
Server/System Design
안정 해시 설계에 대해 배운 점을 정리하였습니다. 샤딩이 뭐냐? 하면 이런겁니다. 데이터베이스 노드가 3개 있다면, 데이터베이스에 데이터를 읽고 쓸 때 어떠한 알고리즘을 통해 데이터를 저장할 장소를 분리합니다. 이렇게 하면 수평적으로 확장하기 용이합니다 (read replica를 기용하는 방법은 어쨌든 모든 데이터베이스에 데이터가 sync 되어있어야 하기 때문에 그런 점을 따져보면 샤딩이 확장성이 좋습니다). 해시 키 재배치 문제rehash 문제는 이런겁니다. 만약 서버가 3개인 상태에서 서버가 scale out을 했다고 가정해봅시다. 그러면 나머지 연산 알고리즘 결과가 아예 달라지면서 각 서버에 들어가야 할 데이터가 거의 전부 바뀌어버리게 됩니다. 이런 현상이 해시 키 재배치 문제입니다. 이는 곧 대규..
가상 면접 사례로 배우는 대규모 시스템 설계 기초 4장: 처리율 제한 장치의 설계
·
Server/System Design
처리율 제한 장치(rate limiter)의 설계를 공부한 내용을 정리했습니다.Rate limiter란?Rate limiter, 즉 처리율 제한 장치는 클라이언트 또는 서비스가 보내는 트래픽의 처리율(rate)을 제어하기 위한 장치이다.e.g. 특정 기간 내 전송되는 클라이언트의 요청 횟수 제한 API 요청 횟수가 threshold를 넘어서면 추가로 도달한 요청은 모두 차단된다.사용자는 초당 2회 이상 새로운 게시글을 올릴 수 없음같은 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없음같은 디바이스로는 주당 5회 이상 리워드를 요청할 수 없음From Cloudflare – https://www.cloudflare.com/en-gb/learning/bots/what-is-rate-limiting/R..
Sean 션
'Server/System Design' 카테고리의 글 목록