가상면접 사례로 배우는 대규모 사례
chapter.2 개략적인 규모 추산
보편적으로 통용되는 성능 수치상의 사고 실험을 통해 추정치를 계산하는 방법
서비스에 어느 정도 규모의 서버가 필요한지, 어느 정도의 트래픽을 감당할 수 있는지 등을 예측하는데 사용한다.
2의 제곱수는 컴퓨터의 메모리나 디스크의 크기를 나타내는 대표적인 단위로 사용된다.
컴퓨터 계산의 가장 낮은 단위는 비트(bit)이다. 0과 1의 두 가지 값을 가지는 이진수의 최소 단위이다.
응답지연의 수치는 서비스의 응답속도를 나타내는 단위이다.
응답지연의 수치는 초 단위로 표현되며,
1초는 1,000밀리초(ms)이다.
1ms는 1,000마이크로초(μs)이다.
1μs는 1,000나노초(ns)이다.
기호 | 단위 | 초 단위 |
---|---|---|
s | 초 | 1 |
ms | 밀리초 | 0.001 |
μs | 마이크로초 | 0.000001 |
ns | 나노초 | 0.000000001 |
우리가 현업에서 사용하는 서비스의 응답속도는 보통 1초 이내이다.
예를 들어 쿼리의 응답 속도가 ms 범주를 벗어 나는 경우 서비스의 성능이 떨어진다고 판단할 수 있다.
응답속도가 최대 3초를 넘어가는 경우 사용자가 서비스를 떠날 확률이 높아지기 때문이다.
이런 문제를 개선하기 위해 서비스의 응답속도를 개선하는 작업을 진행한다.
이런 작업 시에 응답 속도를 알고 있는 것이 도움된다.
연산명 | 시간 | 참고 |
---|---|---|
L1 캐시 참조 | 0.5ns | CPU Level 1 Cash Memory |
분기 예측 오류 | 5ns | |
L2 캐시 참조 | 7ns | CPU Level 2 Cash Memory |
뮤텍스 락/언락 | 100ns | |
주 메모리 참조 | 100ns | rem memory |
1KB 압축 | 10,000ns = 10us | |
1Gbps 네트워크로 2KB 전송 | 20,000ns = 20us | |
메모리에서 1MB 순차적으로 read | 250,000ns = 250us | |
디스크 탐색 | 10,000,000ns = 10ms | HDD 탐색 |
네트워크에서 1MB 순차적으로 read | 10ms | |
디스크에서 1MB 순차적으로 read | 30ms | |
패킷의 캘리포니아로부터 네델란드까지의 왕복 지연시간 | 150ms |
서울에서 부산까지의 대략적인 응답 속도 계산
단방향 지연 시간 계산:
양방향은 이 값에 2를 곱한다.
5mb 크기의 데이터
이론적으로 서울에서 부산까지의 왕복 지연 시간은 3ms이다.
이 계산은 하나의 패킷을 전제로 한다.
가용성 수치는 서비스의 가용성을 나타내는 단위이다.
가용성 수치는 백분율로 표현되며, 100%를 기준으로 한다.
가용률 | 장애시간(하루) | 장애시간(년) |
---|---|---|
99% | 14.40분 | 3.65일 |
99.9% | 1.44분 | 8.77시간 |
99.99% | 8.64초 | 52.60분 |
99.999% | 864.00밀리초 | 5.26분 |
QPS(Query Per Second) 추정치
미디어 저장을 위한 저장소 요구량
가용성은 얼마나 안정적으로 서비를 제공할 수 있는지를 나타내는 지표이다.
이를 위해 안정성을 보장하기 위한 방법들은 여러가지 있는데
가장 대표적인 것이 분산이다
가용성이 떨어지는 이유는 사용자가 서비스를 이용하지 못하기 때문인대
이를 해결하기 위해 여러 서버를 두어 사용자가 문제를 인지하고 못하고 서비스를 이용할 수 있도록 하는 것이다.
분산 시스템은 서비스의 가용성을 높이고, 장애에 대한 내성을 강화하기 위해 널리 사용된다.
지리적 분산 (Geographical Distribution)
로드 밸런싱 (Load Balancing)
데이터 복제 (Data Replication)
클라우드 서비스 (Cloud Services)
마이크로서비스 아키텍처 (Microservices Architecture)
재해 복구 계획 (Disaster Recovery Planning)
최근에 시작하게 된 스터디의 발표를 위한 정리한 글이다.
이 책 진짜 재미있는 것 같다.
안읽어보신 분들은 읽어보면 진짜 추천할만 한듯..