어제 오후 7시부터 오늘 오전 7시까지 대구에서 진행한 해커톤 devfest 2022에 참여했다. 다시 기차를 타고 대전에 아침 11시에 도착해서 한숨자고 비몽사몽한 정신으로 써보는 본격 가수면해커톤후기아니고일기.
저녁 식사
도착하자마자 주최측에서 식사를 제공해주셨다. 원래는 밥을 식사 제공이 안 된다고 안내를 받아서 근처에서 먹고 들어가려고 했는데 오늘인가 어제 다시 저녁을 준다고 공지를 해주셨다! 해커톤이 진행된 장소는 대구그랜드호텔 지하 홀이었는데 같은 건물 5층에서 식사를 할 수 있었다.
아직 팀 빌딩전이라 굉장히 뻘쭘했지만 맛있게 먹었다ㅎㅎ
팀 빌딩
요즘 대부분의 해커톤이 사실 그러한 것 같던데 GDG Daegu에서 주최한 devfest2022 역시 경쟁보다는 네트워킹 위주의 해커톤이어서 사전에 따로 포지션에 대한 정보를 받지 않고 무조건 참여할 수 있도록 했었다. 그래서 현장에 가보니 아래와 같이 팀 빌딩을 위한 자신의 분야를 적는 보드가 있었다. 팀에 나 혼자 백엔드면 어떡하나 싶은 마음을 안고 백엔드에 이름을 적어서 붙였다🥺
팀 빌딩이 완료되고, 우리 팀은 FE 2, BE 2 조합의 팀이 되었다. 사실 이 중 BE 1분은 원래 우리 팀원 분은 아니신데 사정은 모르겠지만 원래 같은 팀에 배정된 한 분이 보드에 이름을 붙인 이후에 먼저 퇴장하셨는지 호명 이후에도 나타나지 않으셔서 현재 현업에 종사하고 계시는 GDG Daegu 운영진께서 같은 팀이 되어 서프트를 해주셨다..! 해커톤 내내 페어프로그래밍 형식으로 (거의 1:1 과외..ㅜ) 같이 코드를 작성했는데 정말 여러가지로 많이 배울 수 있었다. 이 자리를 빌어 다시 한 번,, 감사드립니다.
(사진은 팀 빌딩 전에 뭔가 이렇게 많은 개발자들이 모여있는게 신기해서 찍은 사진,,ㅎㅎ)
기획
이런 식으로 밤을 새서 진행하는 뭔가 오리지널! 느낌의 해커톤 참여는 처음이라서 뭘 어떻게 시작해야할지 감이 안 잡혔다. 다른 팀원 분들도 마찬가지이셨던 것 같다. 진전 없이 시간이 흘러갈 때 쯤 우리 팀에 속해 도와주시기로 하신 운영진분께서 노션 페이지 팔게요~ 라고 먼저 말씀해주셔서 먼가 정신이 번뜩! 들었고ㅋㅋㅋ 그럼 제가 오픈채팅방 팔게요~ 이렇게 하면서 뭔가 그 이후로 일이 착착 잘 풀렸던 것 같다.
여러 가지 기획이 나왔고, 우리는 mbti를 기반으로 영화 장르 및 영화를 추천해주는 서비스를 만들기로 했다. 조금은 복잡한 기술 스택을 사용해서 시간 안에 완성을 못하더라도 많은 걸 배워갈 수 있는 주제와 조금은 간단한 기술을 사용하더라도 서비스를 완성하는걸 목표로 하는 주제 중 후자가 선택되었다.
개발 과정
컨벤션 정하기
본격적인 개발에 들어가기 앞서, FE와의 협업을 위해 브랜치 전략과 커밋 컨벤션을 정하고 api를 확정해 문서를 작성했다. 사실 이 부분도 고려하지 못한 부분이었는데 운영진분께서 어떻게 하시는지 지켜보면서 많이 배울 수 있었고, 앞으로도 협업을 할 때 어떻게 하면 좋을지 고민해볼 수 있었다.
API 설계
백엔드에게 주어진 요구사항은 프론트에서 mbti를 입력받아 전달해주면 mbti에 해당하는 장르, 장르 선택 이유, 영화 목록을 보내주는 것이었다. 모두 단순 조회 쿼리이므로 GET
메소드로 설계했다. 또한, 프론트에서 리액트를 사용하므로 나머지 주소로 오는 요쳥에선 빌드된 리액트 페이지를 보내주고 /api
를 prefix로 하는 URL로 전달된 요청에서는 json을 반환해주기로 했다.
DB 테이블 설계
mbti를 기반으로한 영화 추천 서비스를 만들기 위해 영화, MBTI, 장르_MBTI, 장르 이렇게 총 4개의 테이블이 필요했다. 빠르게 테이블을 설계하고 스프링 데이터 JPA를 사용해 repository 코드를 구현했다. 나는 아직 JPA만 사용해보고 스프링 데이터 JPA는 구경만 해봐서, 인터페이스만으로 DB에 접근할 수 있는게 마냥 신기하고 너무 유용해보였다. 빨리 돌아가서 마저 공부해보고 싶다는 생각이 들었다.
배치성 작업
장르 별 영화 정보는 네이버 API를 사용해 미리 가져와 DB에 저장해두기로 했다. 사용자가 서비스에 접속해 mbti를 입력하면 추천된 장르가 표시되고, 해당 장르에 맞는 영화 목록을 보여주어야 했는데, 네이버 API는 검색어 쿼리 없이 api를 호출할 수 없었기 때문에 미리 여러 서버에서 api를 호출해 DB에 값을 넣어두고 사용자에게는 우리 DB의 정보를 보여주자는 컨셉이었다.
이를 어떻게 구현할 지 고민하다가 해커톤이고, 빠른 구현 및 시연을 위해 파이썬으로 빠르게 api호출 및 mysql 연동을 구현하여 필요한 값들을 테이블에 밀어넣었다.
후기
해커톤에 참여하기로 한 이유는 맨날 강의만 듣고 예제 코드만 따라치는 것에 싫증이 나서 빠르게 하나의 서비스가 만들어지는 전체 과정을 경험
해보고 싶었기 때문인데, 참여 목적을 너무나 잘 달성할 수 있었다. 특히 운영진 분과 페어프로그래밍을 진행하며 개발 과정
에서 적은 것 이외에도 프로젝트 구조 설계, 레이어 설계, DTO의 사용 범위, heroku 등 Paas, Mysql 등등 넓은 범위의 팁을 배워갈 수 있었다. 단순히 현직자의 워크플로우를 지켜보는 것만으로도 배울 수 있는게 많았다. 참여하길 참 잘했다고 생각이 된다.
아쉬웠던 점은 그동안 코드를 이쁘게 짜야해!
라는 생각에 사로잡혀 스프링이나 JPA 공부 속도를 조금 늦춰왔었는데 일단 빠르게 한 번은 강의를 모두 듣고 왔으면 더 좋았겠다는 생각을 했다. 코드를 ‘잘’ 작성하는 건 나중 문제고 우선 스스로의 힘으로 서비스를 개발할 수 있어야 하겠다는 생각이 너무너무 많이 들었고 집에 돌아가서 공부해보고 싶은 것들이 해커톤을 하는 내내 머리에서 맴돌았다. 잘 하는 것과 별개로 단순히 아는 것과 모르는 것으로도 큰 차이를 만들어낼 수 있다는 걸 깨달을 수 있었다.
또, 어쩌다보니 팀장이 되어 발표 기회도 가질 수 있었다!!ㅋㅋㅋ 운영진분들과 참여자분들 포함 현장에 사람이 대략,, 150-160분정도 계셨던 것으로 기억하는데 이렇게나 많은 사람들 앞에서 이야기해본건 또 처음인 것 같아서 개발자로서 앞으로 더욱 무언가 발표할 일이 많을텐데 그 때를 위한 값진 경험치가 되었다고 생각한다.
마지막으로,, 마침 해커톤 도중 우리나라의 월드컵 마지막 조별 예선 경기가 예정되어 있어서 12시부터 다 같이 쉬는 시간 겸 야식과 함께 경기를 보게 됐는데 이렇게 많은 사람과 함께 경기를 보니 너무 재밌었고, 결국 16강에 진출도 하게 되어 너무 신났고, 다시 힘내서 개발을 할 수 있었다🥳
힘들고 졸리긴했지만 수많은 개발자분들이 열심히 개발하는 모습을 바로 옆에서 지켜 보면서 개발에 대한 열정을 가득 채워올 수 있었던 것 같다. 다음에도 좋은 기회가 온다면 그때는 조금 더 성장한 모습으로 꼭 다시 해커톤에 참여해보고 싶다!
'기록 > 후기, 회고' 카테고리의 다른 글
인프콘 2023 후기 (0) | 2023.08.31 |
---|---|
NEXTSTEP TDD, 클린 코드 with Java 피드백 정리 및 후기 (0) | 2023.01.22 |
2022 회고 (0) | 2023.01.21 |
쎄트렉아이 인턴 후기 (1) | 2022.12.07 |
인프랩 CTO 이동욱 님과의 멘토링 후기 (0) | 2022.04.04 |
백엔드 개발을 공부하고 있습니다.