되돌아보기

[WIL] 항해99 12주차 회고ㅣ실전 프로젝트 런칭

오늘 ONEUL 2023. 2. 5. 22:29

이번 주 톺아보기

 

🎮 드디어 [눈치 코치 캐치!] 서비스 런칭!

보이스 채팅과 함께 즐기는 드로잉 게임! 눈치 코치 캐치!

7명의 팀원 모두가 약 한 달간 밤낮없이 고생한 결과물이 세상에 나왔다!
다들 열심히 해준 덕분에 항해99 10기 중 가장 빠르게 서비스를 런칭하게 되었다✌

👉 눈치 코치 캐치! Github 구경하러 가기

 

GA를 이용하여 유저들의 데이터를 수집한 결과,
런칭 기간 동안 무려 793명의 유저가 우리 서비스를 이용해 주었다.
우리 예상을 훨씬 뛰어넘는 수치여서 감사할 따름🥰

 

또, 우리는 유저와 소통할 수 있는 여러 창구를 마련해 놓았는데,
소통 방식에 따라 다른 유형으로 이용할 수 있었다.
채널톡 ⇒ 즉각적인 오류 피드백
구글폼 ⇒ 디테일한 설문조사

 

채널톡으로 즉각적인 오류 피드백받기

채널톡으로 이벤트 홍보

설문 참여 이벤트 홍보, 점검 시간 안내, 챗봇 등등
이번 런칭 기간 내내 효자 역할을 톡톡히 해준 채널톡!
댄스 스튜디오에서 카톡 플러스친구를 운영했던 경험을 십분 발휘해서 답변 템플릿까지 작성했고,
덕분에 유저의 피드백을 즉각적으로 받을 수 있었다.

봇 아니고 사람 맞습니다!

 

구글폼으로 디테일한 설문조사 하기

구글폼으로 설문조사

이벤트 겸 설문조사로 이용했던 구글폼!
101명의 유저 분들에게 더 디테일한 피드백을 받을 수 있었다.
MVP 만으로 런칭 했기 때문에 어느 정도 예상가는 피드백도 있었고,
진짜 예상치도 못했던 피드백도, 또 너무 감사한 피드백도 있었다.

 

 

🙇‍♀️ 유저 테스트 피드백

우리는 다양한 창구를 통해 수집된 피드백을 기반으로 Q.A 시트를 만들고, 본격적인 서비스 개선에 들어갔다.

소중한 유저분들의 목소리

👉 [눈치 코치 캐치!] 유저 테스트 피드백 보러 가기

 

소중한 피드백들을 빠르게 반영하기 위해
낮에는 게임 운영, 밤에는 기능 개발을 일주일 동안 매일 했던 것 같다.
그 결과, 전체 피드백의 90%를 반영하여 서비스를 개선할 수 있었다.

90.244% 반영!

 

반영된 피드백 중 우선순위가 높았던 개선사항은 다음과 같다.

우선순위 개선 및 추가사항 완료 여부
1 게임 안내 가이드(게임 설명, 그림툴 툴팁)
2 게임 진행 중 시간 제한(타이머)   👉 내가 담당한 부분
3 게임 모드 추가(난이도 조절, 제한 시간 변경)
4 혼자서도 그려볼 수 있는 연습장
5 본인 마이크 음소거
6 배경음 음량조절 기능
7 그림툴 기능 추가(두께, ctrl+z, 색상 등등…)
8 채팅 글자수 제한
9 로비에서 게임방의 변동 실시간 반영(SSE)
10 입력 부분 기능 고도화 (입력 형식 제한 표시)

 

이 외에도 확장 스코프로 계획했던 기능 추가와 에러를 해결했던 부분은 다음과 같다.

  • 기능 추가
    • 이미지 좋아요 기능
    • 마이페이지 추가 (로그아웃, 뱃지, 좋아요 한 이미지)
  • 에러 해결
    • 오류 발생한 gameRoom 나와서 다른 방 입장 시도 시 입장 안 되는 에러 해결
    • 방을 나갔다 왔을 시 webRTC 연결이 되지 않는 에러 해결
    • 게임 중 제한 시간이 넘어갔을 경우, 자동 제출되지 않는 에러 해결(내 잠을 앗아간 녀석...)

 

 

😀 잘한 점

  • 자동 일괄 제출 시 발생하는 DB 동시성 문제 해결
    • 제한 시간을 넘어 미처 제출하지 못한 유저의 키워드나 이미지가 자동 제출 되었을 때 동시에 여러 클라이언트에서 요청이 오다 보니 DB에 제대로 데이터가 쌓이지 않거나 게임 로직이 터져버리는 이슈가 발생했다.
    • 동시성 문제를 해결하기 위해 Controller에 synchronized를 적용해 보았지만, 성능상 좋은 방법이 아니라는 피드백을 받았다.
    • 코드도 전부 엎어보고, 며칠 동안 고민하다가 결국 멘토님께 조언을 구했고, 2가지의 방법을 제안해 주셨다.
      1. 제출 인원을 확인하는 로직을 독립시켜서 thread scheduler 등으로 주기적으로 확인
      2. 제출 인원을 하나의 column으로 갖는 table을 생성하고, row level lock 적용
    • 첫 번째 방법을 시도해 보았으나, 여전히 원하는 대로 작동하지 않았다.
    • 두 번째 방법으로도 해결되지 않는 듯싶었으나 올바른 방법으로 적용되지 않았던 부분이 있었고, 계속 시도한 끝에 마침내 해결했다!
    • 하면.. 된다..!
 

[눈치 코치 캐치!] DB 동시성 제어 문제 해결

시작하기 전에 [눈치 코치 캐치!]의 MVP를 완성하고 런칭의 기쁨도 잠시, 다양한 피드백을 마주하게 되었다. 그중 내가 맡아 개선한 부분은 ‘게임 진행 중 시간제한(타이머)’ 기능을 추가한 것

oneul-losnue.tistory.com

 

🙁 아쉬웠던 점

  • 백엔드 엔지니어로서 기술적인 도전
    • 물론 WebRTC나 DB Lock 같은 새로운 기술에 많이 도전하긴 했지만, 개인적으로는 인프라 쪽으로 더 도전하지 못한 것이 아쉽다.
    • NGINX을 이용한 무중단 배포 등, 다음 주에는 아쉬웠던 부분들을 개선해 봐야지.

 

 

이번 주의 나는

실제 유저들이 사용하는 서비스를 만들고, 피드백을 받는 경험은 신기하면서도 감사했다.
한 분, 한 분이 주시는 의견들이 얼마나 소중하던지..
비록 모든 피드백을 반영할 수는 없었지만,
유저의 의견을 통해 개선된 서비스를 보니 그렇게 뿌듯할 수가 없다.

 

왜 울컥하고 난리 증말..후

 

처음 해보는 유저 테스트에 긴장도 많이 했는데,
각자 자리에서 열심히 해주는 든든한 팀원들이 있어서
정말 뜻깊은 일주일을 보냈다.

이제 최종 발표를 하고 나면 마지막 지원주차이다.
벌써 99일의 끝이 다가온다니.. 기분이 싱숭생숭하다.
열심히 해온 것들을 여지없이 보여줄 수 있도록 잘 정리해 둬야겠다.
남은 기간도 힘내보자!

 

왜 또 6시야..? 왜 우리 집 안 가..?