분야 | 이름 | 포지션 | 내용 |
---|---|---|---|
기획 | 박가은 | 📈 PM, 서비스 기획 | 유저 리서치, 와이어프레임 작성, 서비스 정책 확립, 비즈니스 모델 구축 |
기획 | 김규리 | 📋 서비스 기획 | 유저 리서치, 와이어프레임 작성, 서비스 정책 확립, 비즈니스 모델 구축, 서비스 마케팅 리드 |
기획 | 안재형 | 📊 서비스 기획 | 유저 리서치, 와이어프레임 작성, 서비스 정책 확립, 비즈니스 모델 구축, 서비스 마케팅 리드 |
디자인 | 김윤서 | 🎨 디자인 리드 | ux/ui디자인, gui 디자인 |
디자인 | 이어령 | 🎨 디자인 | ux/ui디자인, gui 디자인 |
개발 | 최호 | 📱 프론트엔드 리드 | 화면 UI 구현, API 연동 |
개발 | 최서희 | 📱 프론트엔드 | 화면 UI 구현, API 연동 |
개발 | 문희상 | 💻 백엔드 리드 | API 구현, ERD 설계, 서버 배포 |
개발 | 윤소민 | 💻 백엔드 | API 구현, ERD 설계, 서버 배포 |
- 단위 테스트 작성(service 메소드 별로) : Junit 사용
- 다른 사람이 알아보기 쉽도록 주석처리해야 합니다. (controller, service 메서드마다)
- javadoc 형식 https://jake-seo-dev.tistory.com/59
- issue 생성 및 PR을 통해 본인이 구현한 부분에 대한 기록을 남겨야 합니다.
- 테스트 및 원할한 서버 운영을 위한 로그를 작성해야 합니다.(에러나 운영에 필요한 로그. 검색시 검색어와 같은 로그)
- 예외처리는 항상 잘 만들어두기 (code, message, data)
- 개발 기간 : 9/30 ~ 11/28
- 스프린트 (3일간격) 진행 (해올 것을 정해서 해오기)
- 수요일, 토요일
-
- Kotlin은 간결하고 직관적인 문법으로 코드 생산성을 높이며, Null 안정성을 제공하여 오류를 사전에 방지
- JPA를 통해 SQL을 직접 작성하지 않아도 되므로 데이터베이스 작업에 소요되는 시간을 줄이고, 비즈니스 로직 구현에 집중 가능
-
- JUnit은 간단한 어노테이션 기반 설정으로 테스트 작성과 실행을 직관적이고 효율적으로 만들어줌
- MockK는 코틀린에 특화된 모킹 라이브러리로, 코루틴과 같은 코틀린 고유 기능을 쉽게 모킹할 수 있어 비동기 코드 테스트에 강점이 있음
-
- Jenkins를 사용한 CI/CD 파이프라인은 자동화된 테스트, 빌드, 배포를 통해 개발 프로세스를 효율적으로 관리
- Docker는 애플리케이션을 컨테이너로 패키징하여 일관된 실행 환경을 제공하고, 배포를 빠르고 효율적으로 수행 가능
-
- MySQL은 뛰어난 성능과 확장성을 제공하며, 광범위한 커뮤니티 지원과 다양한 플랫폼에서의 안정성을 보장
- MongoDB는 유연한 스키마 설계를 통해 다양한 데이터를 효율적으로 저장하고, 빠른 쿼리 성능을 제공
- Redis는 인메모리 데이터 저장소로 초고속 데이터 접근과 다양한 데이터 구조를 지원
-
- RestDocs를 통해 생성된 문서를 Swagger UI로 시각화하여, 개발자와 비개발자 모두가 실시간으로 API를 테스트 가능
- 테스트 코드 작성과 함께 API 문서가 자동으로 생성되어, 실제 코드와 문서의 동기화 문제가 발생하지 않음
- 테스트 시에 문서를 검증할 수 있어 신뢰성을 높임
Naming
- 패키지 : 언더스코어(
_
)나 대문자를 섞지 않고 소문자를 사용하여 작성합니다. - 클래스 : 클래스 이름은 명사나 명사절로 지으며, 대문자 카멜표기법(Upper camel case)을 사용합니다.
- 메서드 : 메서드 이름은 동사/전치사로 시작하며, 소문자 카멜표기법(Lower camel case)를 사용합니다. 의도가 전달되도록 최대한 간결하게 표현합니다.
- 변수 : 소문자 카멜표기법(Lower camel case)를 사용합니다.
- ENUM, 상수 : 상태를 가지지 않는 자료형이면서
static final
로 선언되어 있는 필드일 때를 상수로 간주하며, 대문자와 언더스코어(UPPER_SNAKE_CASE)로 구성합니다. - DB 테이블: 소문자와 언더스코어로(lower_snake_case) 구성합니다.
- 컬렉션(Collection): 복수형을 사용하거나 컬렉션을 명시합니다. (Ex. userList, users, userMap)
- LocalDateTime: 접미사에 *Time**를 붙입니다.
Comment
Import
탑레벨 클래스(Top level class)는 소스 파일에 1개만 존재해야 한다. ( 탑레벨 클래스 선언의 컴파일타임 에러 체크에 대해서는 Java Language Specification 7.6 참조 )
클래스를 import할때는 와일드카드(*) 없이 모든 클래스명을 다 쓴다. static import에서는 와일드카드를 허용한다.
클래스, 인터페이스, 메서드, 생성자에 붙는 애너테이션은 선언 후 새줄을 사용한다. 이 위치에서도 파라미터가 없는 애너테이션 1개는 같은 줄에 선언할 수 있다.
배열 선언에 오는 대괄호([])는 타입의 바로 뒤에 붙인다. 변수명 뒤에 붙이지 않는다.
long형의 숫자에는 마지막에 대문자 'L’을 붙인다. 소문자 'l’보다 숫자 '1’과의 차이가 커서 가독성이 높아진다.
URL
Rules
작업 시작 시 선행되어야 할 작업은 다음과 같습니다.
issue를 생성합니다.feature branch를 생성합니다.add → commit → push → pull request 를 진행합니다.pull request를 develop branch로 merge 합니다.이전에 merge된 작업이 있을 경우 다른 branch에서 진행하던 작업에 merge된 작업을 pull 받아옵니다.종료된 issue와 pull request의 label을 관리합니다.
IntelliJ로 작업을 진행하는 경우, 작업 시작 시 선행되어야 할 작업은 다음과 같습니다.
깃허브 프로젝트 저장소에서 issue를 생성합니다.생성한 issue 번호에 맞는 feature branch를 생성함과 동시에 feature branch로 checkout 합니다.feature branch에서 issue 단위 작업을 진행합니다.작업 완료 후, add → commit을 진행합니다.remote develop branch의 변경 사항을 확인하기 위해 pull 받은 이후 push를 진행합니다.만약 코드 충돌이 발생하였다면, IntelliJ에서 코드 충돌을 해결하고 add → commit을 진행합니다.push → pull request (feature branch → develop branch) 를 진행합니다.pull request가 작성되면 작성자 이외의 다른 팀원이 code review를 진행합니다.최소 한 명 이상의 팀원에게 code review와 approve를 받은 경우 pull request 생성자가 merge를 진행합니다.종료된 issue와 pull request의 label과 milestone을 관리합니다.
준수해야 할 규칙은 다음과 같습니다.
develop branch에서의 작업은 원칙적으로 금지합니다. 단, README 작성은 develop branch에서 수행합니다.commit, push, merge, pull request 등 모든 작업은 오류 없이 정상적으로 실행되는 지 확인 후 수행합니다.
Branch
branch는 작업 단위 & 기능 단위로 생성된 issue를 기반으로 합니다.
branch를 생성하기 전 issue를 먼저 작성합니다. issue 작성 후 생성되는 번호와 domain 명을 조합하여 branch의 이름을 결정합니다. <Prefix>/<Issue_Number>-<Domain>
의 양식을 준수합니다.
main
: 개발이 완료된 산출물이 저장될 공간입니다.develop
: feature branch에서 구현된 기능들이 merge될 default branch 입니다.feature
: 기능을 개발하는 branch 입니다. 이슈 별 & 작업 별로 branch를 생성 후 기능을 개발하며 naming은 소문자를 사용합니다.
user
,map
, (error
,config
)
feature/7-user
,feature/5-config
Issue
작업 시작 전 issue 생성이 선행되어야 합니다. issue 는 작업 단위 & 기능 단위로 생성하며 생성 후 표시되는 issue number 를 참조하여 branch 이름과 commit message를 작성합니다.
issue 제목에는 기능의 대표적인 설명을 적고 내용에는 세부적인 내용 및 작업 진행 상황을 작성합니다.
issue 생성 시 github 오른편의 assignee, label을 적용합니다. assignee는 해당 issue 담당자, label은 작업 내용을 추가합니다.
[<Prefix>] <Description>
의 양식을 준수하되, prefix는 commit message convention을 따릅니다.
[chore] spring data JPA 의존성 추가
Commit
[<Prefix>] #<Issue_Number> <Description>
의 양식을 준수합니다.
- feat : 새로운 기능 구현
[feat] #11 구글 로그인 API 기능 구현
- fix : 코드 오류 수정
[fix] #10 회원가입 비즈니스 로직 오류 수정
- del : 쓸모없는 코드 삭제
[del] #12 불필요한 import 제거
- docs : README나 wiki 등의 문서 개정
[docs] #14 리드미 수정
- refactor : 내부 로직은 변경 하지 않고 기존의 코드를 개선하는 리팩터링
[refactor] #15 코드 로직 개선
- chore : 의존성 추가, yml 추가와 수정, 패키지 구조 변경, 파일 이동
[chore] #21 yml 수정
,[chore] #22 lombok 의존성 추가
- test: 테스트 코드 작성, 수정
[test] #20 로그인 API 테스트 코드 작성
- style : 코드에 관련 없는 주석 달기, 줄바꿈
- rename : 파일 및 폴더명 수정