SW개발/개발이야기

사이드 프로젝트, 어플리케이션 출시 회고

지난번 어플 출시 소개에 이어 오늘은 출시까지의 과정, 경험에 대한 리뷰입니다.

약 4개월간 회사일과 병행하면서 느꼈던 점들을 주로 적었습니다!

 

사이드 프로젝트 기획 & 시작 🚀

배달비가 나날이 비싸지는 와중에, 절약하기 위한 방법이 뭐가 있을까 하면서 생각났던 아이디어로 어플을 출시하는 것을 기획하게 되었습니다. 바로 근처의 사람들과 파티를 만들어 공동 주문을 통해 배달비를 1/N 하는 것입니다.

처음에는 친구와 2인으로 시작하였지만, 사정상 혼자하게 되었습니다.

 

어플 출시 목표 ✨

처음에는 스토어에 출시하는 것 자체에만 목표를 두었습니다. 출시 프로세스를 경험해본 적이 없었기에 좋은 경험이 될 것 이라고 생각했습니다.

 

기술 스택은..? ⚒️

사이드 프로젝트이기 때문에 많은 시간을 할애할 수는 없었습니다. 따라서 제가 가장 잘 사용할 수 있는 Django, Vue, Flutter 스택을 결정하게 되었습니다. 새로운 기술을 써볼까도 생각하였지만, 러닝커브로 인해 출시라는 목표에 달성하기 어려울 것이라고 생각하였고, 아예 0에서부터 배포 & 출시까지 해보는 것도 꽤 값진 경험이 될 것이라고 생각했습니다.

 

또한, 디자인은 가장 간편해보이고 레퍼런스가 많은 Vuetify를 선택했습니다. 백엔드 개발자로서 디자인에 소질이 없는데 큰 수고를 들이지 않고도 봐줄만한 디자인이 나오는 점이 맘에 들었습니다.

 

나는 Vue를 알고 있는게 아니었다 😇

Frontend 와 Backend가 완전히 분리된 구조를 원했기에, Vue-cli를 통해 프로젝트를 구성했습니다. 하지만, vue-cli로 셋업한 환경에서 프론트 개발을 해본적은 없었기에 초기 셋팅부터 꽤나 많은 시간이 걸렸습니다. 특히 Eslint, Prettier 관련 설정에서 많은 시간을 잡아먹었습니다. 그래도 역시나 하다보니 익숙해졌고, 어느 단위로 컴포넌트를 분리 해야하는지에 대해서도 감이 잡히기 시작했습니다.

 

서버의 코드는 뒷전으로.. 🤣

제가 기획한 다양한 비즈니스 로직들을 구현하려다보니, 프론트쪽에서 자꾸만 병목 지점이 생겼습니다. Vue에 대한 기술적 이해도도 낮았기 때문에 우선은 백엔드 서버 로직은 최대한 단순화 하는 것으로 개발을 이어나갔습니다. (백엔드는 최대한 적은 코드를 작성하는 방향을 택했습니다)

 

Vue 숙련도가 조금 높아졌습니다 ! 🌈

한달 정도 반복해서 개발 하다보니 Vue 와 Vuetify에 대한 숙련도가 꽤 많이 올라온 것을 체감할 수 있었습니다. 특히나 비슷한 페이지, 간단한 수정사항은 정말 빠르게 고칠 수 있었습니다. 아마 모든 코드를 제가 작성했기에 더 그런것일 수도 있습니다. 이와 더불어 상태관리인 Vuex도 도입하였고, 왜 이용 해야하는지에 대한 배경들도 이해할 수 있었던 것 같습니다. (이론은 알고 있었지만, 몸으로 체감하게 되었습니다)

 

기능 뽑아내기 🏃

숙련도가 올라가니 자연스레 생산성도 올라갔습니다. 덕분에 제 머릿속으로 기획한 기능들을 전부 빠른 시간에 구현할 수 있었습니다. Vuetify로 디자인을 만들고, 컴포넌트 내에서 필요한 비즈니스 로직을 구현하고, 상태관리에 적절하게 데이터를 저장하고 가져오면서 모든 것이 잘 돌아가자, 많은 재미를 느꼇던 시기인 것 같습니다.

 

어플리케이션 출시 준비 ! 🍀

약 3달정도 뒤에 필요한 기능 구현을 마친 뒤에는 배포 준비를 먼저 하였습니다. 배포 프로세스를 처음부터 구성해보는 것은 첫 경험이었기에 꽤나 많은 리서치를 했었던 것 같습니다.

 

배포 환경 구성하기

우선, 과금이 거의 없는 aws 프리티어를 활용해 EC2, RDS를 활용하기로 결정하였습니다. EC2 안에서는 Docker container를 띄워 프론트, 백엔드 서비스를 가동하였습니다. 무중단 배포를 구성할 수 도 있었지만 당장은 필요하지도 않았기에 선택하지 않았습니다.

 

결론만 적자니 굉장히 빠르게 해결했던 것 같은데, 생각보다 많은 트러블 슈팅과정이 있었습니다. 특히나 파악하기 힘들었던 에러들이 저를 힘들게 했던 것 같습니다.

 

HTTPS ? Let's Encrypt

실 환경에서는 HTTPS 통신을 하도록 구성하고 싶었습니다. 그래서 무료로 사용할 수 있는 SSL 인증서인 Let's Encrypt를 사용하게 되었습니다. 또한, 이를 위해 처음으로 도메인을 구입 해보기도 했습니다. 널리 알려진 방법으로 꽤나 빠르게 HTTPS 통신을 구현할 수 있었던 것 같네요.

 

어플리케이션 빌드하기 📱

제가 만든 Vue 서비스를 어플리케이션 화면에 보여주기 위한 방법을 고민하다, Web view 방식을 선택하게 되었습니다. 당장은 플레이 스토어만 출시했지만, 추후 App store 출시도 고려하고 있어 Flutter를 통해 웹뷰를 띄우고, 앱을 빌드하는 방식을 사용했습니다.

 

3번의 심사 거절, 플레이 스토어 😵‍💫

플레이 스토어에 출시 준비를 하기 위해서 로고, 어플리케이션 스샷, 설명 등 다양한 내용들이 필요했습니다. 이 모든 제작 과정을 전부 수작업으로 혼자 하게 되었는데 이 때 정말 기획자, 디자이너 분들에 대해서 respect 할 수 있었습니다. 어플을 만드는 것은 자신이 있었지만 만들어진 것을 홍보하는 것은 또 다른 분야인 것을 느낄 수 있었습니다.

 

대망의 출시 !!! 🎂

3번의 심사 거절 이후 출시되었다는 메일을 받았을 때의 기쁨은 정말 짜릿했던 것 같습니다. 심사 거절 사유에 대한 내용들이 불충분했기에 어느 것이 문제인지 파악하는데 꽤 많은 스트레스를 받았었던 것 같습니다. 하지만, 출시 메일 하나로 그런 마음들은 싹 사라졌던 것 같습니다.

 

출시를 해보니..

아이디어 단계 이후 개발을 해나가는 과정에서는 유저의 사용성만 고려하였던 것 같습니다. 하지만 막상 출시를 해보니 제가 출시한 어플이 활성화 되려면 많은 유저를 필요로 한다는 것을 알게 되었습니다. 특히나, 홍보 과정을 제대로 하지 않는다면 다운로드조차 하지 않는다는 도 깨닫게 되었습니다. 

 

특히 접근성이 좋은 분야의 어플리케이션이 아니었고, 그러기에 유저들의 관심을 모으는 것은 더 어렵지 않았나 합니다. 물론 처음에 정한 목표는 출시 자체였지만, 막상 반응이 오지 않는다면 해당 프로젝트에 대한 애정도는 식기 마련인 것 같습니다.

 

장점

  • 프론트 엔지니어들을 조금 더 잘 이해할 수 있게 되었습니다.
  • 기획한 비즈니스 로직을 구현해내는 것에 대한 자신감이 생겼습니다.
  • 프로젝트 셋팅부터 스토어 출시까지의 프로세스를 경험해볼 수 있었습니다.
  • 제약없이 온전히 제 마음대로 개발을 하는 것이 꽤나 재미있고 행복합니다.

단점

  • 회사일과 병행하는 것은 매우 힘들고 고된 작업입니다. 특히나, 이슈가 잘 해결되지 않아 늦게 자게 된다면 더더욱 그렇습니다.
  • 출시에만 급급하다보니 시간이 지날수록 코드 퀄리티가 낮아집니다. (우선 출시부터..라는 생각)

 

당분간은 출시한 어플의 유지보수 및 개인적인 공부를 할 것 같습니다. 추후에 또 좋은 아이디어가 생각이 난다면 실제로 사람들의 니즈가 존재하는지를 먼저 확인해본 뒤 프로젝트를 진행하려고 합니다. 

 

그래도 많은 경험들을 해볼 수 있었고, 특히나 타 직군에 대한 이해도도 높아졌다고 생각합니다.

 

재밌게 읽으셨다면 다운로드 한번씩 부탁드립니다~!

감사합니다 :)

 

배공파용 - 배달비 공유 (구글 플레이스토어)

 

배공파용 - 배달비 공유 - Google Play 앱

주변의 파티에 참여하여 배달 음식을 같이 시켜요

play.google.com

 

728x90