티스토리 뷰

 

어제(6월 27일) 대규모 시스템 설계 스터디를 종료했습니다! 🎉🎉 약 1달 간의 스터디가 잘 마무리되어 뿌듯합니다. 우테코 레벨1부터 여러 스터디에 참여했지만, 이번 스터디는 여러 면에서 인상적인데요. 제가 시작하기도 했고, 주제도 재밌었고, 우테코에서 배운 가치를 녹여내어 그런 것 같습니다. 

 

대학생 때부터 여러 스터디에 참여했지만 스터디의 마침표를 찍는 것은 참 어려운 것 같습니다. 이번 경험을 기록으로 남겨 다음 스터디에 좋은 피드백이 되었으면 좋겠습니다. 그럼 그동안의 여정을 간단하게 정리해 보겠습니다. 

 

 

어떤 스터디를, 왜 하게 되었는지

대규모 시스템 설계 스터디를 했습니다. 우리의 나침반은 「가상 면접 사례로 배우는 대규모 시스템 설계 기초」라는 책이었습니다. BE 크루 망쵸(저)와 리니가 스터디에 참여했습니다. 

 

스터디를 하게 된 계기의 9할은 흥미였습니다. 우테코 레벨2를 하며 코드 치는 것에 진저리가 났습니다. 2달 동안 동일한 도메인의 애플리케이션을 다루는 것은 생각보다 고역이었습니다. 탈출구를 찾았고 그것은 대규모 시스템 설계 공부였습니다. 냅다 책을 사서 아침, 저녁 버스에서 한 챕터씩 읽었습니다. 꽤 재밌었고, 재밌어하는 제 모습에 리니도 흥미가 생겼나 봅니다. 어느 날 책을 하루 빌려달라 하고 가져가서 이틀 뒤에 돌려주었습니다. 그렇게 개인적으로 하던 공부가 스터디로 발전했습니다.

 

스터디 기간은 6월 6일부터 6월 27일로 3주간 동안 진행했습니다. 개인적으로 스터디는 길어지면 안 된다고 생각하는데요. 처음부터 계산한 것은 아니지만 3주는 꽤 적당한 기간인 것 같습니다. 총 10회 스터디를 진행했으니 한 주에 3번 정도 스터디를 한 것 같습니다. 저는 빠르게 1회독을 마친 상태였고 리니는 처음 읽는 상황이었습니다. 스터디에 가이드할 사람이 있어야 한다 생각하지만, 그런 역할을 할 사람이 없었습니다. 그래도 제가 한 번 더 읽었으니 리드해 보자는 생각을 갖고 임했습니다.  

 

 

어떤 방식으로 스터디가 진행됐는지

책은 16개의 챕터로 구성되어 있습니다. 각 챕터는 서로 다른 주제로 15~30페이지 분량입니다. 저희는 도입부와 추가로 몇몇 챕터를 제거하여 스터디 범위를 10개의 챕터를 추렸습니다. 한 번의 스터디에 한 챕터씩 정복하기로 했습니다. 그리고 다음 사이클을 돌렸습니다. 

 

  1. 각자 책 읽고 공부하기
  2. 메타인지
  3. 드라이버 - 네비게이터
  4. 스터디의 마무리는 회고

 

각자 책 읽고 공부하기

  • 스터디 이전에 정해진 챕터를 읽고 이해합니다. 
  • 저희는 주로 아침에 우테코 가는 길에 읽었습니다. 

메타인지

  • 챕터에서 설계해야 하는 시스템 키워드만 둔 상태로 설계합니다. 
  • 칠판에 챕터 제목만 작성하고 [요구사항 분석] - [규모 추정] - [개략적 설계] - [구체적 설계] 단계를 순차적으로 작성했습니다. 

드라이버 - 네비게이터

  • 페어 프로그래밍에서 사용하는 방식입니다. 
  • 메타인지에서 펜을 잡는 역할을 드라이버, 뒤에서 방향을 제시하는 네비게이터로 역할을 나눴습니다. 
  • 드라이버는 네비게이터와 함께 설계를 진행하고, 막히는 부분에서 네비게이터의 도움을 받았습니다. 

스터디의 마무리는 회고

  • 스터디가 종료되고 회고를 진행했습니다. 
  • 오늘 스터디에서 몰입도, 느낀 점 등을 아주 간단하게 공유하고 기록했습니다. 
  • 기록 수단으로 슬랙 DM을 사용하여 로그 형태로 남겼습니다. 
  • 마지막으로 다음 스터디할 챕터는 매 스터디가 끝날 때 정했습니다.
  • 챕터 선정 기준은 흥미와 난이도입니다. 재밌어 보이는, 그러면서 너무 어렵지 않은 챕터를 선정했습니다. 

유연한 것을 선호하는 저의 스타일대로 진행했는데, 모든 과정에서 저의 의견을 존중하고 함께해준 리니에게 감사합니다. 

 

메타인지 현장

 

 

스터디를 통해 얻은 것

망쵸 당연히도 시스템 설계 관점에서의 문제를 해결하는 방법을 알게 되었습니다. 그리고 모르는 것에 대한 막연함을 해소했습니다. 최근에 MSA가 핫해지며 레디스, 카프카 등 다양한 키워드가 들리곤 합니다. 그리고 이런 기술들을 알지 못해서 답답했습니다. 여전히 기술에 대해 구체적으로 알지 못하지만 대규모 시스템에서 어떻게, 왜 쓰이는지 알게 되었습니다. 어떤 상황에서 모놀리식 아키텍처가 문제가 생기고, 이 문제를 해결하기 위해 어떤 기술을 사용하는지 또는 문제를 해결하기 위해 어떻게 사고해야 하는지 배웠습니다. 한편, 학습의 방향성도 잡았습니다. 앞서 언급한 레디스, 카프카 같은 기술에 대해 지금은 몰라도 괜찮다는 확신이 생겼습니다. 당장 학습해도 쓸 수 없고, 금방 잊을 것입니다. 분산 시스템에서 사용되는 기술은 정말 많습니다. 현업에 가서 우리 팀이 어떤 기술을 쓸지 모르는데, 평생 안 쓸 수도 있는 지식을 공부하는 것보단 당장에 부족한 기초를 갈고 닦는 것이 더 효율적일 것입니다. 언젠가 레벨3 프로젝트 때 기술을 써보고 싶단 이야기했는데 이 생각이 완전히 바뀌었습니다 :)

 

리니 이 책을 읽고 스터디를 하면서 간접적으로 대규모 시스템을 설계하는 방법을 경험했습니다. 직접적으로 경험하기 쉽지 않은 부분에 대해서 인사이트를 얻을 수 있었습니다. 나아가, 레디스와 같은 기술을 우대하는 공고들을 봤었고, 경험해 봐야만 할 것 같았습니다. 하지만, 스터디를 통해 이 기술들을 어떤 목적으로 선택하고, 사용하는지 학습했습니다. 이를 통해, 당장 제가 하는 프로젝트 규모에서는 이 기술을 사용할 필요가 없다고 느꼈고, 또 한 번 기술의 사용에는 그 근거가 중요함을 느낄 수 있었습니다.

 

 

가장 기억에 남는 순간

망쵸 가장 실패한 스터디 날이 기억에 남습니다. 이 날, 새로운 시도를 해보았는데요. 사전에 책을 읽지 않고 설계할 시스템만 주어진 상태에서 설계를 진행하는 것입니다. 이 날 설계할 시스템은 뉴스 피드 시스템이었습니다. 그동안 배운 내용을 기반으로 얼마나 성장했는지 테스트하고 싶었습니다. 돌아보면, 혼자 집에서 해도 괜찮았을 것 같습니다. 이 날 설계 진행이 안되고, 루즈해져 버렸습니다. 식곤증을 핑계로 너무 졸렸습니다. 오만함을 버리고 반드시 1회독하기로 다짐합니다. 

호기롭게 도전했지만,,, 결과는 메롱

 

 

리니 short URL 생성기를 설계한 날이 기억에 남습니다. 이날 계획한 안정 해시에 대한 스터디를 끝내고, 이전에 이미 책을 1회독 했던 망쵸의 제안으로 아무런 기초 지식 없이 short URL 생성기를 설계해 보게 되었습니다. 그동안 학습했던 내용을 떠올리면서, 망쵸에게 요구사항 분석을 위해 필요한 정보들을 요구하면서 이를 기반으로 시스템을 설계해 보았습니다. 그리고 책을 봤을 때, 어느 정도 비슷한 분석과 설계가 나온 것을 확인했고 이 부분에서 쾌감을 느꼈습니다.

 

 

아쉬운 점

망쵸 드라이버를 더 많이 해보았으면 좋았을 것 같습니다. 완벽히 알지 못하는 내용에 대해 자신감이 없어서 드라이버가 되는 것을 회피했습니다. 실패하는 것에 두려움, 그것을 모두 인내해줄 수 있는 크루가 있지만 극복하려는 시도가 적었다는 점이 아쉽습니다. 그런 점에서 드라이버를 열심히 해준 리니가 멋지다고 생각했습니다. 그래도 마지막 스터디의 드라이버를 해보아서 만족스럽습니다. 드라이버로써 느낀 점은, 설계를 진행하면서 알지 못하는 또는 기억나지 않는 부분에서 성장이 있었습니다. 기억나지 않는 부분부터는 기존의 설계를 바탕으로 자신의 논리적 사고에 의존하여 설계를 이어나가야 했습니다. 머리를 쥐어짜내어 나름 설계를 마치고 책을 확인할 때, 의도한 내용이 일치하는 순간에 쾌감이 있었습니다. 

 

리니 주로 드라이버로 스터디에 참여했습니다. 처음 읽는 입장에서 책 내용이 쉽지 않게 다가왔습니다. 드라이버로 메타인지를 진행할 때 논리적인 흐름에 따라 사고하기보다는, 책의 흐름을 떠올리려고 할 때가 많았습니다. 그러다 보니, 설계의 근거를 놓치고 넘어갈 때가 많았습니다. 네비게이터인 망쵸가 잘 잡아줬지만, 개인적인 아쉬움이 있습니다.

 

 

마치며

새 책의 첫 페이지를 피며 항상 하는 생각이 있습니다. '이 책의 마지막 페이지를 볼 수 있으면 좋겠다.' 그리고 끝을 보아서 성취감을 느낍니다. 책상 위에 읽지 않지만 미련 남은 책들이 잔뜩 쌓여 있는데, 이 책은 미련 없이 책장에 꽂을 수 있게 되었어요 😊 언젠가 다시 이 지식이 필요할 때 인덱싱해 둔 내용을 기반으로 빠르게 백업할 수 있을 것 같습니다. 

 

이렇게 작성하고 보니, 뿌듯하네요 :) 우테코에서 한 활동을 기록으로 남기고 싶은 욕심이 있었는데 완성해서 다행입니다. 그리고 스터디가 종료되고 인터뷰에도 응해준 리니에게 감사합니다. 이 기록이 이후 다른 스터디에 도움이 되는 경험이었으면 좋겠습니다. 

 

 

링크
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday