팀 소개
팀 이름 : 도깨비팀
플젝 이름 : 금나와라 뚝딱
훈련생 | 역할 | 담당 업무 |
한맹희 | 팀장 | - Jwt 토큰및 oauth2 기반의 소셜 로그인 기능 구현
- QueryDSL을 활용한 이벤트 & 선물 조건 검색 기능 구현
- 선착순 & 랜덤 선물 받기 서비스 구현 |
최영권 | 팀원 | - S3와 http Form-data를 활용한 이미지 bulk Insert 기능 구현
- 이벤트 생성 서비스 구현
- Git SubModule을 활용한 설정파일 분리 |
신언주 | 팀원 | - 이벤트 & 선물 상세 조회 기능 구현
- 이벤트 당첨자 목록 조회 기능 구현
- 이벤트 Soft delete 기능 구현 |
+ 프론트엔드 | ㅤ | ㅤ |
프로젝트 개요
프로젝트 설명
이 프로젝트는 번호교환 없이 다른 사람들에게 여러가지 선물을 주기 위해서 만들어졌습니다. 단순히 선물을 지목한 사람에게 주는 형식이 아니라, ‘랜덤’ 또는 ‘선착순’의 방식을 통해 게임처럼 재미있게 선물을 나눌 수 있는 서비스입니다.
프로젝트 선정 배경
데브코스를 진행하면서 특정 이벤트에 당첨된 사람에게 커피 쿠폰을 전달하는 상황에서 항상 상대방의 전화번호를 알아야만 전달을 할 수 있는 문제를 인식함
이러한 불편함을 없애고 선물을 조금 더 편하고, 재미있게 전달하면 어떨까? 라는 물음에서 시작하여 해당 프로젝트를 선정함.
기술스택
- Java 11

- Gradle 7.3

- Spring v2.5.6

- MySQL8

- S3

- OAuth2.0

- Github Submodule

- Swagger

- Docker

- AWS

- Jacoco

- 협업을 위한 Tool : Git, Github, Notion, Jira, Slack



프로젝트 관리
브랜치 전략
- GitFlow
develop에서 jira의 이슈번호를 활용해 브랜치를 생성하는 방식을 사용함


PR
- PR의 형식은 jira의 이슈번호를 활용해 해당 pr이 merge되면 자동으로 이슈가 닫히도록 설계함.
- PR이 나머지 모든 팀원들에게 Approve를 받으면 develop에 merge하는 형태로 진행함.

프로젝트 구조

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 서버를 구축하여 메모리 기반의 빠른 처리를 유도 했습니다.
ERD

트러블 슈팅
프론트엔드
혹시 자료 공유드리니 필요하시다면 사용 부탁드립니다! (사용 안하셔도 무방합니다. 도움이 될까봐 남깁니다.)
프론트엔드 PR 템플릿

