반응형
1단계 문제 이해 및 설계 범위 확정
- 요구사항을 완전히 이해하고 답을 해야한다.
- 깊이 생각하고 질문하여 요구사항과 가정들을 분명히해야한다.
- 엔지니어가 가져야 할 가장 중요한 기술 중 하나는 올바른 질문을 하는 것, 적절한 가정을 하는 것, 시스템 구축에 필요한 정보를 모으는 것
요구사항을 파악하기 위한 질문
- 구체적으로 어떤 기능들을 만들어야 하나?
- 제품 사용자 수는 얼마나 되나?
- 회사의 규모는 얼마나 빨리 커지리라 예상하나?
- 석 달, 여섯 달, 일년 뒤의 규모는 얼마가 되리라 예상하는가?
- 회사가 주로 사용하는 기술 스택은 무엇인가?
- 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는가?
2단계 개략적인 설계안 제시 및 동의 구하기
- 개략적인 설계안을 제시하고 동의를 얻는 것
- 설계안에 대한 최초 청사지을 제시하고 의견을 구하기
- 컴포넌트를 포함하는 다이어그램을 그리기
- 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지 개략적으로 계산해보기
- 시스템의 구체적 사용 사례 몇가지 살펴보기
3단계 상세 설계
이 단계까지 왔다면 다음 목표는 달성한 상태일 것
- 시스템에서 전반적으로 달성해야 할 목표와 기능 범위 확인
- 전체 설계의 개략적 청사진 마련
- 해당 청사진에 대한 면접관의 의견 청취
- 상세 설계에서 집중해야 할 영역들 확인
- 설계 대상 컴포넌트 사이의 우선순위를 정해야 함
- 시스템의 성능 특성에 대한 질문을 던질것
- 그 경우 질문 내용은 시스템의 병목 구간이나 자원 요구량 추정치에 초점이 맞춰져 있을 것
- 우리가 특정 시스템 컴포넌트들의 세부사항을 깊이 있게 설명하는 것을 보길 원함
4단계 마무리
- 개선 가능한 지점을 찾아라
- 설계를 요약하라
- 오류가 발생하면 무슨 일이 생기는지 따져보라
- 운영 이슈를 논의하라. 메트릭 어떻게 수집하고 모니터링? 로그? 시스템 배포?
- 규모 확장 요구에는 어떻게 대처할지
해야할 것
- 질문을 통해 확인하라
- 문제의 요구사항을 이해하라
- 정답이나 최선의 답안 같은 것은 없다
- 사고의 흐름을 이해시켜라
- 여러 해법을 함께 제시하라
- 개략적 설계에 동의하면, 각 컴포넌트의 세부사항을 설명하기 시작하라
- 포기하지 말라
하지 말아야 할 것
- 요구사항이나 가정들을 분명히 하지 않은 상태에서 설계를 제시하지 말라
- 처음부터 특정 컴포넌트의 세부사항을 너무 깊이 설명하지 말라
- 소통을 주저하지 말라
반응형
'책책책 > 대규모 시스템 설계 기초' 카테고리의 다른 글
[대규모 시스템 설계 기초] 6장. 키-값 저장소 설계 (0) | 2021.12.22 |
---|---|
[대규모 시스템 설계 기초] 5장. 안정 해시 설계 (0) | 2021.12.18 |
[대규모 시스템 설계 기초] 4장. 처리율 제한 장치의 설계 (0) | 2021.12.17 |
[대규모 시스템 설계 기초] 2장. 개략적인 규모 추정 (0) | 2021.12.14 |
[대규모 시스템 설계 기초] 1장. 사용자 수에 따른 규모 확장성 (0) | 2021.12.13 |