단 한 대의 서버에서 실행되는 간단한 시스템을 설계해보자.사용자 요청의 처리 흐름은 아래와 같다.사용자는 도메인 이름으로 웹사이트 접속을 시도하면 DNS (Domain Name Service)를 통해 서버의 IP 주소를 받는다받아온 IP 주소로 HTTP 요청이 전달된다
수직적 규모 확장 vs 수평적 규모 확장 수직적 규모 확장은 CPU, 메모리 등의 서버 자원을 추가하는 행위를 말한다. 그에 반해 수평적 규모 확장은 더 많은 서버를 추가하여 성능을 개선하는 작업이다. 간단하게 서버 성능을 높여야할때는 수직적 규모 확장이 좋은 선택이
캐시는 값비싼 연산 결과 또는 자주 참조되는 데이터를 메모리 안에 두고 빠르게 처리될 수 있도록 하는 저장소이다.데이터가 잠시 보관되는 곳으로 데이터베이스보다 훨씬 빠르다. 캐시 계층을 두면 성능 개선과 데이터베이스 부하를 줄일 수 있다. 또한 캐시 계층의 규모를 독립
메시지 큐는 메시지의 무손실을 보장하는 비동기 통신을 지원하는 컴포넌트이다. 생산자, 혹은 발행자가 메시지를 생성해서 메시지 큐에 발행하면, 구독자, 혹은 소비자가 그에 맞는 동작을 수행한다.이를 사용하면 서비스와 서버 간의 결합이 느슨해져서 확장성이 보장되어야 하는
기존 데이터베이스 서버에 더 많은 혹은 더 고성능의 자원을 증설하는 방법이다. 다양한 클라우드 서비스에서 고성능 데이터베이스 서버를 제공하고, 스택오버플로도 천만 명의 사용자 전부를 단 한대의 마스터 데이터베이스로 처리하였지만 몇 가지 심각한 약점이 있다.무한 증설이
보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것개략적 규모 추정을 하기 위해 보편적으로 사용되는 수치들을 이해할 필요가 있다.데이터 볼륨의 단위를 2의 제곱수로 표현하는 수치에 익숙
저자는 이번 장에서 시스템 설계 면접에 대한 접근법을 설명하고 있다. 이번 장은 꼭 면접이 아니더라도 업무 중 시스템 설계를 팀원들과 진행할때 유용하게 사용할수 있을거라 생각한다.엔지니어가 가져야 할 가장 중요한 기술 중 하나는 올바른 질문을 하는 것, 적절한 가정을
네트워크 시스템에서 처리율 제한 장치는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치이다.API 요청 횟수가 제한 장치에 정의된 임계치를 넘어서면 추가로 도달한 모든 호출은 처리가 중단된다.사례사용자는 초당 2회 이상 새 글을 올릴 수 없다.같은
수평적 규모 확장시 요청과 데이터를 서버에 균등하게 나누기 위해 안정해시를 보편적으로 사용한다.N개의 캐시 서버가 있다고 하면 부하를 나누는 쉬운 방법은 모듈러를 사용하는 것이다.serverIndex = hash(key) % N이 방법은 서버 풀의 크기가 고정되어 있고
Key-Value 저장소는 비 관계형 데이터베이스이다. Key는 고유한 값이어야하며 짧을 수록 성능이 좋다. 값은 보통 무엇이 오든 상관하지 않는다. 대표적으로 다이나모디비, 레디스, memcached 등이 있다.읽기, 쓰기, 메모리 사용량 사이에 어떤 균형을 찾아 데
문제 이해 및 설계 범위 확정 ID는 유일해야 한다. ID는 숫자로만 구성되어야 한다. ID는 64비트로 표현될 수 있는 값이어야 한다. ID는 발급 날짜에 따라 정렬 가능해야 한다. 초당 10,000개의 ID를 만들 수 있어야 한다. 개략적 설계안 제시 및 동의 구
URL 공유를 하고 싶은 메시지의 길이에 제약이 있을 경우 단축된 URL을 제공한다.쓰기 연산 : 매일 1억 개의 URL 생성초당 쓰기 연산 1억(100million) / 24 / 3600 = 1160읽기 연산 : 읽기 연산과 쓰기 연산 비율은 10:1 이라고 하자.
웹 크롤러 활용 예시 검색 엔진 인덱싱 : 검색 엔진을 위한 로컬 인덱스를 만든다. 웹 아카이빙 : 나중에 사용할 목적으로 장기보관하기 위해 웹에서 정보를 모으는 절차. 국립 도서관이 주로 사용한다. 웹 마이닝 : 웹 마이닝을 통해 유용한 지식을 도출해 낸다. 웹 모니
고객에게 중요할 만한 정보를 비동기적으로 제공하는 기능모바일 푸시 알림, SMS 메시지, 이메일 세 가지로 분류할 수 있다.푸쉬 알림, SMS 메시지, 이메일 모두 지원 필요연성 실시간 시스템 (가능한 빨리 필요하나, 약간의 지연은 괜찮음)ios, android, 데스