ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 3장) 시스템 설계 면접 공략법
    DESIGN PATTERN & ARCHITECTURE 2024. 10. 21. 23:45

     

     

     

    시스템 설계 면접 공략법 

    • 설계의 순수성에 집착한 나머지 타협적 결정을 도외시하고 과도한 엔지니어링을 하게 되는 것에 유의해야 함 

     

     

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

     

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

    • 부정적 신호 (Red Flag)
      • 요구 사항을 완전히 이해하지 않고 답을 내놓는 행위
      • 바로 답부터 들이밀기 
        • 속도를 늦춰 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 할 것 
          • 올바른 질문을 할 것 
          • 적절한 가정을 할 것 
          • 시스템 구축에 필요한 정보를 모을 것 
    • 질문 예시 
      • 구현해야 하는 기능 
      • 제품의 사용자 수 
      • 회사의 규모 확장성 
        • 기간벌 규모 예상치 
      • 회사가 사용하는 기술 스택 
        • 설계 단순화를 위한 기존 서비스

     

     

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

    • 면접관에게 개략적인 설계안을 제시하고 동의를 얻을 것 
      • 면접관을 마치 팀원처럼 대할 것 
    • 화이트 보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그릴 것 
      • 클라이언트(모바일 / 웹), API, 웹 서버, 데이터 저장소, 캐시, CDN, 메세지 큐 등 
    • 최초 설계안이 시스템 규모와 관계된 제약사항을 만족하는지 개략적 수치 계산 
      • 계산 과정은 소리내어 설명할 것 
      • 이러한 개략적 추정이 필요한지는 면접관에게 미리 물어볼 것 
    • 시스템의 구체적인 사용 사례를 몇가지 살펴보고 개략적인 설계안을 잡아갈 것 
      • 미처 고려하지 못한 엣지 케이스를 발견할 수도 있음 
    • API 등의 설계가 필요한지는 면접관에게 질문할 것 
    • 예시 
      • 뉴스 피드 시스템 
        • 피드 발행
          • 사용자가 포스트를 올리면 관련 데이터가 캐시 / 데이터베이스에 기록 및 친구 뉴스 피드에 뜸 
        • 피드 생성
          • 사용자의 뉴스 피드는 해당 사용자 친구들의 포스트를 시간 역순으로 정렬하여 만듬 

     

     

    3단계 상세 설계 

    • 시스템 전반적으로 달성해야 할 목표와 기능 범위 확인 
    • 전체 설계의 개략적 청사진 마련
    • 해당 청사진에 대한 면접관의 의견 청취 
    • 상세 설계에서 집중해야 할 영역 확인 
      • 면접관과 함께 컴포넌트 사이의 우선순위를 정할 것 
    • 면접관이 집중하고 있는 영역에 초점을 둘 것 
    • 시간관리에 유의 
      • 불필요한 세부사항에 시간을 쓰지 말기 

     

     

    4단계 마무리 

    • 개선할 점은 언제나 있음에 유의 
    • 만든 설계를 한번 요약하는 것도 좋음 
      • 여러 해결책을 제시한 경우에는 특히 중요 
    • 오류 발생 케이스를 따져보기 (서버 오류, 네트워크 장애 등) 
    • 운영 이슈 
      • 메트릭, 모니터링, 로그, 시스템 배포 등 
    • 규모 확장 요구 
      • 측정량 이상의 트래픽을 감당해야 한다면 등
    • 세부적 개선사항을 제안해보기 

     

     

    정리 

    • 해야할 것 
      • 질문을 통한 확인 
      • 문제의 요구사항 파악 
      • 정답이나 최선의 답안은 없음에 유의 
        • 요구사항 이해도를 다시 확인할 것 
      • 면접관의 사고 흐름을 이해할 수 있도록 할 것 
      • 가능하다면 여러 해법을 함께 제시할 것 
      • 개략적 설계에 면접관이 동의하는 경우 각 컴포넌트의 세부사항을 설명할 것 
        • 가장 중요한 컴포넌트부터 진행 
      • 면접관의 아이디어를 이끌어 내기 
      • 포기하지 말것 
    • 하지 말아야 할 것 
      • 전형적인 면접 질문에도 대비되지 않은 상태에서 면접장에 가지 말 것 
      • 요구 사항이나 가정들을 분명히 하지 않은 상태에서 설계 제시하지 말 것 
      • 처음부터 특정 컴포넌트의 세부사항을 너무 깊이 설명하지 말 것 
      • 진행중에 막혔다면, 힌트를 청하기를 주저하지 말 것 
      • 소통을 주저하지 말 것 
      • 의견을 일찍, 그리고 자주 구할 것 
    • 시간 배분 
      • 시간 관리를 잘하는 것이 매우 중요 
      • 만약 45분의 시간이 주어진다면 
        • 1단계 - 문제 이해 및 설계 범위 확정 : 3분 ~ 10분 
        • 2단계 - 개략적 설계안 제시 및 동의 구하기 : 10분 ~ 15분 
        • 3단계 - 상세 설계 : 10분 ~ 25분 
        • 4단계 - 마무리 : 3분 ~ 5분 
Designed by Tistory.