팀 MYAONG의 프로젝트 PPLOG 백엔드 리포지토리입니다.
서비스 소개 및 공통 문서는 organization 페이지에서 확인하실 수 있습니다.
각 micro service별 리포지토리는 아래에서 확인하실 수 있습니다.
기능별 리포지토리
blog service — 포스트 및 프로필 관리, 커뮤니케이션
face expression service — 모의 면접 표정 분석
member service — 회원 가입, 계정 인증/인가
personal statement service — 자기소개서 관리 및 첨삭
portfolio service — 포트폴리오 관리
preferred job service — 관심 직군 설정 및 관리
inquiry service — 문의사항
interview service — AI 모의면접
notification service — 알림 처리
kafka streams — Kafka Streams (post table CDC)
-
전체
색이 다른 것끼리는 실제로는 FK로 설정되어 있지 않음
공지사항 서비스는 후순위 기능으로, 개발되지 않음
블로그(청록), 문의(노랑) 서비스는 회원 정보를 자주 참조할 필요가 있어 별도로 회원 정보를 저장하는 테이블을 추가 구성
-
서비스별
MSA를 채택
표정 분석 서버는 Fast API로 별도 구성
Dev
Prod
- 강수진
- CDC 구현(MySQL post 테이블 → Elasticsearch)
- DB 설계, 도메인 매핑, API 구현(블로그 홈, 포트폴리오), 이미지 처리 관련 로직 구현
- 김민형
- CI/CD 파이프라인, K8s 클러스터, 모니터링 등 인프라 구성
- DB 설계, Spring Cloud 서비스 메시 구성, Spring Security 구성, API 구현(회원(사용자, 관리자)), Feign Client 연결 (회원)
- 양시훈
- API 구현(관심 직군, 자기소개서, 문의, 블로그(관리자))
- 조기헌
- API 구현(블로그(사용자), 모의 면접, 알림), Feign Client 연결(알림), AI 연동, GPT 연동
- 최현준
- AI 개발(모의 면접 질문 생성, 표정 분석)
- API 구현(표정 분석)
Server
- Java 17, Spring Boot 3.3.4
- Spring Web MVC
- Spring Security, jjwt 0.11.3
- Spring Cloud, Spring Cloud Config, Spring Cloud Netflix(Eureka), Spring Cloud Kubernetes
- AWS SDK(S3 API)
- Swagger
Data
- Spring Data JPA, QueryDSL 5.0.0, Spring Data Redis
- MySQL, H2 (local), Redis, Elasticsearch, Kafka
Build
- Gradle 8.10.2
CI/CD, Infra
- Jenkins
- Docker, Kubernetes
- Prometheus, Grafana
- Kakao Cloud
- Oracle Cloud Infrastructure (Kakao Cloud 사용 제한으로 인해 사용)
Communication
- Discord, Slack, Github
-
Git Flow 사용
-
개발 절차
- Github Repository에서 issue 생성
- Jira에서 issue 생성 후 branch 생성
- add → commit → push → pull request
- code review
- pull request를 develop branch로 merge
- 종료된 issue close 및 delete branch
-
Branch :
<prefix>/#<Issue_Number>-<description>/<Jira_label_Number> -
Issue Naming :
[<PREFIX>] <Description> -
Commit Message :
:gitmoji:[#<Issue_Number>] <prefix> <Description> -
Gitmoji
prefix gitmoji 의미 feature (FEAT) :sparkles:(✨)새로운 기능 구현 fix :hammer:(🔨)수정 refactor(REFAC) :recycle:(♻️)리팩토링 chore :wrench:(🔧)패키지 구조 수정, code와 무관한 부분들 (.gitignore, build.gradle 같은) 수정 docs :memo:(📝)문서 수정 comment :memo:(📝)주석 추가 test :white_check_mark:(✅)테스트 코드, 리펙토링 테스트 코드 추가 rename :truck:(🚚)패키지나 클래스명 수정 remove :fire:(🔥)패키지나 클래스 삭제
Naming
- 클래스 : PascalCase, and·or와 같은 접속사를 사용하지 않고 25자 내외로 작성합니다.
- 각 패키지명을 접미사에 명시합니다.
- 구현체의 경우 ~Impl를 접미사에 추가합니다. (ex. UserServiceImpl, UserRepositoryImpl)
- 함수 : camelCase
- 메소드 작성 순서는 public 밑에 private입니다. 모든 public 메소드 밑에서부터 모든 private 메소드가 정의됩니다.
- event, design과 같은 이중적인 단어를 가지는 단어는 지양합니다.
- 메소드의 부수효과를 구체적으로 설명합니다.
- 의도가 전달되도록 최대한 간결하게 표현합니다.
- 메소드의 목적을 동사로 표현해 메소드의 앞에 붙입니다.
- 변수 : camelCase
- DB 테이블 : snake_case
- 상수 : SCREAMING_SNAKE_CASE
- 컬렉션(Collection) : 복수형을 사용합니다. (Ex. users, userList)
Package
microservice
├─common
│ └─advice
├─config
├─controller
├─dto
│ ├─request
│ └─response
├─entity
├─enums
├─repository
└─service









