(* 늘품: 앞으로 좋게 발전할 품질이나 품성)
- 역할의 구분 없이 서로의 지식을 공유하는 서비스
- 개발 환경
- 기능 소개
- 프로젝트 구조
- API 명세서
- ERD
- 프로젝트 기록 및 트러블슈팅
- programming language:
Java 17
- framework:
Spring Boot 3.2.2
,Spring Security
- database:
MySQL
,Redis
- ORM:
JPA
- IDE:
IntelliJ
- version control :
git
,github
- containerization:
Docker
,Docker-compose
- cloud services:
AWS S3
-
유저 관리
- 이메일 인증을 통한 회원가입
- jwt 토큰을 이용한 인증/인가
- 관리자/유저로 구분
-
쿠폰 생성 및 발급
- 선착순 쿠폰/일반 쿠폰으로 구분
- 선착순 쿠폰은 한정된 수량만큼만 발급 가능
- 동시성 이슈로 인한 장애 격리를 위해 모듈 분리
-
강의/강의 자료 관리
- 학생/강사 구분 없이 모두 자신만의 강의를 등록 가능
- 강의 등록 시 멀티미디어 파일은 AWS S3에 저장
- 강의 목록 조회 시 성능 향상을 위해 강의 자료 모듈과 분리
-
주문 및 결제 기능
- 동시성 이슈로 인한 장애 격리를 위해 모듈 분리
- 주문 시에 쿠폰 모듈에서 정보 받아와 결제 모듈로 전송
- 결제 성공 시에만 쿠폰 만료 처리
- 프로젝트 클론 및 docker 설치 후 로컬 환경에서 순차적으로 실행
-
프로젝트 클론
git clone https://github.com/neul-poom/backend.git
-
도커 컴포즈 명령어 실행
docker-compose up -d
-
각 모듈별 application-dev.yml 파일 작성
(작성 예시)
server: port: spring: config: activate: on-profile: jwt: secret: access-token-valid-time: refresh-token-valid-time: expiration: header: prefix: datasource: url: username: password: driver-class-name: jpa: hibernate: ddl-auto: data: redis: port: host: mail: host: port: username: password: auth-code-expiration-millis: properties: mail: smtp: starttls: enable: required: auth: connectiontimeout: timeout: writetimeout: </details>
-
.env 파일 생성
MYSQL_ROOT_PASSWORD=
-
각 모듈 실행
- 패키지 구조
Service | Description | Authorization | Port |
---|---|---|---|
[API Gateway ] |
요청 인증 및 라우팅 | jwt 토큰 인증 | 8080 |
[User ] |
사용자 관련 작업 관리) | jwt 토큰 발급 | 8081 |
[Lecture ] |
강의 도메인 작업 관리 | 8082 |
|
[Coupon ] |
쿠폰 도메인 작업 관리 | 8083 |
|
[Payment ] |
결제 도메인 작업 관리 | 8084 |
|
[Lecture Resource ] |
강의 자료 도메인 작업 관리 | 8085 |
|
[Order ] |
주문 도메인 작업 관리 | 8086 |