
한달 전에 나간 너디너리 해커톤 회고를 이제서야 쓴다 ㅎㅎ
너디너리 해커톤은 cmc와 umc가 23시간 동안 하나의 서비스를 완성한다. 팀 공개와 함께 아이디어 기획부터 디자인,개발, 발표와 시상까지 23시간 내에 이 모든 게 이루어진다.
해커톤은 처음이라.. 걱정이 정말 많이 되었지만 어찌저찌 완성하게 되었다.
나는 cmc 17기에 합류하게 되면서 필수로 참석해야 했다. (umc는 신청자를 받는다)
📅 행사 일정
25.05.17 (토) | 시간 | 25.05.18 (일) | 시간 |
---|
챌린저 입장 | 13:00 ~ 13:30 | 프로젝트 개발 | 00:00 ~ 09:50 |
해커톤 소개 및 주제 발표 | 13:30 ~ 13:40 | 프로젝트 제출 | 09:50 ~ 10:00 |
간단한 레크레이션(자기소개) | 13:40 ~ 14:10 | 프로젝트 발표 환경 세팅 및 휴식 | 10:00 ~ 10:20 |
아이디어 구상 | 14:10 ~ 15:00 | 프로젝트 발표 및 QnA | 10:20 ~ 12:00 |
프로젝트 개발 | 15:00 ~ 24:00 | 평가 | 12:00 ~ 12:30 |
자유 저녁 시간 | 18:00 ~ 19:00 | 시상식 | 12:30 ~ 13:30 |
야식 시간 | 23:00 ~ 24:00 | | |
🍀 주제 공개! ecofriendly
해커톤 주제는 자연과 함께 하는 지속가능한 미래였다. 그리고 총 10개의 세부 키워드가 있었고, 퀴즈를 먼저 맞춘 팀부터 순서대로 원하는 키워드를 가져갔다.
우리팀은 탄소 배출 절감이라는 키워드를 선택했다.
🍳 냉장고 관리 앱, 냉집사

기획자님이 함께 아이디어를 내보자고 서비스에 대한 아이디어를 아무거나 노션에 함께 적었다.
그 중 냉장고 재고 관리에 초점을 맞춰 냉집사라는 서비스를 만들었다.
냉장고를 대신 관리해주는 냉꼼이라는 캐릭터가 존재하고
냉장고 식품 조회
, 소비기한 만료 안내
, 냉장고 컨디션 보여주기
, 유저의 식품 소비 유형
같은 기능이 있다.
🤔 기술적인 시도와 어려움
- 커스텀 어노테이션으로 인증 사용자 정보 받아오기
- 나는 로그인을 맡았는데 처음에는 spring security+jwt로 개발하려고 했으나 시간이 너무 오래 걸릴 것 같아 spring security는 사용하지 않기로 했다. 처음부터 노선을 확실히 하고 개발했다면 시간을 줄일 수 있었을 것 같은데 아쉬움이 남는 부분이다.
- 스프링 시큐리티를 사용하지 않아 시큐리티가 제공하는 인증 객체를 받아올 수 없기 때문에 직접 header로 받은 access token을 파싱해서 써야 했다. 매번 그 작업을 하는 게 번거로워서 커스텀 어노테이션을 정의 하고 controller에서 쉽게 인증된 사용자 정보를 사용할 수 있게 했다.
자세한 내용 보러가기
- 해결하지 못한 cors
- 분명 문제가 없다가 cors가 터졌고.. 정말 많은 시간을 cors를 해결하는 데에 썼다. 이유는 쿠키나 토큰 같이 인증 정보를 헤더로 받을 때 cors 설정에서 모든 도메인을 허용하지 못해서였다.
- 스프링 서버에서 cors 허용 도메인을 명시하고, options 메서드도 허용했지만 끝내 해결하지 못한 게 가장 아쉬운 부분이다. 에러가 터지는 것도 아니고 계속 요청이 로딩돼서 로그를 봐도 해결하기가 어려웠다. 새벽에 나 때문에 팀원들이 고생해준 게 물거품이 될까봐 등골이 오싹해졌다…
그러다 눈물이 고이기까지ㅋ
다음에는 로그백으로 로그 모니터링까지 구축한 후 가야겠다는 생각이 들었다.
- 아마 nginx가 요청을 가로채 원하는대로 동작하지 않는 것이라고 예상했지만 conf 파일을 nano 명령어로 수없이 고치는데 정말 정신이 나갈 뻔 했다. nginx manager와 같은 ui을 제공하는 툴을 사용했다면 어땠을까 하는 아쉬움이 남았다.
다음부터는 ui 툴 적극 활용하기!
🥲 아쉬운 점들
- 서버 환경 세팅을 해가지 않은 것
- 나는 해커톤 전날 깃헙에 프로젝트를 올리고 라이브러리 세팅하고 aws 계정 만들어서 카드 등록, 기본적인 코드 템플릿과 공공 api 링크를 찾아서 갔다.
- 근데 서버 인프라 세팅은 해가지 않았다. 우분투를 쓸지 리눅스를 쓸지 고민돼서 팀원들과 얘기하고 만들자는 생각이기도 했고 사실 전날 피곤해서 귀찮은 게 컸다…
지금 생각해보면 일단 세팅을 하고 가서 설득을 하는 게 맞다고 본다. 해커톤에서 시간은 금이니까!
- ci/cd, aws 환경, 로그 모니터링, 기본적인 설정 파일, 공통 에러 핸들링까지는 해가는 것이 좋을 것 같다.
- 한번에 하나의 일만 하지 않은 것
- aws 세팅을 내가 하기로 결정되고 해커톤 레크레이션이나 브레인 스토밍을 하는 시간에 온전히 집중하지 못했다. 서버 세팅을 빨리 끝내야 할 것 같은 압박에 그렇게 했는데,,, 가장 빨리 가고 싶다면 천천히 가라는 말이 떠올랐다. 일을 완수하는 데 있어서 중요한 건 조급한 마음을 갖지 않는 것이다.
- 제일 중요한 건 소통, 그 다음도 소통..
- 다들 마음이 급해지다 보니 와이어 프레임을 잘못 보고 안만들어도 될 s3를 만든다던지.. 이거 했다가 저 기능 맡았다가 해서 내 코드가 안쓰여지게 됐다던지.. 하는 안타까운 일들이 조금 있었다.
기능을 맡을 때 어떤 방식으로 개발을 할건지 얘기하는 시간을 가지는게 중요한 것 같다.
🍟 해커톤의 꽃은 간식 타임

해커톤은 무거워지지 않는 것이 핵심이라고 생각한다. 당연히 최선을 다하지만 화려한 기술을 쓰는 것 보다는 mvp를 작게 가져가고 그것을 확실하게 개발하고, 결국 아이디어 실현!이 해커톤의 목적임을 잊지 않고 간식 타임을 즐겼다ㅎㅎ
📝 느낀점

우리팀은 한 사람도 자지 않고 23시간 동안 작업만 했다. 정말 같이 모여서 하니까 내 인생 최대 효율로 개발했다. 개발할 때는 졸리다는 생각이 들지도 않았다. 막바지에서 체력적으로 너무 힘들고 정신적인 압박이 심해서 내 인생 해커톤은 이제 없다는 생각을 했지만 역시 끝나고 나니 미화가 된다ㅎㅎ 나중에 또 나가볼지도..?
그리고 처음에는 어색했지만 23시간이 지난 후에는 분위기가 편안해졌다. 같이 고생하니까 많은 말 안해도 가까워지는 기분.. 오랜만에 새로운 환경에서 새로운 사람들과 협업해서 즐거웠다.