DevFest 2024 : 삐약톤 캠퍼스 대항전 우수상 후기

eora21·2025년 1월 25일
3

삐약톤: 캠퍼스 대항전 회고입니다.

첫 해커톤

여러분은 해커톤 경험이 있으신가요?
새벽 코딩은 많았어도, 모두가 밤을 새며 프로그래밍해본 적은 손에 꼽힐 것 같습니다. 예로 학부연구생 시절 마감 코앞의 기업 과제를 수행한다던가, SSAFY나 NHN 아카데미 발표 전날에 이슈 터져서 그거 수습한다던가.. 그리 좋은 기억은 없네요 ㅎㅎ

앞선 이야기들은 '이미 기획대로 진행되어 있고, 마감 직전에 문제가 생긴 경우'이지만, 해커톤은 '무박 2일 안에 기획, 디자인, 개발이 모두 수행'되어야 하므로 굉장히 힘든 일이라 생각했습니다.

더군다나 10~20년지기 친구들과도 밤을 안새는데(미안하다 얘들아), 아직은 서로에 대해 잘 모르는 사람들과 24시간 넘게 같이 있어야 한다는 것도 하나의 부담이었습니다.

그럼에도 불구하고, 첫 해커톤을 수행하게 되었습니다.

어떻게 참여하게 되었는가

네이버 부스트캠프 수료 후 해커톤 제안이 왔습니다.
안드로이드의 영수님께서 주최하시던 회고 스터디에서 친해진 분들이었는데요, 아이러니하게도 부스트캠프 내에서는 접점이 많이 없었습니다. 따라서 '이번 기회를 통해 더 친해지고 싶다'는 생각이 들었습니다.
무엇보다 다들 믿음직한 분들이었기에, 알을 깰 수 있었던 것 같아요.

멤버 구성

멤버는 총 4명으로 구성되었습니다.

이유진 - 리더, FE, 디자인
권나연 - FE, 와이어프레임
김정한 - BE, 메인 비즈니스 로직 및 트러블 슈팅
김주호 - BE, 인프라 구축 및 서브 비즈니스 로직

팀을 구성할 때에는 FE, BE만 나눈 상태였어요. 개발을 진행하다 보니 내부적으로 포지션이 자연스레 나눠지더라구요 ㅎㅎ 신기한 경험이었습니다!

이하 내용부터는 참여 시점에서 서술하도록 하겠습니다.

시간표

개인 참여자분들은 10시에 모여 팀 구성을 했고, 팀 참여자분들은 10시 반에 체크인을 수행했습니다!
(저는 지방러라서, 혹여나 늦을까봐 일찍 출발했는데.. 너무 일찍 도착해버려서 혼자 덩그러니 앉아있었습니다 ㅋㅋ..)

수많은 몬스터들.. 아쉽게도 저는 카페인을 섭취하면 안되기 때문에 그림의 떡이었습니다.
(이후 커피도 대량으로 들여와주셨어요)

DevFest 티셔츠도 있었구요(실내복으로 잘 사용중입니다 ㅎㅎ).

쿠키와 스티커도 있었습니다!
특히 물병에는 인프런 30% 할인 쿠폰이 적혀있었어요 ㅎㅎ

오프닝 & 연사세션

간단한 설명 후에 연사 세션을 가졌는데요, 각 세션마다 가장 중심적이었다고 생각하는 내용들을 올려보겠습니다.

GPT 세상에서 프론트엔드 커리어의 방향

제목은 프론트엔드 커리어였지만, 모든 개발자에게 통용되는 세션이었다고 생각해요.
그 중 가장 와닿았던 내용은..

며칠 전 면접에 들어갔을 때 이 말씀이 계속 떠오르더라구요. 결국 동작은 하지만 내부적으로 어떻게 돌아가는 지 모르면 문제 대응은 커녕, '문제를 정의'할 수 조차 없지 않을까 라는 생각이 듭니다! (그래서 뒤늦게 기본기 공부중.. 😂)

그리고 특히 감사했던 건, 무료로 왓에버 이력서 멘토링 신청을 지원해주셨다는 점이에요! 공지가 올라오자마자 바로 신청했고, 덕분에 며칠 전 좋은 내용의 피드백을 들을 수 있었습니다(이미 여기서 '해커톤 뽕 뽑았다'고 생각했었어요)!

개발 커뮤니티, 나만의 무기로 만들기

두번째 세션에서는 '커뮤니티를 어떻게 사용해야 하는가?'에 대한 말씀을 들려주셨습니다!

커뮤니티에 기여하고, 무언가 경험해본다는 게 정말 중요하다는 것을 깨달았습니다.
물론 다른 내용들도 다 좋았습니다! 그럼에도 개발 커뮤니티를 강조한 이유는 저희 아이디어와 연관되어 있기 때문이에요 ㅎㅎ

햄버거 먹으며 아이디어 기획

크라이치즈버거 사장님의 감동적인 편지가 특히 좋았습니다 ㅎㅎ 정말 맛있게 먹었어요! 감사합니다!

사실 '해커톤은 기획 싸움이다'라고 할 정도로 아이디어가 중요했습니다. 삐약톤 채점 기준만 봐도 확 느껴지실 것 같아요.

보시다시피 주제와 가설의 배점이 높습니다. 반면 완성도 쪽은 무박 2일동안 프로그래밍을 해야 하는 점을 감안해서, 상대적으로 낮은 것을 확인할 수 있었어요.

그래서, 주제는 무엇이었는가?

삐약이(우리)들의 문제를 해결하는 것이었습니다! 무엇이든 좋으니 '우리가 지니고 있는 문제를 해결하는 것'이었어요.

프로그래머란 코딩하는 사람이 아니라 문제를 해결하는 사람이라고들 하는데, 딱 맞아떨어지는 주제였다고 생각했습니다.

이 때 나연님이 아주 좋은 아이디어를 내주셨는데요, 이전 연설이었던 '커뮤니티를 무기로 만들기'를 듣고 해커톤에서는 다른 팀 사람들과 커뮤니케이션을 구축하기에는 힘들지 않나?라고 문제를 정의해주셨어요. 따라서 저희는 행사 내에서 빠르고 쉽게 다른 사람들과 네트워킹할 수 있는 서비스를 구축해보기로 했습니다!

순식간에 저녁

아이디어 설명하고 왜 갑자기 저녁 이야기를 하냐구요?
진짜 시간이 쏜살같이 지나갔기 때문이에요..

ERD 회의하고, 서버 조금 구성하고, Oauth2 설정했더니 갑자기 저녁이더라구요. 믿어지지가 않았습니다..

손에 들린 한솥도시락이 그나마 현실을 일깨워주는 장치였어요. '아 저녁이구나' 싶은..

인프라 구축을 조금 더 서둘러야겠다고 생각했습니다.

틈틈히 기획된 이벤트들

야간 이벤트로 보물찾기도 기획해주시고, 가벼운 주류와 함께 신년 계획도 세우는 시간이 있었어요.
깜짝 이벤트로, 몇몇 분들께 책들도 나눠주셨구요.

문제는 저희 팀 모두가 개발하기에 바빠서.. 이벤트를 하나도 참여 못했습니다. 혹여나 이벤트 참여하신 분들은 댓글로 후기를 적어주세요 ㅎㅎ..

야식을 먹으며

야식으로는 치킨과 피자가 제공되었습니다! 이 때 특히 이런저런 이야기를 많이 했던 것 같아요.
큰 강의실을 하나 빌려서 진행하다 보니, 서로 얼굴을 마주하기가 힘들었거든요(책상과 의자가 고정되어 있어서 많이 불편했습니다).

현재 진행도가 얼마인지, 어디까지 진행할 수 있을지, 우리의 서비스가 얼마만큼의 가치를 창출할 수 있을지 이야기했어요. 확실히 맛있고 기름진 음식이 들어가니까, 에너지 보충이 확 되더라구요! 서로 웃으며 이야기할 수 있어 좋았습니다 ㅎㅎ

식사 이후에는 잠깐 쉬면서 유진님의 피그마 작업물들을 봤는데.. 너무 이쁘게 잘 만들어주셔서 감탄했습니다! '해당 UI 표현에 문제가 없도록 BE 구성을 잘 해야겠다'고 다짐했어요!

실시간 위치 시스템 도입?

야식을 먹다가 든 생각인데, H3 오픈소스와 소켓을 도입해서 '내가 아직 커뮤니케이션하지 못 한 사람들이 주변에 몇 명이나 있는지'를 알려주면 굉장히 재미있을 것 같다는 생각이 들었어요.

인프라가 어느 정도 자리를 잡은 상태였기에, 팀원들의 지지를 얻어 아이디어를 구상하고 개발에 착수했습니다만.. 밑의 이슈들로 인해 구현하지 않기로 결정했습니다.

익숙한 새벽, 익숙하지 않은 문제들

불면증 환자에게는 새벽이 익숙합니다 ㅎㅎ..

배포와 로컬 환경에서의 문제

로컬에서는 동작되지 않는데, 배포 환경에서는 정상 동작하는 문제가 생겼습니다.
그렇다고 매번 배포하며 진행하기엔.. FE분들의 노고가 상당할 것 같았어요.

또한 FE분들 노트북에 자바가 깔려있지 않았기에, 로컬에서 백엔드를 돌리기 위해서는 Java를 설치하고 환경변수를 세팅해야 하겠더라구요.

우연찮게도 며칠 전에 도커 컴포즈를 간단히 만져본 경험이 있었어요. 이를 살려 컨테이너 환경을 구축했고, 로컬에서도 환경이 잘 구축될 수 있도록 구성했습니다!

사소한 것들에 의해 딜레이가 생기다

하지만 문제는 또 생겨버리고 맙니다.
BE 인프라를 구축한 후, FE분들을 도와 api 코드를 미리 작성해뒀어요. 헌데 withCredentials를 빼먹어서 쿠키 전달이 되지 않는 불상사가 생겨버렸지 뭐에요..

'같은 로컬인데 왜 쿠키 전달이 수행되지 않지?'라는 생각에 머리가 아팠는데, 제 잘못이었던걸로..

또 오랜만에 스프링을 해서 그런지 사소한 실수들이 계속 이어졌어요. @RequestBody를 빼먹는다던가.. 정한님이 이러한 내용들을 바로잡아주고, FE와의 트러블슈팅도 도맡아 해결해 주셨어요. 프로젝트 핵심 로직을 맡느라 머리가 복잡하셨을텐데.. 정말 감사했습니다!

잠깐 한숨 돌릴까..?

얼추 이슈들을 해결하고, 도넛을 먹으며 잠깐 분위기를 전환하는 시간을 가졌어요.
당이 들어가니 머리가 잘 동작하더라구요! 서로 소통도 하는, 뜻깊은 쉬는 시간을 보냈다고 생각합니다.

(도넛 선물해주신 나연님 지인분께 정말 감사합니다!)

동이 트고, 조급함이 뜨이다

역경과 고난은 오지 않을 것 같을 때 찾아온다고 하던가요..

제 생각엔 가장 힘든 시간이 오전 6시부터 8시였던 것 같습니다.
창밖이 밝아지며 '마감이 다가오는구나', '아직도 이런저런 기능이 수행되지 않는데 어떻게 하면 좋을까' 등등 신경이 곤두서는 시간이었던 것 같아요.

배포 서버도 잘 돌아가다가 갑자기 문제가 발생해서, 이유를 찾느라 시간을 많이 허비하기도 했구요.

특히나 피곤함이 겹쳐 팀원 모두가 살짝은 예민해져 있던 것 같아요. 하지만 서로가 서로를 이해했기에 큰 트러블 없이 종료할 수 있었습니다. (물론 코드는 트러블 많았어요 ㅎㅎ.. 배포 서버 이슈는 결국 해결을 못 해서 로컬 환경으로 구동했습니다.)

발표

발표자료는 만드셨나요?

결과물 발표는 부스 형식으로 운영된다길래, 따로 발표자료를 만들지 않았습니다. 실제 프로젝트가 구동되는 것들을 보여드리면 될 거라고 생각했기 때문이에요.

하지만 배포 서버에 문제가 있으니, 제 노트북으로만 예시를 보여드리게 되었습니다. 이 부분은 아직도 아쉽네요.

(다만 부스를 돌면서 발표자료가 준비된 조들이 더 어필되었던 것 같아요! 이 부분은 각자 판단하시면 되겠습니다!)

발표는 누가?

원래 발표는 제가 하기로 되어 있었습니다. 대본 없이 즉흥 발표하는 걸 좋아하는 편이기도 하구요.
다만 저는 '우리가 만든 것들'을 위주로 설명하고, 기획 의도나 아직 미비한 점들을 직접적으로 이야기하지는 않았습니다.

부스 형식이다보니, 제가 돌아다니는 동안 누군가는 부스에 남아 발표를 진행해야 했어요. 다른 팀 발표들을 듣다가 슬쩍 저희 부스로 왔을 때 리더인 유진님이 발표하고 계시더라구요.

이 때 유진님의 발표를 듣고 깜짝 놀랐습니다. 기획 의도 -> 실제 동작 -> 미비한 점은 Figma로 설명 -> 앞으로의 방향성을 모두 이야기해주셨거든요. 그 순간 정말 많이 배웠습니다.

이후 자연스럽게 유진님께 발표를 권했고, 덕분에 좋은 결과가 있었던 것 같아요.

수상

총 22팀 중 수상의 기회는 3팀에게 주어졌습니다. 가장 많은 투표를 받은 팀은 인기상을, 우수상과 최우수상은 투표 + 운영진분들의 채점으로 진행되었어요.

인기상

인기상은 'FORIF'팀에게 주어졌습니다! 24/7 삐약 상담소 서비스를 만드셨어요!

저희는 맨 앞에 위치해 있었는데, FORIF 팀은 맨 뒤에 위치해 계셔서 아쉽게도 아이디어를 듣지 못 한 상태였어요. 뒤로 가다가 3/4 지점에서 부스 탐방 시간이 끝나버렸었거든요.. (시간 내에 모든 부스를 둘러보자는 게 목표였으나, 팀마다의 기획과 진행상황을 모두 파악하기에는 짧았던 것 같습니다.)

그래서! 삐약톤이 끝난 후 해당 팀의 리더분께 인터뷰를 요청했습니다. 이하 인터뷰 내용입니다!

어떠한 아이디어를 구상하셨나요?

저희는 '삐약상담소'라는 특별한 고민 상담 플랫폼을 구상했습니다. 기존의 시중에 존재하는 AI 상담 서비스와는 달리, 자신이 존경하는 역사적 위인이나 영향력 있는 인물, 애니메이션 캐릭터까지 사용자가 원하는 인물을 선택하고, 원하는 인물의 AI 페르소나로부터 직접 조언을 구할 수 있는 시스템입니다.

특히 1:1 상담뿐만 아니라, 두 명의 인물이 나의 고민에 대해 서로 토론하며 다각도로 조언해주는 2:1 상담 기능을 구현했다는 점이 특징입니다. 이를 통해 사용자들은 자신이 평소 궁금했던 인물들의 관점에서 현재 자신의 고민에 대한 해결책을 얻을 수 있습니다.

해당 아이디어는 어떠한 과정을 거쳐 도출되었나요?

'삐약이들의 문제를 해결하자'라는 해커톤 주제를 받았을 때, 저희는 이 주제가 자칫 진부하거나 이미 시중에 존재하는 서비스와 비슷한 플랫폼을 만들게 될 수 있다는 우려가 있었습니다. 그래서 저희는 기존과는 다른 접근방식으로, 창의적이면서도 재미있는 요소를 갖추고, 동시에 실질적으로 문제를 해결할 수 있는 서비스를 만들고자 했습니다.

이런 고민 끝에 위키피디아의 방대한 데이터를 LLM에 학습시켜 다양한 인물들의 AI 페르소나를 구현하고, 사용자 맞춤형 상담을 제공하는 '삐약상담소'를 도출하게 되었습니다. 이를 통해 사용자들은 자신이 원하는 인물의 관점에서 조언을 받을 수 있고, 두 인물 간의 토론을 통해 다각도의 해결책을 얻을 수 있는 독특한 상담 경험을 제공하고자 했습니다.

무박 2일이라는 짧은 시간 동안, 어디까지 구현하셨나요?

24시간이라는 제한된 시간 동안 프론트엔드, 백엔드, AI 파트를 모두 구현하고 서버 배포까지 완료했습니다. 위키피디아 크롤링을 통한 인물 정보 수집, LLM을 활용한 페르소나 구현, 1:1 및 2:1 상담 기능, 실시간 채팅 시스템 등 핵심 기능들을 모두 구현했습니다!

개선사항으로는 어떤 점들이 있을까요?

현재 두 가지 주요 개선사항이 있습니다. 첫째, 동명이인이나 동음이의어에 대한 처리가 필요합니다. 위키피디아에서 같은 이름으로 여러 문서가 존재할 경우 정확한 인물을 특정하는 기능이 필요합니다. 둘째, 사용자 경험 개선을 위해 뒤로가기와 새로고침 시 재로그인이 필요한 문제를 해결해야 합니다. 추후에는 이러한 기술적인 문제들을 보완하여 더 안정적인 서비스를 제공하고자 합니다.

수상소감 등의 후기 남겨주시면 감사하겠습니다!

저희 팀은 프로젝트 기획 단계에서 중요한 방향성 결정에 직면했습니다. 팀원들과의 논의 끝에, 저희는 대중성과 창의성에 중점을 둔 프로젝트를 진행하기로 결정했습니다. 그 결과로 탄생한 것이 '역사적 인물과의 대화 상담소'라는 컨셉이었습니다. 세종, 정약용과 같은 역사적 인물들과 실시간으로 대화하며, 현실적인 문제에 대해 고민을 나눌 수 있는 플랫폼을 구상했습니다.

개발 과정에서는 예상치 못한 기술적 문제에 마주했습니다. 특히 실시간 채팅 시스템 구현과 AI API의 안정성 확보가 주요 난관이었습니다. 웹소켓을 통한 AI 서버 연동 과정에서도 여러 기술적 이슈들을 해결해야 했고, 이는 당초 계획했던 것보다 많은 시간을 필요로 했습니다. 이러한 문제 상황 속에서도 저희 팀은 끈기있게 프로젝트를 마무리하고 서버에 배포까지 완료할 수 있었고, 참가자들의 호응을 얻어 인기상이라는 뜻깊은 성과를 거둘 수 있었습니다. 다른 팀들의 프로젝트들 사이에서 저희의 결과물이 많은 공감을 얻은 것 같아 의미 있는 경험이었습니다.

인터뷰 요청에 응해주신 FORIF 팀 분들께 정말 감사합니다! 인기상 축하드려요!

우수상

우수상은 놀랍게도 저희 팀이었습니다. 놀란 수준이 아니라 진짜 4명이 다 굳어있었어요 ㅋㅋㅋㅋ..

정신 차리고 보니 굉장히 어색한 공기가 흘러가고 있었습니다. 그도 그럴 것이 아무도 리액션 안하고 눈만 동그랗게 뜨고 있으니까.. 그래서 그냥 와! 하고 소리 한번 질렀습니다(어색한 거 못참는 타입)!

저희 결과물은 FE, BE 깃헙링크와 피그마 디자인으로 보여드리도록 하겠습니다!
자세히 설명하지 않는 이유는.. 실제 서비스를 통해 여러분을 찾아뵙고 싶기 때문입니다 후후..

대신 GDG Campus Korea측의 따뜻한 피드백을 첨부해보도록 하겠습니다!

최우수상

최우수상은 '십구점오' 팀에게 주어졌습니다!

시간 상 스쳐지나가면서 1~2분간 발표를 들은 팀이었는데, 아주 잠깐 사이에도 굉장히 좋은 기획 및 많은 노력을 했다는 걸 알 수 있었습니다. 따라서 해당 팀에게 한표를 던졌는데, 최우수상을 받으셔서 제가 더 기뻤던 기억이 있네요 ㅎㅎ

아쉽게도 인터뷰 요청을 드렸으나, 아직 내용을 전달받지 못했어요. 전달받게 되면 바로 업로드하도록 하겠습니다!

최우수상 축하드려요!

후기 및 회고

나는 과연 제 역할을 다 했는가?

아이디어는 나연님이, 디자인 및 발표는 유진님이, 핵심 비즈니스 로직 및 트러블 슈팅은 정한님이 해주셨습니다.
솔직히, 제가 한 부분들은 굉장히 적었다고 느껴져요. ci/cd도 결국 서버에 문제가 생겨서 무의미해졌고, 도커 컴포즈를 사용한 방법도 지금 생각하면 굉장히 비효율적이었거든요..

그래도 한 일들을 찾아보자

핵심 비즈니스 이외의 로직들을 처리하기 위해 노력한 점 정도가 있을 것 같아요.

Oauth2를 선택할 때 네이버, 카카오, 구글 등에서 골라야 했어요. 이 때 이전 경험에 의해 카카오를 선택했습니다.
네이버와 구글은 실사용자 수를 받으려면 따로 검수 과정이 필요했기 때문이에요.

후딱 카카오 Oauth를 구성하고, 로그인 처리가 잘 되도록 시큐리티를 구성했습니다.

그 외 cors 문제라던가, 기타 등등도 잘 처리했구요.

서버도 띄우고, FE에서 잘 쓸 수 있도록 도커 컴포즈 구성하고, ci/cd 작업하고.. 당일 배포에 이슈가 생겨서 아쉬움이 클 뿐, 그래도 조금은 도움이 되었다고 생각합니다.

다음에 또 이러한 기회가 온다면, 그때는 더 잘 할 수 있을 것 같아요!

배운 것

달리기만 하면 돌아볼 여유가 없다

하루라는 시간 내에 달리기만 했더니, 이슈를 돌아보고 무언가를 깊게 배울 여유가 없었던 것 같습니다.
CS 지식이 중요한 이유도 이 중 하나라고 생각해요. 달리면서도 논리적으로 파악하고, 순간순간 문제를 해결할 수 있으려면 배경지식이 기반이 되어야 하니까요.

이번에 ai를 많이 사용했는데, 덕분에 빠르게 달릴 수 있었습니다. 하지만 해당 속도는 '내 지식과 경험에 비해' 너무나도 빨랐기에 순간순간을 돌아보기 힘들지 않았나 싶어요.

지식들은 지면을 박차는 힘과 같다고 생각해요. 만약 제가 H3에 대해 이미 학습한 상태였고, Node나 스프링 웹플럭스를 잘 다룰 수 있었다면 위치 기반 로직을 넣을 수 있었을 것 같아요. 하지만 무작정 달리면서 이것저것 시도하기에는 적합하지 않으리라 생각했고, 트러블 슈팅에 더 힘을 쏟으며 자연스레 내려놓게 되었습니다(이때가 새벽 1시쯤이었던 걸로 기억하네요).

'10시간이면 되지 않을까?' 라고 생각할 수 있어도, 그저 사용하는 것이해하고 적용하는 것은 다른 문제인 것 같아요.

도커 컴포즈 관련

제가 작성한 도커 컴포즈 코드는 '컨테이너가 생성될 때 동작'하도록 설정되어 있었어요.
이에 따라서, 매번 컨테이너를 삭제하고 재생성해야만 적용이 되었습니다.

컨테이너 내부에는 기본 환경 설정을 구축하고, 컨테이너가 실행될 때 정해진 코드들이 동작하도록 구성했다면 매번 초기화할 필요가 없을 것 같다는 생각이 들었어요.
물론 개인 프로젝트에서는 문제가 없었으나, 코드가 계속 변경점이 생기는 협업 지점에서는 해당 사항이 큰 문제가 되지 않을까 싶습니다.

앞으로의 계획

위의 회고들을 통해, 더 도움이 될 수 있는 팀원이 되어 보고자 합니다.
CS 지식도 꾸준히 학습하고, 도커 컴포즈같은 기술들에 대해서도 '어떤 게 우리에게 적절한 해결책일까?'를 고민하는 시간을 가져보려고 해요.

이 글을 보는 분들이 어쩌면 제 동료가 될 수도 있을 것 같아요! 그 때에는 더 성장한 제 모습을 보여드릴 수 있다면 좋겠습니다 ㅎㅎ

profile
나누며 타오르는 프로그래머, 타프입니다.

2개의 댓글

comment-user-thumbnail
2025년 2월 6일

안녕하세요, 삐약톤에 참가했던 참가자입니다 :)
해커톤 당일 부스 운영 시간에 시간이 부족하여 서비스를 구경 못 해서 아쉬움이 남았었는데, 서비스로 출시한다니! 기대하면서 기다리고 있겠습니다! 우수상 수상도 축하드립니다!

(중간중간 이벤트들은.. 동심으로 돌아가는 느낌이었습니다)

1개의 답글

관련 채용 정보