2장. 개략적인 규모 측정
·
시스템설계
핵심요약근사치를 활용한 계산.가정을 작성 해 둘 것.단위 붙이는 것을 습관화 할 것.(1) 2의 제곱수최소 단위는 1바이트(8비트)ASCII 문자 하나가 차지하는 메모리 크기가 1바이트흔히 쓰이는 데이터 볼륨 단위ns = 나노초, μs = 마이크로초, ms = 밀리초1나노초 = 10^-9초1마이크로초 = 10^-6초 = 1,000나노초1밀리초 = 10^-3초 = 1,000μs = 1,000,000ns응답 시간의 시각화 핵심메모리는 빠르지만 디스크는 느리다.디스크 탐색은 가능한 피하라.단순한 압축 알고리즘은 빠르다.데이터를 인터넷으로 전송하기 전에 가능하면 압축하라.데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고받는 데는 시간이 걸린다.
1. 사용자 수에 따른 규모 확장성(무상태 웹 계층, 데이터 센터, 메시지 큐, 로그, 메트릭, 자동화, 샤딩)
·
시스템설계
(7) 무상태(stateless) 웹 계층상태 의존적인 아키텍쳐 위 그림에서 사용자 A가 서버 2에 요청하게되면 인증이 실패하게된다.이를 해결하기 위해서는 로드밸런서에서 고정 세션이라는 기능을 사용해야하는데 이는 로드밸런서에 부담을 준다.장애 처리도 힘들고, 서버 확장도 어렵게된다.무상태 아키텍쳐 위 그림에서서 사용자로부터의 요청은 어떤 웹 서버로도 전달 될 수 있다.웹 서버는 상태 정보가 필요할 경우 공유 저장소로부터 데이터를 가져온다.이런 구조는 단순하고, 안정적이며, 규모 확장이 쉽다.(8) 데이터 센터가장 가까운 데이터 센터로 안내되는 지리적 라우팅(geoDNS-routing 또는 geo-routing)※ x%의 사용자는 US-East로 (100-x)%는 US-West로 안내된다고 가정위와같은 아..
1. 사용자 수에 따른 규모 확장성(데이터베이스 다중화, 캐시, CDN)
·
시스템설계
(4) 데이터베이스 다중화많은 데이터베이스 관리 시스템이 다중화를 지원한다.보통은 서버사이에 주(master)-부(slave) 관계를 설정하고 데이터 원본은 주서버에, 사본은 부 서버에 저장하는 방식이다.쓰기 연산(write operation)은 마스터에서만 지원한다.부 부데이터베이스 주 데이터베이스로부터 그 사본을 전달받으며, 읽기 연산(read operation)만을 지원한다.장점성능향상 : 주-부 다중화 모델에서 모든 데이터 변경 연산은 주 데이터베이스 서버로만 전달되는 반면 읽기 연산은 부 데이터베이스 서버들로 분산되므로 병렬로 처리될 수 있는 query의 수가 늘어나므로 성능이 좋아진다.안정성 : 데이터베이스 서버 일부가 물리적으로 파괴되어도 데이터는 지역적으로 다중화시켜 놓았다면 데이터는 보존..
1. 사용자 수에 따른 규모 확장성(단일서버, 데이터베이스, 규모확장)
·
시스템설계
(1) 단일서버사용자가 도메인 이름을 이용하여 웹사이트에 접속접속을 위해서 DNS에 질의하여 IP주소로 변환하는 과정 필요(DNS는 보통 외부시스템)반환된 IP주소(123.456.123.101)으로 HTTP요청 전달요청받은 웹 서버는 HTML페이지나 JSON형태의 응답 반환(2) 데이터베이스사용자 증가 시 (1)의 과정에서 서버와 데이터베이스를 분리하나는 트래픽을 처리다른 하나는 데이터베이스용※ 위와같이 분리함으로써 독립적으로 확장 가능데이터베이스의 종류와 선택관계형 데이터베이스(RDBMS) : 자료를 열, 칼럼으로 표현, SQL을 사용하면 여러 테이블에 있는 데이터를 그 관계에 따라 조인(join)하여 합칠 수 있다.비 관계형 데이터베이스(NoSQL) : 조인 연산을 지원하지않음사용목적아주 낮은 응답 ..