가상 면접 사례로 배우는 대규모 시스템 설계 기초 (알렉스 쉬 저)를 읽고 정리합니다.

💡 만약에 내가 구글 면접을 가. 근데 시스템 설계 면접을 볼거래.
내가…. 구글 시스템 설계를?....

👉 정답 기대하는게 아님!

1️⃣ 팁

💡 시스템 설계는 정해진 정답이 없는 질문이다.

  • 보려는 것
    • 설계 기술 시연
    • 설계 과정에서 내린 결정에 대한 방어 능력 → 왜 그렇게 설계했는지에 대한 질문을 받아 칠 수 있는지?
    • 면접관의 피드백을 건설적으로 처리할 자질 → 피드백을 받아 내 설계에 반영할 수 있는지?
  • 보려는 이유
    • 협력에 적합한 사람인지?
    • 압박이 심한 상황에서 잘 판단 내릴 수 있는지?
    • 모호한 문제를 건설적으로 해결할 수 있는지?
    • 좋은 질문을 할 수 있는지?
    • 완고하지 않고, 편협하지 않고…

2️⃣ 효과적 면접을 위한 4단계 접근법

💡 시스템 설계 면접의 공통 분모

1. 문제 이해 및 설계 범위 확정 :: 모호함 없애기

  • 빠른 답변 필요 X
    • 요구사항과 가정을 분명히 하기 위해 신중하게 생각하자
    • 올바른 질문, 적절한 가정, 시스템 구축에 필요한 정보를 모으는게 중요. 답변에 시간 좀 들어도 된다
  • 이런 질문을 해보자
    • 구체적으로 어떤 기능들이 필요? 가장 중요한 기능은?
    • 제품 사용자 수는?
    • 회사 규모의 확대 속도와 기대 수명은?
    • 회사 사용 기술 스택은? 설계 단순화를 위한 기존 서비스는?

2. 개략적인 설계안 제시 및 동의 구하기 :: 면접관과 협력하기

  • 이런걸 해보자
    • 설계 최초 청사진 제시 후 의견 구하기
      • 면접관이 팀원인 것처럼!
    • 핵심 컴포넌트를 포함하는 다이어그램 그리기
      • 클라, API, 웹 서버, DB, 캐시, CDN, 메세지 큐 등…
    • 최초 설계안이 시스템 규모 제약을 만족하는지 계산해보기
      • 개략적인 추정이 필요한지 미리 확인 받고!
    • 시스템 구체적 사용 사례 확인하기
      • 엣지 케이스가 있는지?
    • 질문에 따라 API 엔드포인트, DB 스키마도 고려
      • 전체 시스템이 아닌 백엔드 시스템을 설계하라는 질문이면 필요할 것!

3. 상세 설계 :: 설계 컴포넌트 우선순위 정하기

  • 면접관이 강조한 설계 영역
    • 보통 시니어라면?
      • 시스템 성능 특성 → 병목 구간, 자원 요구량 추정치
      • 컴포넌트 세부사항에 초점 맞췄을 것
  • 시간 관리하기
    • 사소한건 버리고, 면접관이 관심 있어하는 요소에 집중하자

4. 마무리 :: 설계에 대한 후속 질문 및 추가 논의

  • 시스템 개선 방법에 대한 질문
    • 비판적 사고 → 일단 그 자리에서 내가 완벽퍼펙트어메이징한 설계를 하진 않았을 것ㅋㅋ 뭘 놓쳤을까 한번 찾아보자
  • 설계 요악
  • 오류 발생했을 때 어떤 일이 생기는지?
  • 운영 이슈 (메트릭 수집, 모니터링, 로그, 배포…)
  • 규모 확장
  • 등등
profile
호그와트 장학생

0개의 댓글