코드숨에서 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2편 책을 가지고 스터디를 8주 동안 진행했다.
주로 책 내용을 복습하는 방법으로 스터디를 진행했다. 일단 우리가 지금 알고 있는 것으로 설계를 해보고, 만약 ~라면 설계를 어떻게 변경해야 할까? 같은 질문을 던져가며 설계를 다듬어봤다. 책에서 적용하는 것을 보면 그냥 적용하는 것 같은데, 그게 전부 이유가 있어야 한다고 생각했고, 그것을 알아야 대규모가 됐을 때 대응할 수 있다고 생각했기 때문이다.
예를 들어서 내 친구들 목록 중에서 현재 접속 중이고 일정 거리 내에 있는 친구들만 불러오고 싶다. 관계형 데이터베이스를 사용하고 있다면 조회할 수 있고, 거리별 조회를 위해 다른 데이터베이스를 사용하면 쉽게 가능할 수도 있다. 근데 내가 계속해서 쿼리를 해야한다면 쿼리 비용이 계속해서 지불하는 것이기 때문에 낭비가 될 수 있다. 그래서 변경이 됐을 때만 구독하는 방식을 사용하면 계속해서 쿼리 날리는 비용을 줄일 수 있다. 근데 이 구독을 하는 것도 사용자가 많아지면 부하가 심해지기 때문에 중간에 데이터 구독을 위한 계층을 하나 더 추가할 수 있다. 그러면 사용자 입장에서는 웹 소켓 서버를 하나만 구독하고, 이 서버가 필요한 데이터들을 구독하여 중계할 수 있다. 그래서 이렇게 하나씩 새로운 어려움이 생겼을 때 어떻게 해결할 수 있는지 같이 이야기해 보면서 설계의 의사결정을 어떻게 해야 할지 배울 수 있어서 좋았다.
하지만 유익하지만, 쓸모없는 것들도 많았다. 사실 AWS S3같은 서비스가 어떻게 만들어졌는지 배워보는 것은 재밌었지만, 실제로 만들 일이 없어서 어떻게 스터디를 진행할지 어려웠다. 책에서도 엄청 자세하게 다루지 않아서 그냥 그렇구나~하고 넘어가는 내용이 많아서 아쉬웠다. 그래도 분산 트랜잭션에 대해서는 ChatGPT의 도움을 받아서 예시 코드라도 볼 수 있어서 좋았다. 다음에는 그럼에도 불구하고 배워갈 수 있는 것을 찾아서 같이 스터디를 해야겠다.
자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기
코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!