본문 바로가기

카테고리 없음

요즘 개발자를 위한 시스템 설계 수업 15,16장 - 면접 준비, 컨닝노트?

15장 - 시스템 설계 면접을 준비하는 팁

 

15.1. 시스팀 설계 면접을 준비하는 방법

 

- 이론적인 지식 바탕으로 실제 경험을 쌓기 + 전달을 정확히 할 수 있도록 커뮤니케이션 능력 키우기

 

1. 기본 개념 확실히 익히기

확장성 - 수직 확장성, 수평 확장성, 로드 밸런싱, 분산 시스템 개념에 대해 알아두기.

데이터베이스 - SQL, NoSQL 차이 파악, 인덱싱, 샤딩, 데이터베이스 레플리카에 대한 이해. 관계형 데이터베이스, 비관계형 데이터베이스를 언제 사용할지 구분

캐싱 - 캐싱 전략들, 캐시 삭제 정책(뭐더라?.. 빼낸다 그런 단어였는데)

일관성 가용성 : CAP 정리, PACELC 정리(CAP를 상황별로 조금 더 세부적으로 나눈 정리였음), 강한 일관성, 최종 일관성 개념 이해, CAP 에 상충되는 개념이 있어 CAP를 모두 동시에 적용할 수는 없다는 개념을 알면 좋음.

 

2. 자주 쓰는 시스템 설계 패턴 학습

 

msa(마이크로서비스 아키텍쳐) - RESTful gRPC 사용한 작은 서비스간의 통신 구현

이벤트 기반 아키텍쳐 - 메시지 큐, 이벤트 스트림 이용.

서비스 지향 아키텍쳐 - msa와 soa 의 차이를 알고 어떤떄 적합한지 파악

디자인 패턴 - 자주 쓰이는 디자인 패턴 익히기(CQRS, saga), 서킷 브레이커로 시스템 장애 발생시 안정적 처리

 

3. 시스템 설계 연습

- 직접 설계하면서 익히는게 좋음. 

모의 면접 서비스 활용 - 프람프(Pramp), Interviewing, Exponent, 면접 스터디

설계 연습 - 릿코드, 해커스랭크, Grokking the System Design Interview 같은 자료 참고해서 설계 문제 도전

현재 런치되어 있는 여러 서비스들의 설계를 나름 대로 생각해보기? 

 

4. 온라인 자료로 학습

도서 - <데이터 중심 어플리케이션 설계> 마틴 클레프만, <The Art of Scalavility(확장성 아키텍쳐 설계의 기술>

온라인 강의 - Courcera, Udemy, Educative( Grokking the System Design Interview 강의)

블로그 및 뉴스 기사

유튜브 채널 - Tushar Roy, Tech Dummies, Gaurav Sen

 

5. 커뮤니케이션 역량 늘리기

- 생각을 말로 풀어내는 연습 : 입으로 설명(동료와 함께 말로 풀어보기)

- 시각 자료 활용 : 아키텍쳐 다이어그램, 시퀀스 다이어그램 그리면서 설명해보기


6. 복기 및 피드백

실제 면접, 모의 면접 모두 반드시 복기하고 개선할 점을 찾아야한다. - 정반합 뭐시기..?

- 스스로 점검

- 피드백 받기

- 지속적 개선

 

15.2 시스템 설계 면접을 위한 팁

 

이번 내용은 x부터 넷플릭스 사례까지 이 책에서 대규모시스템을 어떤식으로 설계 했는지 쭉 봐왔다면 해당 내용을 그대로 조금 자세하게 풀어냈다는걸 알 수 있을 것이다. 따라서 순서만 기술하겠다.

 

문제 정의 제대로 하기 - 명확하지 않은 부분은 질문하고, 기능적, 비기능적 요구사항을 정의하고 파악한다.

문제를 쪼개서 접근 - 복잡한 문제일 수록 작고 다루기 쉬운 단위로 나누어서 해결하기(자료구조 알고리즘을 하는 이유이다.)

 

-기능적 요구사항 정의 - 핵심 기능부터 정리(면접관과 소통) 

-비기능적 요구사항 정의 - 가용성 목표를 정확히 수치로 잡기 등

-api 목록 정리(사용자용 api, 시스템적 api 등)

-고수준 시스템 규모 산정(사용자수 정의, 필요한 메모리 용량 뭐시기 등등)

-상위수준의 블록 다이어그램 그리기 - 클라이언트, 로드밸런서, 어플리캐이션 서버, 데이터베이스 등 전체 흐름 그리기 - 병목지점, SPOF 등 쉽게 파악 가능

-초기버전 블록 다이어그램 보완 후 최종 아키텍쳐 다이어그램 만들기

-모든 기능, 비기능적 요구사항 만족하는지 점검 후 마무리

 

 

해결 방안 효과적으로 전달

 

- 체계적 설명 - 논리적인 흐름 따르기

- 핵심 결정 사항과 그 이유 설명

- 면접관의 힌트와 의도 파악하며 잘 듣기

- 피드백 듣고 설계 개선하기

- 말로만 하지 말고 글과 그림 활용

- 간결하게 요약

- 후속질문 대비

- 경험을 적극적으로 활용

 

 

 

16장 대규모 시스템 면접 커닝페이퍼

- 16장은 사용 사례별 어떤 데이터 구조를 선택해야하는지, 어떤 컴포넌트를 사용해야하는지, 프로토콜은 어떤걸 사용하는지 등을 테이블 정리하여로 보여준다.

다양한 상황에서 정답이라고 할 만한 것들을 적어 놓았으므로 16장은 책을 직접 보는 것을 추천한다.