본문 바로가기
후기

우아한 스터디 '대규모 시스템 설계 2'를 마치고

by argentdarae 2024. 9. 21.

개요

스터디 소개

우아한형제들에서 주관하는 스터디로서, 여러 테마가 존재하며 관심있는 분야에 신청하는 형태이다

이번 여름시즌에도 여러 테마가 있었으며 그 중 우아한 대규모 시스템 설계 스터디 2 에 참여하였다. 

 

가상 면접 사례로 배우는 대규모 시스템 설계 기초 2 를 읽고 정해진 범위의 내용에 대해 지식을 습득하고 의문점이 드는 부분을 추려 모두와 함께 이야기해보는 방식이었으며

24.06.01 ~ 07.27 까지 9주 동안 매주 토요일 아침 9시부터 11시까지 온라인으로 진행되었다

 

평소에도 소프트웨어 아키텍트를 짜는 것과 클래스 설계에 관심이 많았다

그런데 슬랙에 세팅한 RSS에서 관심사와 정확히 부합하는 스터디의 모집 공고를 보고 신청하고 기다렸는데, 감사하게도 멤버로 선정해주셨고 스터디에 참여하게 되었다

 

어떤 동기로 참여하였는지?

  • 다른 사람들의 공부 방식. 지식을 어떻게 자신의 것으로 만드는지 궁금했다
  • 아키텍트란 정확히 어떤 일을 하고, 어떤 능력을 지니고 있어야 하는지 막연하게 느껴지는 단어의 이미지를 구체화 시키고 싶었다 
  • 게임 외적인 분야에서 근무하는 프로그래머들은 어떤 일을 하고 어떻게 일을 하는지 궁금했다

 

 

스터디 내용

학습 프로세스

나는 다음의 프로세스로 학습하였다

  1. 매주 학습할 범위 확인
  2. 책을 보고 내용 정리
  3. 내용을 보며 드는 의문점 정리
  4. 질문을 게재하고 다른사람의 질문을 보고 나름대로 생각한 답을 제시하거나 추가 자료 공부

 

무엇을 느꼈는지

세상은 넓고 배울 것은 많다

 

프로그래머로서 내가 목표하는 경지까지 도달하기 위해선, 정말 갈길이 멀구나 라는 생각이 들었다

게다가 내가 경험해보지 않은 분야여서 알아듣지 못하는 용어가 많아 더 막막하게 느끼기도 하였다

스터디 대화 로그 중

 

이 상태에서 프로젝트 마감기간으로  모르는 단어와 개념에 대해 공부하고, 질문을 남기는 일이 쉽지 않았다

 

하지만 갈 수록 깊이 있는 질문을 할 수 있게 되는 것 같아 재밌었으며

게임 관련 업무만 진행하다가 새로운 종류의 지식이 뇌에 들어오니, 프로그래밍에 대한 흥미도 다시 불타오르고 시스템을 거시적인 시야로 을 바라볼 수 있게 되었다

 

흥미

특히 흥미로웠던 두 가지 파트는 실시간 게임 순위표 설계증권 거래소 설계였다

 

최근 모바일 게임에서 순위표 클라이언트 로직을 구현한 경험이 있어서, 게임과 관련된 부분에 더 큰 흥미를 느꼈다

데이터를 어떻게 저장하고 최적화할지에 대한 내용을 따라가며 공부하는 과정이 재미있었다.

 

증권 거래소 설계는 내가 주식에 관심이 많아 궁금했던 부분이었다. 데이터를 빠르게 처리하고, 복잡한 네트워크에서 정확하게 처리하는 방식이 어떻게 가능한지 궁금했다

실행 작업을 줄여 최적화하고, 모듈화를 통해 병목 구간을 없애는 방법을 보며 정말 신기했다

 

내용들을 100% 이해하지는 못했지만 여러번 책을 보며 비슷한 모듈을 한번 구현해보고 싶다는 생각이 들었고, 실제로 계획을 짜서 실천에 옮길 생각이다

 

 

자기 평가

주요 성과

  • 게임 클라이언트 외적인 분야를 공부하면서 새로운 자극을 받고, 공부 의욕이 크게 향상됨
  • 다른 개발자들이 지식을 자기 것으로 만드는 과정을 관찰하며, 나만의 학습 프로세스를 강화함
  • 아키텍트들의 사고 방식을 보며, 설계의 시작부터 완성까지 중시해야 할 요소를 어떻게 파악하고 만들어나가는지 이해하게 됨
  • 비슷한 상황이 닥쳤을 때 적용할 수 있는 해결책을 찾을 수 있는 레퍼런스가 늘어남

특히 문제를 정의하고 풀어나가는 방식이 굉장히 체계적이고 자연스럽게 흘러가는 부분이 재밌었다

  1. 문제 이해 및 설계 범위 확정
  2. 개략적 설계안 제시 및 동의 구하기
  3. 상세 설계 및 주의할 점 체크

목차에도 나와있지만 자연스럽게 흐르는 이 프로세스가 굉장히 인상깊었다

 

설계를 할 때 사용해도 좋을 프로세스지만 업무에도, 더 나아가 생활 속에서 문제를 풀어나갈 때에도 적용하면 낭비되는 시간과 힘을 줄이고 최선의 결과가 나올 것 같아 실제로 적용중이다

 

반성

이번 스터디를 진행하면서 여러가지 반성할 부분을 생각하게되었다

 

체계적으로 접근해 설계와 구현 단계를 효율화할 수 있지 않았나?

시간에 쫓겨 급하게 구현하다 보니 설계에 충분한 시간을 들이지 못하고 넘어가는 경우가 있었고, 그 결과 전체적인 개발 속도가 느려지는 문제가 발생했던 경험이 있다

 

이러한 문제를 개선하기 위해 다음의 프로세스로 업무를 처리하고자 한다

  1. 풀어야 할 문제가 정확히 무엇인지 정의하기
  2. 문제를 해결하기 위해 필요한 것을 정확히 파악하고 설계하기
  3. 구현하기

여지껏 이렇게 안한 것은 아니지만, 너무 힘들거나 간단하다고 생각하여 덤벼든 문제가 생각보다 늘어지는 일이 있었다

돌이켜보면, 얕잡아보다 쓸데없는 시간을 소모한 게 아닐까

 

기술 부채가 쌓인 상황에서 이를 해결할 시간을 계속 미룬 것은 아닌가?

배울 기술은 많고, 이미 배운 것도 복습하며 200% 자기 것으로 만드는 시간을 가져야 하는데, 지금처럼 가다가는 내가 원하는 레벨의 수준까지 올라갈 수 없을 것 같다

 

자신이 사용한 기술에 대해 제대로 답하지 못하는 자를 누가 신뢰하겠는가?

 

앞으로는 기술 부채를 해결할 시간을 따로 할당하고, 비어있는 퍼즐조각을 하나하나 끼워가며 우선순위를 정해 중요한 부채부터 처리해 나가겠다

 

다른 개발자의 구현 방식을 배우지 않고, 나만의 방식에 갇혀 성장하지 않고 있는 것은 아닌가?

항상 같은 방식으로만 문제를 해결하다 보니 나의 개발 역량이 정체되거나, 비효율적인 방식으로 문제를 계속해서 해결하는데 이를 인지조차 못하고 있을 수 있다는 생각이 들었다

 

이를 해결하기 위해, 정기적으로 다른 개발자들의 코드를 리뷰하고 인사이트를 가져갈 수 있도록 노력할 것이며

다양한 개발 방법론과 패턴을 학습해 나의 작업에 적극 반영하겠다

 

물론, 무분별적인 수용은 안되겠지만

 

 

마무리

설레는 맘 반, 걱정 반으로 시작했던 스터디가 마무리 된지 벌서 두달이 흘렀다

나는 스터디에서 인사이트를 얻고, 이를 바탕으로 발전했는가? 라는 물음을 던진다면 그렇다 라고 자신있게 말할 수 있다

 

비전공자로서 스타트업에서 경력을 처음 시작한 나는 주변에서 참고할 레퍼런스가 극단적으로 적었다

그래서 내가 부족한 지점이 무엇인지 정확히 인지하는 시간을 항상 가지고 싶었는데 많은 도움과 자극을 받을 수 있었던 시간이다

 

또, 게임 클라이언트 프로그래머로서 경력을 시작했고, 앞으로도 이 길을 가게 될 것 같지만 다른 분야의 개발자들은 어떤 일을 하는지 항상 미스테리였는데 이에 대한 궁금증이 풀린 것도 재밌었다

 

마지막으로 아키텍트를 지향하지만 정확히 어떤 사람이 되어야하는지 명확한 이미지가 없고 희미했는데 이번 기회에 많이 구체화 시켰다는 사실이 가장 큰 수확인 것 같다

 

두 달동안 많은 가르침을 받은 것 같다. 특히 이런 소중한 시간을 선물해주신 구성원분들께 너무 감사하다

참여한 모든분들 모두 행복하시고 각자의 꿈을 이룰 수 있었으면 좋겠다