| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- github
- angular
- 클론코딩
- literal
- font-size
- 당근마켓
- 1px border
- Strict
- 으
- 10px
- Props
- TS
- &연산
- npm
- 서버리스 #
- 문서번호
- ZOOM
- 컴포넌튼
- 타입스크립트
- 0.25px border
- TypeScript
- ES5
- jwt
- 0.75px border
- Websocket
- 0.5px border
- es6
- 전역변수
- entity
- 데이터베이스 #try #이중
- Today
- Total
복잡한뇌구조마냥
🧳 CHWI·MEET(취밋) – 취미 장비 대여 플랫폼 (1등 수상 프로젝트) 본문

🏆 프로젝트 성과
- 운영진 평가 1위
- 참여 기업 평가 1위
- 동기 수강생 투표 2위
“기획–개발–배포–운영–개선”까지 실제 서비스 수준으로 완성한 End-to-End 프로젝트
🧭 왜 만들었는가
취미 장비는 가격이 비싸고 사용 빈도는 낮아 진입 장벽이 높습니다.
기존 대여 방식은 보통 아래 중 하나였습니다.
- 중고 거래로 직접 구매
- 렌탈샵에서 비싸고 제한된 품목 대여
- 특정 카테고리만 다루는 플랫폼(캠핑/촬영 등)
그래서 저희는 개인 간으로 장비를 안전하게 대여하고,
예약·결제·채팅·후기까지 하나의 흐름으로 연결된 플랫폼을 만들고자 했습니다.
🧩 핵심 기능 소개
✔️ AI 기반 기능
- AI 게시글 자동 작성 (Image + Text)
- 이미지 업로드만으로 제목/설명/카테고리/가격/보증금 등 주요 필드 자동 생성
- 당근마켓 AI 게시글 작성 기능에서 착안한 UX
- RAG 기반 장비 추천 검색 (3-stage)
- Stage1: 의미 기반 유사도 검색(Vector)
- Stage2: 후보 정제(노이즈 제거)
- Stage3: LLM 요약/설명 생성
- AI 후기 요약
- 게시글/호스트 리뷰를 각각 다른 프롬프트로 요약 제공
- (개선 포인트) 후기 데이터가 많아질수록 요약 신뢰도가 더 올라가는 구조
✔️ 예약(상태 머신) & 동시성 제어

- 예약 상태 17단계 설계
- 승인 → 결제 → 픽업 → 대여 → 반납 → 정산 흐름을 세밀하게 분리
- 동시성 제어 전략 적용
- 낙관적 락 / 비관적 락 / 분산 락(Quartz 배치 중복 처리)
- “상태 전환 + 버저닝” 기반 선점 처리
✅ 이 파트는 발표 피드백에서도 “초반 설계가 잘 되어 있었다”는 강점으로 언급됨
✔️ 실시간 채팅 & 알림
- 채팅: STOMP + Redis Pub/Sub
- 멀티 서버 환경에서도 메시지 브로드캐스트 안정화
- afterCommit 이후 발행으로 정합성 확보
- 알림: SSE + Quartz 스케줄러
- 예약 변경/리마인드/자동 삭제 등 운영 자동화
✔️ 관리자 기능(운영 관점)
- 지역/카테고리 CRUD
- 신고 관리 및 제재 자동화(Quartz)
신고는 type + targetId 기반 다형 구조로 설계
→ 신고 대상 확장 시 테이블 추가 없이 대응 가능
🗂️ DB 설계 (ERD)

🔧 설계 방향 및 고려사항
- 게시글–예약–리뷰–채팅–알림 흐름 중심으로 핵심 도메인 연결
- 신고/알림은 type + targetId 다형 구조로 확장성 확보
- 예약 상태를 세분화하여 예외 케이스(파손/미반납 등)까지 충돌 없이 처리
🏗 시스템 아키텍처

개발 & 배포
- GitHub Actions 기반 CI/CD
- Terraform IaC로 인프라 코드화
- Blue-Green 무중단 배포로 운영 안정성 확보
- Prometheus + Grafana 모니터링
- k6 부하 테스트로 성능 검증
이미지 처리 파이프라인
- S3 업로드 → Lambda 리사이징 → CloudFront CDN 캐싱
- 원본 대비 썸네일/디테일 이미지 용량 대폭 감소
- S3 트래픽 감소 + 이미지 로딩 속도 개선
🛠️ 기술 스택
| 항목 | 기술 |
| Backend | Java, Spring Boot, Spring Security, JPA, QueryDSL, jOOQ |
| DB | MariaDB, Redis |
| AI | Spring AI, OpenAI (멀티모달/요약/RAG) |
| Infra | AWS EC2, S3, Lambda, CloudFront |
| DevOps | Docker, Terraform, GitHub Actions, Blue-Green |
| Monitoring/Test | Prometheus, Grafana, k6 |
| Frontend | Next.js, React Query, Zustand, Tailwind, shadcn/ui |
🎯 맡은 역할 & 구현한 기능 (팀장 / BE, FE, INFRA)
이번 취밋(Chwi-Meet) 프로젝트에서는
백엔드·프론트엔드·인프라·AI·DevOps 전반을 아우르는 End-to-End 역할을 맡아 프로젝트를 주도했습니다.
👤 회원 / 인증
![]() |
![]() |
| 로그인 | 회원가입 |
- JWT + Redis 기반 인증/인가 구조 설계
- SMTP 이메일 인증 구현
- OAuth2 기반 카카오 소셜 로그인 연동
📝 리뷰
![]() |
![]() |
![]() |
| 리뷰 한컷 | 리뷰 목록 및 통계 | 리뷰 작성 |
- 리뷰 CRUD 구현
- QueryDSL / jOOQ 기반 통계 조회 API 개발
- Spring AI를 활용한 후기 요약 기능 구현
💬 실시간 기능
![]() |
![]() |
| 알림 | 채팅 |
- STOMP 기반 WebSocket 채팅 구현
- Redis Pub/Sub을 활용한 메시지 브로드캐스트
- SSE(Server-Sent Events) 기반 실시간 알림 스트림 처리
📆 예약 시스템
![]() |
![]() |
![]() |
![]() |
![]() |
| 예약 등록 | 예약 목록 | 예약 상태 변경 | 예약 결제 | 예약 상세 |
- Quartz 스케줄링을 통한 예약 상태 자동 전환
- Enum 기반 예약 상태 머신(17단계) 설계
- 낙관적 락 기반 동시성 제어 구조 적용 (팀 단위 개발)
🤖 AI 기능
![]() |
![]() |
![]() |
| 스마트 검색 | 게시글 등록 | 후기 요약 |
- Spring AI Vector Store 기반 게시글 추천(RAG 구조)
- OpenAI 멀티모달 모델을 활용한
이미지 분석 기반 게시글 자동 생성
🤗 관리자 기능
![]() |
![]() |
![]() |
![]() |
| 카테고리 | 지역 | 신고 등록 | 신고 제재 |
- 지역 / 카테고리 관리
- 신고 및 제재 처리
- Quartz 기반 누적 신고 제재
🎨 프론트엔드
- Next.js 기반 주요 UI 및 사용자 플로우 대부분 구현
- Zustand를 활용한 전역 상태 관리
- React Query를 통한 API 캐싱 및 서버 상태 관리
💳 외부 API 연동
- TossPayments 테스트 결제 연동
- Kakao 주소 검색 API 적용
🧪 성능 테스트

- k6 부하 테스트 시나리오 작성 및 실행
🛠️ 기술적 경험 & 트러블 슈팅



기능 구현뿐 아니라 운영 관점에서 발생하는 문제들을 직접 해결하며 서비스 완성도를 높였습니다.
- QueryDSL 대비 jOOQ가 20% 이상 빠른 성능을 보임을 검증
→ 리뷰 통계 API에 jOOQ 도입하여 조회 성능 개선 - SMTP 인증 메일 전송을 비동기 처리
→ 기존 약 3초 소요되던 응답을 100ms 이하로 단축, 사용자 인증 UX 대폭 개선 - S3 private 설정으로 인한 이미지 접근 불가 이슈
→ Presigned URL 기반 업로드 구조로 개선 후 CloudFront 캐싱 적용 - 이미지 리사이징 파이프라인 도입
→ 평균 이미지 용량 약 99% 감소, 페이지 로딩 속도 개선 - SSE 연결 시 DB 커넥션 누수 발생
→ 원인: OSIV + @Transactional 조합
→ OSIV 비활성화 + 트랜잭션 분리 설계로 문제 해결 - Flyway 스키마 불일치로 배포 실패
→ 운영 DB schema_history 복구 및 마이그레이션 정합성 회복
🧯 문제 해결 경험 & 품질 개선 프로세스

1️⃣ 단계별 버그 테스트 & QA 진행
프로젝트 완성도를 높이기 위해 기능 구현 이후 자체 QA 및 반복 테스트를 진행했습니다.
- 1차 버그 테스트 (40+건)
→ 핵심 기능 중심 기능 오류, 예외 케이스 점검 - 2·3차 버그 테스트 (각 40+건)
→ 실제 사용자 시나리오 기반 재현 테스트 - 중간 피드백 및 사용자 피드백 수렴
👉 총 80건 이상의 오류를 직접 확인·수정하며
서비스 안정성을 지속적으로 개선했습니다.
2️⃣ 트러블슈팅 로그 관리 및 해결
발견된 이슈들은 단순 수정에 그치지 않고,
원인–해결–재발 방지 관점에서 정리했습니다.
- AI 이미지 생성 실패
- WebSocket 인증 오류
- SSE 연결 시 DB 커넥션 누수
- Flyway 스키마 불일치로 인한 배포 실패
- Redis / Quartz 설정 오류 등
각 이슈는 **원인·해결 방법·상태(해결/보류)**로 관리하여
운영 중 동일한 문제가 반복되지 않도록 했습니다.
3️⃣ 사용자 피드백 기반 개선
커뮤니티 공개 후 사용자 설문을 통해 피드백을 수집했고,
- 서비스 만족도 및 재사용 의향에서 긍정 평가
- UI 흐름, 필터 UX, 추천 결과 설명 방식 개선
- 추천 결과 신뢰도 및 사용성 보완
👉 “기능을 만드는 것”에서 끝나지 않고
“사용자가 실제로 쓰는 흐름”을 기준으로 개선했습니다.
🧪 발표 & 피드백
하단 발표 영상 참고
✅ 긍정 피드백
- 오프라인 모임 2회 진행할 정도로 팀 커뮤니케이션이 좋음
- 초기 설계가 탄탄(동시성/상태머신)
- AI 기능을 여러 개 실제 서비스 흐름에 잘 녹임
- 외부 피드백을 빠르게 반영하며 실행력이 좋음
⚠️ 개선 피드백
- 후기 요약은 리뷰 데이터가 더 많아지면 신뢰도가 더 좋아질 것
- 게시글 필터 UX: 목록 복귀 시 초기화 여부 검토 필요(회원/비회원 기준 포함)
- “여러 이미지 → 여러 게시글 생성” 기능은 확장 아이디어로 좋음
🏁 프로젝트 결과
이번 프로젝트는 단순 기능 구현을 넘어
실제 운영 가능한 서비스 수준까지 완성한 프로젝트였습니다.
- 운영진 평가 1위 & 참여 기업 평가 1위 달성
- 공식 일정 대비 약 2주 빠른 서비스 완성도 달성
- 백엔드·프론트·인프라·AI·DevOps를 아우르는 풀스택 오너십 발휘
- QA 프로세스 구축 및 주도 → 총 80개 이상 기능 오류 해결
- IaC, 모니터링, 비동기 처리 도입으로 성능과 운영 안정성 동시 개선
- 커뮤니티 공개 후 사용자 피드백 수집·분석 주도
→ UI 흐름 및 추천 기능 일부 개선 - 벡터 기반 추천, 이미지 기반 생성형 AI, 실시간 통신 등
실서비스 수준 기능을 포함한 프로젝트 구현
💬 회고
이번 취밋(Chwi-Meet) 프로젝트는
단순 CRUD를 넘어 게시글 → 예약 → 후기 → 채팅 → 알림으로 이어지는
서비스 전체 흐름을 완성도 있게 구현한 프로젝트였습니다.
AI를 활용해
- 3단계 RAG 기반 게시글 추천,
- 이미지 분석 기반 게시글 생성,
- 후기 요약 기능을 구현하며
단순 데모 수준이 아닌 실제 서비스 흐름에 자연스럽게 녹아든 AI 기능을 만들 수 있었습니다.
또한 Blue-Green + Terraform 기반 CI/CD 자동화를 통해
무중단 배포와 인프라 코드화(IaC)를 직접 경험했고,
이미지 처리 역시 Lambda + CloudFront 구조로 개선하여
응답 속도와 트래픽 비용을 동시에 최적화했습니다.
Prometheus, Grafana, k6를 활용한
모니터링 및 부하 테스트 체계까지 구축하며
기능 구현뿐 아니라 성능·안정성·운영 관점까지 고려한 서비스를 완성할 수 있었습니다.
🤝 팀으로서의 회고
데브코스 기간 동안 총 3번의 팀 프로젝트를 진행했지만,
이번 최종 프로젝트는 팀 구성부터 마무리까지 가장 협업이 잘 되었던 프로젝트였습니다.
팀원을 직접 섭외해 팀을 구성하는 과정부터
각자가 맡은 역할에 책임감을 가지고 임했고,
빠르고 투명한 커뮤니케이션 덕분에
개발 과정이 전반적으로 안정적이고 편안하게 진행되었습니다.
각자 개발한 내용을 서로 문서화하고 공유하며
함께 성장할 수 있었던 점도 인상 깊었습니다.
이 자리를 빌려 함께한 팀원들에게 정말 고맙다는 말을 전하고 싶습니다.
🤔 아쉬웠던 점과 개선 방향
한 가지 아쉬운 점은
서비스 레이어 및 레포지토리 레이어의 테스트 커버리지가 충분하지 못했던 점입니다.
기능 구현과 운영 안정성에 집중하다 보니,
장기적인 유지보수 관점에서 테스트를 더 보강하지 못한 부분이 아쉽게 남았습니다.
향후에는 다음과 같은 방향으로 개선해보고 싶습니다.
- 서비스/레포지토리 레이어 테스트 강화
- 병목 구간 성능 최적화
- 장애 대응 및 모니터링 전략 고도화
- jOOQ 코드 생성 및 성능 관련 추가 개선
- 결제 고도화, 택배·보험 연계 등 실제 상용화 수준의 기능 확장
🧠 개인적인 인사이트
이번 프로젝트에서 가장 크게 얻은 인사이트는
기획 → 개발 → 배포 → 운영 → 개선이 하나로 연결된
End-to-End 서비스를 직접 구축해봤다는 경험이었습니다.
특히 인프라를 코드로 관리하며 직접 설계·운영한 경험,
트러블슈팅과 테스트, 사용자 피드백을 통해
서비스를 점진적으로 개선해 나간 경험은
기능 구현을 넘어 운영 관점에서 서비스를 바라보는 시야를 넓혀주었습니다.
Spring AI나 스케줄러 같은 기술을 실제로 활용하게 될 줄은 몰랐지만,
AI 활용 백엔드 과정의 취지에 맞게
AI를 적절히 서비스에 녹이며 기술적 숙련도를 크게 끌어올릴 수 있었던 시간이었다고 생각합니다.
이전 프로젝트에서는 AWS 인프라를 하나하나 수동으로 구성하고 배포했지만,
이번에 Terraform을 도입하면서
일관성 있고 재현 가능한 인프라 관리의 장점을 체감할 수 있었던 점도 큰 수확이었습니다.
오프라인에서도 즐겁게 팀 활동을 할 수 있었고,
앞으로 다들 좋은 곳에 취업해서
종종 다시 만날 수 있기를 기대해봅니다.
✨ 마무리 한 줄 요약
기능 구현을 넘어, 운영까지 책임지는 서비스를 만들어본 경험
— 취밋 프로젝트는 제 개발 여정에서 가장 밀도 높은 프로젝트였습니다.
🔗 관련 링크
Chwi-Meet ( 취미 장비 대여 플랫폼 ) | Notion
📜프로젝트 내용
www.notion.so
CHWI·MEET | 취미를 만나다
취밋 P2P 취미 장비 대여 플랫폼 © 2024 취밋. All rights reserved.
chwimeet.store
GitHub - prgrms-aibe-devcourse/AIBE3_FinalProject_Team1_BE: AIBE3 1팀 최종 프로젝트 - 백엔드
AIBE3 1팀 최종 프로젝트 - 백엔드. Contribute to prgrms-aibe-devcourse/AIBE3_FinalProject_Team1_BE development by creating an account on GitHub.
github.com
GitHub - prgrms-aibe-devcourse/AIBE3_FinalProject_Team1_FE: AIBE3 1팀 최종 프로젝트 - 프론트엔드
AIBE3 1팀 최종 프로젝트 - 프론트엔드. Contribute to prgrms-aibe-devcourse/AIBE3_FinalProject_Team1_FE development by creating an account on GitHub.
github.com
- 발표영상(Youtube): https://youtu.be/vHK1TTFYswM
'공통 > 프로젝트' 카테고리의 다른 글
| ✈️ TripHub - 여행 계획 추천 플랫폼 (1등 수상 프로젝트) (2) | 2025.07.23 |
|---|---|
| BIP ( 약속스케줄러 + 재능기부 커뮤니티 ) 설계 (0) | 2022.11.25 |
| 당근 마켓 클론 코딩 (0) | 2022.11.22 |
| 도박신고는 1336 (어른들을 위한 간단한 놀이 서비스) - 미니 프로젝트 (0) | 2022.11.21 |
| 미니 프로젝트 결산 ( Sparta Travler ) (0) | 2022.08.07 |


















