

5월 1일부로 과 동기가 스타트업을 시작하였다.
사업 모델은 이름만 봐도 알 수 있듯이 쓰레기와 관련된 사업이었으며, 간단하게 말하자면 분리수거 대행업체였다.
그곳에 개발자로 섭외되어 일을 시작하였다.
처음 내가 받은 업무는 외주 업체 탐색 및 웹 및 모바일 애플리케이션 제작에 대한 프레임워크 선정이었다.
처음 나는 Cordova를 이용하여 웹과 모바일 애플리케이션을 동시에 개발하는 것이 나을 것이라 하였고(우리가 사용할 수 있는 금액은 매우 적었다.) 우리 대표(창업을 시작한 동기를 이하 대표라고 칭하겠다. 이젠 그것이 익숙하더라...)의 계획은 그 둘 모두 구현하여 사용자가 웹과 모바일 어플리케이션 둘 모두에서 서비스를 예약할 수 있도록 하는 것이었다.
그렇게 외주 업체를 찾아가기 시작하였고, 다수의 업체를 통해 대략적인 시세를 파악할 수 있었다. 하지만 내가 생각했던 것보다 외주 비용은 비쌌고 그에 대해 고민한 결과 내가 직접 만드는 것은 어떠냐고 대표에게 권하였다.(사실 그로 하여금 개발 코스트는 줄일 수 있었지만, 기간과 퀄리티는 훨씬 떨어졌을 것임이 분명하다...) 대표 또한 그렇게 해보는 것도 좋을 것 같다고 동의를 해주었고, 나는 바로 개발을 위한 구글링을 시작하였다.
처음 Cordova를 이용하여 애플리케이션을 개발하려고 하였던 계획이 어긋나기 시작한 것은 아무래도 애플의 앱스토어에 등재하기 어려울 것으로 보이기 때문이었다. 그 때문에 그때부터는 모바일 어플리케이션의 개발 단가라도 줄이기 위해서 크로스플랫폼 어플리케이션 제작을 위한 프레임워크를 찾기 시작하였다. 후보군은 flutter, react native, 그리고 xamarin으로 총 3가지였다.
이 중 그나마 익숙한 flutter와 react native를 두고 고민을 하였고, 디자이너의 부재 문제 등으로(기본적으로 제공해주는 material UI의 경우는 flutter가 더 낫더라...) 결국 flutter를 채택했다.
프레임워크 선정 후 가장 먼저 한 것은 얇은 책 한 권을 사는 것이었다.(후일 기회가 된다면 그 책에 대한 리뷰도 써볼 생각이다.) 간단하게 책에 소개된 예제를 따라가며 적당히 감을 잡은 뒤 간략한 목업을 제작하고 그에 따라 프로젝트를 진행하였다.
첫 번째로 시작한 프로젝트는 사용자로 하여금 우리 회사의 서비스를 신청할 수 있도록 하는 모바일 애플리케이션의 제작이었다.(간단하게 물풍선, 배달의 민족 등과 같은 애플리케이션으로 보면 좋을 것 같다.) 해당 프로젝트의 구현을 위하여 GCP와 AWS를 비교하고(사실 나에게는 AWS가 훨씬 편하긴 했다... 이전 회고록을 읽어봤으면 알 수도 있겠지만 연구실에서 한 게 그것이기에...) flutter와의 궁합면에서는 초심자에겐 그래도 GCP가 편하리라 생각이 들어 클라우드 플랫폼은 GCP로 채택했다.
GCP의 firestore를 이용하여 데이터베이스를 구성하였고, Cloud function을 이용하여 서버리스 백엔드(맞는 표현인지 모르겠다...)를 구현할 수 있었다. 결제 모듈은 iamport사의 api를 이용하여 구현하였다.
결국 애플리케이션은 flutter로, 백엔드는 Google Cloud Platform을 이용하여 구현하였다. 둘 모두 처음 사용해보는 것이다 보니 헤매기도 많이 헤맸지만 프로젝트는 준수하게 마무리되어 만족스러웠다.
그 이후 라이더 애플리케이션을 제작하였는데 이 또한 flutter를 이용하였고 기존 GCP와 서버를 연동하여 제작 기간 자체는 2주 정도 걸렸던 것 같다.(사실 디자인 부분에서 많은 것을 포기하고 효율만 따졌기에 빠르게 끝났던 것 같다..) 기능적으로는 배정된 예약 건 확인 및 수거 완료 처리 기능, 수거량 표시 기능, 네이버 지도 앱 스키마를 이용한 내비게이션 연동 기능을 제공하도록 구현하였다.
마지막 프로젝트는 위 라이더 애플리케이션과 사용자 서비스 예약 애플리케이션을 연동하여 구성하는 것이었다. 일단 프로젝트명은 라이더 배치 플랫폼 구축이었고 간단한 기능은 실시간으로 사용자가 추가한 예약 건에 대하여 적절한 라이더에게 해당 예약 건을 배정하는 것이었다. 말이야 쉽지, 아직 학부생 티를 벗어나지 못한(사실 어느 회사에서 경험을 쌓은 것도 아니라 초보 중 초보라고 생각한다...) 나에게는 가장 생각이 많아지는 프로젝트였다.
라이더가 현재 처리하고 있는 예약 건의 수, 라이더의 운송 수단, 라이더의 위치와 예약 건의 위치 등을 고려하여 제일 적절해 보이는 라이더에게 예약 건을 배치하도록 하였고, 실시간으로 동작할 수 있도록 하기 위하여 node.js를 이용하여 서버를 구현하였다. 해당 서버는 Naver Cloud Platform의 Server를 이용하여 구동시켰다.(GCP를 쓰지 않고 NCP를 사용한 이유는 코로나 시기에 창업한 기업에게 추가적인 크레딧을 제공해주어 비용적인 측면에서도 많은 이점을 받았기 때문이었다) node.js의 비동기 성질과 스레드를 잘 이용하여 플랫폼 또한 나쁘지 않게 완성할 수 있었다.
이후 사용자 서비스 예약 애플리케이션에 휴대폰 인증 기능 또한 추가해야 했는데, 휴대폰 인증 기능을 추가하기 위한 API의 비용도 부담됐거니와, 신청 후 승인까지의 기간이 너무 오래 걸려(승인까지 기다리다가 내가 먼저 퇴사할 것 같았다...) Aligo사의 API를 이용하여 문자 전송 기능을 추가하였고 처음에는 Naver Cloud Platform의 Sever에 해당 기능을 수행해주는 서버를 구현하였다. 기능적으로는 문제없이 잘 돌아갔으나 프리 티어 서버를 사용하다 보니(문자 인증 기능은 큰 부하가 걸리지 않을 거라 생각해 프리 티어 서버를 사용하였다) 프로세스가 한 번씩 죽어버리는 경우가 발생하였다(리눅스 쉘을 이용하여 프로세스를 재시작하도록 구현하기는 하였으나 불안한 것도 사실이었다.)
그에 대해 GCP의 Cloud function에 문자 전송 서버를 구현하고자 하였으나 고정 IP가 필요하여 어떻게 해야 하나 머리를 싸맸었다.(사실 이때 AWS의 lambda를 쓸걸이라는 생각도 많이 했던 것 같다...) 그래도 이전에 들었던 말(개발자는 구현할 수 없는 게 아니라 아직 구현할 방법을 모르는 것이다)이 맞다는 듯 계속 리서치를 해보다 보니 Cloud function에 고정 ip를 할당하는 방법을 찾을 수 있었다.(이에 대해서는 이후 포스팅을 할 예정이다. 한글 자료가 하나도 없고 찾은 자료마저도 GCP 내부 인사분이 작성해 주신 것 하나가 겨우 있었다...)
그 방법을 이용하여 문자 전송 기능을 해주는 Cloud function 또한 구현하고 인수인계를 끝낸 뒤 기분 좋게 퇴사할 수 있었다.
내가 지금까지 해본 어떤 프로젝트 보다도 짧은 기간 동안 많은 것을 했던 프로젝트였다. 6개월이라는 기간동안 어플리케이션을 두개를 만들어야 했고 플랫폼을 하나 구축해야 했으며, 위 글에는 적지 않았지만 서류 작업을 해야했던 시기도 있었다. 하지만 이 기간동안 이런저런 많은 일을 해볼 수 있었고 AWS만 써봤던 내가 GCP, NCP를 써보기도 하였고, 결제 모듈도 연결해보고 제대로 된 서비스를 구현해볼 수 있었던 뜻깊은 경험을 할 수 있었다.
힘들기도 많이 힘들고 스트레스도 받았지만 그만큼 재미도 있었던 것 같다.
가장 힘들었던 부분은 역시 사수의 부재 그리고 디자이너의 부재였다. 기획은 대표가 이미 마쳐놓은 상황이었기에 건드릴 부분이 없었으나 디자이너가 없다는 것이 애플리케이션의 UI와 UX를 처참하게 만들었고 사수가 없다는 것이 부족한 내 개발 경험을 적나라하게 프로젝트에 드러나게 했던 것 같다. 방법을 찾아도 이 방법이 맞는 것인지 확신이 서지 않았고, 그것을 물어볼 사람이 없다는 것은 꽤나 큰 스트레스였고 부담이었다.
하지만 이 경험을 통해 개발 외적으로도(멘탈이라던가, 멘탈이라던가, 멘탈이라던가...) 많은 성장을 할 수 있었다.
이런 좋은 경험을 하게 해 준 이주형 대표에게 감사의 인사를 드리고 싶으며, 응원해주고 같이 스타트업을 지탱해준 서형상, 정윤오 학우에게 감사의 인사를 표하고 싶다. 또한, 외부인의 시선으로 애플리케이션에 대한 피드백을 해준 친구 왕희지에게도 감사한다.
이 외에도 프로젝트를 진행하는 중에 도움을 주신 분들께 심심한 감사의 인사를 전한다.
'retrospect' 카테고리의 다른 글
2021.01.10 ~ 2021.06.16 버킷리스트 어플 제작기 (0) | 2021.06.17 |
---|---|
2016-03 ~ 2017-12 경산인 및 나눔대학 (0) | 2021.01.08 |
2019-07-01 ~ 2020-06-11 건국대 소프트웨어학과 졸업 프로젝트(화자 인식을 적용한 AI 스피커) (0) | 2021.01.06 |
2019-12-23 ~ 2020-02-16 DIREA 인턴(용역 계약) (0) | 2021.01.05 |
2019-07-01 ~ 2019-12-22 건국대 Cyber infrastructure Lab (0) | 2020.12.07 |
댓글