대전에서 열린 첫 해커톤
2024년 8월, 대전 라마다 호텔에서 열린 ART 리빙랩 글로컬 해커톤에 다녀왔다.
AWS와 NxtCloud가 주관하고, 여러 대학이 공동으로 참여한 행사였다. LINC 3.0 참여 대학의 참여 학과 소속 학생이라면 신청할 수 있었고, 내가 있던 쪽에서는 신청자가 많지 않아 나를 포함해 총 세 명이 참가했다.
혼자 무언가를 만들어본 경험은 있었지만, 이런 개발 해커톤에 참가하는 것은 처음이었다. 그래서 행사장에 들어갈 때 꽤 긴장한 상태였다. 초반 분위기는 생각보다 진중했다. 아직 본격적인 행사가 시작되기도 전인데 이미 서비스 컨셉이나 기술 구현 방식에 대해 논의하는 참가자들이 있었다. 이왕 온 만큼 제대로 배우고 가자는 마음으로 해커톤을 시작했다.
사전 학습과 AWS Skill Builder

해커톤에 참여하기 전, Slack과 AWS Skill Builder를 이용해 AWS 클라우드 인프라에 대한 사전 학습을 진행했다.
클라우드 기초 강의인 Cloud Practitioner Essentials는 이미 AWS를 사용하며 알고 있던 내용이 많아서 어렵지 않게 들을 수 있었다. 반면 Serverless Learning Plan은 기초 강의에 비해 훨씬 심화된 내용이 많았다. 특히 고가용성, 성능 최적화에 초점을 맞춘 부분은 이해하기 쉽지 않았다.
각 리소스별로 “어떻게 성능을 올리고 최적화할 것인가?”라는 접근 자체는 이해할 수 있었지만, 내부 구현이나 이론적인 부분까지 따라가기는 어려웠다. 이벤트 기반 서버리스 클라우드 아키텍처도 평소 AWS 리소스를 활용해 직접 경험해본 적이 많지 않아 직관적으로 이해하기 어려웠다. 내부 인프라의 성능적인 부분은 아직 내가 완전히 이해할 수 있는 단계는 아니라는 생각도 들었다.
기초 강의 이후 중간 단계 없이 바로 심화 이론으로 넘어가는 구성은 조금 보완되면 좋겠다고 느꼈다. 실제 해커톤에서도 EC2, VPC, 리전 같은 기초 개념은 반드시 알아야 했고 잘 활용했다. 그러나 Serverless 부분에서는 Lambda를 제외한 다른 고수준 리소스를 쓸 기회가 많지 않았다. Lambda마저도 인공지능과 서버리스를 잘 아는 팀원에게 배우면서 계속 수정했다. Serverless 강의는 따로 시간을 내서 다시 공부해야겠다고 생각했다.
GenAI API와 Streamlit 실습

해커톤에 앞서 NxtCloud에서 Claude, OpenAI 등 생성형 인공지능 API와 Streamlit을 이용해 빠르게 인공지능 솔루션을 제작하는 방법을 실습 위주로 알려주었다.
평소에는 Spring이나 Node.js 같은 서버 프레임워크를 사용해 서버 애플리케이션을 만들었다. 그런데 OpenAI API는 이미 API가 존재하는 환경이기 때문에, Streamlit을 통해 화면과 API 통신을 빠르게 구현하고 프로토타입을 빠르게 뽑아낼 수 있었다. 이 과정에서 프로토타입을 만드는 노하우를 함께 배울 수 있었다.
이 시점 이후 모든 자료 공유와 소통은 Slack을 통해 진행되었다. 그 과정을 겪으면서 Slack이 왜 협업 도구로 많이 쓰이는지 체감할 수 있었다.
함께 온 분들 중에는 프로그램 개발이나 CLI 사용이 처음인 경우도 있었다. 그래도 사전에 준비된 강의 자료와 코드베이스가 제공되었고, Cloud9을 통해 직접 실습할 수 있는 구조였기 때문에 모두 어렵지 않게 따라갈 수 있었다.
평소 웹 UI를 만들 때는 React보다 비교적 사용하기 쉬운 Vue.js를 선호했는데, 이번에 파이썬 기반의 Streamlit을 접하면서 생각이 조금 바뀌었다. “이게 된다고?” 싶을 정도로 적용이 간편한 툴이었다. 나중에 따로 공부해서 써먹어보고 싶다는 생각이 들었다. GenAI API의 기초적인 요소와 사용법을 실습으로 어렵지 않게 배울 수 있었던 점도 큰 장점이었다. 다음 해커톤에서도 꼭 유지되었으면 하는 부분이었다.
AWS 특강


생성형 AI 사용법 교육 이후에는 AWS 측에서 IT 트렌드의 변화와 클라우드 기반 서비스의 장점에 대해 특강을 진행했다.
개인적으로는 실습이 없는 세션이었지만 가장 인상 깊었다. 클라우드가 어떤 방식으로 발전해왔는지, 기존의 소유 중심 온프레미스 IT 리소스가 어떤 이유로 임대 중심의 클라우드 패러다임으로 변해왔는지, 그리고 AWS가 초기 시장을 어떻게 점유했고 거대한 글로벌 클라우드 인프라를 어떤 방식으로 설계했는지 어느 정도는 알고 있었다. 하지만 실제로 접한 규모는 생각 이상이었다.
또한 클라우드로 IT 패러다임이 바뀌면서 데이터 수집이 쉬워졌고, 이를 유지하기 위한 보안 솔루션과 데이터를 활용한 학습으로 이어지는 흐름을 AWS 관계자에게 직접 들으니 클라우드 인프라가 한층 더 대단하게 느껴졌다.
이 특강은 해커톤 중간에 진행된 세션이었지만, 이후 더 발전된 주제로 별도의 행사가 열린다면 친구와 함께 참여하고 싶을 정도였다. 해커톤 중간에 이런 흥미로운 주제의 특강이 더 많이 추가된다면, 클라우드를 좋아하는 사람들은 이런 해커톤에 더 큰 관심을 가질 것 같았다.
라마다 호텔

저녁을 먹고 잠깐 방에 들어왔다. 어차피 무박 해커톤이라 누울 기회가 별로 없을 것 같아 침대에 대한 감상은 크게 없었다. 설상가상으로 뷰도 건물 외벽이라 볼 것이 없어서 짐만 풀고 바로 나왔다. 혹시 이곳에서 또 행사가 열린다면 604호 키를 받았을 때는 다른 방으로 바꿔달라고 요청할 것 같다.
팀빌딩과 아이디어 회의


저녁 식사 없는 저녁 식사 이후, AI를 활용해 기술 스택별로 팀을 배정하는 시스템을 통해 나는 2조에 배정되었다. 팀원들과 간단히 인사한 뒤 Slack을 이용해 서로 아이디어를 내고 팀 컨셉을 정하는 팀빌딩 과정을 진행했다.
나는 해커톤 직전에 급하게 주제를 생각해왔기 때문에 내용이 풍성하지 못해 조금 부끄러웠다. 반면 팀원들은 상당히 높은 기술력을 요구하는 아이디어부터 독특한 아이디어까지 여러 가지를 제안해주었다. 19시부터 22시까지 계속 아이디어 회의를 하고 필요한 기술 스택에 대해 토론했다.
폐기된 프로젝트를 다시 살려 개발해보자는 의견도 있었고, 여러 컨셉 기반의 아이디어도 나왔다. 하지만 해커톤 평가 기준에 맞추어 “지역사회의 문제 해결”이라는 공통 포인트가 중요했다.
이 과정에서 정말 괜찮았다고 느낀 부분은 멘토링이었다. 팀원들끼리 아이디어를 선별한 후, 몇 분의 CTO와 주최 측을 포함한 여러 전문가들이 약 20분 정도 아이디어를 심도 있게 멘토링해주었다. 경험이 많은 분들이라 그런지 팀원들과 함께 상의했을 때 확인하지 못했던 부분들을 깔끔하게 지적해주었고, 해결책이나 의견도 이해하기 쉽게 제시해주었다. 단순히 참가자들을 모아두고 “알아서 해라”라고 하는 해커톤이 아니라, 운영진과 멘토들이 깊은 관심을 가지고 고민해준다는 느낌을 많이 받았다.
또한 이 과정에서 팀장님이 각 아이디어를 깔끔하게 설명하고 비교 분석한 내용을 운영진에게 전달하는 방식이 굉장히 인상 깊었다.
팀빌딩과 아이디어 회의가 어느 정도 마무리된 뒤 최종 선정된 주제는 “계약서 비교 분석 애플리케이션”이었다. 팀원 중 한 분이 제안한 아이디어였고, 제안된 아이디어들 중 현실성과 구현 가능성이 가장 높다고 판단해 합의하에 선정했다.
핵심은 우리 또래 대학생들이 전월세 계약을 할 때 사전에 필요한 사항을 점검하고, 전월세 계약서의 유효성과 완전성을 생성형 인공지능을 통해 검토할 수 있게 하자는 것이었다. 이를 조금 더 세분화해 “안전한 내 집 계약 인공지능 서비스 플랫폼”이라는 주제로 개발을 시작했다.
개발 과정

가장 고전적인 클라이언트-서버 아키텍처를 이용해 개발하기로 했다. 클라이언트는 Streamlit으로 빠르게 결과물을 확인하고, 이후 React와 통합하는 방향으로 정했다.
중요한 부분은 서버였다. AWS에서 제공하는 서버리스 솔루션인 Lambda 기반으로 가벼운 구조를 만들지, 아니면 EC2를 생성하고 웹 서버를 올릴지 여러 차례 논의했다. 나는 AI에 대해 아는 것이 프롬프트 기반의 답변 유도 정도였기 때문에, RAG 등 여러 기법을 사용할 줄 알고 인공지능을 전공하는 팀원의 의견에 따라 Lambda를 적용해 AWS 클라우드 기반 서버를 만들기로 했다.
처음 써보는 Lambda는 만만하지 않았다. 프론트에서 엔드포인트를 이용해 Lambda를 효율적으로 호출하려면 요청과 응답을 처리해주는 API Gateway를 이용해야 했다. REST API Gateway 생성과 Lambda 통합까지는 잘 되었고, Lambda 호출 자체도 이루어졌다. 하지만 파악하기 어려운 이유로 오류 응답이 계속 발생했다.
중간에 AI를 담당한 팀원이 Lambda 함수를 작성한 뒤, OCR 관련 문제를 해결하기 위해 해커톤 내내 붙잡고 수정했다. 오류 응답은 권한 설정 문제로 추측했고, 직접 해결하기 어려워 도움을 요청했다. 운영 측 클라우드 전문가도 원인을 파악하기 어려워했던 것을 생각하면 IAM 권한 설정은 절대 만만하게 생각해서는 안 된다는 점을 다시 느꼈다.

처음 설계할 때는 사용자 정보를 저장하지 않고 GenAI API만 잘 호출하면 된다고 생각했다. 그래서 EC2와 Spring 또는 Node.js 서버가 필요 없을 것이라고 판단했다. 하지만 권한 오류로 Lambda 호출이 잘 되지 않기 시작하면서 급하게 Spring Boot 프로젝트를 만들고 개발하려고 했다. 그러나 API 권한 문제와 빌드 오류 때문에 결국 사용하지 못했다.
다행히 AI를 맡은 팀원이 Lambda 문제를 해결하고 통합을 완료해주어서 프로토타입을 완성할 수 있었다. 사용할 수 없게 된 Spring Boot 웹 서버는 해커톤이 끝난 뒤 따로 OCR 기능과 API 호출 기능을 통합해 결국 깔끔하게 완성했다.
발표와 결과
해커톤을 거의 13시간 동안 거북목 상태로 노트북만 보면서 진행하다 보니 반쯤 정신이 나간 상태였다. 그래서 발표 장면은 아쉽게도 찍지 못했다. 그래도 기억에 남는 것은 팀장님이 발표를 정말 완벽하게 진행했다는 점이다. 전달력과 진행이 모두 깔끔했고, 피곤한 상황에서도 이해하기 쉽게 발표하셨다. 앞으로 어디 가서 발표할 일이 있다면 꼭 기억해야 할 정도였다.
점심은 같이 온 분들과 근처 돈가스집에 가서 간단하게 먹었다. 서로 주제에 대해 이야기하며 괜찮은 시간을 보냈다. 커피를 7잔이나 마셔서 기억이 선명하지는 않지만, 다들 결과물을 잘 만들어서 수상을 기대했던 기억이 난다.

다른 팀들도 쟁쟁한 주제와 결과물을 보여주었다. 그래서 대상까지는 바라지도 않았고, 입상만 해도 다행이라고 생각했다. 그런데 대상을 받게 되었다.

또 정말 좋았던 부분은 나뿐만 아니라 함께 참여한 세 명이 모두 입상했다는 점이다. 모두가 상을 받고 좋아했던 순간에서 큰 성취감을 느꼈다.
깔끔하고 배울 부분이 많았던 시간이었다. 이곳에서만 할 수 있었던 경험이었고, 완벽한 팀원들과 함께할 수 있어 좋았다. 첫 해커톤이라 실수도 많이 했지만, 팀원들이 깔끔하게 커버해준 덕분이라고 생각한다.
다만 아쉬웠던 것 한 가지는 AWS 로고 노트북 스티커가 조기 소진되어 챙기지 못했다는 점이다.
그게 진짜 정품 인증 레어템인데.
아쉬운 대로 다른 스티커 몇 장만 챙겨왔다.

마무리
AWS 로고 스티커를 못 받은 것만 빼면 정말 깔끔한 해커톤이었다. 멘토들에게 배울 것도 많았고, 특강도 인상 깊었다.
어떤 이유에서인지 내가 있던 쪽에서는 참여자가 거의 없어서 어렵지 않게 참가할 수 있었다. 반면 다른 곳에서는 수십 명이 신청해 경쟁률이 꽤 높았다고 한다. 참여 경쟁이 붙었다면 참가 자체가 어려웠을 것 같은데, 운 좋게 첫 해커톤을 AWS 해커톤으로 시작했고, 여러 대학이 함께한 해커톤에서 대상까지 받았다. 받을 수 있는 운은 다 쓴 것 같다.
다시 이 해커톤이 열린다면 지인들을 설득해서 꼭 같이 나가고 싶다. 혹시 이 글을 보고 NxtCloud에서 주관하는 AWS 해커톤이나 행사에 참가할지 망설이는 사람이 있다면 꼭 해보라고 권하고 싶다. 여러 참여자를 묶어 진행할 수 있는 주최 측의 운영 능력, 멘토링, 진행, 이벤트가 모두 깔끔한 해커톤은 흔하지 않을 것 같다.
학생 신분으로 경험할 수 있는 협업과 멘토링 측면에서 최고의 경험이었다. 다른 행사도 공지가 뜨면 신청할 생각이고, 기회가 된다면 AWS 서울에도 가보고 컨퍼런스에도 참여해볼 예정이다.