어느덧 30이 되어가는 나이에, 2년 가까이 공부를 핑계로 몸관리에 소홀해졌다.
어디가서나 얘기하는 사소한 것도 기록하는 습관이 장점이에요!!! 는 살다보니 기록하지 않으면 수행하지 않는다. 가 되어버렸다.
2년 내내 헬스장에 등록은 되어 있었으나, 관장님들이 가장 좋아하는 스타일(?)인 유령회원이 되어버렸다. 1달에 1번 갈까말까..
내가 직접 만든 기록 서비스를 사용하면 더 열심히 운동할 것만 같았고
직접 헬스장에서 운동을 하면서 기록을 하기 위해 모바일 앱으로 가닥을 잡고 작업을 시작하게 되었다.
3월 중순부터 1달 반 정도의 제작 기간을 거쳐 작업했고, 현재는 어떤 이슈들 때문에 릴리즈 전 단계에서 테스트중인
나의 첫 애플리케이션에 대해 간단하게 기록하고 나아갈 방향에 대해 서술해보고자 한다.
애플리케이션 구성
많은 개발자들이 말하는 JavaScript의 장점 중 빠른 개발을 체감해보고자 프론트는 Next로, 백엔드는 Nest로 구성했다.
백엔드를 Nest로 구성한 이유는 Node위에 기본적인 ORM, Auth, 소셜로그인에 대한 부분들을 좀 더 편하게 사용하기 위해서였다.
프론트는 Vercel, 백엔드는 AWS EC2에 배포되어 있으며
모바일 애플리케이션은 WebView를 사용하여 URL을 바인딩하고, EAS(Expo)를 활용하여 IOS, Android용으로 빌드 및 배포하였다.
1.
필요 시 개발 컨테이너를 올려서 테스트를 했다.
프로젝트 내에서는 이미지 I/O 작업에서, 실제 서버 도메인을 필요로 했었기 떄문에 해당 경우에 사용하였다.
2.
AWS 과금 줄이기 포스팅 에서의 경험을 토대로, 나의 경우에서는
ALB에서 Nginx에 대한 트래픽 분산 처리를 하지 않기 때문에 ALB는 사용하지 않았다
기존 ACM을 통한 SSL인증 처리를 Nginx로 이전하고, 로드밸런싱 또한 차후에 필요 시 컨테이너의 대수를 늘려 사용할 계획이다.
3.
백엔드 컨테이너는 무중단 배포를 Git Action의 Workflow를 통해 구축했으며, 헬스 체크를 통한 백업 컨테이너로의 restore가 적용되어 있다.
4.
필요한 로그들은 Discord Webhook을 통해 개인 채널에 메세지 형태로 받아볼 수 있게 구성하였다.
진행상황
나를 위한 기록 어플을 타겟으로 삼았기 때문에, 우선 내가 중점적으로 필요한 체중과 운동기록 부분만 우선적으로 구현했다.
간단하게 소셜 로그인을 거치고나면, 운동과 체중을 기록할 수 있게 구성했다.
앱 아이콘은 미리캔버스에서 사각형 크기와 색상을 변경해가며 덤벨 아이콘으로 제작했고
디자인 부분은 관련 분야에서 이미 많은 사용자를 보유하고 있는 PLANFIT, FLEEK을 보고 영감을 얻어 제작했다.
(자세하게 보고 싶다면 위의 앱 이미지 보기를 클릭해보길)
비용 문제
작업을 완료하여 베타버전을 릴리즈하여, 사용자를 조금이라도 더 다양하게 모아 테스트를 받아보고 싶었으나 과금 요소들이 많이 부담이 되었다.
첫 번째로, 애플리케이션 릴리즈를 위한 개발자 계정의 과금 문제다.
찾아본 바로는 앱을 릴리즈하기 위해서, 안드로이드, IOS 진영 각각의 개발자 계정을 등록해야하는데
안드로이드는 25달러(최초) , 애플은 99달러(연간)가 발생한다고 했다.
두 번째로, 또, 앱에서 사용하는 운동 이미지에도 과금적인 요소가 추가될 수 있었다.
(결론적으로 계산을 해보니,300달러정도가 필요했다.)
운동 동작별로 운동 수행동작과 타겟부위를 보여줄 수 있는 이미지를 반드시 추가하고 싶었고, 찾아보니 LYFTA라는 앱의 이미지를 사용해보고 싶었다.
귀사의 운동 이미지를 비상업적인 단순 운동 기록을 위해 사용할 것인데 사용 가능한지? 아니라면 얼마의 금액을 부과해야하는지, 혹시 귀사의 이미지가 아니라면 출처가 어디인지? 와 같은 질문을 메일로 보냈고, 감사하게도 출처를 받아볼 수 있었으며 직접 해당 이미지의 판매처와 연결도 해주었다.
대량 구매 시 할인을 제공해준다고 했지만, 개발자 계정과 이미지 가격을 합쳐 4~50만원이 넘는 돈이 필요했다.
현재로서는 많이 부담이 되었다.
과금적인 문제들로 인해 현재는 지인들에게만 직접 apk, ipa파일을 제공하여 10명 남짓한 베타 테스터를 보유한(?) 서비스를 운영중이다.
테스트 개선사항
테스터(?)들 덕분에 추가 요청사항이나, 개선 사항들을 모아볼 수 있었다.
1.
앱 스플래시 이미지가 없어진다.
웹뷰로 NextJS를 바인딩할 때(포스팅), 스플래시 이미지 관련 코드도 추가했는데 이 부분에서 문제가 발생한 것 같다.
현재 증상은 스플래시 이미지는 등장하자마자 사라지고, 흰 화면이 설정한 3초동안 렌더링된다고 한다.
2.
자주 사용하는 운동의 그룹화가 필요하다.
"나 3분할하는데 루틴 돌 때마다 계속 새로 추가해야해 ㅡㅡ, 루틴 저장했다가 불러올 수 있게 해줘" 라는 요청을 받았다.
나는 해당 부위 운동을 할 때도 순서를 계속 바꿔가면서 운동하기 때문에 상관없다고 판단했지만, 자주하는 운동을 묶어서 바로 가져올 수 있게 기능을 추가할 필요가 있겠다는 생각이 들었다.
3.
식단은?
내 애플리케이션의 정체성은 운동과 체중에 대한 것만 기록하기로 했었다. 이건 좀 차후에 생각해보기로 했다.
4.
디자인이 구려
미.....미안해 ㅠㅠ 이건 어쩔 수 없어...
이번 프로젝트를 만들어가면서, 개발의 속도와 효율성에 대해 생각해보았다.
짬짬이 개발을 했기 때문에 전체 개발에 어느정도 시간을 잡아먹었다.
하지만 하나의 기능을 개발할 때 프론트, 백엔드 모두 공통의 언어로 빠르게 개발할 수 있었다. 이것이 자바스크립트의 장점인가!!!
생각보다 앱 하나를 배포하는데, 과금적인 요소를 무시할 수 없는 거구나. 특히 개인 프로젝트는 더 부담스럽게 다가왔다.
회사에서는 과금 요소보다는 성능 최적화와 좋은 코드 작성에 더 집중하게 되지만, 이번 경험을 통해 과금 요소까지 고려할 수 있는 개발자가 되는 게 더 좋은 개발자가 되는 길일 것 같았다. 앞으로의 개발이 더 재밌어질 것 같다.
테스터들의 개선 사항을 반영하고, 요구 사항을 어느정도 맞춰가면서 최대한 과금적인 요소를 줄일 수 있는 방향으로 릴리즈하는 것을 목표로 달려나가야겠다.
조금 더 보완해서, 릴리즈 후의 경험을 조금 겪고 관련된 포스팅으로 돌아오겠습니다. 감사합니다!
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!