# 가상 면접 사례로 배우는 대규모 시스템 설계 기초 ![](https://user-images.githubusercontent.com/6410412/137574719-3f724583-c582-4e93-a14e-a1d1b6a273d9.png) > 시스템 규모 확장을 위해 살펴본 기법들을 다시 한번 정리해 보면 다음과 같다. > > * 웹 계층은 무상태 계층으로. > * 모든 계층에 다중화 도입. > * 가능한 한 많은 데이터를 캐시할 것. > * 여러 데이터 센터를 지원할 것. > * 정적 콘텐츠는 CDN을 통해 서비스할 것. > * 데이터 계층은 샤딩을 통해 그 규모를 확장할 것. > * 각 계층은 독립적 서비스로 분할할 것. > * 시스템을 지속적으로 모니터링하고, 자동화 도구들을 활용할 것. > 엔지니어인 우리에게는 어려운 문제를 풀고 최종 설계를 바로 내놓고 싶은 욕구가 있다. 하지만 그러면 잘못된 시스템을 설계할 가능성이 높아진다. 엔지니어가 가져야 할 가장 중요한 기술 중 하나는 올바른 질문을 하는 것, 절절한 가정을 하는 것, 그리고 시스템 구축에 필요한 정보를 모으는 것이다. > > 질문을 던지면 면접관은 여러분이 질문에 대한 답을 바로 내놓거나, 아니면 여러분 스스로 어떤 가정을 하기를 주문할 것이다. 후자의 경우에는 그 가정을 화이트보드나 종이에 적어두어야 한다. 나중에 필요해질 때가 있어서다. > > 그렇다면 어떤 질문을 해야 하나? 요구사항을 정확히 이해하는 데 필요한 질문을 하라. 아래와 같은 질문들을 생각해 볼 수 있다. > > * 구체적으로 어떤 기능들을 만들어야 하나? > * 제품 사용자 수는 얼마나 되나? > * 회사의 규모는 얼마나 빨리 커지리라 예상하나? 석 달, 여섯 달, 일년 뒤의 규모는 얼마가 되리라 예상하는가? > * 회사가 주로 사용하는 기술 스택은 무엇인가? 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는가?