7월 한 달간 준비했던 멋대 12기 해커톤이 마무리 됐다.
기록해두면 기억에 잘 남을 거 같아서 써본다.
기획

아무래도 기획에 대한 기록은 자세히 써야 싶다.
이번 해커톤을 준비하면서 기획에서 나름 애를 먹은 우리 팀이었기 때문에,,
6월
해커톤 주제는 7월에 나오지만, 프로젝트 매스를 키우려 최대한 기획/디자인에 대한 부분은 미리 끝내놓고 싶었다. 그래서 시작된 주 3회 오후 10시에 회의하는 지옥의 스케줄…
아직 학기 중이었기에 다들 회의 참여가 어려울 수 있었는데 우리 팀 참 신기할 정도로 열심히였다. 각자 아이디어를 추상적으로라도 생각해오고 회의시간에 각자의 아이디어에 대해 토론하는 시간을 가졌다. 아이디어의 한계점이랄지 각자 맘에 드는 부분이랄지 말이다.
생각보다 순조롭게 아이디어(공유 캘린더를 이용한 가계부 서비스)가 정해졌다. 아이디어가 정해지면 거의 다 끝이라고 생각했는데 기능 구체화하는 과정이 기다리고 있었다. 당시엔 아이디어가 팀원들 맘에 들었기에 적극적으로 의견을 내서 막히는 부분은 없었는데, 지금 생각해보니 기능이라는 것이 구체적으로 계획하려면 한없이 계획할 수 있는 것이어서 기획 단계에서 어느정도로 구체화하는 것이 맞는 것인지 감을 못 잡고 있었던 것 같다.
7월 초
안타깝지만 우리 팀엔 pm이 따로 없었다. 때문에 개발자들 모두 머리를 쮜어짜서 기획을 하고 특히 우리 프론트(웹, 앱) 팀원들이 피그마를 작성하느랴 고생했다. - 프론트 입장에선 개빡치는 상황 - 백이나 프론트나 디자인 안 해본 건 매한가지인데 백은 자기네들 서버한답시고(내가 이럼) 디자인에 담쌓고 산다는 명분이 있어서 보통 프론트가 맡곤 하는 것 같다. 어찌됐든 간 기획한 것에 대해 피그마 작성도 거의 완료됐던 시점.. 개발 시작만 하면 되는 시점에서 일이 터졌다.

나름 포괄적이라고 생각했던 우리 아이디어가 멋사에서 제시한 주제랑 아예 달랐던 것.
그렇다. 6월의 노력이 물거품 되는 순간이었다.
다시 회의를 시작했다. 우리는 팀 빌딩도 되어있었고, 이제 주제가 나온 터라 사실 시간적인 손해는 본 것이 아니지만, 그 동안 해놓은 게 없어졌다는 부담이 있어서인지 다들 분위기가 심각했었다. 팀원들과 종종 얘기가 나오지만 이 때가 가장 우리에게 힘든 순간이었다.
하늘이 무너져도 솓아날 구멍은 있는 법. 생각보다 빠른 시일 내(2,3일 만으로 기억)에 주제가 정해졌고, 바로 그 주에 기능 구체화를 시작했다. 이 때 정말 팀원들끼리 말을 많이 했던 것 같다. 이전 아이디어는 기능이 현실적이라 스토리텔링이나 다른 생각할 부분이 많이 없었는데, 이번 주제는 메타인지와 관련되어있어서 기능을 어떻게 보여줘야 실질적으로 호소가 될 지에 대해 생각을 많이 했었다.
이 때 서로 의견이 다를 때가 많았던 거 같다. 각자 머리 속으로 생각한 서비스가 있다보니 머리 속의 내용을 합치려다 보니 같은 말을 하는데도 이해를 못하거나, 어떤 식으로 사용자에게 기능을 제시할 지에 대해서 의견이 다르다거나 하는 부분이었다.
참 고마웠던 것은 의견 충돌이 있을 때마다 나름 각자의 생각에 대한 논리를 세워놓고 대화를 한 것이었다. 왜냐하면 첫째는 각자의 의견이나 그에 대한 이유가 있다는 것은 회의에 집중을 하고 있다는 것이었고 둘쩨로는 그런 논리들이 있었기에 무슨 의견이 더 좋을 지 다수결을 한다던가 상대의 의견을 인정한다던가의 이성적인 회의가 가능했기 때문이다.
기능 구체화한 다음에는 프론트는 피그마, 백은 api 명세서 작성을 했다.
개발
7월 중순 ~ 말
피그마가 작성이 되어서 본격적인 개발을 시작했다. 개발부터는 파트별로 나뉘어서 일이 진행되었다. 파트별로 나뉘어도 기능별로 또 나뉘어 개발을 했기 때문에 회의는 거의 없었다.
개발은 spring boot으로 진행됐다. 내가 맡은 기능은 유저 회원가입 로그인과 보안 관리였다. 유저 기능은 크게 어렵진 않았는데, jwt 토큰 관리와 쿠키 관리 정도에서 어려움을 겪었었다. access token은 responsebody로 주고 받았고 refresh token은 쿠키로 서버에서 클라이언트의 브라우저에 설정해주는 식으로 구현했다.
마지막쯤에 느낀 건데, 해커톤 끝나고 리팩토링하겠다고 코드를 좀 더럽게 작성했는데(사실 이쁘게 하는 게 뭔지도 잘 모름) 객체의 기능이 너무 짬뽕되어있다는 것을 많이 느꼈다. 클래스도 많이 쪼개고 interface를 많이 활용해서 틀을 잡고 세부사항만 객체를 구현해야겠다고 생각을 많이 했다.
refactor branch에서 리팩토링 중..
기능은 대강 구현이 됐지만 대망의 배포가 남아있었다. 내가 배포 경험이 많지 않아서 백엔드 파트 팀원과 따로 서버를 만들어서 배포를 진행했다. 자바 프로젝트는 aws ec2에 올렸고, db는 aws rds mysql을 이용했다. 생각보다 배포를 2개로 한 게 도움이 많이 됐다. 프론트 쪽에서 서버에 문제 생기면 물어볼 사람이 두명이니까 나름 빠른 대처가 가능했던 것 같다.
배포를 진행하면서 배운 부분
- 탄력적 ip
- 보안 그룹
- 도메인, https
- 쿠키 권한
- rds 연결
개발이 중요한데 생각보다 쓸 내용이 없다. 해커톤 준비하면서 에러날 때마다 글 올려봤으니까 그걸로 위안을 삼는다.
당일



해커톤 당일이다. 1500명이나 참여한 대행사였다. 본선 진출에 가능한 팀은 300팀 중 단 8팀! 다들 엄청난 개발자들 같아서 참 많이 쫄았었다.
8/6 - 18:00 ~ 24:00
오후 6시부터 12시는 발표자료 준비기간이었다. 생각보다 우리 팀 추가 수정사항도 많이 나오고 서버에서도 문제가 계속 생겨서 발표자료 준비 시간이 촉박했었다. 다들 그래도 열심히 ppt 작업 중인데, 예상외로 순탄치 않았다ㅎㅎ 별로 안 이뻐서였나, 자꾸 부족한 부분만 보이고 다른 팀 한 거 보면서 신경쓰이고 제출 시간은 다가오고 아주 정신없었다. 정신은 없었지만 많이 웃었던 기억은 있다. 팀원들과 많이 즐기면서 한 거 같아서 다행이었다.
8/7 - 00:00 ~ 04:00
제출 후에는 본격적인 심사 시간이 주어졌다. 제출이 완료된 참가자들에게는 네트워킹 시간이 주어졌다. 각자 개발한 금쪽같은 프로젝트들을 다른 팀에게 소개해주고, 또 소개를 들으러 다니면서 즐기는 시간이었다. 처음에는 돌아다닐 용기가 없어서 가만히 있었는데, 너무 심심해서 돌아다니게 됐다.
돌아다니니 너무 재밌었다. 백엔드 개발 어떻게 했는지 물어보고 뭐 어려운 거 없었냐고 물어보기도 하고, 디자인 보면서 감탄도 많이 하고 서버 코드가 기깔나서 감탄한 적도 있었다. 신기하게 돌아다니다 보니 처음 행사장에 들어갔을 때보다 덜 주눅 들어있는 나를 볼 수 있었다.. 새벽이라 정신이 나간 건지는 모르겠는데 ㅎㅎ. 나름 기억에 남을 4시간이었던 것 같다.
8/7 - 04:00 ~ 6:00
심사가 끝이 났다. 아쉽게도 우리 팀은 본선에 진출하진 못했다.
바로 본선 진출 팀의 발표시간이 주어졌다. 새벽에 돌아다니면서 봤던 팀들이 몇몇 보여서 신기하고 부럽기도 했다. 발표를 다들 열심히 준비하고 이 프로젝트에 꽤나 진심인 게 느껴지는 발표들이었다. 기능적으로도 놀라운 것도많았지만 기획의 치밀함이 많이 느껴졌다. 실제로 서비스해도 되겠는데 싶을 정도로 완성도 높은 작품도 많았고, 아이디어가 참신해서 나도 이용해보고 싶은 마음이 드는 서비스도 있었다.
사실 이 시간은 피곤해서 발표가 귀에 들어오는 둥 마는 둥하는 시간이었는데, 끝까지 에너지를 발산하면서 발표하는 멋사인들을 보면서 대단하다고 많이 생각했고, 자신의 프로젝트가 아닌데도, 그 발표를 눈에 담아두려고 무대 중앙으로 모여서 집중하는 분들도 많이 계셨다. 참으로 멋있었다.
마치고 집에 가는 길은 이뻤다. 진짜 날씨가 좋았음.

강남에서 버스를 갈아탔다. 6시인데도 이미 강남은 깨어있었다.
총평

해커톤은 많이 배우고 자극도 느낄 수 있는 이벤트였다. 해커톤 같은 행사가 로망이었는데 나름 나쁘지 않은 프로젝트로 참가할 수 있어 기뻤다.