📚/대규모 시스템 설계 기초

🌱 들어가기 전이번 포스팅에서는 수평적 규모 확장성을 위한 안정 해시 설계에 대해 알아보자. 수평적 규모 확장성 달성을 위해서는 요청 또는 데이터 서버를 균등하게 나누는 것이 중요하다.안정 해시는 이 목표를 달성하기 위해 보편적으로 사용하는 기술이다.🌱 해시 키 재배치(rehash) 문제N개의 서버가 있다고 하자. 이 서버들에 부하를 균등하게 나누기 위해 보통 아래의 해시 함수를 사용한다.servceIndex = hash(key) % N (N은 서버의 개수)💭 이 방법이 잘 동작하는 조건- 서버 풀이 고정되어 있을 때- 데이터 분포가 균등할 때 💭 문제가 생기는 상황- 서버가 추가되거나 기존 서버가 삭제될 때 ex) 서버가 4개 있었는데, 1번 서버가 장애를 일으켜 동작을 중단했다고 하자. 서버 ..
🌱 들어가기 전이번 포스팅에서는 처리율 제한 장치를 설계하는 과정에 대해 알아보자.🌱 처리율 제한 장치클라이언트가 보내는 트래픽의 처리율을 제어하기 위한 장치요청 횟수가 정의된 임계치를 넘어서면 추가로 도달한 모든 호출은 처리가 중단(block)된다.💭 API에 처리율 제한 장치를 두면 좋은 점- DoS 공격에 의한 자원 고갈 방지 - 비용 절감: 서버를 많이 두지 않아도 된다. 우선순위가 높은 API에 더 많은 자원을 할당할 수 있다. → 제 3자 API에 사용료 지불하는 회사들에게는 아주 중요하다 - 서버 과부하 방지: 봇에서 오는 트래픽이나 사용자의 잘못된 이용패턴으로 유발된 트래픽을 걸러내는데 활용할 수 있다. 🌱 1단계. 문제 이해 및 설계 범위 확정처리율 제한 장치를 구현하는 데 여러 ..
🌱 들어가기 전이번 포스팅에서는 개략적으로 규모를 추정하는 내용에 대해 알아보자.시스템 설계 면접을 볼 때, 시스템 용량이나 성능 요구사항을 개략적으로 추정해보라는 요구를 받게된다.개략적 규모 추정을 효과적으로 해 내려면 규모 확장성을 표현하는 데 필요한 기본기에 능숙해야 한다.- 2의 제곱수- 응답지연 값(latency)- 가용성에 관계된 수치들 🌱 2의 제곱수데이터 최소 단위는 1바이트, 8bit로 구성된다. ASCII 문자 하나가 차지하는 메모리 크기가 1바이트이다. 데이터 볼륨 단위를 2의 제곱수로 표현하면 어떻게되는지 알아야 한다.2의 x 제곱근사치이름축약형101천1킬로바이트1KB201백만1메가바이트1MB3010억1기가바이트1GB401조1테라바이트1TB501000조1페타바이트1PB 🌱 모든..
🌱 들어가기 전이번 포스팅에서는 단일 서버에서 시작하여 사용자 수에 따라 단계적으로 시스템을 개선하는 내용에 대해 알아보자. 🌱 단일 서버 모든 컴포넌트(웹, 앱, DB, 캐시...)가 단 한대의 서버에서 실행되는 시스템 💭 초기 시스템 💭사용자 요청 처리 흐름1. 사용자는 도메인 이름을 이용해 웹 사이트에 접속2. 도메인 이름을 DNS에 질의한 결과로 IP주소 반환3. 해당 IP주소로 HTTP 요청 전달4. 요청받은 웹 서버는 응답 반환 💭 현재 설계의 문제점사용자가 늘면 서버 하나로 충분하지 않다.💭 현재 설계 문제점의 해결책여러 서버를 둔다. (계층을 분리한다) - 웹/모바일 트래픽 처리 서버(웹 계층): 웹/모바일 트래픽 처리 용도- 데이터베이스 서버(데이터 계층): 데이터베이스용 🌱..
kangkang_dev
'📚/대규모 시스템 설계 기초' 카테고리의 글 목록