📚 개발 도서/대규모 시스템 설계 기초
-
RDB와 NoSQL📚 개발 도서/대규모 시스템 설계 기초 2023. 6. 8. 20:24
쉬운코드님의 유튜브 영상 보면서 정리한 내용입니다. Relation Database의 단점 유연한 확장성의 부족 새로운 column을 추가하고 싶으면 반드시 scheme를 변경해야 한다. scheme를 변경이 필요하여 컬럼을 추가한다면 해당 작업 자체가 굉장히 위험 부담이 될 수 있다. (왜냐하면 기존에 있는 대량 데이터에 대해서 새로운 column을 추가하기 때문에 대용량 write가 필요함) 복잡한 join은 read의 하락 중복 제거(for 데이터의 일관성)를 위해 정규화 진행한다. 이는 데이터 중복을 최소화한다. 하지만 전체 데이터를 읽어오고 싶을 때 join을 많이 해야하는 문제가 발생한다. → 그만큼 DB 서버에 CPU 많이 사용하고, 응답 시간이 늘어난다. 일반적으로 RDB는 scale-ou..
-
Consistent Hashing (안정 해시)📚 개발 도서/대규모 시스템 설계 기초 2023. 2. 12. 01:02
해시 키 재배치(rehash) 문제 N개의 캐시 서버가 존재할 때 이 서버들에 부하를 균등하게 나누는 보편적인 방법 serverIndex = hash(key) % N (N: 서버의 개수) 이는 서버가 추가되거나 기존 서버가 삭제되면 문제가 된다. serverIndex = hash(key) % (N-1) (-1: 삭제된 서버) 장애가 발생한 서버에 보관되어 있는 키뿐만 아니라 대부분의 키가 재분배되게 된다. 대부분 캐시 클라이언트가 데이터가 없는 엉뚱한 서버에 접속하게 되는 것이다. 즉 노드 삭제 및 추가가 있는 경우 hash(key) % N 결과에 미치는 영향이 너무 커서 많은 수의 요청이 실패하여 캐시된 데이터가 다시 로드된다는 것이다. → 대규모 캐시 발생 안정 해시(consistent hash) 해..
-
[대규모 시스템 설계 기초 - 01] 사용자 수에 따른 규모 확장성📚 개발 도서/대규모 시스템 설계 기초 2023. 1. 13. 19:00
[01] 사용자 수에 따른 규모 확장성 한 명의 사용자를 지원하는 시스템에서, 몇백만 사용자를 지원하는 시스템에 이르기까지 설계 단일 서버 모든 컴포넌트(웹 앱, 데이터베이스, 캐시 등)가 단 한 대에 서버에서 실행되는 간단한 시스템 사용자 요청 과정 클라이언트는 DNS에 도메인 이름으로 IP를 질의한다. DNS는 우리 시스템의 일부는 아니다. 클라이언트는 DNS 조회 결과로 IP를 얻어온다. 이 IP 주소는 웹 서버의 주소이다. 이 IP 주소로 클라이언트는 HTTP 요청을 전달한다. 웹 서버는 클라이언트에게 HTML 웹 페이지를 전달한다. 데이터베이스 서버 분리 사용자가 늘어나면, 단일 서버로는 부족하여 웹계층(웹/모바일 트래픽 처리 서버)와 데이터 계층(데이터베이스 서버)로 분리할 수 있다. 이는 각..