4주간의 프로젝트를 진행하며 (2 / 2)

김도연
5 min readSep 21, 2018

--

슈뢰딩거의 고양이

4주간 진행된 슈뢰딩거의 고양이 프로젝트에서 일어난 이슈들을 이야기하는 포스팅입니다. 슈뢰딩거의 고양이는 react native로 제작된 위치기반 랜덤 채팅 서비스를 제공하는 앱입니다. 앱스토어와 플레이스토어에서 다운로드 하실 수 있습니다

코드스테이츠 부트캠프의 마지막 4주 프로젝트에 대한 짧은 기록 2번째

정신과 시간의 방

삽질의 끝은 광명이라 생각하며 열심히 삽질을 하며 이슈들을 하나씩 처리해나갔다. 그 중 재밌는 이슈가 하나 있었다. 사용자가 절묘하게 타이머 시간이 0일때 들어가면 방이 터지지 않고 음수가 되면서 계속 지속되었다. 우리끼리는 이 현상을 ‘정신과 시간의 방’이라고 했다.

이곳이 정신과 시간의 방인가

처음에는 클라이언트 단에서 해결하려 했다. 그런데 조금 더 생각해보니 채팅방이 몇초 남지 않았을 때 들어오는 것이 사용자에게 좋은 접근은 아닐 것이라는 생각에 아예 서버에서 10초 미만의 방에는 들어가지 못하게 막아버렸다.

이 이슈는 나중에는 이스터애그처럼 재미있는 이벤트로 만들어보고 싶다.

To be or not to be that is a problem

코드가 안정화되어 갈 무렵, 본격적으로 두 플랫폼으로 빌드를 진행했다. 심사가 빠른 안드로이드부터 빌드를 시작했다. 이전 프로젝트에서 한번 해봤기 때문에 빌드 자체는 큰 문제없이 지나갔다. 하지만 문제는 빌드 한 뒤 실제 기기에서 테스트 했을 때 일어났다.

채팅방에서 재미를 위해 넣은 기능이 하나 있다. ‘냥냥펀치’라고 공격버튼을 눌러 공격모드로 전환한 뒤 상대 고양이를 누르면 hp가 떨어지게끔 하는 기능이다. hp가 0이 되면 뮤트가 되어 잠시 채팅도 공격도 아무것도 못하는 상태가 되어버린다.

실제 기기에서 테스트를 해보니 상대를 공격하면 공격자와 피공격자 모두 앱에서 튕겨버렸다. 이게 대체 무슨 일인가.

똑바로 코드 안짜냐옹!

문제는 공격시 타격감을 주기 위해 진동을 울리게 하는 부분에 있었다.

리액트 네이티브에는 Vibration이라는 API가 있는데 ios와 안드로이드가 설정하는게 약간 달랐다. ios에서는 vibration duration이 정해져있지만, API를 그냥 사용하면 되고, 안드로이드에서는 추가적으로 <uses-permission android:name="android.permission.VIBRATE"/>AndroidManifest.xml 에 설정해줘야했다. 공식문서에 친절하게 설명이 잘 되어 있다.

API별로 ios와 안드로이드가 다른 경우가 있기에 이 경우처럼 그냥 가져다가 사용하다보면 문제가 생기는 경우가 있다. 코드가 길어지고 사용하는 API가 많아지면 어느 부분에서 문제가 생기는지 정확히 모를 수 있다.

우리도 시뮬레이터에선 문제가 없었는데 실제 기기에서 테스트를 할때 문제가 발생하니 대체 어느 부분에서 오류가 생기는 것인지 알 수가 없었다. 무시무시한 시뻘건 에러 로그도 띄워주지 않으니 문제일 것 같은 부분을 하나씩 테스트해보며 찾아내야 했다.

리액트 네이티브의 라이브러리의 사용도 ios와 안드로이드가 조금씩 다를 때가 있다. 예를 들어 react-navigation에서 헤더의 정렬방식이 그렇다. 이 부분은 나중에 따로 포스팅을 할 예정이다.

목표달성

우리팀은 각자 맡은 바 일을 차분히 해나가는 편이었다. 팀장인 내가 할 일은 의사결정이 필요할 때 팀원들의 의견을 듣고 조율해서 방향을 정하는 것 뿐이었다(그만큼 다들 욕심을 가지고 열심히 했다). 매번 각자 목표를 정하고 그 부분은 그 사람이 책임지고 전담하는 식으로 진행했다.

각자 목표치가 있으니 먼저 달성하는 경우가 있다. 그 때마다 우리는 더 해야할 일이 무엇인지 함께 고민하고 다시목표를 설정하고 다시 열심히 개발을 해나갔다.

백엔드의 경우 규모가 큰 어플리케이션이 아니다보니 프론트보다 빨리 마무리 되었다. 더 해야할 일이 무엇일까 고민하다 백엔드에서 나온 제안은 서버 스케일링을 해보고 싶다는 것이었다. 현재는 AWS 프리티어라 동접 250명 정도를 수용할 수 있다. 이걸 더 늘려보자는 목표를 정하고 실제 지금은 티어만 올리면 8,000명까지 접속할 수 있도록 되어 있다. 프론트의 경우 코드가 안정화되는 대로 관리자 페이지를 만들자는 목표를 새웠다. 결국 관리자 페이지까지 만들었다. 데모데이때 발표하지는 못했지만 목표를 달성했다는 점이 중요하니까.

목표가 있으면 앞으로 나가기 마련이다. 달성하고 싶고 기왕이면 잘하고 싶어진다. 이 보이지않는 힘이 우리 팀을 끝까지 지치지 않고 잘 마무리할 수 있게 한 원동력이 아닐까 생각한다. 남들에게는 대단하지 않을 수 있지만 우리가 목표한 바를 모두 해냈다는 점이 나중에 다른 프로젝트를 할 때도 도움이 많이 될거라 믿는다.

너님 잘했음

--

--

김도연
김도연

No responses yet