가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 정리 1장 규모 확장성
가상 면접 사례로 배우는 대규모 시스템 설계 기초 리뷰
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 정리 1장 규모 확장성
가상 면접 사례로 배우는 대규모 시스템 설계 기초
1장 사용자 수에 따른 규모 확장성
캐시
캐시는 데이터가 잠시 보관되는 곳으로 데이터베이스보다 훨씬 빠르다. 데이터베이스의 부하 개선을 위해 사용한다.
수평적으로 확정하는 방법을 고민하는 순서이다. 상태 정보( 사용자 세션 정보)를 웹 계층에서 제거하여야한다. 바람직한 전략은 상태 정보를 관계형 데이터베이스나 NoSQL같은 지속성 저장소에 보관하고, 필요할 때 가져오도록 하는 것이다. 이렇게 구성된 웹 계층을 무상태 웹계층이라 부른다.
1장에서 말한 내용을 적용한 아키텍처이다.
데이터 베이스의 확장에는 수직적 확장 (스케일업), 수평적 확장(스케일 아웃)이 있다.
수직적 확장 - 스케일 업
기존 서버에 고성능 자원을 증설하는 방법이다.
- 고성능 자원이라도 한대의 서버로는 감당하기 어려운 한계점이 있다.
- SPOF의 문제가 크다.
- 비용이 많이 든다. 고성능일 수록 가격이 올라가기 마련이다. 수평적 확장 - 스케일 아웃
DB의 수평적 확장은 수로 샤딩(Sharding)이라고도 부르는데 서버를 추가함으로써 부하를 줄이고 성능을 향상시는 작업이다. 샤드는 분할된 데이터베이스에 특정 정책에 따라 데이터를 저장하는 공간을 정한다. 예를 들어 User_id % 4의 정책이라면 나머지값으로 4개의 데이터 베이스 중 어디에 저장되는지 정하는 보관 방식이다. 샤딩 키
샤딩 키란 데이터가 어떻게 분산될지 정하는 하나 이상의 컬럼으로 구성된다. User_id%4의 경우 user_id가 샤딩 키가 된다. 데이터를 고르게 분배할 수 있는 키를 정하는 것이 샤딩의 핵심 기술이다.
This post is licensed under CC BY 4.0 by the author.

