크래프톤 정글에 입소한 지 어느덧 15주 차가 되었다. 블로그에 글을 쓰는 것은 2주 만인 것 같다. 그동안 많은 일이 있었다. 나만무 프로젝트를 시작하기에 앞서 팀 리더를 뽑고 팀원을 매칭하는 것 이 14주 차의 일이었다면 15주 차는 아이디어를 선정하고 기획을 하고 발표를 하는 등 프로젝트의 시작에 대한 것들을 수행하는 주였다.
팀리더가 되다.
팀의 리더가 되었다. 사실 엄청난 비전이 있어서 그런 것은 아니었다. 다만 내가 주도적으로 팀을 이끌고 목표를 달성하는 것이 내가 끌려서 목표를 달성하는 것보다는 의미 있다고 생각을 하기 때문이었다.
한 주가 지나고 든 생각은 "팀리더? 해보지 뭐!" 이런 생각을 하던 나를 제발 누가 멈춰줬으면 좋았을 것 같다는 것이다.
너무 힘이 든다. 물론 함께 하는 팀원들과 우리 반 모두가 힘이 들 것이다. 하지만 개인 적으로 정말 지친 한 주였다.
아이디어를 갈구하다
우리 팀은 처음에 near voice라고 주변 지인(가족, 친구 등)의 목소리로 대화를 할 수 있는 서비스를 기획했다. 할머니나 할아버지가 자녀 혹은 손주의 목소리로 된 AI 어시스턴트와 대화를 나누거나 자녀, 손주의 목소리로 알림을 받는 기능을 말했다.
아이디어는 좋았다. 하지만 코치님들의 피드백은 이거 AI API만 사용할 거면 너희는 뭘 할 거지? 뭐가 기술적 챌린지지? 이런 말을 우리 팀이나 근처 다른 팀에도 한 것 같다. 그리고 나 또한 그렇게 생각했다. 나는 AI를 모른다. 비전공자라서 AI를 학습시키는 등의 활동에 대해서 들어는 봤지만 해보지 않았다. 그래서 기술적 챌린지를 위해 AI를 우리가 학습시키거나 데이터 파이프라인 등을 구현한다는 것이 가능하냐에 대한 근본적인 의문과 함께 팀이 어떻게 어떻게 해서 AI를 만들었다고 하면 그게 나에게 온전히 남는가?라는 것이 문제였다.
하지만 우리 팀에서 더 이상 쓸모 있는 주제가 발산하지 않기도 했고 며칠을 아이디어만 생각하고 회의를 계속하다 보니 지쳐가는 것이 보였고 누군가는 민감해져서 소리가 커지거나 말이 날카로워지는 것이 보였다. 하지만 이해를 하는 것이 나 또한 직접 적으로 표시하지는 않았지만 굉장히 무표정했다고 팀원이 말했다.
AI의 공포는 다른 의미로 우리 팀을 잡아먹고 있었다.
대 타협
그렇게 일요일이 되었다. 그리고 더 이상 이렇게 되면 안 될 것 같아서 나는 며칠 전부터 우리가 현재 기획하고 있는 이 아이디어에 대한 반대 의견 혹은 플랜 B를 언급하며 신호를 주었다.
"AI 좋다 요즘 가장 뜨는 것이니까 근데 여기서 이거 5주 한다고 내가 석박사 나온 사람들 만큼 AI를 알게 되는 것도 아니고 그냥 써봤다 이 정도면 내가 당장 다른 회사 면접 가서 뭐라 말할 것인가? 면접관이 프로젝트를 보고 AI사용하셨네요? 하면서 AI 관련해서 질문하기 시작하면 내가 이걸 정말 다 알고 대답할 수 있는가?"
라고 했을 때 절대 아니었다. 그렇다면 나는 AI를 완전히 걷어낸 다른 방향으로 가야 한다고 주장을 했다. 그리고 다른 팀원들도 이미 AI에 많이 지치고 코치진의 피드백을 듣다 보니 실감한 듯했고 나는 옆의 팀원에게 평소에 하고 싶었던 기술이 있는지 물었고 때 마침 매칭알고리즘을 해보고 싶다고 했고 이때 1대 1 코딩 테스트 게임에 대한 아이디어가 나왔다.
마침 모든 팀원이 AI 프로젝트가 힘이 들고 완성이 가능할까?라는 의문이 드는 시점에 여기에 더해 코치님이 우리의 볼륨이 너무 크다며 툭 던지듯 인프라 스트럭처나 개발 서비스와 관련된 부분을 얘기해 주시면서 Lambda와 같은 서버리스 서비스를 직접 구현해 보거나 젠킨스를 c나 go로 재 구현해 보거나 하는 건 어떠냐 말씀하셨다. 그렇게 8개 정도의 추가 아이디어가 모집됐고 몇 번의 논의를 더 거쳐서 결국 1대 1 코딩 테스트 게임이 우리의 최종 아이디어가 되었다.
우리는 이걸 대타협이라 부르고 이날 마음 편하게 혹은 1주간 스트레스를 풀 겸 밖으로 나가 치맥을 하고 들어왔다.
코드그라운드(Codeground)
대 타협을 통해 나온 새로운 프로젝트 이름을 코드그라운드라고 짓고 어떤 것이 기술적 챌린지로 가져갈 것인지 뭐가 필수 구현 기능인지 무엇이 나중에 해도 되는 것인지 중요도에 따라 분류를 진행했다.
- 매칭 알고리즘에 대해 파악하고 MMR을 관리하여 수준에 맞는 사용자끼리 1대 1 매칭이 잡히도록 하자
- 채점 서버를 직접 구현해서(일종의 서버리스) 채점 기능을 제공하자
- 화면 공유를 통해 실시간 인터렉션을 주자
위 3개를 핵심으로 생각하고 이 외의 디테일이나 우리 팀의 역량이 출중해서 시간적으로 가능하다면 추가로 구현할 기능을 다음과 같이 정의했다.
- 1대 1 랜덤 매칭에서 나아가 원하는 사람과 둘만 할 수 있는 방 생성(MMR 영향이 가지 않는다.)
- 화면 공유 + 웹 캠을 이용해 서선이 정면을 향하는지 등을 감지하는 이상치 탐지
- 채점 서버를 쿠버네티스로 운영하기
- 대규모 트래픽 처리 가능성을 보기 위한 부하테스트
이렇게 나누고 발표를 하며 피드백을 받았다.
- 게임이라고 했으면 게임 요소를 더 추가하라
- 화면 공유 시 공유된 화면이 치팅의 축이 되니 방지할 수 있게 하라
- MMR 매칭이 잘 되는지 검증할 수 있게 테스트를 많이 돌려라
- 채점 서버가 많은 트래픽을 버틸 수 있는지 확장 가능한지 테스트를 하며 검증하라
- 매칭 알고리즘 선택 근거를 납득 가능하게 설명할 수 있도록 이해하고 말할 수 있어야 한다.
피드백 결과 우리 아이디어에 대한 부정적인 반응은 없는 것 같으며 피드백 내용도 우리에게 도움이 된다고 판단되어 우리는 확정적으로 이 아이디어를 가지고 나만무 프로젝트를 진행할 것이다.
'크래프톤 정글' 카테고리의 다른 글
[pintos] Week4~5: Virtual Memory - Part.9 Copy-On-Write (3) | 2025.06.08 |
---|---|
[pintos] Week4~5: Virtual Memory - Part.7 페이지 교체 및 구현 완료를 위한 수정 (0) | 2025.06.07 |
[pintos] Week4~5: Virtual Memory - Part.6 Swap In/Out (2) | 2025.06.07 |
[pintos] Week4~5: Virtual Memory - Part.5 Memory Mapped Files (1) | 2025.06.07 |
[pintos] Week4~5: Virtual Memory - Part.4 Stack Growth (0) | 2025.06.06 |