『가상 면접 사례로 배우는 대규모 시스템 설계 기초』

시스템 규모 확장을 위해 살펴본 기법들을 다시 한번 정리해 보면 다음과 같다.

  • 웹 계층은 무상태 계층으로.
  • 모든 계층에 다중화 도입.
  • 가능한 한 많은 데이터를 캐시할 것.
  • 여러 데이터 센터를 지원할 것.
  • 정적 콘텐츠는 CDN을 통해 서비스할 것.
  • 데이터 계층은 샤딩을 통해 그 규모를 확장할 것.
  • 각 계층은 독립적 서비스로 분할할 것.
  • 시스템을 지속적으로 모니터링하고, 자동화 도구들을 활용할 것.

엔지니어인 우리에게는 어려운 문제를 풀고 최종 설계를 바로 내놓고 싶은 욕구가 있다. 하지만 그러면 잘못된 시스템을 설계할 가능성이 높아진다. 엔지니어가 가져야 할 가장 중요한 기술 중 하나는 올바른 질문을 하는 것, 절절한 가정을 하는 것, 그리고 시스템 구축에 필요한 정보를 모으는 것이다.

질문을 던지면 면접관은 여러분이 질문에 대한 답을 바로 내놓거나, 아니면 여러분 스스로 어떤 가정을 하기를 주문할 것이다. 후자의 경우에는 그 가정을 화이트보드나 종이에 적어두어야 한다. 나중에 필요해질 때가 있어서다.

그렇다면 어떤 질문을 해야 하나? 요구사항을 정확히 이해하는 데 필요한 질문을 하라. 아래와 같은 질문들을 생각해 볼 수 있다.

  • 구체적으로 어떤 기능들을 만들어야 하나?
  • 제품 사용자 수는 얼마나 되나?
  • 회사의 규모는 얼마나 빨리 커지리라 예상하나? 석 달, 여섯 달, 일년 뒤의 규모는 얼마가 되리라 예상하는가?
  • 회사가 주로 사용하는 기술 스택은 무엇인가? 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는가?

이 문서를 인용한 문서