2023-06-21~23 해커그라운드 참여 후기

주제

해커그라운드는 Microsoft와 경북대학교에서 주관하는 해커톤이라서 그런지 MS의  Azure 클라우드 서비스를 사용해서 대구, 경북 지역의 지역문제 해결하는 것이 주제인 해커톤이었다.

 

팀 빌딩

해커톤 장소에 도착하니 팀 빌딩이 끝난 팀과 팀 빌딩이 되지않은 참가자들로 나뉘어서 자리 배치를 시작했고, 팀 빌딩이 되지않은 참가자들은 개발자와 기획자로 나뉘어 착석했다.

총 4명이 모여야 팀 빌딩이 완료되는 구조였는데, 우리팀은 3명이었고 프론트엔드 개발자 1명을 구하기 위해 자리를 잡고 개발자를 찾고있었다.

대회장 안에서는 참가자를 찾지 못했지만, 해커그라운드 디스코드를 통해서 개발자 1명을 영입했고, 꽤 빨리 팀 빌딩을 끝낸 상태로 개발에 들어갔다.

 

기획

내가 팀장역을 맡았고 기획과 백엔드 개발을 담당했다.

해커톤 당일에 아이디어를 생각하고 개발을 바로 진행하는 것은 힘들 것이라고 생각하여, 미리 주제를 정하고 어떤 기술을 사용할 지 정해서 왔는데 우리 팀의 서비스는 "청년 유출 문제" 해결을 위한 "청년 정책 알림이"라는 앱을 구상했다.

"청년 정책 알림이"란 말 그대로 청년들이 받을 수 있는 혜택에 대한 정보를 알림으로 받을 수 있는 정보 알림 서비스이다.

추가적으로 다양한 정책 페이지에 흩어져있는 정보들을 모아서 하나의 앱에서 모든 정보를 볼 수 있는데, 각각의 정책 지원 페이지에서 정보를 크롤링해서 앱 내에서 사이트의 공지 리스트를 보여주며 상세페이지는 원래 해당 공지를 제공한 사이트로 이동하여 볼 수 있게 링크 형식을 사용했다.

 

개발

그렇게 기획이 된 상태에서 각자 개발 파트를 나눠 개발에 들어갔고, 나는 spring boot와 jsoup, selenium을 활용한 웹 크롤링 구현을 맡았다. 그리고 다른 백엔드 팀원이 Azure 클라우드 사용법을 공부해서 적용하고 있었고, 프론트엔드 개발자들도 디자인과 퍼블리싱에 들어갔다.

크롤링 자체는 그렇게 어려운 기능이 아니었기 때문에 수월하게 진행이 되었고, 이후 알림 기능을 구현해야 했는데 Azure 배포에 문제가 생겨 배포 문제를 처리하느라 알림 기능을 끝내 구현하지 못했다ㅠ

 

개발 과정에서 겪은 문제

개발 과정에서 처음 사용해보는 Azure를 백엔드에 적용해야했다. 처음 사용해봐서 그런지 정말 어려웠고, 기존에 AWS에서 IaaS인 EC2를 사용해봐서 EC2와 같은 Infrastructure를 사용해서 구현을 할 생각이었다. 하지만 이번 해커톤에서는 IaaS를 제외한 PaaS와 SaaS만을 사용해서 앱을 배포하는 것이 주제였기 때문에  IaaS인 인스턴스를 사용할 수 없었고, Azure App Service라는 것을 사용해서 배포를 해야한다는 멘토님들의 조언을 들었다.

여기서 문제가 발생했는데, EC2는 내가 다 설정을 해서 사용하는 것이기 때문에 인스턴스에서 크롬과 크롬 드라이버를 설치해서 사용할 수 있었다. 반면 Azure App Service는 PaaS이기 때문에 서버에서 따로 크롬을 설치할 수가 없었다. 

 

설치를 할려고하니 권한이 없다는 에러가 계속해서 발생했는데 찾아보니 PaaS에서는 Azure에서 기본적인 설정을 제공하기 때문에 사용자가 설정할 것이 없어져서 편리한 장점이 있는 반면, 구체적인 설정할 수 없다는게 오히려 그 클라우드 서비스에 대해 잘 모를 때 사용하기 어렵다는 문제가 있었다.

Azure에 대해 아는게 없었던 나와 다른 백엔드 개발자는 계속해서 멘토님들께 물어봤고, 크롬 브라우저를 PaaS에서 설치할 수가 없는데 도대체 어떻게 배포가 가능한건지? 해커톤 내내 의문이었고, 아무리 설명을 들어도 이해가 가지 않았다.

그래서 결국 앱이 실행되지는 않고 서버에 프로젝트가 올라가도록 배포하는 것에는 성공했고 본선에 진출할 수 있었다.

나중에 집에 와서 검색해보니 Azure App service로는 셀레니움 서비스를 배포할 수 없는 것이었다..ㅎ

가상머신을 사용해서 브라우저와 드라이버가 설치된 환경을 통째로 배포했어야했는데 그 사실을 검색을 해도 당시에는 알 수가 없었다... 그때는 밤을 새며 코딩을 하니 판단력이 흐려지고 사고가 멈춰있는 것 같았다.

두 번째 문제는 깃허브였는데 깃허브 레포지토리를 이틀간 하는 짧은 프로젝트이기도 하고 같이 있는 장소에서 프로젝트를 하기 때문에 컨벤션과 규칙, 포크해서 안전하게 사용하는 방법을 사용하지 않고 그냥 마구잡이로 커밋하고 푸쉬했다..

이 과정에서 한번 문제가 생긴 이후로 계속해서 리포지토리에 푸쉬할 때마다 에러가 발생했고, 에러를 해결해도 또 다른 에러가 발생해서 푸쉬에 성공하더라도 나중에 계속해서 충돌이 발생했다.

이번 해커톤을 통해서 짧은 기간이더라도 협업을 할 때에는 규칙적으로 하는 것이 중요하다는 것을 정말 뼈져리게 느꼈다.

3일이지만 사실상 2일인 짧은 해커톤 기간에 리포지토리 이슈에 몇 시간을 쏟아부은 것과 에너지를 낭비한 것이 너무 아깝고 집에와서 잠을 잔 후 다시 생각해보니 아쉬운 점들이 너무 많은 것 같다.

 

발표

나는 우리팀이 최종적으로 앱을 완성하지 못한채로 배포만 한 상태였기 때문에 당연히 본선 진출을 못했을 것이라고 생각하고 마음 편하게 지켜보고있었다. 그런데 갑자기 관계자분이 오셔서 발표하실 거니까 준비해야 한다고 하셔서 다급하게 발표 준비를 진행하고 발표를 진행하였다. 나는 원래 발표를 잘 못하는 편이라 멘트 작성 후 올라가서 그대로 읽을려고 했는다. 하지만 처음 올라가서 인사한 후 심사위원들 표정에 관심이 없는듯한 느낌을 받아 위축이 많이 됐었던 것 같다. 그래서 대본이 아니라 좀 더 자연스럽게 읽어야겠다고해서 읽어나가기 시작했는데, 중간에 다시 대본을 보니 도저히 지금 진행하는 부분을 찾을 수가 없었다. 

너무 당황스럽고 긴장해서 횡설수설, 어버버거리면서 제대로 말도 못한 상태로 질문을 받았다.

첫 번째 질문은 해당 서비스를 하기 위해서 법적인 문제가 될 수 있는지 찾아보셨냐는 질문을 받았다.

나는 해커톤이 단순 개발이라고 생각을 했어서 사업적인 부분을 고려하지않았다. 했다면 수익 모델 정도를 생각했는데 법적 문제를 생각해보지 않아 말문이 막혔고, 역시나 횡설수설 둘러댔다. 

링크를 타고 해당 사이트에 들어가는 것이기 때문에 크게 문제가 되지않을 것이라 생각했다고 답변했는데, 말을 하면서도 참 아쉬웠다.

두 번째 질문은 크롤링을 하기 전에 해당 사이트에서 제공하는 정보를 제공하는 API나 공공데이터가 없는지 물어보셨는데 이 또한 찾아보지 않았다. 대구라는 한정된 지역이기 때문에 생각조차 해보지않았고, 그로 인해서 답변을 제대로 하지 못했다.

세 번째 질문은 해당 서비스를 구현하기 위해 Azure의 어떤 서비스를 사용했느냐였는데, 이 또한 Azure App Service를 왜 써야하는지도 모르는 상태에서 그냥 써야한다는 말에 무작정 썼기 때문에 답변을 하지 못하였다.

발표를 하고 나서 정말 창피하고, 내 스스로가 한심하다는 생각을 했는데 팀장을 맡아놓고 발표를 그렇게 밖에 못한 것이 너무 미안했고, 앞으로 내가 발표할 때 긴장하는 것과 발표 준비를 잘 하는 능력을 기르지 못하면 계속해서 이러한 사고가 반복될 것이라고 크게 느꼈다.

앞으로는 발표할 기회가 생길 때마다 해봐야 할 것 같다.

 

해커톤 이후 느낀 점

이번 해커톤에서 내가 부족했던 부분은 기획을 정말 부실하게 했다는 점과, 정보 조사를 하지않았다는 것, 마지막으로 발표를 너무 심각하게 못한다는 점이다. 이 점들을 꼭 개선해야한다고 느꼈고, 이번 해커톤에서 고등학생 친구들이 정말 많이 나왔는데 그중에서 최우수상을 타간 귀여운 친구들이 있었다.

그 친구들을 보면서 세상에 잘하는 친구들이 이렇게 많고, 다들 열심히 사는데 나는 지금까지 무엇을 한 것인가에 대해서 현타가 많이 왔던 것 같다.

정말 아쉬웠지만, 정말 재미있는 3일이었고 다음에 또 도전해보고 싶다.

첫 해커톤 경험이었기 때문에 아는게 너무 없었고, 이제는 어떤 흐름으로 진행이 되는지 경험해봤기 때문에 다음에는 더 철저하게 준비해서 잘 해낼 수 있을 것 같다.

이번에 해커톤에 나가지 않았다면 나의 문제를 찾지못하고 계속 개발만 했을텐데 덕분에 나의 부족한 점을 파악할 수 있었다. 

많이 아쉽긴 하지만 얻은 것은 많은 것 같다.