HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
🪙
[팀1] 도깨비
/
🤭
3주차 프로젝트 진행 현황
/
📋
BE 진행 현황
/
리드미

리드미

prgrms-web-devcourse/Team_DOKEV_GOLDDDUCK_BE🛎 프로젝트 설명☑️ 프로젝트 선정 배경👨🏻‍💻 팀원 소개🚀 기술스택개발 환경협업 툴기타🐮 ERD 설계🏗️ 프로젝트 구조🎁 패키지 구조💌 프로젝트 컨벤션코드 컨벤션Git 컨벤션Git Flow 전략 사용Commit Message 작성 규칙GitHub 컨벤션Jira 컨벤션이슈 생성자동화😈 CI/CDCI : Github ActionCD : Github Action + Docker🔒 보안인증 방법권한 모델https⚡ API

prgrms-web-devcourse/Team_DOKEV_GOLDDDUCK_BE

🛎 프로젝트 설명

저희 도깨비팀의 프로젝트인 금나와라 뚝딱은 이벤트 주최자가 만든 선물을 사용자가 수령하는 서비스 입니다.

☑️ 프로젝트 선정 배경

다수의 친구나 지인들에게 선물(ex 기프티콘)을 줄때 일일히 한명 한명 전달해주거나 전화번호를 물어봐야했던 경험이 있으신가요? 금나와라 뚝딱은 이러한 불편함을 없애고 선물을 편하고 재미있게 전달하면 어떨까? 라는 물음에서 탄생했습니다.
금나와라 뚝딱은 단순히 선물을 지목한 사람에게 주는 형식이 아니라, ‘랜덤’ 또는 ‘선착순(눈치게임)’의 방식을 통해 게임처럼 재미있게 선물을 나눌 수 있는 서비스입니다.
 

👨🏻‍💻 팀원 소개

ㅤ
한맹희
최영권
신언주
역할
팀장
팀원
팀원
Github
maenguin
choiyoungkwon12
GetMapping

🚀 기술스택

개발 환경

  • Java 11
  • Spring Boot 2.5.6
  • JPA, Spring Data JPA, QueryDSL, Spring Data Redis
  • AWS EC2, S3, RDS(MySQL8)
  • gradle 7

협업 툴

  • Notion
  • Slack
  • Jira

기타

  • ERDCloud
  • Postman
  • Mysql WorkBench, DataGrip
  • Github Action
  • Docker

🐮 ERD 설계

notion image
 

🏗️ 프로젝트 구조

notion image
 
Spring boot
백엔드 서버는 교육 과정에서 학습한 Java기반의 Spring Boot 애플리케이션으로 제작했습니다.
 
Github & Docker
버전 관리 툴로 Git과 Github를 사용했고 GithubAction과 Docker를 사용해서 CI/CD를 구축하였습니다.
 
EC2
교육 과정에서 배운 AWS 클라우드 서비스를 적극 사용하여 백엔드 서버는 EC2로 구축하고 EC2위에 docker를 구동시켜서 EC2 경량화를 시도했고 Spring Boot 서버와 Redis가 동작하도록 했습니다.
또한 선물 이미지를 저장하기 위해 AWS의 S3를 사용하여 이미지를 저장하고 받아오도록 했습니다.
 
RDS & MySQL & Redis
데이터베이스는 MySQL을 사용하였고 AWS의 RDS를 사용하여 MySQL Server를 구축하였습니다.
동시성 처리를 위해서는 DB의 트랜잭션을 최소화할 필요가 있었고 이를 위해 Redis 서버를 구축하여 메모리 기반의 빠른 처리를 유도 했습니다.
 
 

🎁 패키지 구조

gold-Dduck ├─classes └─java ├─main │ └─com │ └─dokev │ └─gold_dduck │ ├─aws │ │ ├─config │ │ └─service │ ├─common │ │ ├─error │ │ ├─exception │ │ └─util │ ├─config │ ├─event │ │ ├─controller │ │ ├─converter │ │ ├─domain │ │ ├─dto │ │ ├─repository │ │ └─service │ ├─gift │ │ ├─controller │ │ ├─converter │ │ ├─domain │ │ ├─dto │ │ ├─repository │ │ └─service │ ├─jwt │ ├─member │ │ ├─controller │ │ ├─converter │ │ ├─domain │ │ ├─dto │ │ ├─repository │ │ └─service │ └─oauth2 └─test └─com └─dokev └─gold_dduck ├─aws │ └─service ├─event │ ├─controller │ ├─repository │ └─service ├─factory ├─gift │ ├─controller │ └─service └─security
 
 

💌 프로젝트 컨벤션

코드 컨벤션

구글 자바 컨벤션

Git 컨벤션

Git Flow 전략 사용

특이사항
  • 지라 1 티켓 = 1PR 원칙
  • 티켓 마다 feature 브랜치를 생성하고 develop으로 PR
  • feature 네이밍은 feature/{티켓번호} ex) feature/GD-01
  • 티켓 단위는 최대한 작게
  • Merge시 Squash를 하거나 PR을 올릴때 로컬에서 Squash를 수행해서 commit graph를 최대한 단순하게 유지
 
notion image

Commit Message 작성 규칙

1- ⭐ feat : 새로운 기능에 대한 커밋 2- ⚙️ chore : 그 외 자잘한 수정에 대한 커밋 3- 🐞 fix : 버그 수정에 대한 커밋 4- 📖 docs : 문서 수정에 대한 커밋 5- 💅 style : 코드 스타일 혹은 포맷 등에 관한 커밋 6- ♻️ refactor : 코드 리팩토링에 대한 커밋 7- 🚦 test : 테스트 코드 수정에 대한 커밋 8- 🚀 CI : CI/CD 9- 🔖 Release : 제품 출시 10- 🎉 init : 최초 커밋 11- 🛠️ Config : 환경설정에 대한 커밋 12- 🦔 Revert : 리버트
 

GitHub 컨벤션

  • PR로만 merge 가능 + 리뷰 approval이 2개 이상이여야만 merge 승인
    • notion image
  • 테스트를 모두 통과해야 merge가 가능 + 최신 상태의 develop 브랜치에만 merge 가능
    • notion image
 
 

Jira 컨벤션

이슈 생성

백로그로 추가된 이슈는 단위를 작게 쪼개서 하위작업으로 추가
notion image
 

자동화

  • 깃허브-지라 연동 스마트 커밋 기능 사용
  • 에픽의 하위 작업이 완료되면, 상위 작업을 완료로 이동
  • 깃허브 PR merge시 이슈 자동 완료 처리
notion image
notion image
 
 
 

😈 CI/CD

CI : Github Action

java ci with gradle을 사용하여 지속적인 Build 프로세스 체크
 

CD : Github Action + Docker

Github Action을 사용하여 Docker Image를 생성하고 Docker Hub로 push
그 후 Ec2에서 Docker Image를 pull 받아서 서버를 재실행하도록 구축
 
 

🔒 보안

인증 방법

Jwt 토큰 기반의 oauth2 카카오 소셜 로그인 구축

권한 모델

User : Group : Role 구조 채택

https

https 및 도메인 적용

⚡ API