지난 6.1~6.2일에 엔젤핵 해커톤에 참가했다.
참가한 해커톤은 AngelHack 2019 Seoul
라는 해커톤이었는데, 우승 후 진행되는 프로그램을 보니 투자를 받고자 하는 팀이 지원할 것 같은 해커톤이었고 그만큼 스폰서도 크고 많았다.
해커톤은 처음이라 지인과 함께(개발자) 떨리는 마음으로 해커톤에 참가하게 되었다.
가기 전날엔 내 실력으로 민폐만 끼치는게 아닐까 하며 매우 걱정했었다.
행사는 9시 시작이었는데 늦잠을 자는 바람에 10시에 도착했다. 장소는 마루 180의 지상1층과 지하1층이었는데 특이하게 지하는 차고같이 꾸며져 있었다. 실리콘밸리의 성공한 많은 기업들이 차고에서 탄생해서 그런것이었을까?
굿즈(티셔츠와 스티커 등)를 받아들고 입장하니 많은 사람들이 벌써 도착해 자리가 꽉 차 있었다.
150명정도 신청했는데 대략 100명정도 왔다고 한다.
일정표는 이러했다
11시부턴 팀 빌딩이었는데, 지인과 나는 둘다 백엔드 개발자였기 때문에 기획자, 디자이너, 프론트엔드 개발자를 찾아 팀을 꾸려야 했다(프론트엔드 개발자는 적었고 구할 수 없었다..)
처음보는 분들과 얘기를 나누고 바로 팀으로 영입(?)시키는건 여간 어려운게 아니었다.
여차저차 팀을 꾸리니 12시였고, 우리팀은 백엔드지만 프론트를 조금 하시는 개발자 한분, 백엔드인 지인과 나, 기획자, 디자이너 이렇게 다섯이서 팀을 꾸리게 되었다.
그 후 후원사의 스피치가 있었고 제출은 내일 오후 1시
라는것을 듣게 되었다. 이 해커톤이 제출기한이 좀 빠른거라고 개발하기 빠듯하겠다고 지인은 말했다.
팀이 꾸려지자 바로 기획에 들어갔다.
도전과제로는 AWS Amplify
사용, IBM 서비스를 사용, IBM의 call for code
등이 있었다.
처음엔 AWS Amplify
를 사용하려고 했는데, 웹앱 혹은 앱 개발시에만 사용할 수 있었으므로 우린 사용할 수 없었다.
IBM 서비스는 우리 모두 처음이라 셋팅하는데에 너무 오랜시간이 걸려 그냥 AWS 서비스를 사용했다.
AWS에선 개발자 한명당 100$ 크래딧을 줬다!
우리팀은 Call For Code
에 도전했는데, 당신의 코드로 세상을 구하다
라는 캐치프레이드로 공식 홈페이지에선자연재해 대비 및 구호를 위해 AI, 블록체인, 클라우드, IoT를 활용한 솔루션을 개발하는 글로벌 챌린지입니다
라고 설명하고있다. 재난시에 사람을 살릴 수 있는 프로그램등을 개발하는 것 이다.
우리팀의 아이디어는 핫스팟을 엮어 재난시에 외부 네트워크 이용이 되지 않는(외부망에 접속이 안되는) 상황에
재난자들 사이에 프라이빗한 네트워크를 구축해 재난자들끼리 소통이 되게 하자
는 것이었고 여러 아이디어중 지인이 낸 해당 아이디어로 채택되었다.
협업을 해 서비스를 짧은 시간안에 만들어야 되는 만큼 충분히 대화가 필요했다.
또한, 같이 논의를 했지만 서로 이해하는바가 다르며 그 부분을 조율하고 서로 대화로써 풀고 이해하는것이 중요하다는 것을 많이 깨달았던 것 같다.
멘토님들도 계셔서 멘토님들께 모르는 것을 물어보거나 작년 우승자 혹은 참가자와 컨셉이 겹치지는 않는지를 물어봤었다.
다행히 전혀 겹치지 않는다고 하셔서 걱정없이 그 뒤 개발에 착수할 수 있었다.
멘토님들은 돌아다니시면서 기술적으로 혹은 그 밖의 질문에 대해서 답을 해주시곤 했는데 큰 도움이 되었다.
개발은 대략 오후 3시즈음에 시작하게 되었다.
내가 맡은 부분은 재난시 모니터링 및 채팅 등을 할 수 있는 이른바 어드민 페이지를 개발이었다.
플라스크로 하려다 겪어본적 없는 오류가 나면 잡는데에 오랜시간이 걸릴까 불안해 익숙한 스프링부트로 개발을 했다.
그리고 두번다시 해커톤에서 스프링부트를 사용하지 않으리라 다짐했다(내 숙련도에 문제가 있긴 했지만)
JPA때문에 굉장히 고생을 했고 잡아뒀던 환경도 뭣도 아무것도 없었기 때문에(지금 생각해보면 뭔 자신감으로 아무것도 없이 갔나 싶다) 프로젝트 생성하고 환경 잡고 여차저차하니 대략 7시즈음이었던 것 같다.
환경잡는데에 너무 많은 시간이 걸려서 당시엔 정말 속이 답답했었다.
당시 커밋로그들
밥은 정말 잘 나왔었는데 대체로 샐러드류라 조금 배가 고팠다..노트북은 한성 보스몬스터(게이밍)무겁다
새벽 2시즈음인가, JPA를 잘못 사용해서 select 순환 참조 오류가 생겼었다. 그때 정말 이거 다 밀고 플라스크로 작업할까 생각했었다. 해결하는데에 한시간정도 걸렸었는데, 정말 아찔했다.
해결은 [링크] 와 같이 했다.
개발시간이 빠듯하게 정해져 있어서 뭔가 이상한 오류가 나면 정말 심장이 쫄깃했던 것 같다. 한숨도 못자고 밤을 그렇게 샜다.
중간에 피자와 치킨을 받았지만 먹을 시간이 없었다ㅠㅠ
새벽 다섯시경 주위를 보니 다른팀 개발자분들도 안자고 열코딩중이었다. 해커톤은 원래 이렇게 빡센가요.. 지인이 말하길 원래 이렇게 빡세다고 한다.
최초의 팀 이름은 angel cell 이었다
밤 사이 우리팀의 이름은 Conectus
로 결정되었다. 맨처음엔 링크드리스트등의 후보가 있었지만 생존자를 잇는다는 의미로 Connect + Us 해서 Conectus 가 되었다.왜 Connect가 아니고 Conect인진 모르겠다
7시즈음에 대략 API를 다 완성했었다. 그 후 한 10분정도 자다가 아침이 되니 대략 정신이 나가서 아무것도 머릿속에 들어오지 않았다.
나 외에 지인 및 다른 개발자분도 다 완성을 했고 우리팀은 다같이 실제 테스트(사람이 하는)를 해보고 수정하고 테스트하고를 반복하다보니 1시가 되었다.
사실 중간에 마크업 개발자의 부재로 인한 문제가 있었다. 그 때문에 어드민페이지는 API만 잔뜩 만들어두고 보여줄 수 없어서 아쉬웠다.
우리팀은 12번째 발표였다
발표 시간은 2분이었는데 굉장히 짧았다. 컨셉, 간단한 기능소개 하고 바로 시연하기에도 빠듯한 시간이었다. 후에 알게되었지만 샌프란시스코 데모데이의 발표시간이
2분으로 제한되어있어 그런게 아닌가 싶다.
2분의 발표 후엔 심사위원분들의 질문이 이어졌다. 질문에 대한 답은 총 14초 이상을 넘을 수 없었다. 그것 또한 데모데이의 룰과 같았다.
우리조는 간단한 기능소개(1분)+짧은 시연(1분) 으로 발표를 했는데, 다 보여주진 못했지만 아이디어나 컨셉은 잘 전달한 것 같았다.
22개조의 발표가 끝나고 몇십분의 대기 후 바로 시상식이 시작되었다.
상은 IBM Challenge, AWS Challenge, AngelHack 전체 우승 이렇게 세개였는데 우리팀은 IBM과 Amplify를 사용하지 않았기에 IBM, AWS 챌린지상과는 전혀 관련이 없었다.
전체상 또한 굉장히 쟁쟁하고 잘 만든 팀이 많았기 때문에 나는 마음을 비우고 1박2일동안 이정도를 만들어냈다는것에 의의를 두고 있었다.
아쉬운 부분이 많았지만 개인적으로 완성했다는 것에 뿌듯함을 느끼고있었다.
그런데 최종우승 팀으로 우리팀이 호명되었다! 우리조원 전부 정말 하나도 기대를 하고 있지 않았었기 때문에 굉장히 놀랐었고 그야말로 대 패닉 상태였다.
그렇게 얼떨떨하게 상을 받게 되었다. 많은 분들이 우리팀 아이디어가 좋았다고 칭찬해주셨다.
이렇게 동료를 잘 만나 처음 참가해서 수상도 하고 정말 개발적으로 혹은 개발 외적으로 배울것도 많았던 해커톤이었다.
혼자였으면 절대 못했을텐데.. 처음 만나서 다 같이 고생하고 다 같이 만들어내서 더 뜻 깊었던 것 같다.
다음에 기회가 된다면 또 참가할 것 같다!
고마워요 엔젤핵!
해당 소스 및 레포는 github에 공개되어 있습니다.
읽어주셔서 감사합니다!😄