작년에 나갔었던 엔젤핵 해커톤을 올해도 한다는 소식을 듣고 지인들과 함께 지원했다.
다시보면 부끄럽지만, 당시에 작성했던 후기는 이렇다.
AngelHack 2019 서울 참석 및 우승 후기
작년엔 직접 현장에 도착해서 팀을 구했는데, 올해는 지인분들과 함께 팀을 구성하게 되었고 어쩌다 보니 우리 팀은 개발자 5명인 팀이었다.
코로나로 인해 모든 진행은 슬랙을 이용한 온라인으로 이루어졌다.
온라인인 만큼 기간은 일주일이었으며, 올해 주제는 코로나였다. 작년과는 달리 이번엔 기업에서 주제를 정해주고 원하는 주제에 지원하는 방식이었다.
주제는 UN이 제안하는 17가지의 지속 가능한 개발 목표(UN-SDGs)을 바탕으로 선정되었으며 최소 1개, 최대 2개이하로 주제를 선택할 수 있다.
우리 팀은 처음엔 커먼컴퓨터, 우아한형제들 주제에 지원했었다.
당시 아이디어는 코로나로 인해 기업에서 수급받아야 할 자원을 수급받지 못해 생기는 문제가 많으니 국제 자원 중개 서비스를 해서 그런 부분을 해결 해보자는 것이었지만, 국가 간의 규제가 천차만별이었으므로 문제가 많았다. 그렇게 아이디어 고민만 금요일 저녁까지 했다.
금요일 저녁까지 고민한 끝에 우리는 기존의 국제 자원 중개 서비스를 버리고 지역 기반 소상공인 공동구매 서비스를 하기로했다.
우리 서비스는 코로나 때문에 어려움을 겪고 있는 많은 소상공인이 젓가락, 봉투 등의 부자재 혹은 재료 등을 공동구매 하거나
사용하지 않는 물건을 자유롭게 사고팔 수 있는 지역 기반 서비스이다.
아이디어가 바뀜에 따라 지원하는 주제도 커먼컴퓨터와 테이블매니저 과제로 변경했다.
엔젤핵은 다른 해커톤과는 다르게 평가 기준에 BM이 있다.
그래서 우린 기존의 성공한 서비스들을 벤치마킹해 수익은 지역광고와 공동구매 중간유통 수수료로 결정했다.
커먼컴퓨터 주제는 커먼컴퓨터의 Ainize 란 서비스를 사용해 배포하면 되는 것이었다.
Ainize는 깃허브에 올라와 있는 오픈소스 프로젝트를 무료로 쉽게 실행하고 배포할 수 있도록 도와주는 서비스이다.
우리 팀은 프론트 서버와 백엔드 서버 둘 다 Ainize 통해 배포하기로 했다.
월요일부터 일요일까지 하는 해커톤이지만 금요일 저녁에 아이디어가 나와서 개발할 시간이 적었다.
하지만 다행스럽게도(?) 개발자 5명인 팀이라 기능 완성을 못하는 것에 대한 걱정은 없어 다행이었다.
그렇지만 늦게 시작한 만큼 포기할 수밖에 없는 기능도 있어서 조금 아쉬웠다.
사실 채팅을 넣고 싶었다. 하지만 시간상으로 힘들 것 같아 포기했다.
주제가 명확해졌으니 다 같이 모여서 금요일 밤~ 일요일 제출 전까지 달렸다.
웹 프레임워크는 장고가 선택되었는데, 장고로 개발하면 사용자 인증 및 CRUD를 빠르게 개발할 수 있어 해커톤에 적합했으며, 우리가 만들어야 할 서비스는 정확히 사용자 인증 및 CRUD API만 구현하면 되기 때문이었다. 그리고 날 제외한 백엔드 개발자는 장고에 익숙했다.
나는 스프링부트를 주로 사용하긴 하지만 플라스크로도 개발한 경험이 있었으므로 이 김에 장고를 써보자는 생각으로 장고 선택에 찬성했는데, 장고를 하루 만에 배워서 API 만들기는 생각보다 어려웠다.
우선 스프링과 장고는 많은 차이점이 있었는데, 스프링과 달리 장고는 기본적으로 여러 가지 기능을 자동으로 만들어주는 많은 클래스와 함수 등이 있었고 이걸 기존에 알고 있어야 쓸 수 있었다.
반면 스프링은 대체로 직접 구현해서 개발한다. 그런 나에게 있어 장고는 매직박스 같았다.
게다가 장고로 개발을 하더라도 사람마다 구현하는 방법은 천차만별이었다. 백엔드 팀원끼리도 방식이 완전히 달랐으며 서치해서 나오는 방식도 다 달랐다.
중간에 난 차라리 SpringBoot + RPC 로 개발하겠다 했지만 기각됐다.
그렇게 혼란 속에서 나는 두 파이썬 개발자의 속성 장고 강의를 받으며 API 몇 개와 DB 모델링을 했다.
장고는 모든 개발자가 다 할 줄 알아야 선택할 수 있을 것 같다. 그래도 이번 기회에 장고를 해볼 수 있어서 좋았다.
일요일 오전부터 크리티컬한 CORS 문제가 터졌다.
설정도 다시 해보고 장고 CORS 라이브러리 문제인 줄 알고 찾아보기도 하는 등 많은 시도를 해봤지만, 원인은 의외로 Ainize의 istio 설정문제였다.
정확히는 Ainize 측에서 CORS 헤더를 열어줘야하는데 몇 가지 헤더가 누락되어있어 발생 한 문제였다.
커먼 컴퓨터측에 문의 하니 신속하게 대처해주셔서 성공적으로 배포할 수 있었으며 이 이슈는 이번 해커톤 이후에 핫픽스 할 예정이라 하셨다.
마감은 23시 59분이었고 우리 팀은 시간 부족으로 인해 시연 영상을 일부 올리지 못해 아쉬웠으나 23시 56분에 아슬아슬하게 제출했다.
그리고 대망의 22일 수요일에 수상자가 발표되었다.
우리 팀은 커먼컴퓨터 부문에 수상하게 되었다!
사실 우리 팀은 딱히 수상 기대를 하지 않고 있었다. 그도 그럴 게 굉장한 팀들이 많았기 때문이다.
심지어 화상 채팅을 구현한 엄청난 팀도 있었다(그 팀은 코드스테이츠 부문을 수상하셨다)
우리 팀이 기술적으로 엄청난 건 없지만 아마 준수한 코드 퀄리티와 BM 덕에 수상할 수 있지 않았을까 라고 생각한다.
다들 잠도 못 자고 고생을 많이 했지만, 우리 팀은 프론트(풀스택) 1, 백엔드 3, 앱 1로 구성된 팀이라 특히 프론트엔드 개발자분과 기획, 디자인, PPT, 영상까지 하신 앱 개발자분이 고생을 많이 하셨다.
특성상 프론트엔드 이슈가 많을 수밖에 없는데 프론트엔드 개발자 팀원님이 혼자 프론트 이슈를 다 처리하셨으며, 앱개발자님은 본인의 전문 분야가 아님에도 불구하고 좋은 디자인과 엄청난 발표자료 및 영상을 만들어주셨다.
그렇게 7월 13일(월) ~ 7월 22일(수)까지 진행된 2020 엔젤핵은 막을 내렸다.
원활한 운영에 힘써주신 운영진분들, 멘토분들, Ainize분들, 팀원분들 모두 감사합니다 🙇🏼♂️
소스는 GitHub에 공개되어 있습니다 => [AngelHack LiBi Repository]
피칭영상 => AngelhackSeoul 2020 - Team LiBi, ‘사이’ Pitching
읽어주셔서 감사합니다.
#엔젤핵서울 #AngelhackSeoul2020Online #해커톤 #hackathon #개발자 #기획자 #디자이너 #코로나19 #함께이겨내요