DAU 세 자릿수 서비스에 신기능 배포한 썰 푼다
동아리 선배의 소개로 1월부터 쿠링 프로젝트에 참여하고 있다. 매번 홈페이지에서 직접 확인해야 했던 학교 공지를 모아서 보여주고, 신규 공지가 있을 때 알림까지 보내주는 훌륭한 서비스이다.
1월에 합류해서 코드 공부하다가(이때 RxJava 코드를 처음 봤다), iOS에 있는데 안드로이드에 없는 기능을 나에게 맡기신다고 하여 개발하게 되었다.
신기능
내가 개발한 신기능은 공지 보관함이다. 중요한 공지를 모아서 한 눈에 볼 수 있는 기능이다.
DB에 column 하나 추가해서 뚝딱 만들 수 있는 그리 크지도 않은 기능이지만, column 대신 entity(?!)를 추가하는 희대의 뻘짓 덕분에 출시 직전 전부 갈아엎고 처음부터 다시 개발해야만 했다.
코멘트 24개 달린 게 레전드..
XML만 사용하던 프로젝트라 UI 틀 짜는 작업조차 버벅였고, 하여간 제대로 한 게 하나도 없었다. 아직 팀에 완전히 적응하지 못했어서 개인 프로젝트였다면 고민없이 바꿔버릴 것을 몇 시간 동안이나 고민한 적도 있었고, 그나마 코드 리뷰받고 겨우 완성할 수 있었다.
이걸 해도 되는지 확신이 없었다. 잔뜩 쫄아있던 상태라(지금도 그렇긴 한데) 내 목소리를 내지 못했다고 해야 하나? 코드 더럽다고 까이면 어떡하지 걱정이 많았다.
다행히 사수님께서 친절하게 이끌어주셔서, 지금은 주도적으로 리팩토링 PR(!)을 올릴 수 있게 되었다. 얼마 전에도 되게 걱정하면서 올린 PR이 있는데, 좋은 생각이라고 말씀해 주셔서 감사했다. 나는 운이 참 좋다.
언제까지 할 수 있을 지는 모르겠지만, 쿠링 팀원들과 함께하면서 제대로 된 팀이란 무엇인지, 팀에서 자기 목소리를 어떻게 내야 하는지 배워보고 싶다.
업데이트 후
2월 말에 공지 보관함 업데이트를 포함한 버전 1.2.8이 게시되었다. Firebase crashlytics로 살펴본 결과 큰 문제는 없어 보이는데, 유독 사용자 한 명에게서만 같은 오류가 반복적으로 발생하고 있었다. 그냥 에러도 아니고 무려 앱을 강제 종료시키는 `Exception`이었다.
로그를 분석해보니 일반적인 실행 흐름상 성립할 수 없는 조건이 만족되고 있었다. 당연히 코드대로 잘 실행될 거라고 생각했는데, 역시 세상은 내 생각대로 돌아가지 않는다.
수백 명 중 한 명에게서만 발생하는 에러이긴 한데, edge case라고 치부할 수는 없다. 그 한 명에게는 자신이 general case일 테니까.
논리적으로 말이 안 되는 상황이긴 하지만, 어떻게든 강제 종료만큼은 막기 위해 PR을 새로 올렸다. 로그 찍는 코드도 잔뜩 추가했으니, 로그를 보면서 근본적으로 완전히 해결할 생각이다. 로그를 별로 중요하게 생각하지 않았는데, 진짜 중요하더라. 뭔가 중요한 작업을 할 때는 꼭 로그를 찍도록 하자.
지금은
공지 보관함을 개발하면서 발견한 리팩토링 이슈를 해결하고 있다. 5월달에 메이저 업데이트가 있을 예정인데, 이 작업 시작하기 전에 빠르게 끝낼 생각이다.
이 글을 읽는 재학생 여러분, 건국대학교 공지앱 쿠링 많이 이용해주세요~~