Skip to content

Commit

Permalink
Create: [2주차] 3장 SuminSSon
Browse files Browse the repository at this point in the history
  • Loading branch information
SuminSSon committed May 20, 2024
1 parent 2249839 commit b7448a2
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions chap03/[chap03]손수민.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Chap 3. 시스템 설계 면접 공략법

시스템 설계 면접은 동료간의 모호한 문제를 풀기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션이다.
---

설계의 순수성(purity)에 집착한 나머지 타협적 결정(tradeoff)를 도외시하고 과도한 엔지니어링(over-engineering)을 하는 엔지니어가 되면 안 된다.

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

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

부정적 신호(red flag): 요구사항을 완전히 이해하지 않고 답을 내놓는 행위
요구사항을 이해하는 데 필요한 질문
1. 구체적으로 어떤 기능들을 만들어야 하나?
2. 제품 사용자 수는 얼마나 되나?
3. 회사의 규모는 얼마나 빨리 커지리라 예상하나?
4. 회사가 주로 사용하는 기술 스택(technology stack)은 무엇인가? 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는가?

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

- 면접관을 마치 팀원인 것처럼 대하라.
- 핵심 컴포넌트를 포함하는 다이어그램을 그려라.(클라이언트(모바일/웹), API, 웹서버, 데이터 저장소, 캐시, CDN, 메시지 큐 등)
- 개략적 추정이 필요한지는 면접관에게 미리 물어보고 계산 과정은 소리 내어 설명하라.
- 시스템의 구체적 사용 사례도 살펴보자. 미처 고려하지 못한 에지 케이스(edge case)를 발견할 수 있다.

</p>
e.g., 뉴스 피드 시스템 설계</p>

![image](https://github.com/aws-cloud-clubs/2024-khu-study/assets/56192209/0b02df7d-294f-4b71-865a-3405cd6feb3b)

**3단계: 상세 설계**

- 시스템의 병목 구간이나 자원 요구량 추정치에 대해 설계하기
- 설계 대상 컴포넌트 사이의 우선순위 정하기

피드 발행에 대한 예시
![image](https://github.com/aws-cloud-clubs/2024-khu-study/assets/56192209/e1fd75f2-6dcb-4daf-9112-3801f2daf4a8)

**4단계: 마무리**

- 개선할 부분이 없다는 답 X
- 설계를 다시 한번 요약하기
- 오류가 발생하면 모슨 일이 생기는지(서버 오류, 네트워크 장애 등) 따져보기
- 운영 이슈 - 메트릭 수집과 모니터링, 로그, 배포(roll-out) 과정
- 미래에 닥칠 규모 확장 요구에 대처
- 다루지 못한 세부적 개선사항 제안

0 comments on commit b7448a2

Please sign in to comment.