후기

2024 GGUM 연합 해커톤 후기

5-ms 2024. 11. 15. 15:40

 

지난 10월 26일~27일에 진행된 교내 해커톤에 참여했습니다.

 

생애 첫 해커톤이었고, 좋은 팀원들을 만난 덕분에 의미있고 행복한 시간이었습니다. 

 


GGUM 해커톤이란?

가톨릭대학교 내 IT 연합동아리인 Groomthon_univ, GDG on Campus, UMC, 멋쟁이사자처럼 4개의 동아리가 주최하는 연합 해커톤입니다. 

저는 GDG on Campus CUK 소속으로 참여했고, 굳이 위 동아리 회원이 아니더라도 참여가 가능했습니다. 

 

학교 교직원이나 교수가 아니라 학생이 주최하고 학생이 운영하는 대회인지라,

수상 상금도 없고, 밤샘을 위한 교내 시설 대여에도 어려움이 있어 무박이 아닌 유박 해커톤이 될 뻔했지만.. 

운영진분들이 열심히 준비하신 것이 느껴질 만큼 되게 알차고 의미있던 시간이었습니다. 

 

비단 해커톤이라고 하면, 무박 2일동안 빡세게 와다다 개발하고 발표하는 형식으로 진행되겠지만,

아직 학생 수준임을 감안하여.. 이번 해커톤은 1주일전 팀 배정 및 주제를 미리 발표합니다. 

그래서 사실상 실력만 된다면 1주일 전에 얼른 방향 잡고 개발 완료하는 것도 가능했습니다. 

저의 경우에는 백엔드로 참여했습니다. 

 

해커톤 운영진분들의 심사를 통해 해커톤에 참여한 팀 중 5팀만이 본선 진출권을 획득하게 됩니다. 

본선에 진출한 팀은 교수님 PT 진행 이후, 최종적으로 단 3팀만이 학과장 상을 받을 수 있게 됩니다. 


해커톤 팀 선공개 및 주제 발표 ( 10/19 )

팀이 발표되고 정말 많이 놀랐습니다. 

 

백엔드 개발자가 진짜 많았거든요..

스프링 백엔드 과포화 현상...

 

스프링 개발자가 전체 참여자의 절반 가까이 된다는 점.

그리고 11명이 한팀에 백엔드 개발자가 6명이라는 점..

 

보면서 "쓰읍...이게 맞나?"싶은 생각이 너무 많이 들었지만.. 이미 결정된 사안이니 "어떻게든 되겠지!"하는 마음으로 임했습니다. 

 

 

그리고 두번째로 놀랐던 점은,

저희 팀 11명 중 8명이 이미 알던 사람들이었다는 점입니다.

 

해커톤 신청하면서 "학교 사람들이랑 네트워크도 만들고 모르는 사람이랑 친해지면 좋겠다~"했었는데.. 다소 아쉬웠습니다.

그래도 알던 지인들이 다들 개발을 어느정도 해보신 분들이고, 믿을 수 있는 분들이셨다는 것이 너무 좋았습니다. 

 

 

해커톤 주제는 "대학생의 학교 생활을 위한 서비스"였습니다.

 


해커톤 전 ( ~ 10/26 )

 

전체 회의 ( 10/19 ) 

팀 발표 당일에 팀원분들이랑 다행히 연락도 잘 되어서 팀 톡방, 팀 디스코드방도 금방 만들었고, 

PM님 주도로 당일에 주제 회의까지 마쳤습니다.

 

첫날부터 회의가 3시간 넘게 진행됐습니다.

팀원 각자가 회의 전까지 아이디어를 구상해왔고, 그 중에서 쓸만한 아이디어를 투표로 선정해서 방향을 잡았습니다.

 

제가 가져온 아이디어는 "빈 강의실을 알려주는 서비스"였습니다.

시험기간에 도서관이나 교내에 공부할 수 있는 시설에 자리가 부족한 경우가 많았습니다.

여기서 건물 내 빈 강의실은 자유롭게 이용이 가능하다는 점에서 아이디어를 착안했고, 학교 사이트에서 제공하는 강의시간표를 바탕으로 구현이 충분한 가능함을 어필했습니다. 

 

감사하게도 팀원분들께서 제 아이디어를 좋게 봐주셨고, 여기에 살을 조금 더 붙여서 최종적으로

"빈 강의실 및 도서관 좌석현황을 알려주는 서비스"로 주제를 선정하였습니다.

 

1차 BE 회의 ( 10/20 )

서비스 방향이 나오고, 다음날에 바로 개발 회의를 시작했습니다. 

아직 서비스의 와이어프레임이나 명세가 아직 나오지 않아, 그 전에 BE측에서 할 수 있는 것들에 대해서 찾아보고 역할분담을 진행했습니다.

 

그 결과 아래와 같이 역할 분담을 진행했습니다.

 - ERD 설계

 - 학교 사이트 강의시간표 엑셀 파일 파싱 및 저장

 - 도서관 좌석 현황 크롤링 

 - CI/CD 등 아키텍쳐 설계

 - 프로젝트 초기 설정 + 전역 예외 처리

 

저는 팀원 한분과 같이 [학교 사이트 강의시간표 엑셀 파일 파싱 및 저장]를 맡았습니다. 

그리고 어쩌다보니? BE장도 맡게 되었습니다 ㅎㅎ..

 

2차 BE 회의 ( 10/22 )

서비스의 전반적인 명세가 나와서 2차 BE회의를 진행했습니다. 

지난 회의 이후 이틀만에 팀원분들이 모두 맡은 부분을 다 해오셔서 수월하게 진행되었습니다. 

 

회의 주제는 앞으로의 작업에 대한 회의입니다. 

 

우선 git 컨벤션 통일 관련 내용이었습니다.

무능한 BE장 때문에.. 1차 BE회의에서 컨벤션에 대해 이야기하지 않고 넘어갔습니다. 

그래서 "레포가 좀 더럽겠구나..."했는데 정말 다행히도 모두 "눈치껏" 컨벤션을 따라주셨습니다!

이번 회의에서 컨벤션을 통일하는 시간을 가졌습니다.

개발 시작하고 진행하는 컨벤션 회의...

 

그리고 API 명세서를 작성했습니다.

했는데... API가 적었습니다. 많이 적었습니다..

로그인 기능이 있었으면 좀 많았을 텐데, 저희는 로그인을 넣지 않았습니다. 

 

지난 전체회의에서 로그인 기능 삽입 여부에 대해서 토의를 했습니다.

서비스의 추후 확장성까지 고려하면 로그인이 있으면 좋을 것은 맞지만, 지금 계획한 내용에 대해서는 로그인이 필요없기도 했고, 무엇보다 "우선 우리 주요 기능에 집중하자!"는 의견이 강했기때문에 로그인 기능은 과감히 삭제했습니다.

그래서 해커톤 7팀 중에 저희 팀만 유일하게 로그인기능이 없던 걸로 기억합니다. 

 

그래서 기능상 API라고 할만한 게 빈 강의실 보여주기, 도서관 좌석 보여주기, 시간표 보여주기 말곤 없었습니다. 

CRUD중에 R밖에 없었던 것이 조금 아쉽게 느껴졌습니다. 

팀에서 BE가 인원이 제일 많음에도 불구하고 구현할 것이 별로 없었다는게... 다소 아쉽더라구요..

 

개발 ( ~10/25 )

2차 BE회의를 마지막으로 계속해서 개발했습니다. 

지난 회의에서 맡은 API도 개발했고, 지난번에 만들었던 엑셀 파싱에 문제가 있어서 수정도 진행했습니다. 

 

 

그리고 해커톤 전날, 벌써 모든 BE개발을 마쳤습니다.(라고... 생각했습니다...)

 

 


 

해커톤 시작 (10/26 10:00 ~ 10/27 12:00)

대망의 해커톤 시작.

 

이번 해커톤에서 아쉬웠던 점 중에 하나가 바로 해커톤 기간이었습니다. 

해커톤 중간에 ICPC 예선 경기가 껴있게 됩니다.

 

예선 후기가 궁금하시다면 ? ㅎㅎㅎ

https://5-ms.tistory.com/19

 

2024 ICPC Seoul Regional 예선 후기

지난 10월 26일에 열린 2024 ICPC 예선 대회에 참가했습니다. http://static.icpckorea.net/2024/first_round/scoreboard_10282200/ SpotboardSpotboard from algospot.com, wookayin and Being CSUS Programming Contest System Icons from FatCowstatic

5-ms.tistory.com

 

 

저희 팀에 ICPC에 나가시는 분이 저를 포함하여 5분이 계셨기 때문에...

본격적인 해커톤이 시작되고, 팀원들과 오늘 ToDo를 정리한 다음, 점심 식사 후 6시까지 해커톤에 참여하지 못하게 되었습니다.

 

그나마 다행인 점은, BE개발은 순조롭게 진행되었기 때문에, 프론트와 연동 말고는 크게 걱정거리가 없었습니다. 

프론트와의 연동때문에 API를 고치는 일도 좀 생겼구요.. 

혹시 모를 CORS 문제도 숙련된 팀원분들이 해결해주셨구요. 

 

ICPC가 끝나고 돌아오니 프론트와의 연동도 모두 마친 상태였습니다. 

할일이 없어 "밤동안 실컷 잘 수 있겠다!"하며 팀원들과 놀고, 주변 팀들을 구경하며 자유를 만끽했습니다. 

 

이후 밤 9시 경, 운영진의 깜짝 야식 이벤트가 있었습니다. 

야식이벤트는 핀볼 사다리?로 뽑았고, 1등에게는 피자와 치킨 두판씩이 증정될 예정이었습니다. 

그리고 저희팀이 1등을 하게 됩니다! 덕분에 공짜 야식까지 든든히 먹을 수 있었습니다ㅎㅎ.

(개인적으로 본선 진출보다 야식 1등이 더 신났던 것 같아요ㅋㅋㅋ)

 

야식 이후로 한번 더 회의를 진행했습니다. 

회의 주제는 "밤동안 무엇을 더 할까?"였습니다. 

PM, 디자이너, 프론트 분들은 할일이 다들 있으셨는데, 백엔드는 할일이 너무 없었습니다. 

그 결과로 나온 것이, [테스트 코드 작성] 그리고 [다른 역할에서 부담을 주지 않을 선에서의 추가 기능 구현]이었습니다.

 

그리고 저는 새벽동안, 테스트 커버리지 100%를 향해 미친듯이 달리기 시작합니다. 

팀원 한분과 커버리지 100% 작업을 진행했는데, 테스트 코드 작성이 제겐 너무 낯설어서.. 헤매기도 했고 시간이 되게 오래걸렸습니다. 

결국 테스트 커버리지 98%까지 도달했고, 발표 전 한시간정도 눈을 붙일 수 있었습니다.

밤샘 혈투의 결과

추가적으로 넣은 기능은 건의사항 기능이었습니다. 

디스코드 봇을 이용해서 사용자 건의사항이 입력되면 디스코드 서버로 알림이 오게끔 구현하였습니다. 

 

그렇게 아침이 밝았습니다.


해커톤 팀 발표 (10/27)

해커톤 발표 당일. 예상치 못했던 변수가 발생합니다. 

발표일 8시부터 도서관 서비스가 일시 중단됩니다.

도서관 좌석 정보를 가져오려면 도서관 홈페이지를 크롤링했어야 했는데, 서버가 내려가면서 크롤링할 페이지를 불러올 수 없어 에러가 했습니다.

발표가 8시 30분에 시작하고, 발표 15분 전에 이를 알아차리는 바람에 팀에 비상이 걸리고 말았습니다. 

다행히 프론트분의 빠른 대처로 일단 임시 데이터를 넣어서 에러 없이 실행시키게끔 준비했습니다. 

 

그리고 발표 시현에서 건의사항 보여줄때 아래 사진처럼 다같이 와다다다 올렸었는데, 이게 되게 좋았던 것 같아요 ㅎㅎ

그땐 졸려서 몰랐는데, 이제와서 보니 되게 귀엽네 ㅋㅋ

 

 

갑작스러운 오류 상황이 생기긴 했지만, 다행히 발표는 성공적으로 마쳤고, 결과적으로 본선 진출권을 따내게 됩니다. 

본선 진출 성공!

 

추후 운영진에게 들은 이야기인데, 저희팀이 해커톤 당일 심사 점수가 가장 높았다고합니다! 

특히 유일하게 테스트코드를 작성한 팀이라 개발 부분에서 점수가 매우 높았다고 해요. bbbb

 

https://github.com/GGUM-5

 

GGUM-5

GGUM-5 has 3 repositories available. Follow their code on GitHub.

github.com

저희 서비스 레포입니다!


이후 교수님 PT (10/29)

해커톤 종료 후 3일 간 서비스를 다듬을 수 있었습니다. 

교수님 PT전까지 사소한 UI변경과 에브리타임을 이용해서 서비스 베타테스트를 진행했습니다. 테스트하며 건의사항도 받아서 반영했습니다. 

 

교수님 PT는 해커톤 당일 발표보다 더 완성도 있었습니다.

이정도면 수상도 충분히 노릴만 하겠다! 싶은 생각이 많이 들었습니다. 

PT 이후 다같이 팀 회식을 진행했습니다. 

 

수상 결과는 이틀 후인 11/1에 발표되었습니다.

 

👍

 


소감

이렇게 모든 해커톤 활동이 마무리 되었습니다. 

미리미리 후기를 썼으면 좋았을텐데, 해커톤 한 지 3주가 지나서 후기를 부랴부랴 쓰려다보니 뭔가 빼먹은 것 같은 느낌이 드네요.. 

 

저에겐 이번 해커톤이 제 생에 첫 해커톤이었습니다. 

첫 해커톤에 잘 참여할 수 있을지 걱정도 되었고, 흔히 말하는 조별과제 "빌런"이 우리팀에 있을까봐, 그런 빌런이 내가 될 수도 있을까봐 불안하기도 했습니다.

팀원 11인 모두가 열심히 참여했고, 다들 1인분씩, 혹은 그 이상의 퍼포먼스를 보여주셔서 불안했던 게 무색할 정도로 너무 좋은 결과를 낼 수 있었습니다. 

 

첫 해커톤이 좋은 추억으로 남아, 앞으로 더 많이 도전하고 배우고 싶어졌습니다.

지금까지 했던 팀 프로젝트를 통틀어 이번 해커톤이 정말 많이 배웠고 행복했습니다. 

기회가 된다면 현재 팀원들과 계속해서 프로젝트를 진행하고싶을 정도로요 :)

 

아쉬웠던 점

좋은 경험이었지만 그래도 조금은 아쉬웠던 점이 있습니다.

 

 

우선 BE장의 역할 수행이었습니다.

첫 전체 회의에서 반가운 얼굴이 많아서 그랬는지, 조금 열정적으로 회의에 참여하고 의견을 냈던게 BE장을 맡게 된 가장 큰 이유가 되지 않았나 싶습니다. 전체 회의 이후 BE회의 일정 조율도 제가 맡아서 했고, 암묵적으로? BE장의 역할을 하다보니 결국 BE장이 되었습니다.

 

사실 BE장으로서 크게 할 일은 없었습니다. 회의록 작성하고, 팀원끼리 역할분담을 하는 것이 전부였습니다. 

그럼에도 아쉬웠던 것은, 팀 프로젝트 경험의 부족으로 인하여 현재 무엇을 해야되는 지, 역할분담을 어떻게 하면 좋을 지를 파악하는 것이 제겐 다소 어려웠습니다.

 

깃허브 컨벤션을 맞춰본 경험이 없던 터라, 다행히 팀원분들이 눈치껏 맞춰줬으니 망정이지 초기 개발단계에서 혼선이 생길 수도 있을 뻔 했습니다. 

 

해커톤 당일에는 역할 분담이 제대로 되지 않았다는 점도 BE장의 능력 부족 때문이라고 생각합니다. 역할 분담을 잘 했었더라면 개발이 조금은 더 빨리 끝나지 않았을까 하는 생각도 드네요.

 

그리고 CORS 문제 부터, 깃허브 액션을 이용한 CI, redis와 docker 도입에 대한 논의, API 성능 테스트나 서비스 아키텍처 등 기술적인 부분에서의 제 지식의 공백도 아쉬웠습니다. 다행히 팀원분들이 다들 경험이 있으신 분들이셔서 진행은 수월하게 됐지만, 개발이 현재 어떻게 진행되고있는지 파악하기가 어려웠고, "아무튼 잘 됐으니 된거 아닐까?"하며 넘어가야만 했던 것이 아쉬웠습니다.

 

BE장으로서의 리더십이나 카리스마가 부족했다는 것도... 다소 아쉽게 느껴졌습니다. 

 

좋았던 점

배울 것이 많았습니다.

지식의 공백을 통해 내가 뭘 모르는 지 알 수 있는 시간이 되었다는게 좋았습니다. 

 

다른 해커톤 참가자 분들에게 들은 이야기인데, 저희 팀의 별명이 어벤져스였다고 합니다. 

학생 수준에서 어느정도 "개발을 잘한다"는 사람들이 많이 몰려있어서 이런 별명이 붙었다고 하더라구요.

(추후 들은 이야기인데, 원래 팀은 지금보다 더 수준이 높았다고 합니다. 그래서 운영진측에서 밸런스를 맞추기 위해 어느정도 실력 분산을 시켰다고 들었습니다. 그럼에도 이정도였으니... 밸런스를 안맞췄다면 어떻게 됐을지가 궁금하네요. 그 팀엔 과연 제가 있었을까 싶기도 하고...)

 

다른 팀은 팀 발표하자마자 탈주한 팀원도 있다고 하고, 연락을 안보거나 팀원간 소통이 안되는 팀도 있었다고 들었습니다. 그럼에도 우리팀은 모두 연락도 잘됐고, 다들 성실히 참여해주셔서 제법 완성도 있는 서비스가 만들어진 것 같습니다. 

 

모두 열심히 하셨지만, PM분들이 정말 고생을 많이 하셨습니다.

PM은 팀 발표날부터 매일매일 회의를 진행했었습니다.

회식에서 말하기를, PM님이 다른 PM,디자이너,FE쪽을 엄청 괴롭히셨다고 하더라구요. 말씀드리면서 되게 눈치가 많이 보이셨다고 ㅋㅋㅋㅋ. 그래도 덕분에 순조롭게 진행된 것 같아요.

 


 

저에겐 과분한, 너무 좋은 팀을 만났고, 덕분에 좋은 성과를 냈습니다.

앞으로 다른 프로젝트, 다른 해커톤에 참가해도 이렇게 완벽한 팀을 만날 수 있을까? 할 정도로 정말 좋은 인연을 만났습니다. 

다들 너무 감사하고, 또 볼 수 있었으면 좋겠습니다.

 

감사합니다!