Super Kawaii Cute Cat Kaoani
본문 바로가기
👩‍💻 Project

[UMC 7기 회고] 데모데이 프로젝트 회고록

by wonee1 2025. 2. 23.
728x90

 

🐈 0. 소개 


 
 
 안녕하세요! 저는 현재 컴퓨터 공학과에 재학 중인 3학년입니다. 작년 9월부터 UMC 7기로 활동하며 10주 동안 워크북을 통해 스터디한 내용을 바탕으로 UMC 7기 데모데이에 참가하게 되었습니다. 그동안 간단한 사이드 프로젝트를 진행해본 경험은 있었지만, PM, 디자인, 프론트엔드, 백엔드가 함께하는 팀 프로젝트는 처음이었습니다. 처음에는 각 역할 간의 소통 방식이나 협업 프로세스에 익숙하지 않아 어려움도 있었지만, 점차 원활한 커뮤니케이션의 중요성을 깨닫고 팀원들과의 협력을 통해 프로젝트를 완성해 나가는 과정에서 많은 것을 배울 수 있었습니다 ✏️

 

 

  💻 1. 활동 경험  


 
 
 

 
 

1️⃣ 참여 프로젝트와 맡은 역할

 
 저는 1인 가구를 위한 자취 꿀팁 가이드북 웹사이트, HOME MASTER에서 백엔드 파트로 참여하였습니다. 데모데이 개발자 매칭 때 프로젝트들 중에서 보고 바로 지원해야겠다고 결심했습니다. 1인 가구를 위한 자취 꿀팁이라는 주제가 저에게도 굉장히 실용적이고 흥미롭게 다가왔기 때문입니다.
 
 대학생뿐만 아니라 취준생, 혹은 독신 가구들이 증가하고 있는 사회적 흐름 속에서, 1인 가구를 위한 실용적인 정보 제공이 점점 더 중요해지고 있다고 생각했습니다. 많은 사람들이 자취를 시작하면서 겪는 시행착오를 줄이고, 유용한 팁을 한눈에 볼 수 있는 플랫폼이 있다면 큰 도움이 될 것이라 느껴 지원을 결심했습니다.
 

열심히 적었던 개발 매칭 지원서

 
 
다행이 1차 매칭 때 바로 합격이 되어 프로젝트에 참여할 수 있게되었습니다. (이때 떨어질까봐 엄청 마음을 졸였습니다) 
 
 

2️⃣   팀원들과의 협업 경험

 이전 프로젝트에서는 저 혼자 백엔드를 맡고, 프론트엔드도 단 한 명이어서 둘이서만 진행하는 방식이었습니다.
그 당시에는 협업보다는 기능 구현 자체에 집중하는 것이 주된 목표였어요. 하지만 이번 프로젝트는 참여 인원이 많고, 구현해야 할 기능도 훨씬 많았기 때문에 개발 속도를 맞추고, 코드의 일관성을 유지하는 것이 중요했습니다.
 
 

🤝 GitHub PR 리뷰 

  • 코드 품질을 높이기 위해 PR 작성 시 기능 설명 및 변경 사항을 상세히 문서화하여 리뷰를 받도록 했습니다.  미리 작성된 이슈, pr 템플릿으로 pr을 작성하면서 머지하는 걸 익혔습니다 

pr 작성

 
 

  • 코드 스타일을 맞추기 위해 일관된 코딩 컨벤션을 사용했습니다. (ESLint를 사용했습니다 )

 
 

📆 작업 관리

  • 저의 팀은 맨 처음에 간단하게라도 그라운드 룰을 설정하였습니다. 
  • 디스코드에서 프론트, 백로그를 관리했습니다. 디스코드에서 서로 올린 이슈, 브랜치, 배포 돌아가는 상황을 다 볼 수있어서 매우 편리했습니다. 자동 알림 기능을 설정하여 PR이 올라오거나 배포가 완료될 때마다 팀원들이 실시간으로 확인할 수 있도록 했습니다. 덕분에 소통이 더욱 원활해졌고, 실시간 피드백이 가능했습니다. (팀원분이 적용해주셨는데 좋아서 저도 다음 프로젝트 때 한번 적용해볼 계획입니다) 
  • 매주 일정한 주기로 대면 혹은 회의를 진행하여, 진행 상황을 공유하고 우선순위를 조정하는 방식으로 프로젝트를 운영했습니다.

 

팀원들과 함께 정한 그라운드 룰/ 매주 진행한 정기 회의

 
 
 
 

🛠 긴급 버그 해결을 위한 신속한 대응

  • 서비스 운영 중 예상치 못한 버그가 발생했을 때, 팀원들과 즉각적인 협업을 통해 원인을 분석하고 해결하였습니다. 
  • 예를 들어, 검색에서 문제가 발생했을 때, 프론트 분께 전달 받은 후 바로

 

2️⃣ 프로젝트 진행 중 겪었던 에피소드

 
프로젝트에 합류한 후, 저는 팁 CRUD, 검색 및 커뮤니티 관련 API 개발 및 고도화를 담당했습니다. 처음에는 기존 코드베이스를 파악하는 데 시간이 필요했지만, 팀원들과 지속적인 코드 리뷰와 피드백을 주고받으며 점차 적응할 수 있었습니다
 
 

🎯 좋아요/북마크 정렬 오류 해결

  • 처음에는 Prisma에서 데이터를 가져온 후, JS에서 .sort()를 사용하여 좋아요 및 북마크 개수를 기준으로 정렬했지만, limit 값이 다를 경우 정확한 순서대로 정렬되지 않는 문제가 발생했습니다.
  • 해결책으로 Prisma의 orderBy 옵션을 활용하여 DB 쿼리에서 바로 정렬을 적용하도록 변경했습니다.
  • 추가로, 좋아요 개수가 같은 경우 최신순으로 정렬하도록 보완하여, 데이터가 정확하게 정렬되도록 개선했습니다.

 

🛠 검색 기능의 최적화

  • 기존 검색 기능에서는 mode: "insensitive" 옵션을 사용했으나, Prisma 최신 버전에서는 지원되지 않는 데이터베이스(MySQL 등)에서 오류가 발생했습니다. 
  • 해결책으로 해당 옵션을 제거하고, 대소문자를 구분하지 않고 검색이 가능하도록 DB 레벨에서 처리했습니다. 

 
🏗 좋아요 및 북마크 여부 조회 기능 추가

  • 팁 상세 조회 및 저장된 팁 목록에서, 사용자가 해당 팁을 좋아요 및 북마크했는지 여부를 함께 반환하는 기능을 추가했습니다. 


👥 인플루언서 여부 추가

  • 인플루언서가 작성한 팁을 필터링하는 기능을 추가했습니다. 

 

📷 이미지 업로드 기능 구현 

더보기

1️⃣ Multer와 Multer-S3 설정

  • Multer를 사용하여 파일 업로드 미들웨어를 적용하고,
  • Multer-S3를 활용하여 업로드된 파일을 S3 버킷에 저장하는 구조를 익혔습니다.

2️⃣ S3에 업로드된 이미지의 URL 반환

  • 업로드된 파일의 S3 URL을 클라이언트에게 응답 값으로 전달하여,
    프론트엔드에서 이미지를 활용할 수 있도록 했습니다.

3️⃣ S3 파일 접근 권한 및 보안 설정

  • 처음에는 업로드된 이미지가 퍼블릭 URL로 노출되지 않아서 접근이 불가능했는데,
    S3 버킷 정책을 수정하여 허용된 사용자만 접근 가능하도록 권한을 설정했습니다.

4️⃣ 불필요한 이미지 삭제 및 업데이트 처리

  • 기존 이미지를 삭제하고 새로운 이미지로 업데이트하는 기능을 추가했습니다.
  • S3에서 특정 파일을 삭제하는 deleteObject API를 활용하여 기존 파일을 제거한 후 새로운 파일을 업로드하는 방식으로 구현했습니다.

 

🛠 구현하며 배운 점 & 어려웠던 점

  • 파일 저장 방식 이해: 처음에는 S3에 직접 업로드하는 과정이 낯설었지만,
    Multer-S3를 활용하여 로컬 저장 없이 바로 S3에 저장하는 방식을 익힐 수 있었습니다.
  • CORS 정책 문제 해결: 업로드된 이미지를 클라이언트에서 호출할 때,
    CORS 정책으로 인해 이미지가 차단되는 문제가 발생했는데, S3 CORS 설정을 수정하여 해결했습니다.
  • 버킷 정책 최적화: 처음에는 퍼블릭으로 모든 사람이 접근 가능하도록 설정했었지만,이후에는 필요한 권한만 허용하는 방식으로 변경하여 보안성을 강화했습니다.

 

4️⃣ 배운 기술과 극복한 도전 과제

 
Prisma 활용 능력 향상

  • Prisma를 단순한 ORM으로 사용하는 것이 아니라, 정렬, 검색 최적화, 관계형 데이터 조회 등을 효율적으로 처리하는 방법을 배웠습니다.
  • 특히, orderBy와 _count를 활용하여 좋아요 및 북마크 개수를 기반으로 정렬하는 로직을 개선하는 방법을 배웠습니다. (orderBy는 알고 있었는데 _count는 이번에 새롭게 알게 되었습니다) 

 
📌 RESTful API 설계 원칙 학습

  • API 응답 형식을 일관되게 정리하고, 에러 핸들링을 체계적으로 개선하는 작업을 진행했습니다. (밸리데이션 방법도 새롭게 알게 되었습니다) 
  • Swagger 문서를 활용하여 API 명세를 작성하고, 팀원들이 쉽게 이해하고 사용할 수 있도록 문서화하는 과정을 경험했습니다. (이미지, 파일 업로드를 스웨거에서 어떻게 주석을 적는지 처음 알게 되었습니다) 

 
 
 

api 개발 진행 및 트러블 슈팅, 회고록 작성

 

스웨거 작성

 
 
 
 

🏆 2. 주요 성과 및 배움 (Achievements & Learning)


 

🎁 데모데이 부스 운영

 
 저는 이런 큰 행사에 참여하는 것이 처음이라 많이 떨렸습니다. 특히, 직접 사람들 앞에서 우리가 만든 사이트가 어떻게 동작하는지 시연하는 순간이 가장 긴장되는 이유 중 하나였습니다. (중간에 에러가 나면 어쩌나 걱정돼서 계속 코드랑 서버를 점검했어요 ㅋㅋ)
 
 실제로 데모데이 전날까지 팀원들과 테스트를 반복하며 기능이 정상적으로 작동하는지 확인했지만, 그럼에도 불구하고 예기치 못한 변수가 생길까 봐 걱정이 많았습니다. 하지만 막상 전시회를 시작하니, 지금까지 우리가 열심히 개발해온 결과물을 보여주는 과정이 뿌듯하기도 했고, 많은 사람들이 관심을 가져주시는 걸 보며 보람도 느꼈습니다.
 
 






 저희 팀은 단순한 시연을 넘어서, 자취라는 컨셉을 살려 부스를 더 재미있게 운영하고 싶었습니다. 그래서 자취용품들을 준비해 뽑기 이벤트를 진행했습니다. 참가자들은 웹사이트를 체험한 후 인스타 팔로우를 하면, 뽑기를 통해 자취 필수템(세제, 수세미, 라면 등)을 받을 수 있도록 했습니다. 또한 타로 부스도 준비하여 1인 가구들의 고민을 들어주는 이벤트도 진행했습니다! 자취를 하다 보면 혼자 해결해야 할 고민들이 많아지는데, 이를 조금이라도 덜어주고 소통할 수 있는 재미있는 요소를 추가하였습니다 (같은 팀원분이 해주셔서 너무 감사했어요 짱 멋있었다..) 
 
 이 이벤트 덕분에 많은 분들이 부스를 방문해주셨고, 단순히 기능을 소개하는 것보다 더 효과적으로 프로젝트의 취지를 전달할 수 있었던 것 같습니다. 사람들의 반응을 보면서 사용자 경험을 고려한 운영이 얼마나 중요한지 새삼 깨닫는 계기가 되었습니다.
 
 
 

🏆 우수상 수상!

 
 

 
 

이렇게 열심히 준비한 덕분인지, 저희 팀은 데모데이에서 우수상이라는 값진 결과를 얻게 되었습니다!
 
사실 처음에는 단순히 우리가 배운 것들을 실전에서 적용해보자는 마음으로 시작한 프로젝트였고 다들 이 프로젝트가 첫 프로젝트인 팀원들도 있어서 다들 너무 기대할지 말자고 했었는데  이렇게 좋은 결과까지 얻게 되어 정말 기뻤습니다.
 
우수상 발표 마지막 순간, 홈마스터라는 이름이 호명되었을 때, 순간적으로 이게 맞나? 하는 생각이 들었습니다. (다들 우리 팀 이름이 불렸을 때 어리둥절해서 몇 초 동안 서로를 바라보며 '이게 현실인가..?' 고민했던 순간 ㅋㅋ) 한순간에 졸음이 확 달아났고, 너무 기뻐서 바로 팀원들과 눈을 마주치며 환호했던 기억이 납니다. 그전까지 다들 지쳐서 거의 반쯤 쓰러져있었는데... 

 
 

다들 이렇게 일어남

 
  약 두 달이라는 기간동안 열심히 준비 했던 프로젝트로 좋은 성과를 낼 수 있어서 기뻤습니다 ☺️
 
 

 
 

3. 느낀 점 및 조언  


 
 
이번 프로젝트를 통해 정말 많은 것을 배웠고, 그중에서도 가장 중요하게 느꼈던 점들을 간추려 정리해보았습니다!
 
 
혼자서 하는 개발과 팀 프로젝트는 완전히 다르다.
  개인 프로젝트에서는 내가 원하는 방식대로 코드만 작성하면 되었지만, 팀 프로젝트에서는 다른 팀원들과의 소통과 일정 조율이 훨씬 더 중요하다는 것을 배웠습니다. 서로의 작업을 고려하면서 개발해야 하기 때문에, 자연스럽게 협업 능력이 향상될 수밖에 없었습니다.
 
일관된 코드 스타일과 협업 프로세스가 중요하다.
  여러 명이 함께 개발하는 만큼, 코드 컨벤션을 맞추고 Git 브랜치 전략을 명확하게 정리해두는 것이 필수라는 것을 깨달았습니다.  처음부터 코드 컨벤션을 맞추고 들어가니까 개발하기 좀 더 수월했습니다. (머지할 때도 충돌이 적게 일어났어요) 
 
.
API 문서화를 철저히 해야 한다.
  API 스펙이 명확하지 않으면 프론트엔드와 불필요한 커뮤니케이션이 증가하고, 개발 속도가 느려질 수 있다는 점을 직접 경험했습니다. 초반에는 API 응답 형식이 제각각이어서 조율하는 데 시간이 걸렸지만, 이후 문서를 정리하고 나니 협업이 훨씬 원활해졌습니다.
 
 
커뮤니케이션이 원활해야 프로젝트가 잘 진행된다.
  기술적인 부분도 중요하지만, 결국 프로젝트의 성공을 좌우하는 것은 팀원 간의 원활한 소통이라는 걸 깊이 깨달았습니다. 저희 팀은 카카오톡, 디스코드 등 다양한 소통 채널을 활용해 최대한 빠르게 피드백을 주고받을 수 있도록 했습니다.
특히, 중요한 일정이 다가올 때는 파티룸을 대여해서 밤새 코딩하는 경험도 했는데… 😂 (다들 정말 대단한 열정을 가지고 있어서, 가끔 "이 사람들은 진짜 잠은 자는 걸까?" 싶었어요 ㅋㅋ)

 

🚀 추가적으로 느낀 점 & 나의 다짐
 

이번 프로젝트를 통해 배운 기술 중에서도 저는 AWS, 배포, CI/CD 전략을 좀 더 깊이 공부해야겠다는 필요성을 느꼈습니다. 배포 과정에서 예상치 못한 문제들을 겪으면서, Docker를 활용하면 유지보수성과 확장성이 더 좋아질 것 같다는 생각이 들었고, 앞으로 관련 기술을 더 깊이 공부해볼 계획입니다.
 
특히, 배포에 실패할 때마다 서버 팀장분께 너무 많이 의지했던 점이 아쉬움으로 남았습니다. 처음에는 배포 과정이 익숙하지 않아 문제 해결을 할 때마다 도움을 요청했지만, 이제는 스스로 문제를 해결할 수 있는 역량을 키워야겠다는 생각이 들었습니다. 다음 프로젝트에서는 CI/CD 구축부터 배포 자동화까지 직접 해보면서, 배포 환경을 좀 더 원활하게 운영할 수 있도록 경험을 쌓고 싶습니다.
앞으로는 배포 과정에서 발생할 수 있는 다양한 이슈들을 직접 해결해보면서, AWS와 Docker, CI/CD 파이프라인에 대한 이해도를 높이는 것이 제 목표입니다! 
 
이번 프로젝트를 통해 단순히 기술적인 성장뿐만 아니라, 협업 능력도 크게 향상되었고, 팀 단위 프로젝트에서도 더 효율적인 협업을 할 수 있는 자신감이 생겼습니다. 앞으로도 이런 경험을 바탕으로 더 성장하고, 더 좋은 프로젝트를 만들어 나가고 싶습니다! 😊🚀
 

 
 

💜 4. 마무리 


 

 이번 프로젝트를 통해 기술적으로도, 협업적으로도 한 단계 성장할 수 있었던 값진 경험을 했습니다. 처음에는 막연한 도전처럼 느껴졌지만, 팀원들과 함께 고민하고 해결해 나가면서 프로젝트를 완성하는 과정 자체가 너무나도 뜻깊었습니다. 단순히 기능을 구현하는 것을 넘어서, 사용자 경험을 고민하고, 서비스 운영까지 고려하는 개발자의 시각을 키울 수 있었다는 점이 가장 큰 배움이었습니다. 그리고! 8기에서는 스프링부트로 참여하게 될 것 같아요!  이번에는 Node.js로 백엔드를 경험했으니, 다음에는 Spring Boot를 활용해 더 다양한 기술 스택을 익히고 싶습니다. (하나씩 정복해 나가겠다는 다짐! 💪🔥)
 
 
앞으로도 더 많은 프로젝트를 경험하면서, 더 나은 개발자로 성장해 나가겠습니다! 읽어주셔서 감사합니다. 

 
 
 

 
 
 
 
 
 
 

 


 
 

🔗 링크 정리 


 
 
🚩깃허브 링크 
https://github.com/UMC-Master

 

UMC-Master

UMC-Master has 3 repositories available. Follow their code on GitHub.

github.com

 
 
 
📄랜딩 페이지 
https://homemaster.qshop.ai/

 

HOME MASTER

1인 가구를 위한 꿀팁 가이드북

homemaster.qshop.ai

 
 
🔗실배포 사이트 
https://www.hmaster.shop/

 

홈마스터

 

www.hmaster.shop

 
 
 

728x90