[CMC] CMC 9기 해커톤 후기
1월 29일부터 30일까지 CMC 9기 오프라인 해커톤이 열렸습니다. 사실 처음에는 참가할 의사가 없었는데, 연휴 기간에 집에 있어봐자 가만히 있기만 할 것 같아서 뭐라도 해보자 하는 마음으로 참가 신청을 하게 되었습니다. 결과적으로는 좋은 선택이었다고 생각하고 있습니다.
그래서 오늘은 처음으로 해커톤에 참가하게 된 후기를 공유하고자 합니다.
시작하기에 앞서
해커톤이라 하면 무박으로 진행되는 행사라 체력도 많이 필요할테고, 어느 정도 실력도 있어야 하니 처음에는 참가를 주저하였습니다. 괜히 참가를 해서 같은 팀에게 민폐를 끼치면 어쩌나 하는 생각도 많이 들었습니다. 참가할까 말까 거듭 고민을 하다가 결국에는 CMC 9기 운영국장님에게 개인적으로 찾아가 실력이 많이 필요한지 여쭈어도 보았습니다. CMC에 합류한 것부터 충분히 입증되었으니 걱정 말라는 격려에 힘입어 참가 신청을 하게 되었습니다.
디자이너 한명, 서버 한명, 클라이언트 두명으로 팀이 구성되었습니다. 주제는 미리 공지하지 않았지만(형평성을 위해서라고) 팀 빌딩은 미리 발표가 되었습니다. 총 5개의 팀이었는데, 모바일 클라이언트나 디자이너분과 협업하는 경험은 처음이라 기대도 많이 되었습니다.
주제 선정
주제는 당일날 현장에서 정해졌습니다. 리더진이 정한 주제 5개(코로나, 여행, 취미...)와 참가자들이 적어낸 주제를 합하여 그중에서 한개를 제비로 뽑아 주제를 정하는 식이었습니다. 결과는...
아이디어 메이킹
주제는 여행으로 정해졌습니다. 사실 저는 여행을 많이 다니지는 않았어서 조금 막막한 감이 없잖아 있었습니다. 그래도 아이디어 메이킹은 팀끼리 같이 하는거니까 브레인스토밍을 하면 좋은 아이디어가 정해질거라 생각했습니다. 리더진 분들이 팀끼리 모여서 아이디어 메이킹을 진행하라 하였고, 저도 제가 속한 팀으로 갔습니다.
아쉽게도 저희 팀의 디자이너 분이 개인적인 사정으로 참가를 못하게 되었다고 하였습니다. 개인적으로 굉장히 아쉬웠지만, 어쩔 수 없는 일이니 남은 사람들끼리라도 잘해보자고 서로를 격려했습니다. 아무래도 개발자 3명이라서 그런지, 정해진 시간 안에 구현이 가능한지에 대해 많은 초점을 두었습니다. 시간이 많지 않으니 범위를 적게 잡고, 목표한 기능만을 개발하자는 생각으로 저희는 개발에 착수했습니다.
개발 설계
API 정의서를 작성하기 위해, 우선적으로 테이블 정의서부터 작성해보았습니다. 총 세개의 테이블이 나왔고, 각각 Member, MAIN_TOPIC(여행 대주제), SUB_TOPIC(여행 소주제) 테이블 입니다. 여행 대주제는, 예를 들어 '부산 여행'같은 해당 여행에 대한 큰 주제입니다. 소주제의 경우에는 '해운대 가기', '해동용궁사 가기'같은 계획을 의미합니다.
API 정의서를 우선적으로 작성한 다음에, 개발에 착수하는게 클라이언트분들이나 저에게도 좋을 것이라 생각했습니다. 시간이 많지 않으니 개발을 동시에 진행해야 하니까요. 제 개인적인 노션 페이지를 공유해 드린 다음에, End Point와 전송방식을 정하고 서버 완료 여부를 표시하는 컬럼을 만들어 클라이언트 분들께 전달해 드렸습니다. 그랬더니 클라이언트 단에서도 완료여부를 표시하는 컬럼이 필요하다는 좋은 의견을 주셔서 해당 부분을 추가했습니다.
개발
사실 이전에 AWS 서비스를 사용해 본 적이 없어서(회사에서는 GCP를 사용), 이번 기회에 AWS를 사용하고자 했습니다. 당일날 배포 환경을 셋팅하면 너무 시간이 소요될까봐 미리 배포 환경을 셋팅해두기로 하였습니다. 그런데 인스턴스를 연결하는 동안에는 잘 되지만, 연결을 끊으면 접속이 안되는 문제가 발생하였습니다. 찾아보니 nohup이라는 명령어를 붙이면 터미널이 끊겨도 실행한 프로세스가 계속 동작하게 만들 수 있다는 것을 알았습니다. 당일날 배포를 하였으면 몇 시간을 삽질로 날려먹었을 것을 생각하니 미리 배포 환경을 셋팅하길 잘했다는 생각이 들었습니다.
nohup java -jar {jar 파일} &
간단한 CRUD API 밖에 없어서 작업이 수월하였습니다. 그러나 클라이언트 분들은 디자인까지 병행을 하느라 굉장히 힘들어보이셨습니다. 도와드리고 싶어도 안드로이드 개발 쪽은 아예 모르니 옆에서 어떤 색깔이 괜찮을 것 같다, 어떤 템플릿이 괜찮을것 같다 라는 의견밖에 낼 수 없는 처지였습니다. 게다가 혼자서 개발하시는 게 아닌 두분이서 협업을 하니 git merge 과정에서도 많은 충돌이 일어나는 것으로 보였습니다. 제가 할 수 있는 것이라곤 버그 없이 빠르고 정확한 API 배포밖에 없었습니다.
그러나 AWS 프리티어 버전을 사용해서 그런지 배포 과정에서 자주 서버가 죽는 현상이 일어났습니다. 인스턴스는 한번 중지시키고 다시 시작하면 ip가 바뀌기 때문에 바뀌는 ip를 계속해서 클라이언트 분들에게 전달해야 하는 불편함이 생겼습니다. 클라이언트 분 중 한분이 인스턴스에 고정 ip를 설정하는 법을 알려주시고 나서야 불편함 없이 배포를 진행할 수 있었습니다.(감사합니다!)
발표
API를 모두 개발하고 나서 client 개발을 기다리는 동안 발표 자료를 만들었습니다. 디자인적으로 감각이 있지는 않지만 최대한 예쁜 피피티를 만들려고 많이 노력했습니다. 저희 팀 발표가 끝나고 나서 다른 분들이 피피티가 예뻤다 라고 칭찬을 해주셨고 너무나 기뻤습니다. 예의상 그렇게 말씀해 주셨을지도 모르지만, 제겐 최고의 칭찬이었습니다.
시상식
상을 바라고 참가를 한 것은 아니지만, 그래도 노력이 결과로 나타나니 기분이 좋은것은 어쩔 수 없는 것 같습니다. 아무래도 디자이너가 없어서 디자인 평가에 가산점이 들어가고, 범위를 적게 잡아 본래 기획했던 모든 기능을 개발하여 완성도 부분에서 높은 평가를 받지 않았나 싶습니다. 첫 해커톤 활동이 좋은 기억으로 남게 되었습니다.