참여하게 된 계기?
나는 지금까지 주로 3~4개월 동안 진행되는 장기 프로젝트에 참여해 왔다. 그래서 이번 기회를 통해 단기간에 결과물을 도출하며, 개발 전 과정에서 나의 부족한 부분을 빠르게 파악하고 싶었다. 또한, 동아리의 실력 있는 백엔드 개발자들이 개발하는 과정을 가까이에서 지켜보며 배울 수 있는 좋은 기회라고 생각해 참여하게 되었다.
개발한 프로젝트 소개
해커톤의 주제는 '감정'이었다. 우리 팀은 사용자가 자신만의 감정 지도를 만들어가며 특정 장소에서의 감정 변화를 시각적으로 표현하고 기록할 수 있는 서비스를 기획했다.
개발 과정
나는 CI/CD 구축과 로그인 기능 개발을 맡았다.
CI/CD 파이프라인 구축은 비교적 자신 있는 작업이었다. 며칠 전 진행 중인 경제 학습 애플리케이션 서버를 배포한 경험이 있었기 때문에, 빠르게 Docker, EC2, GitHub Actions를 활용해 자동화된 배포 시스템을 구축할 수 있었다. 더 나아가 HTTPS 적용까지 시도했지만, Certbot 인증서 발행 오류로 인해 결국 HTTP 배포를 선택할 수밖에 없었다.
또한, 프런트엔드 배포도 담당했는데, 이는 처음 시도해 보는 작업이라 여러 시행착오를 겪었다. 처음에는 CloudFront를 이용해 배포를 시도했지만, API 서버가 HTTP 프로토콜을 사용하다 보니 Mixed Content 차단 문제로 인해 통신이 원활하지 않았다. 결국, 해결 방법을 찾지 못해 프런트엔드도 S3 정적 웹페이지 호스팅을 활용해서 HTTP로 배포할 수밖에 없었다.
해커톤 특성상 많은 기능을 개발할 수는 없지만, 배포 인프라만큼은 완성도 있게 구현하고 싶었기에 HTTPS를 적용하지 못한 점이 아쉬웠다. 브라우저 창에서 “주의 요함” 메시지가 뜨는 것도 꽤 거슬렸다… Cetbot에 대한 지식을 좀 키울 필요성을 느꼈다.
로그인 기능은 스프링 시큐리티를 활용한 정식 로그인 프로세스를 구축하기엔 시간이 부족해, 대신 이메일 기반 간단한 인증 방식으로 구현했다.
결과
결과적으로 위와 같은 API 명세서에 존재하는 모든 기능을 개발할 수 있었다.
기능이 많은 것은 아니지만, 그래도 MVP에서 요구하는 기능들을 빠짐없이 개발해서 뿌듯했다.
배웠던 점
1. 코드의 재활용
같은 팀원이 이미지 추가/삭제 API를 구현하는 과정을 지켜보면서, 이미지 정보를 저장하는 객체와 로직이 짜임새 있게 구성되어 있고, 재사용성이 높다는 점을 깨달았다.
나는 이미지를 S3에 업로드하고, URL을 받아와 DB에 저장하는 과정을 구현할 때, 데이터 구조와 모듈화 된 로직에 대해 깊이 고민하지 않고 단순히 동작하는 코드만 작성했었다. 하지만 팀원의 코드를 보니, 체계적인 데이터 구조와 모듈화 된 로직을 활용하면 개발 생산성이 크게 향상될 수 있다는 것을 느꼈다.
이번 경험을 통해 앞으로는 모듈화와 데이터 저장 구조에 대해 더 깊이 고민하고, 재사용성을 고려한 코드 작성에 대해 더 고민해야겠다.
2. 생각의 전환
개발 과정에서 이미지 추가/삭제 API를 구현했다. 이전까지 나는 이미지 처리에 대해 깊이 고민해 본 적이 없었다.
예를 들어, 게시물에 이미지를 추가해야 한다면 게시물 등록 API의 입력 인자로 MultipartFile 데이터를 추가하면 된다고 생각했다. 하지만 이런 방식은 이미지가 필요한 로직마다 MultipartFile을 처리하는 코드가 반복되면서 중복 코드가 남발되는 문제가 있었다.
그런데 우리 해커톤 팀원은 이미지 추가/삭제 API를 별도로 만들어 게시물과 연동하는 방식을 선택했다. 그 과정을 보면서 “왜 나는 저런 생각을 못 했지?” 하는 깨달음을 얻었다. 특정 데이터에 이미지를 추가하거나 삭제할 때마다 해당 API를 호출하면 되니, 코드의 유지보수성이 훨씬 좋아졌다.
코드가 지저분하다면 다른 방식으로 생각하는 능력을 길러야 할 거 같다.
결론
처음으로 해커톤에 참여했는데, 결과적으로 많은 것을 얻어가는 기회가 되었다.
무엇보다 내 부족한 점을 명확하게 파악할 수 있었고, 실력 있는 개발자들이 좋은 코드를 작성하는 과정을 옆에서 지켜보며 많은 것을 배울 수 있었다. 개발 과정을 지켜보면서 자연스럽게 동기부여가 되기도 했다.
또한, 부족한 점만 확인한 것이 아니라, 단기간 집중해서 개발하면서 내가 동아리를 시작하기 전보다 확실히 성장했구나 하는 걸 체감할 수 있었다. 해커톤을 통해 동기부여를 얻은 만큼 앞으로도 계속 성장해 나가고 싶다.
15시간이라는 시간이 어떻게 지나갔는지도 모를 만큼 개발에 몰입했고, 중간중간 수다도 떨고 야식도 먹으며 정말 즐거운 시간을 보냈다.
'활동 > Cotato' 카테고리의 다른 글
Cotato 10th 백엔드 네트워킹 최종 회고 (0) | 2025.02.11 |
---|