가상 면접 사례로 배우는 대규모 시스테 설계 기초 #2,3(개략적인 규모 추정, 시스템 설계 면접 공략법)

박주진·2022년 5월 1일
0

계략적인 규모 추정

  • 효과적인 규모 추정을 위해서는 아래와 같은 기본 수치들을 잘 이해하고 있어야 한다.
    • 데이터 볼륨이 2의 제곱수로는 어떻게 표현되는지 (예 kb는 2의 10제곱)
    • 응답지연 값 (예 디스크 탐색은 10ms)
    • 가용성 관련 수치
      • 시스템이 오랜 시간동안 지속적으로 중단 없이 운영될 수 있는 능력
      • 99% - 100%사이의 값
    • 올바른 절차를 밟느냐가 중요하다 왜냐하면 문제 해결 능력이 중요하기 때문이다.
    • 복잡한 수치는 근사치 활용
    • 가정들은 적어 두어라
    • 단위를 붙이라
    • 자주 출제되는 규모 추정 문제 (QPS, Peak QPS, 저장소 요규량, 캐시 요구량, 서버 수 등)은 미리 연습 하도록 하자
  • 질문

시스템 설계 면접 공략법

효과적인 면접을 위한 4단계 접근법

1. 문제 이해 및 설계 범위 확정

  • 깊이 생각하고 질문하여 요구사항과 가정들을 분명이하라.
  • 요구사항을 정확히 이해는데 필요한 질문들은 아래와 같다.
    • 구체적인 기능은?, 제품의 사용자 수는? 규모는 얼마나 빠르게 커질거라 예상? 주요 기술 스택?, 설계를 단순화하기 위해 활용할 수 있는 기존 서비스는?

2. 개략적인 설계안 제시 및 동의 구하기

  • 면접관과 협력하며 진행하면 좋다.
  • 설계안의 대한 최초 청사진을 제시하고 긔견을 구하라.
  • 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그려라.
  • 최초 설계안이 시스템 규모에 관련된 제약사항들을 만족하는지 개략적으로 계산해 보라.
  • api엔드 포인트나 데이터베이스 스키마도 보여야 하는가에 대한 질문은 규모에 따라 다르고 면접관에게 의견을 물어보자

3. 상세 설계

  • 면접관과 함께 설계 대상 컴포넌트 사이의 우선순위를 정하는것
    • 단축 url 생성기였으면 해시 함수 설계에 대해 구체적으로 듣고 싶어할것
    • 채팅 시스템 이였으면 어떻게 지연시간을 줄이고 온/오프 상태를 표시할 것인지 듣고 싶어할것
  • 불필요한 세부사항에 시간을 쓰지말고 시스템 설계 능력이 있다는 것을 입증하는데 도움이 되는 긍정적 신호를 전달하는데 집중하자.

4. 마무리

  • 면접관이 개선 가능한 지점을 찾아내라 주문할 수 있다. 여기에서 비판적인 사고 능력을 보이며 부족한 부분을 답하도록 하자.
  • 설계를 다시 요약하는것 도 나쁘지 않다.
  • 오류가 발생하면 무슨 일이 생기는지 (서버 오류, 네크워크 장애등)를 따져보는것도 좋다.
  • 운영 이슈도 논의해도 좋다. (매트릭 수집 방법, 로그, 배포, 모니터링)
  • 미래에 닥칠 규모 확장에는 어떻게 대처할 것 인가도 좋다.
  • 필요하지만 다루지 못했던 세부적 개선사항들을 제안 할 수 있다.
해야할 것
  • 질문을 통해 가정을 확인하라 절대 스스로 내린 가정을 믿고 진행하지 말라
  • 요구사항을 이해하라
  • 정답은 없다. 스타츠업과 중견기업을 위한 설계안은 같을리 없다.
  • 면접관이 사고 흐름을 이해할 수 있도록 소통하라
  • 가능하면 여러 해법을 제시하라
  • 개략적 설계에 면접관이 동의하면, 각 컴포넌트의 셰부사항을 설명하라. 그리고 가장 중요한 컴포넌트부터 진행하라
  • 면접관의 아이디어를 끌어내라
  • 포기하자 말라
하지 말아야 할 것
  • 전형적인 면접 문제에는 대비하지 않은 상태에서 면접장에 가지 말라
  • 요구사항이나 가정을 분명이 하지 않은 상태에서 설계를 진행하지 말라
  • 처음부터 세부사항을 너무 깊이 설명하지 말라. 개략적인 설계 -> 세부사항 으로 진행해라
  • 진행중 막혔다면, 힌트를 구하라
  • 침묵속에 설계하지 말라. 무조건 소통하라
  • 면접관이 끝났다고 말하기 전까지 끊났다고 생각하지 말라
  • 의견을 일찍 자주 구해라

0개의 댓글