2023년 6월 21일 ~ 23일, 대구 엑스코에서 진행된 해커그라운드 해커톤에 참가했다. 꽤 다사다난했던 대회였고, 배우고 생각했던 게 많은 대회였기에 회고를 적어보려 한다.
팀 결성
하이톤 참가 이후 밤새는 해커톤에 참가하지 않기로 다짐했지만 대소고 3학년의 심심한 나날을 보내고 있었던 나는, 이번 대회가 재미있어 보여서 참가 신청을 했다. 내가 신청하기 전에 김준호, 최민재 동기가 미리 신청해서 그 친구들과 같이 팀을 결성하기로 했다. 이번 해커톤 팀의 인원은 4명이라서, 나머지 1명은 현장에서 팀빌딩 시 초면인 대학생 분을 섭외하기로 계획했다.
학교에서 인정 결석 처리를 받고, 학교 버스를 타고 엑스코에 도착했다. 참가자 등록 후 티셔츠, 스티커 등의 굿즈를 받고 대회장에 들어가니 이미 여러 팀들이 4명으로 결성된 상태였고 남은 기획/디자이너 분들이 많이 없었다. 임기응변으로 우리 팀은 대소고 2학년 친구를 데려와서 집중적으로 성장을 돕는 방향도 괜찮다고 생각하여, 도현욱 후배를 팀으로 데려왔다. 그렇게 '도현욱 팀'이 모였다.
대회 시작 & 아이디어
"Microsoft Azure Cloud를 활용한 지역 문제 해결"이 이번 해커톤의 주제였는데, Azure Cloud를 처음 써보는 나로서는 꽤 험난한 길이 되겠다고 생각했다. 우리 팀의 팀원들도 모두 AWS나 Naver Cloud에는 꽤 익숙했지만 Azure Cloud는 초면이라고 했다. 일단 지역 문제 해결 서비스를 내기 전에 Azure Cloud에 어떤 특화 서비스(소프트웨어)가 있나 공부해봤다. ML 쪽 빼고는 특별히 다른 것이 없었고, SaaS 기반의 앱 배포 서비스라는 것 말고는 다른 백엔드를 배포하는 서비스들과 비슷했다. (새로 접해본 SaaS 배포 서비스라는 게 3일동안 우리 팀의 발목을 잡긴 했지만..!)
지역 사회의 문제에 대해 아이디에이션을 진행했다. 교통, 환경, 집값, 지역 인식, 주택 노후화, 치안, 주차 문제, 고령화 등 여러 문제 상황이 나왔지만, 우리 팀은 '근본적으로 수도권 과밀화 현상을 야기하는 것이 뭘까?' 고민했고, '일자리'라는 답을 내렸다. 양질의 일자리를 구하기 위해 젊은 인력들이 서울 및 수도권으로 몰리고, 그에 따라 서울 및 수도권에 회사를 설립하는 것이 인재 채용에 유리해지는 악순환이 반복되는 것이다. 이를 근본적으로 어떻게 해결할까 고민하다가, '지방에 거주하는 인재들의 자기 PR 기회를 만들어서 지방으로 기업을 분산시키는 해결책'을 채택했다.
이를 노션에 정리하며 아이디어를 구체화했다. 지역 인재를 중심으로 '자기 PR'과 '스카우트'가 이뤄진다는 점에서 다른 구인구직 서비스와의 차별점을 뒀고, 지도 UI를 사용하여 인재의 지방 분포를 한 눈에 알기 쉽게 하기로 했다. 서비스의 디테일에서 생기는 여러 쟁점에 대해서는 노션에 하나하나 기록하면서, 논리적으로 풀어나가려고 노력했다. (자세한 사항은 아래 사진을 참고하기 바란다.)
개발
백엔드는 생산성 및 다른 ML 서비스와 쉬운 연동을 고려하여 NestJS + MySQL 기술 스택을 채택했다. 백엔드 개발자인 나와 준호를 제외하면 두 팀원 모두 안드로이드 개발자라서, 클라이언트는 자연스럽게 안드로이드 앱이 되었다. 협업을 위해 가장 먼저 API 문서를 작성한 후 개발에 들어갔다. 준호가 첫째날 밤을 새우며 NestJS 백엔드를 개발하고, 내가 둘째날 밤을 새우며 Github Actions CI/CD를 구축하고 Azure Cloud에서 앱을 배포했다. 굉장히 많은 오류를 만났지만, 하나하나 해결하여 결국 배포에 성공했다.
안드로이드 팀도 치열하게 개발하고 배포 자동화를 진행하며 수면을 거의 취하지 않았다. 참고로 초안 디자인은 진행하지 않고 도현욱 팀원이 와이어프레임을 설계한 다음, 최민재 팀원이 숙련된 경험으로 즉석에서 개발과 동시에 디자인을 진행했다. 안드로이드 또한 Azure Cloud App Center를 통한 배포 자동화에 성공했다. 안드로이드 및 백엔드의 소스코드, 마크다운 문서들은 이 레포지토리에 저장되어 있다.
나는 배포를 하는 중간중간에 발표 자료를 만들어 나갔다. 도현욱 팀원이 노션에 작성한 내용 초안을 기반으로, 전하고자 하는 바가 뚜렷하게 전달되도록 만들었다. 발표 자료의 PDF본은 이 파일을 참고해주기 바란다.
어찌어찌 핵심 기능을 완성하여 더미 데이터를 가공하고, 시연 영상(제품 소개 영상)을 만들어 최민재 친구의 유튜브에 올렸다. 아래 영상이다.
https://www.youtube.com/watch?v=OsPPWuO2Orw&ab_channel=%EC%B5%9C%EB%AF%BC%EC%9E%AC
위기
이 대회를 진행하며 두 가지 (사소한) 위기가 있었다.
첫 번째, 대회 부적응이었다. 2박 3일동안 씻지도 못하고 편히 자지도 못하는 대회장에서 있다 보니 밖으로 나가고 싶었다. 대회 중간에 우리 팀원들이 함께 중도 포기하고 학교로 다시 돌아갈까 생각도 했지만, 이왕 참가한 거 마음을 다잡고 끝까지 최선을 다해보기로 했다. 2학년 후배를 영입한 책임은 져야 하니 끝까지 밤을 새가며 최선을 다했다.
두 번째, 예선 탈락이었다. 위 활동들을 하며 차츰 배포 심사 및 제출 시간이 다가왔는데, 그때서야 대회측 기술검증단 분이 서버측 배포 오류를 알려줬고, 마감 시간 내에 해결하지 못하여 본선에 못가게 되었다. 본선에 올라가면 발표 기회가 주어지는데, 성의껏 갈고닦은 아이디어 및 발표 자료를 세상에 내놓지 못해서 많이 아쉬웠다. 개인적으로 완전히 밤을 새본 적도 처음인데, 그럼에도 최종적으로 해결하지 못한 문제가 생겨서 속상했다.
결국 후회해도 바뀌는 것은 없고, 위기를 기회로 삼기로 했다. 최선을 다했던 경험을 내 안에서 자신감으로 바꿔 더 큰 경험을 해나가야겠다고 생각했다.
마무리
해커톤 3일차 데모데이에 본선 진출한 다른 팀들의 발표를 들으면서, 아이디어에 대한 영감도 받고 발표 욕구가 또 샘솟았다. 우리 팀이 기술적인 문제로 본선 진출에 실패하여 다른 사람들에게 우리 팀의 아이디어를 발표할 기회를 갖지 못한 것이 억울했지만, 이를 자양분 삼아서 언젠가 더 큰 기회에서 내 가치를 발휘할 것이라고 믿는다.
3학년으로 졸업하기 전에 많이 충격을 받고 배울 수 있는 기회가 있을까 싶었지만, 이번 대회가 그런 역할을 한 것 같다. 대회 진행 중간에 왜 참가했을까 후회도 많이 했지만, 결과적으로는 끝까지 최선을 다했던 경험으로 남아 포기하지 않았던 내가 굉장히 뿌듯했다. 힘들어도 포기하지 않고 밤을 지새우며, 누구보다 열과 성을 다해준 우리 팀에게도 많이 감사한다.
이 대회와는 별개로, 대회장으로 오는 버스에서 신한은행 최종 합격 소식을 듣고 주변 분들의 축하를 받았다. 약 3년간의 피나는 노력을 드디어 제대로 보상받는 감정이 들어 행복했다. 앞으로도 지금에 안주하지 않고 계속 성장하는 내가 되어야겠다.