겨울방학
2021년 겨울, 고등학교 친구이자 컴공을 전공 중인 성욱이한테 연락이 왔습니다. “이번 방학에 뭐 같이 만들어볼래?”
음.. 소마를 막 끝낸 시점이어서 조금 쉬고 싶었지만, “그래.” 그래도 해보지 뭐.
그리고 저는 대학교 친구인 정윤이한테 연락을 했습니다. “우리 프로젝트 하나 하려는데 디자인할래?”
“그래..!”
그렇게 시작된 겨울방학 프로젝트!
뭐 만들까?
셋이 어떤 프로젝트를 진행할지 이야기를 해봤습니다.
지역 플랫폼, 공유 거리뷰, 카페 검색 서비스 등 많은 아이디어가 나왔고, 그 중 ‘픽 쓰리’라는 책을 기반한 목표 달성 앱으로 결정했습니다.
픽 쓰리
픽 쓰리는 랜디 저커버그(전 페이스북 마케팅 책임자)가 쓴 자기계발서인데요. 이 책은 자신이 선택한 세 가지에만 집중해 장기적인 밸런스를 맞춰가자고 말합니다.
- 일, 수면, 가족, 건강, 친구 중 세 가지를 선택한다.
- 하루 동안 선택한 세 가지만을 집중한다.
- 선택을 기록하고, 장기적인 균형을 맞춰 나간다.
우리는 이 책의 내용을 실천하도록 돕는 애플리케이션을 기획하게 됩니다.
픽 쓰리 (랜디 저커버그)
기획
저는 개인적으로 이 프로젝트를 통해 ‘배포’라는 경험을 해보고 싶었습니다. 그래서 린스타트업 방식을 채택하여 최소 기능을 빠르게 구현하고, 피드백을 통해 개선해보자고 제안했습니다.
팀원들은 동의했고, 그렇게 구현에 필요한 최소 기능은 다음과 같이 추려졌습니다.
- 소셜 로그인 기능 (서버를 통해 데이터를 관리하고 싶었습니다.)
- 세 가지 목표 선택
- 목표 성공 여부 체크
- 일기 작성
- 캘린더 및 통계 확인
구현해야할 최소 기능이 확정되었으니, 개발을 시작합니다.
기능에 따른 페이지와 구성
개발 준비
저는 프론트엔드 앱, 성욱이는 백엔드 서버, 정윤이는 앱 디자인을 맡았습니다.
실제 서비스 제작은 팀원 모두가 처음 경험해보는 일이었습니다. 때문에 서로 머리를 맞대고 와이어프레임, 시스템 아키텍처, DB 설계, 플로우차트, 일정 계획 등의 개발 준비를 끝마치고 개발에 들어갔습니다.
생각해보면 소프트웨어 마에스트로에서 배웠던 프로젝트 진행 방식이 큰 도움이 된 것 같습니다.
AWS 구축
마침 이 때 소마 고도화 과정에 참여하고 있어서 AWS 교육을 받고 있었는데요. 배운김에 필요했던 AWS 구축을 바로 진행했습니다.
자금이 마땅히 없기 때문에 AWS 프리티어에서 제공해주는 기능으로만 사용하기로 했습니다. (지금까지도ㅠ)
AWS 아키텍처
위와 같이 AWS 구축을 끝내고, 서버는 백엔드 담당인 성욱이한테 전달하였습니다. 뒤를 부탁해..!
애플리케이션 개발
애플리케이션(프론트엔드) 개발은 제가 맡아서 했는데요. 멀티 플랫폼을 지원하고 싶었기 때문에 ReactNative를 사용하여 개발하였습니다.
처음에는 순정 ReactNative가 아닌, Expo를 사용해 시작했는데, 개발에 대한 편리함은 높았지만 그만큼 자유도를 많이 잃게돼서 결국은 순정으로 개발 환경을 옮기게 되었습니다.
안드로이드 앱 개발은 경험이 있어서, 먼저 익숙한 안드로이드부터 완성해서 배포하기로 단기 목표를 세웠습니다.
실제로도 Google 로그인 기능만 우선적으로 넣어 완성시키고, Google Play에 배포하였습니다. 그 후에 Apple 로그인과 게스트 로그인 기능도 추가해서 App Store에도 배포하였습니다.
(게스트 로그인은 App Store 규정 때문에 넣어야 한다네요.)
Apple 로그인은 아이폰이 없어서 테스트가 힘들었는데요. 애뮬레이터에서 로그인하려면 iOS 버전이 13 이하여야 하는데, 13 이하에서는 특정 기능이 작동을 안해서 그 부분만 주석 처리하고 테스트하고를 반복했습니다. (갤럭시는 웁니다ㅜ)
이번 개발을 통해 배웠던 점은 크게 3가지로 생각됩니다.
ReactNative(React)
Web 개발이 익숙해서인지 굉장히 잘 맞았고, 때문에 종종 사용할 것 같습니다.
(이 프로젝트가 끝나고 시작한 개인 프로젝트 공주소바에서 사용했습니다.)OAuth
소셜 로그인이 필요해서 사용하게 되었는데 생각했던 것만큼 쉽지도 않았고, 어렵지도 않았습니다.
(Google, Apple 사용 중)JWT(JSON Web Token)
세션을 통한 로그인 처리만 경험해봤었는데, 본 서비스에는 토큰 기반의 인증 기술 JWT를 처음 사용해봤습니다.
이 외에도 당연하겠지만
- 어떻게 하면 모듈화해서 코드의 재활용성을 높일 수 있을까?
- 서버 API의 효율적인 호출 방법과 시점은 언제일까?
등에 대해서 계속 고민하고, 탐구했었습니다.
배포
개발의 우여곡절을 지나 앱을 완성했고, 배포의 시간이 찾아왔습니다.
배포 과정을 통해서 배운 점은 4가지로 생각되는데요.
앱 서명 키
서명 키를 어떻게 사용하고 관리해야 하는지 알게 되었습니다.Google Play 앱 서명 키
이해한 바에 따르면 구글 플레이에서 관리하는 앱 서명 키가 따로 있습니다. 그리고 이 키를 파이어베이스에 등록해줘야 Google 로그인이 정상적으로 진행됩니다. ‘로그인 안됨’ 리젝(심사 거부)으로 몇 일동안 헤매다 이 블로그 글을 보고 저는 감동의 눈물을 멈출 수 없었습니다. (이 문제를 해결하고 바로 앱 심사 통과)이용약관 & 개인정보동의서
법적인 용어가 많아 어렵고 작성에 신중을 기하게 돼, 시간이 꽤 소요됩니다.iOS 빌드 & App Store 배포
처음으로 iOS 앱 개발/배포 사이클을 경험해봤습니다.
배포 또한 쉽지 않았지만, 꼭 해보고 싶었던 경험을 잘 마치게 되어 뿌듯합니다.
느낀점
처음에는 단지 배포해보고 싶은 마음에 가볍게 시작한 프로젝트지만, 실제로 배포를 해보니 배포가 전부가 아님을 뼈저리게 느꼈습니다.
아무리 열심히 만들어도 아무도 사용해주지 않는다면 생명력없는 SW라는 점을 배우면서, 이제는 조금 홍보를 해보려고 합니다.
Pickple
너무 복잡하고 성급한 목표보다는 지킬 수 있는 3개의 목표를 세워 하루하루를 쌓아가보는 건 어떨까요.
Google Play와 App Store에서 만나보실 수 있습니다.
P.S.
학교 생활에 젖어버려 글 작성에 속도가 나지 않지만, 그래도 계획 중인 포스팅은
- 소마 회고 포스팅 끝내기 (상반기까지 목표)
- 현재 수업에서 만들고 있는 게임 포스팅
- 새로 개설한 게임 제작 동아리 관련 포스팅
정도 입니다.
틈틈이 작성해보겠습니다.
다들 좋은 하루 보내세요!