한윤석 개발 블로그

배운 것을 적는 블로그입니다.

가상 면접 사례로 배우는 대규모 시스템 설계 기초 2편 서평

등록일: 2025-04-22
수정일: 2025-04-22

구글 지도를 설계한다든지, AWS의 S3 같은 엄청 큰 서비스를 설계한다든지 흥미로운 주제가 많았다. 내가 감히 만들려고 상상조차 못 해본 서비스들이다. 이러한 서비스들을 만든다면 과연 나는 어떻게 만들 수 있을까? 처음부터 거대한 무언가를 만드는 것은 불가능할 것이다. 가능하지도 않고, 그런 지식조차 가지고 있지 않다. 그렇다면 일단 요구사항을 기획자와 이야기해서 좁혀나갈 것이다. 요구되는 기능은? 기대되는 사용자의 수는? 일단 내가 알고 있는 지식으로 시도해 볼 것이다. 나는 관계형 데이터베이스는 알고 있으니까 관계형 데이터베이스로 만들어봐야겠다. 일단은 해결이 됐는데 만약 여기서 사용자가 2배가 되면 어디에 문제가 생기고 어떻게 대응해야 할까? 상태가 있는 시스템과 없는 시스템은 확장하는 방식이 무엇이 다를까? 이런 질문들에 대해서 어떤 고민을 해야 하는지 키워드들을 배울 수 있었다. 설계할 때 어떤 의사 결정들이 필요한지에 대해서도 배울 수 있었다.

그뿐만 아니라 지도에 있는 데이터들을 검색하기 위한 자료구조와 알고리즘도 배울 수 있었고 S3가 어떤 방식으로 데이터들을 관리하는지도 배울 수 있었다. 분산 트랜잭션의 종류와 각각의 차이, 멱등성의 중요성도 배울 수 있었다. API간의 멱등성도 중요하지만 함수를 작성하는 수준에서도 멱등성이 중요하다는 것을 깨달았다. S3의 경로가 파일의 경로와 다르다는 사실을 알았다. 이것 때문에 고생한 적이 한 번 있었는데 이번 기회에 알게 돼서 좋았다. 분산 메일 서비스는 직접 구현할 일이 없다보니 고민해보지 않았을 신뢰도 문제를 배울 수 있어서 좋았다.

아쉬웠던 점은 내가 개발하면서 만날 문제와는 거리가 먼 것도 많았다. 그래서 몰입하기 어려운 것도 많았다. 조금 더 쉽고, 개발하면서 만나기 쉬운 주제들이었으면 더 좋았을 것 같다.

참고


자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기

코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!