- Published on
비사이드 포텐데이 312 회고
- Authors
- Name
- wookhyung
💡 비사이드 포텐데이 312의 진행 과정 및 후기를 기록합니다.
*개인적인 경험을 바탕으로 작성되었으며, 틀린 내용이 일부 있을 수 있습니다.
내가 비사이드에 참여하기까지
이전부터 비사이드 같은 플랫폼들을 알고 있었고 참여하고 싶은 마음은 있었는데, 막상 하려니까 귀찮은 마음이 커서 참여하고 있지 않다가 드디어 올해가 끝나기 전에 참여를 신청했다. 비사이드에는 14주 프로젝트와 10일 동안 진행하는 프로젝트인 포텐데이가 있는데 사실 10일은 프로젝트를 진행하기에는 너무 짧다고 생각하고 있어 14주 프로젝트에 참여하고 싶었다. 그런데 14주 프로젝트는 기간이 길다 보니까 모집 주기도 그만큼 길었고, 나는 올해가 끝나기 전에 참여하고 싶었기 때문에 포텐데이에 참여했다. (근데 기억상으로는 이전에 봤을 때 4일짜리 프로젝트였던 거 같은데 10일로 바뀐 것 같다 아닌가..)
10일이라는 짧은 기간이 걱정되기도 했지만, 작년 부트캠프에서 2주, 3주짜리 일정에도 별문제 없이 진행했었고, 올해도 프로젝트 진행 경험도 두 번 정도 있었고 또, 회사에서도 거의 혼자 기능 개발을 담당하는 경우가 많았기 때문에 짧은 기간에 혼자 개발하는 거에는 크게 무리가 없을 거로 생각했다. 이후 과정에서 보이겠지만, 짧은 기간에 각 파트(FE,BE) 개발을 혼자 모두 담당해야 하므로 혼자 A-Z까지 서비스 개발을 담당해 본 경험이 많을수록 참여하는 데 플러스 요인이 될 것 같다. 개인적인 생각으로는 기획하는 서비스 규모에 따라 다르겠지만 혼자 프로젝트를 진행해 본 적이 없으면 완성하는 것 조차 힘들지 싶다.
팀 빌딩
비사이드 포텐데이는 본격적으로 시작하기 전에 약 4일의 팀 빌딩 기간이 주어진다. 프로젝트 시작은 금요일이고, 월요일부터 목요일까지 직접 팀 빌딩을 진행할 수 있는데 초대받은 슬랙에 자유롭게 자기소개를 올릴 수 있고 본인이 직접 원하는 사람들에게 컨택해서 팀을 빌딩하거나, 자기소개를 올리고 컨택을 기다리는 방법도 있다. 참고로, 직접 팀 빌딩을 하지 않더라도 금요일 내에 팀 빌딩을 하지 못한 사람들을 대상으로 포텐데이 측에서 팀 빌딩을 진행해준다.
아무래도 부트캠프 같은 곳에서 강제로(?) 진행하는 것이 아닌 프로젝트를 해보고 싶은 취준생, 직장인 분들이 본인 돈과 시간을 들여서 참여하는 곳이다 보니까 적극적으로 자기소개를 올리고 팀 빌딩을 원하는 사람들이 대부분이었고 나도 팀 빌딩을 위해서 첫날에 바로 자기소개를 작성해서 올렸다.
자기소개를 올리고 나서 수요일인가 목요일쯤에 고맙게도 어떤 기획자분이 같이 하자고 연락을 주셨는데, 결론적으로는 거절했다. 거절한 이유는, 좋게 말하자면 체계적으로 진행될 것 같았고 나쁘게 말하면 분위기가 너무 딱딱해 보였다. 난 참여한 이유 자체가 프로젝트 자체를 즐기면서 진행하고자 하는 목적이 제일 컸고 회사 일의 연장선 같은 분위기는 싫었기에 정중하게 참여하지 않겠다는 의사를 전달해 드렸고, 목요일 밤이 돼서야 프로젝트를 같이 하게 된 기획자분이 올려주신 소개를 보고 개인적으로 연락을 드려 최종적으로 팀을 완성하게 되었다.
밤새(지 않)는 온라인 해커톤
1~3일차 - 기획 및 아이디어 논의
우리 팀은 기획 1, 디자인 1, 프론트엔드 1, 백엔드 1로 각 파트에 한 명씩 담당하여 구성되었고 프로젝트 시작일인 금요일부터 일요일까지 아이디어 및 기획 미팅을 진행했다. 처음에는 기획자님이 미리 정해두었던 아이디어를 바탕으로 얘기를 나누다가 이외에도 여러 아이디어가 나왔고, 최종적으로는 백엔드 개발자님이 이전에 생각해두었던 서비스를 개발해보는 것으로 결정되었다.
4~5일차 - 기능 구체화, 디자인 프로토타입, 개발 환경 세팅, 테이블 설계
서비스 주제 및 타겟층이 정해진 이후로는 기능 구체화와 디자인이 빠르게 진행되었고, 백엔드 개발자분과 나는 디자인이 나오기 전까지 개발 환경 세팅을 진행했다. 포텐데이에서는 네이버 클라우드 크레딧 20만원을 지원해 주는데 덕분에 AWS 같은 타 플랫폼을 사용하지 않고 NCP를 사용해서 서버 및 데이터베이스 세팅을 진행했다. NCP는 이전에 사용해 본 적이 없어서 문서나 구글링하며 최대한 참고하면서 진행했는데 생각보다 시간이 조금 걸렸다.
이후에 디자인은 나오는 데 시간이 필요하기 때문에, 필요한 API 목록 정의부터 하고 백엔드 개발을 먼저 빠르게 진행하면 좋을 것 같아 기획자분은 기능 정의서 정리, 디자이너분에게는 간단하게 와이어프레임 정도라도 공유해주시는 게 좋을 것 같다고 말씀을 드렸고 두 개를 참고하여 테이블 설계까지 진행했다. 테이블 설계는 같이했던 백엔드 분이 편의점 야간 알바를 하고 계신데다가 프로젝트 경험이 많이 없으셔서 내가 많이 관여했다. 이 과정에서는 회사 백엔드 개발자 분의 도움을 많이 받았다.
6~8일차 - API 1차 개발 완료, 인프라 작업 (도메인 연결, SSL 인증서 발급)
다행히도 기획자분과 디자이너분이 잘 정리를 해주신 덕분에 3시간 정도 소요해서 필요한 API 목록 그리고 구체적으로 메서드(GET, POST, …)나 어떤 요청값을 받고 어떤 응답값을 내릴건지, 어떤 로직이 처리되어야 하는지 등등을 빠르게 작성해나갈 수 있었다. 이후로는 내가 어떤 작업을 할 지 선택을 해야되는 시점이었는데, 전자는 ‘와이어프레임을 보고 UI 작업을 미리해둔다’ 였고, 후자는 ‘내가 API 작업을 도와서 미리 API를 최대한 많이 뽑아놓는다’ 였다.
결론적으로는 후자를 택했다. 내가 후자를 택한 이유는 앞서 말했던 백엔드 개발자 분이 많이 참여하시기 힘든 상황 + UI 작업을 미리 한다고 해도 결국 디자인이 나오는대로 한 번 더 작업을 해야되는데 지금 같이 시간이 없는 상황에서는 프론트 작업은 나중에 한 번에 해버리고, API 작업을 미리 해두는게 완성에 더 도움이 되는 방향이라고 생각했다. 그래서 얼떨결에 작년에 부트캠프때 해보고, 최근에는 거의 해보지 않았던 API 개발을 시작했고 그 과정에서 프로젝트 구조는 어떻게 가져가는게 좋을지, 어떤 라이브러리들을 사용해야 할 지, 쿼리는 어떻게 짜야하는지 찾아보면서 실전 주도형 개발을 하게 되었다..
이외에 인프라 부분에서도 어쩌다보니 처음 해보는 작업들을 많이 해보게 됐다. NCP의 서버 서비스를 사용하는데 정말 서버만 대여해주고 AWS EC2처럼 기본 도메인을 별도로 지급해주지 않았고, HTTPS도 당연히 제공해주지 않았다. 그래서 부랴부랴 가비아에서 도메인도 구입하여 서버에 연결하고, Let’s Encrypt를 통해 SSL 인증서도 발급하여 서버에 연결하는 작업을 하게 됐다. 구글링을 해봐도 NCP로 진행한 예제가 많이 없었고, 공식 문서도 많이 참고했는데 내가 보기엔 문서가 그렇게 친절하게 설명되어 있지 않은 것 같아 설정하는데 조금 애를 먹었다.
아무튼 필요한 API 목록이 20개가 조금 안됐는데, 아마 하루 동안 15개 정도의 API 개발을 완료했고 그 다음 날에는 1차적으로 모두 완료 처리가 되었던 걸로 기억한다. 단순 조회 쿼리만 짜도 되는 API들도 있었고, 전체적으로 프로젝트 복잡도가 그리 높지 않았기 때문에 빠르게 처리할 수 있었다. 어쨌든 이건 1차적으로 완료가 된거기 때문에 분명히 API 연동 작업을 진행하면서 오류가 발생할거라고 생각했고, 디자인이 완료된 화면이 하나둘씩 나오던 시점이었기 때문에 완성된 화면을 기준으로 프론트 작업을 진행하면서 API 연동도 바로 바로 진행했다. 아마 이 때가 금요일 쯤이었던 것 같은데 일요일 오후가 제출인 것을 감안하면 남은 시간이 3일도 안됐기에 완성을 하지 못할까봐 심적으로 정말 정말 조급했다.
9~10일차 - UI 개발 및 API 연동 및 수정, 테스트, 무한 반복, … 그리고 마무리
프로젝트 완성을 못하면 여기에 참여한거 자체가 의미가 없어질거라고 생각했기 때문에 남은 이틀 동안은 최대한 완성을 목표로 코드 퀄리티는 좀 뒤쳐두고 기능 개발에만 집중해서 코드를 작성했다. 주말 동안에는 하루 종일 프로젝트를 붙잡고 있어야 하는 상황이었기 때문에 토요일에는 팀원분들과 건대 24시간 카페에서 만나서 밤을 새가며 진행했다. 당연히 앞서 만들어두었던 API들이 연동 작업을 진행하면서 올바르게 작동하지 않는게 많았고, 프론트 작업하면서 API 붙이고 안되면 고치고.. 를 계속 계속 반복했다. 하면서 시간이 정말 하루 이틀만 더 있었으면 좋았겠다고 생각했다. 결국 처음 기획했던 대로는 완벽하게 완성은 하지 못하고 프로토타입 시연 정도에 필요한 주요 기능들로만 많이 추려서 개발을 하고 마무리하게 되었다.
정말 열심히 달렸던 연말 10일
정말 열심히 달렸던 연말의 10일이었다. 다른 분들도 그렇겠지만 잠을 못자서 진짜 너무 너무 힘들었다. 퇴근 이후부터 새벽 세시까지 작업해야 했고, 다시 아침에 일어나서 출근하고 퇴근하면 또 작업하고.. 의 반복이었는데 하루 평균 4~5시간 정도 잔 것 같다. 마지막 날에는 24시간이 넘게 깨어있었다. 이것 때문에 면역력이 떨어져서 인지는 모르겠지만 끝나고 며칠 뒤에 A형 독감에 걸려서 하루 이틀 정도 고생했다. 그래도 짧은 기간에 많은 경험을 해본 건 분명한 것 같다. 이전부터 배우고 싶었던 백엔드 개발도 해보게 됐고, 평소에 해보지 않았던 인프라 관련 작업들도 하게 됐고, 그리고 다른 분야에서 일하는 좋은 분들도 만나게 됐다. 이 분들이 아니었다면 정말 중간에 진작 탈주했을 지도 모르겠다. (다시 한번 같이 열심히 참여해주셔서 너무나도 고맙고 고생하셨습니다…)
그래서 이제 뭐할건데
아무래도 급하게 작성해 놓았던 코드들을 좀 고쳐야하지 싶다. 특히 백엔드 쪽 코드에 내가 정말 많이 관여했는데, 제대로 무언가 배워서 적용할 수 있는 기간이 아니었기 때문에 코드 구조가 엉망이다. 프론트엔드 쪽은 조금 덜 하긴 해도 엉망인 건 똑같다. 그리고 기능적으로도 완벽하게 완성하지 못했기 때문에, 완성하지 못한 기능들도 제대로 완성하고 리팩토링을 진행하게 될 것 같다. 이번에 하면서 백엔드 개발에도 흥미가 생겼는데 express + mysql2 기반의 지금 프로젝트를 Nest.js + ORM(Prisma)으로 마이그레이션 해보는 것도 재밌을 것 같아 연말 남은 기간 Nest.js도 찍먹 해볼 계획이다.
개인적으로는 추가로 서비스 디벨롭도 하면 좋을 것 같은데, 아무래도 다들 원래 하던 본업이 있기도 하고 서비스 자체가 사용자 의존적이라 추가적으로 디벨롭 해도 이게 흥미를 끌어서 사용자들을 모을 수 있을지? 같은 부분도 생각을 해봐야 하므로 고민할 시간이 필요한 부분들이 있다. 일단은 그래서 앞서 말했던 것처럼 코드 정리 + 기능 완성 정도로만 마무리 해두려고 하고, 추후에 어떻게 해볼지는 팀원들과 조금 더 상의를 해봐야 할 것 같다.
아 그리고 다음 포텐데이에도 참여하려고 생각 중이긴 한데, 이건 내 몸 입장도 조금 들어봐야 하지 않을지..