본문 바로가기

주절주절(Thoughts)

주니어 개발자에게 추천하는 책 2 - 가상 면접 사례로 배우는 대규모 시스템 설계 기초

Outline

https://product.kyobobook.co.kr/detail/S000001033116

 

가상 면접 사례로 배우는 대규모 시스템 설계 기초 | 알렉스 쉬 - 교보문고

가상 면접 사례로 배우는 대규모 시스템 설계 기초 | 페이스북의 뉴스 피드나 메신저,유튜브, 구글 드라이브 같은 대규모 시스템은 어떻게 설계할까? IT 경력자라도 느닷없이 대규모 시스템을 설

product.kyobobook.co.kr

Contents

지난 1편에 이어서 주니어 개발자에게 추천하는 책 2를 작성해본다.

1편은 아래 글에서 확인 가능하다.

https://nebulayoon.tistory.com/35

 

주니어 개발자에게 추천하는 책 1 - 소프트웨어 장인

Outlinehttps://product.kyobobook.co.kr/detail/S000001889885 소프트웨어 장인 | 산드로 만쿠소 - 교보문고소프트웨어 장인 | 더 나은 개발자가 되어, 더 좋은 코드를 전달하고 싶은 당신을 위하여이 책에서 풀어

nebulayoon.tistory.com

 

이 책을 주니어가 안 읽는 이유는 책 제목에 "면접"이라는 단어가 있기 때문이라고 본다.

겁을 먹거나, 현재 면접 보는 상황이 아니니까 나중에... 등 여러가지 이유로 이 책을 접근하기 어렵다고 본다.

 

사실, 이 책은 굳이 위와 같은 이유들이 아니라고 해도, 그냥 읽기만 해서는 얻을 수 있는 것이 적은 편이다.

취준생이 면접보기 전에 읽을 때랑, 주니어가 어느 정도 회사에서의 개발의 세계를 이해하고 보는 것과는 생각의 차이가 다르고, 그 차이가 이 책에서 얻어갈 수 있는 성장 가능성의 차이가 다른 것 같다.

 

나의 과거 포스트들을 보면, 개발에서 가장 중요한 것은 "역할과 책임"이라고 말해오고 있고, 당연히 이 책도 "역할과 책임"관점에서 읽을 수록 설계의 의도가 보이기 시작한다.

 

따라서 이 책을 읽는 주니어가 있다면 조금더 성장하기 위한, 이 책을 읽는 방법에 대해서 말해 보고자 한다.

 

1. 읽고 해치워야지, 읽으면 성장하겠지 라는 마인드는 적어도 이 책에서는 많이 버려야 한다.(생각을 해야 한다)

설계 관련된 책들을 보면 알겠지만, 설계에 정답은 없다.

현실에서 서비스 중인 채팅 시스템, 알림 시스템 등은 모두 같아보이지만, 사실 어떤 문제를 해결하려고 했냐에 세부적인 사항 더 나아가 대략적인 설계에서도 달라지게 된다. 같아보여도 요구사항이 다르다는 말이다.

 

그렇기 때문에 이 책에서 각 파트 별로 어떤 문제를 해결하고 싶어하는지, 어떤 의도를 가지고 설계했는지 계속 곱씹으면서, 읽어야 한다.

책을 느리게 읽어도 좋으니, 곱씹으면서 읽어야 한다.

 

2. 한 챕터를 읽으면, 직접 설계해서 머릿속에 잘 넣어야 한다.

설계는 정말 읽을 때에는 와, 이걸 이렇게 하네?, 오 이런 식으로 만들어지는 구나 등 이해 한 것 처럼 보이는데, 사실은 책을 덮으면 휘발된다.

 

반드시 동일한 상황을 설계해보고, 추가적으로 본인의 니즈에 맞는 설계를 한번 해보는 것을 추천한다.

 

나의 경우, 더 세부적인 설계를 하는 편인데, 책에서 전달하는 설계도에서 DB를 여러개 사용하는 듯한 도식도가 나오면, DB instance가 정말로 많아야 하는 건지, schema로 했을 때는 문제가 없을 지, 나는 사실 대규모는 필요 없고 소규모 시스템을 만들고 싶은데 요구사항을 충족하면서 비용을 아낄 수 있는 부분은 없는지, 만약 소규모로 시스템을 만들었는데, 의도와 다르게 대박이 터져 시스템을 확장해야 한다면?, 내가 설계한 시스템은 오버스펙인지 아닌지(책을 따라하려다가 오버스펙이 되었는지),  내가 생각한 시스템이 확장이 가능한지, 우리 회사의 시스템 혹은 개인/팀 프로젝트에서 지금 당장 적용해야할 만한 설계가 있는지 등을 고민해본다.

 

3. 역할과 책임 그리고 의도

내가 생각 했을 때, 역할과 책임, 의도는 개발이든 아니든 "일을 잘하기"위한 가장 중요한 일이고, 이 책을 읽을 때 가장 중요한 부분인 것 같다.

 

이 책을 가장 잘보는 방법은 앞서 설명한 1번 2번에 대해서 역할, 책임, 의도를 파악하고, 설계에 반영이 되었는지 확인 하는 것이다.

 

설계의 각 부분은 어떤 역할을 해야하는지, 그 역할은 어떤 책임을 지는지(어떤 일을 담당하는지), 의도에 의해서 동작하는지(ex. trade-off) 잘 생각해보길 바란다.

 

 

코멘트

사실, 무슨 책을 읽든 생각하는게 중요한데, 적어도 이 책 만큼은 생각하는 만큼 보인다. 생각하는 만큼 성장하고, 생각하는 만큼 적용 가능한 것 같다.