시스템 설계 면접을 볼 때, 떄로는 시스템 용량이나 성능 요구사항을 개략적으로 추정해보라는 요구를 받게 된다. 개략적인 규모 측정은 보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 게산하는 행위로써, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것이다.
개략적 규모 추정을 효과적으로 해 내려면 규모 확장성을 표현하는데 필요한 기본기에 능숙해야한다. 특히 2의 제곱수나 응잡지연(latency) 값, 그리고 가용성에 관계된 수치들을 기본적으로 잘 이해하고 있어야 한다.
2의 제곱수
분산 시스템에서 다루는 데이터 양은 엄청나게 커질 수 있으나, 그 계산법은 기본을 크게 벗어나지 않는다. 제대로 된 계산 결과를 얻으려면 데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지를 우선 알아야 한다. 최소 단위는 1바이트이고, 8비트로 구성된다. ASCII 문자 하나가 차지하는 메모리 크기가 1바이트이다.
모든 프로그래머가 알아야 하는 응답지연 값
- 메모리는 빠르지만 디스크는 아직도 느리다.
- 디스크 탐색(seek) 은 가능한 피하라.
- 단순한 압축 알고리즘은 빠르다.
- 데이터를 인터넷으로 전송하기 전에 가능하면 압축한다.
- 데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고받는데는 시간이 걸린다.
가용성에 관계된 수치들
고가용성은 시스템이 오랜시간동안 지속적으로 중단없이 운영될 수 있는 능력을 지칭하는 용어이다. 고가용성을 표현하는 것은 퍼센트로 표현하는데, 100%는 시스템이 단 한번도 중단된 적이 없었음을 의미한다. 대부분의 서비스는 99% 에서 100% 사이의 값을 갖는다.
팁
개략적인 규모 추정과 관계된 면접에서 가장 중요한 것은 문제를 풀어 나가는 절차이다. 올바른 절차는 밟느냐가 결과를 내는 것보다 중요하다. 면접자가 보고싶어하는 것은 문제 해결 능력이다. 이와 관련된 팁은 다음과 같다.
- 근사치를 활용한 계산 : 면접장에서 복잡한 게산을 하는것은 어려운 일이다. 계산하는데 시간을 쓰는 일은 낭비이다. 적절한 근사치를 활용하여 시간을 절약하자.
- 가정들은 적어두라. 나중에 살펴볼 수 있도록.
- 많이 출제되는 개략적 규모 추정 문제는 QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 등을 측정하는 것이다. 면접에 임하기 전에 이런 값들을 계산하는 연습을 미리 해두자.
Haon
꾸준히, 배움에 대한 생각을 글로 정제하기 위한 블로그입니다.
gatsby-starter-haonkakaotech