본과정에서는 6월부터 11월까지 6개월동안 하나의 프로젝트를 진행해야한다. 팀 안에서 개발 리드를 하면서 겪었던 부분들과, 본과정에서 있었던 일, 느낀점 등을 정리해보려한다.
주제
일단 주제가 제일 중요하다. 우리팀은 주제 정하면서 시간을 많이 썼는데(그렇다고 시간을 낭비했다는건 아니다), 주제 정하는게 생각보다 까다로웠다. 단순히 프로젝트 주제를 정하는게 아니라 'IT 기술이 들어가야하고', '시장이 커야하고', '유저가 쓸만해야하고', '6개월 안에 3명이 할 수 있어야하며', '비즈니스 모델이 세워져야하는' 여러 조건을 충족하는 주제여야했다. 우리는 처음에 MVP를 만들다가도 출시전 주제를 한번 갈기도 했다. 2주동안 노력보다, 남은 5개월의 행방이 중요했으니까. 그래서 최종적으로 '집 구할 때 생기는 정보의 비대칭성'이라는 문제를 해결하는 주제를 정했다.
주제에 대한 세부적인 부분은 소마 과정이 끝나고 따로 적어보겠다.
애자일 방법론(스크럼)
멘토님 중 한분이 애자일 방법론을 소개해주셨고, 꽤나 재미있게 받아들였다. 최근에는 기획이 흔들리는 일이 많아서 잘 안지켜지고 있긴하지만, 기획이 명확한 초기 단계에서는 프로젝트 관리 방법론적으로 되게 재미있었다. 다음에 학회에서 PM을 하면서 한번 써먹어보면 괜찮겠다는 생각이 들었는데, 아래 책이 (멘토님 표현을 빌리자면) '스크럼의 정수'였다.
우리는 Jira같은 툴을 쓰기보단 Github에서 지원하는 Project 기능을 활용해보기로 했다.
레포에서 이슈관리를 하고, Github Organization에서 통합으로 만든 Project에 연결할 수 있었고, 사실 모두가 풀스택으로 개발할 수 있는 상황은 아니였기에, 일정관리와 각자 업무 파악? 용도로 괜찮았던것 같다.
앱 배포
Android : https://play.google.com/store/apps/details?id=com.ddakzip_front
ios : https://apps.apple.com/kr/app/%EB%94%B1%EC%A7%91/id1636112923
landing-page : https://ddakzip.com/
사전 Setting을 많이해둬서 실질적인 개발(코딩)을 시작한 이후로 3주만에 런칭할 수 있었다. 물론 초기에 기획했던 MVP 기능보단 많이 빠진 부분들이 있었지만, 꽤나 빠르게 런칭하고 지인들을 통해 QA를 진행하며 업데이트 해왔다.
생각보다 첫 배포까지는 오래걸리지 않았지만, 계속 오류가 발견되고 앱 개발 세팅을 하는대에도 꽤나 애를 먹었다.
기술스택
Frontend
우리는 사용자가 들고다니면서 써야하는 서비스 특성에 맞춰 앱으로 배포해야 했다. 팀 안에는 Android 개발 유경험자가 한분 있긴했지만, 우리의 타겟 유저는 2030세대였고, 아이폰 유저를 놓칠 순 없었다. 네이티브로 가기엔 시간과 인력이 부족했고, 웹앱이나 하이브리드앱으로 서비스하거나, 크로스플랫폼이라는 선택지도 있었다.
우리의 초기 기획으로는 웹으로 서비스를 할 일이 없었고(추후에 살짝 후회했다), 데이터가 안터지는 곳에서의 사용과 어느정도의 퍼포먼스를 챙기기 위해서 크로스플랫폼을 선택했다.
React-Native와 Flutter 정도의 선택지가 있었는데, 멘토님 중에 RN 장인분이 계셔서 React-Native쪽을 선택했다.
카카오 맵 API등 네이티브로 구현되어야하는 부분들이 있었는데, 몇몇 부분은 WebView로 구현되었다.
Backend
Django로 할지, Node로 할지 고민이 되었는데, 같은 JS 기반으로 몰아서 코드 리뷰 같은거라도 조금 더 편하겠지라는 생각에 Node로 했다.
빠른 MVP 출시를 목표로 했지만, 개인적인 기술적 공부&발전도 이뤄내고 싶었기에 몇번 해봤던 REST API 방식이 아닌 GraphQL을 공부해가며, API를 구성했다. REST에 비해서 End Point가 줄어드는 것도 좋았지만, 무엇보다 범용성있게 개발해둔다면 기획이 일부 수정되어도 API를 손댈 필요가 없어서 좋았다.(물론 REST에서도 가능은 하지만 Over-Fetching 측면에서 효율적이진 못하니...) Nest.js 같은걸 쓸까하다가 너무 많은 변화를 주면 속도가 느려질 것 같아 다음 사이드 프젝에서 써보는걸로하고, 무난한 express.js에 따로 ORM도 쓰지 않았다.
Server
사실 제일 공수가 많이 들어갔던 부분인것 같다. 서버를 기반없이 AWS 계정부터 새로파서 IAM Roll 다 부여하고, 도메인 설정하고, CI/CD 세팅하고, DB 권한 설정, 시스템 알림설정 등등... 정말 배워가는게 많은 부분이었다.
AWS관해서는 아래에 따로 좀 더 써보겠다.
Data Preprocessing
데이터 전처리도 막상 짜놓고 나면 코드는 간단해보이지만 꽤나 시간을 많이 들인 일이었다.
대부분 파이썬으로 작업하고 Node.js에서 파이썬을 호출하는 형태의 pipeline이 되었다. 제일 많이 했던게 국토교통부 실거래가 데이터(1년치 가져오면 몇십만 row는 된다) 가져와서, 가공 후 검색할 수 있게 API로 만드는 작업도 했고, Selenium으로 동적 크롤링도 해봤다. 코드를 짜는게 문제가 아니라 돌아갈 때 1시간 이상 돌아가기 때문에 중간에 뻗으면 제일 스트레스였다.
기억에 남는 일로 관리비 항목을 긁어오는 일이 있었는데, 잘 돌아가다가 관리비가 3.5만원인 집을 만나서 int로 설정해줬기에 type error로 터졌을 때 책상을 엎고 싶었다...(누가 관리비를 5000원 단위로 받는겨)
마케팅
이게 정말 학부생 때 경험해보기 쉽지 않은 경험 중 하나라고 생각되는데, 직접 앱을 만들고 마케팅도 경험해보았다.
에타나 타 사이트 게시판 등에 우리 앱을 홍보하기도 하였고, 지원금으로 구글 Ads로 퍼포먼스 마케팅을 진행하고 분석하기도 하였다. 진짜 돈먹는 하마 그자체였는데 일주일에 20만원 정도를 사용했는데 썩 성과가 생각보다 좋지는 않았다.
마케팅이 생각보다 디테일한 분야라는 것도 알게되었다. 키워드도 고심해서 설정해주고, 이미지, 동영상 등 설정까지 디테일했다.
지원
자기 개발 비용으로 100만원을 지원해주는데, 인프런 강의와 책에 쓸 수 있다.
한 50만원 정도 쓴거 같은데... 이젠 뭘 사야할지도 모르겠다(책은 언제 다 읽지..)
사무실
5월부터였나? 구로에 패스트파이브에 3인실을 계약해서 쓰고있다. 월 고정비용이 꽤나 나가긴하지만 센터에 왔다갔다하는 교통비, 커피값, 식비 절약 등등 고려해봤을 때, 꽤나 괜찮은 몰입할 수 있는 공간이다.
공유오피스 자체에 회의실도 있어서 종종 멘토링도 이쪽에서 하곤한다.
AWS
AWS 관련해서 정말 공부를 많이 할 수 있었다. 책이나 인프런 강의도 있었지만, 직접 머리 싸매고 있는 것만한 강의가 없다.(expert 님께서 주신 조언도 많은 도움이 되었다)
그리고 AWS 자체적으로 스타트업을 지원하는 프로그램이 있는데 'AWS Activate'라는 서비스를 신청하고 심사를 넣은 결과 감사하게도 AWS에서 쓸 수 있는 1300$ 정도의 크레딧을 입금해주었고, 2년동안 서버는 유지가능한 상태가 되었다.
심사? 과정에서 AWS에서 직접 전화가 오기도 했는데, 처음에 전화올 때 AWS 적혀있는걸 보고 혹시라도 뭐 문제 생겼나해서 식겁했다.
주기적으로 포스팅을 해보려하는데, 생각보다 일정짬내기가 쉽지도 않았다. 틈틈히 트러블 슈팅도 포스팅해보고 싶은 욕심이 있지만 아무래도 프로젝트 완성이 먼저다보니 늘 밀리게 되는 것 같다.. 조금 더 성실해져봐야겠다.