개발 일기

[멋쟁이 사자처럼 중앙 해커톤] 인생 첫 번째 해커톤 본선 진출 본문

공모전 기록

[멋쟁이 사자처럼 중앙 해커톤] 인생 첫 번째 해커톤 본선 진출

개발 일기장 주인 2024. 8. 14. 11:47

일주일 전 8월 6일~7일 '웰니스'라는 주제로 전국 멋쟁이사자처럼 학생들 약 1,500명(300팀 이상)이 양재aT센터에 모여 해커톤이 열렸다. 개발을 시작하고 첫 번째 해커톤이였다. 팀은 서울과학기술대학교 멋쟁이사자처럼 운영진에서 대회 2~3주 전에 PM 1명, 디자이너 1명, 프론트 2명, 백엔드 2명 이렇게 6명으로 구성해줬다. 

300팀 이상이 한자리에 모여 오직 8팀안에 들어야만 발표를 할 수 있고 그 중 4팀만 발표를 할 수 있었는데 나의 개인적인 목표는 8위 안에 들어 몇 주간 고생해서 직접 기획하고 디자인하고 개발한 우리의 결과물을 많은 사람들에게 보여주고싶다는 생각이 있었기 때문에 더 잘하고 싶었다. 

 

첫 회의 결과 여러 아이디어 중 취미 공유 플랫폼을 만들자고 아이디어가 나왔다. 사실 나는 8위 안에 들어야한다는 목표가 있었고 저러한 주제로는 절대 목표를 달성할 수 없다는 것을 알았다. 그래서 대면 회의에서 한명씩 다 수상하고 싶은 욕심이 있냐고 물어봤고 다들 열심히 해보고 싶어하는 것 같아서 주제를 엎기로 했고 그 회의에서 나온 것이 바로 "시각 장애인들을 위한 제품 분류 서비스 보이스 라벨(Voice-Label)"이다. 시각장애인 유투버 원샷한솔의 유투브 영상에서 편의점에서 과자를 구매하는 것을 보면 코앞에 대고 오래봐야 겨우 제품 하나 뭔지 파악 가능하고 이게 어떤 제품인지 구분하는 것에 오랜 시간이 걸리며 또한 점자 없는 제품이 더 많으며 음료의 경우 "음료" 또는 "탄산"이라고만 되어있어 제품 구분에 어려움을 겪고 있음을 파악했고 이러한 페인 포인트를 해결해보고자 했다.

 

Teachable Machine 이미지 분류기에 음료수 캔 이미지를 학습시켜 제품들을 분류하고 그 결과를 TTS(Text to Speech)로 읽어줬고 음성인식을 통해 사용자 들의 피드백을 받기 위해 STT(Speech to Text) 그리고 구독료를 걷기 위해 Toss Payments 결제 API도 사용했다. 나는 백엔드를 혼자 맡았으며 Teachable Machine을 react-webcam 라이브러리와 연결하여 학습 결과가 텍스트로 출력하는 간단한 스크립트 코드 도한 작성했으며 Toss Payments 연동 시 프론트에서 필요한 로직 직접 구현해서 프론트로 넘겨 줬고 프론트에서 디자인 및 디테일한 부분을 맡아줬다. 사실 백엔드는 클라우드 작업과 비즈니스 로직 작성, API 명세서 작성 등 나혼자 다 해도 그렇게 힘들진 않고 재미도 있으면서 괜찮았지만 티처블 머신과 Toss Payments API를 프론트에 적용시키는 것에서 꽤 어려움을 겪었다. 프론트에 리액트로 플젝해본 경험이 있는 팀원이 없어서 어쩔 수 없이 나도 도와야 했기 때문이다. 그래도 지나고 보면 리액트가 대략 어떻게 돌아가는지 이해할 수 있는 좋은 경험이였던 것 같다.

사실 나는 8위 안에 들어 본선가서 우리 서비스를 발표하는 것이 목표였고 이러한 짧은 시간안에 평가 받아야하는 해커톤 특성상 프론트가 백엔드보다 프론트가 중요하다고 생각했다. 그러나 위에서도 말했듯이 리액트 플젝 경험이 있는 팀원이 없어서 시작 전에는 엄청 걱정됐지만 헛된 걱정이였다. 경인이가 비록 처음이지만 집에서 혼자서도 이것저것 많이 구현해오고 해커톤 직전에도 같이 상상관 창업동아리 사무실에서 같이 밤을 지새우면서 까지 정말 열심히 해줘서 정말 고마웠다. 바빴던 수아랑 진홍이도 막판에 거들어서 프론트 디자인 작업과 마무리 에러 잡기에 힘써줘서 85% 완성한채 대회날이 됐다!

 

나는 하나 디지털 파워온 교육으로 인해 늦참했다.

도착하고 너무 당황했다. 이렇게 많은 사람들 중에 8팀만 뽑아서 발표시키는 거면 정말 빡세다는 생각이 들면서 자신감이 떨어졌다.

또한 같은 서울과학기술대학교 멋쟁이 사자 소속 다른 팀이 전통 시장 관련 플랫폼을 제작했는데 스케일이 엄청 커서 저정도는 해야 본선가나?라고 생각이 들기도 했다.

이제 00시 까지 작업물을 제출하면 되는데 백엔드 작업은 진작에 끝내놔서 이제 프론트 친구들이 마무리 디자인 작업(CSS)을 하고 프론트 친구들이 배포 방법을 몰라 배포 자동화를 해놓지 않아서 내가 계속 배포 요청이 들어올 때마다 뛰어 나가서 깃헙 코드를 pull 받아 빌드하고 수동으로 ec2 인스턴스에 올려 수동으로 배포했다. 그런데 저 행사장 내에 와이파이가 되지 않아 저 행사장 밖으로 나가서 복도?에 쪼그려 앉아 배포하고 돌아와서 다같이확인해보고 이런 식으로 대략 5시간을 보냈다.(2주간 sudo docker-compose down과 sudo docker-compose up -d, sudo docker-compose logs -f만 120번 친 것 같다ㅎ) 정말 시간 가는 줄 모르고 배포 명령어만 주구장창 치다가 12시가 됐고 끝이 났다. 세상 정신없었다.

결과물1
결과물2

12시부터는 거기서 나눠주는 맥주랑 배달음식이랑 먹으면서 수다 떨며 기다리고 있었다. 그러다가 3시 반쯤 데이터베이스에 Member 테이블에 누가 가입했는지 확인해보니 심사위원들이 몇분 들어오셨던 것을 확인했고 AWS Cloud Watch 로그에 아까 1시에 들어왔던 분과 3시반쯤 들어오셨던 분이 새벽 4시 넘어서 다시 접속하신 것을 보고 괜히 기대가 됐다. 근데 새벽에 막 단체 티셔츠 맞춰입고 팜플렛 돌리고 광고판? 세운 팀도 있고 자신들 서비스에 아주 자부심이 넘쳐보이는 그런 팀들이 많이 보였다.

 

그렇게 4시 반쯤 드디어 본선 진출 팀을 불러주셨다. 한 4~5번째 쯤 되니 '그래 이 중에 8팀 안에 드는게 쉬운게 아니지'라는 생각이 들면서 헛된 희망이 였다는 생각을 하는 순간 7번째 쯤에 서울과학기술대학교! 라고 부르셔서 갑자기 심장이 두근거리기 시작했다. 그래도 같은 학교에 스케일 크게 잘한 팀이 있어서 끝까지 들어봐야 겠다고 생각이 드는 순간 사자 육남매!!라고 호명하셨다. 한 1초동안 멍했고 옆에 팀원들이 와!!하길래 나도 '아.. 우리팀이 본선 갔구나!' 하고 상황을 인지했다. 우리 팀이 본선에 진출한 것이였다. 정말 행복했다!!

본선 간 덕분에 PM분이 우리 서비스로 발표를 하셨고 사람들 앞에 우리가 약 2주 간 제작한 작업물을 선보일 수 있어서 정말 행복했다. 발표 끝나고 들어가는 길에 사람들이 잘했다 잘했다 하시길래 정말 뿌듯했다. 비록 수상은 못했지만 첫 해커톤에서 꽤나 뜻 깊은 경험을 한 것 같았다. 앞으로 주제를 잡고 개발을 할때 어떤 것에 초점을 맞추고 어떻게 진행해야할지 감을 잡게 된 좋은 경험이였다.!!