프로젝트 목적
- 객체지향
- 테스트 커버리지 80퍼
- 클린코드
- 왜 생각습관
개발 환경
- 자바 버전
- 17
- 재욱
- 자바 17이 대세인듯 하다 17 ㄱㄱ
- 용수
- 자바 17 생각중
- 자바 업데이트 되고 있으니 걍최근걸루 고고
- 굳이 제한된걸? 넘 옛날 버전
- 민환
- 17을 사용할거면 record 사용할건지??
- 정확히 정해놔야 혼란이 없지 않을까?
- record 플젝에서 사용할것인가?
- 굳이 11과 17의 큰 차이는 없는것 같다?
- 멀 포커스를 맞출지
- 수빈
- 17버전
- 업데이트 된 부분들 최적화된 걸 쓰는게 맞지 않을까?
- 오히려 굳이 11버전을 써야하는 이유가 무엇일지를 생각해봐야 할것같습니다
- 새기능을 안쓴다고 17버전을 안쓴다보다는??
- 결론 → 17버전 !!!
선택 이유
- 빌드 툴
- gradle 7.4.1
- Spring 2.7.0
- 협업 툴
- 깃허브 프로젝트
- 코드 컨벤션 - 네이버 핵, 소나린트
- https://naver.github.io/hackday-conventions-java/
적용법
NewLine 설정
이는 POSIX 표준이기에 IntelliJ는 자동적으로 넣을 수 있게 기능을 만들어 놨다.
Preferences
-> Editor
-> General
탭의 Save Files
항목에서 Ensure every saved file ends with a line break
를 체크해주면 자동으로 파일 마지막줄에 NewLine을 추가해준다.Actions on Save
코드를 저장하면 자동적으로 Code Convention Formatting해주는 기능이다.
원래 Save Actions 플러그인을 많이 썼지만 IntelliJ 2021.3 버전으로 업데이트 하면서 설치할 필요없이 자체적으로 내장이 되어 있다.
만약 Save Actions을 Enabled하고 실행하게 되면 오류가 뜨게 되니 확인해보는 것이 좋다.
Preferences
-> Tools
-> Actions on save
탭으로 이동하여 Reformat code
, Optimize imports
, Rearrange code
를 체크해준다.포맷팅을 원하지 않는 파일들은
Preferences
-> Editor
-> Code style
-> Formatter
탭의 Do not format
에서 제외해준다.Auto Import
Import를 최적화해주기 위해
Preferences
-> Editor
-> General
-> Auto Import
탭에서 Add unambiguous imports on the fly
및 Optimize imports on the fly
항목을 체크해준다.- AWS Aurora DB
- MySQL 를 AWS에 최적화 되게 커스터마이징하였기 때문에 AWS 환경에서 더 빠르고 안전하게 돌아갈 수 있을 듯.
커밋 컨벤션
feat: 새로운 기능 추가 fix: 버그 수정 docs: 문서 수정 style: 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우 refac: 코드 리펙토링 test : 테스트 코드, 리펙토링 테스트 코드 추가 chore: 빌드 업무 수정, 패키지 매니저 수정
브랜칭 전략
Remote(prgrms-be-devcourse / BEDV2_Amabnb)
main
/develop
Fork(Local)
feature/{이슈번호}-{기능명}
머징전략 (squash 결정)
선택 이유
- 민환 : squash
- merge commit은 모든 커밋이 남아서 main커밋이 파악이 안된다.
- squash는 하나의 로그만 남아서 기능별로 커밋로그가 남아서 좋을 것 같다.
- rebase는 merge commit과 마찬가지
- 용수 : 아직 판단 안됨
- 재욱 : rebase 어느커밋에 문제가 생겼는지 알 수 있을 것이다.
- 이슈 트래킹이 잘 될지? 의문이다.
- 수빈 : squash
- feat(작업단위) → develop ( rebase ) → main → (squash)
- PR 커밋내역들은 계속 보이니까 체리픽해서 수정 가능하지 않을까??
- repo - main/develop ← fork - 이슈단위로 feat/#01-{기능이름}
- develop이 잘 동작하면 main에 머지
- 이슈 →
- F01-{feat1}
- 머징 위치
- fork/->
BEDV2_Amabnb/develop
JJWT 라이브러리 선택 이유
- 가장 많은 암호화 알고리즘과 편의 메서드 제공
- RFC 명세 충족 및 100% 테스트 커버리지
- 상세한 README 문서와 가장 많은 star
- 비밀키 생성
SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256); String secretString = Encoders.BASE64.encode(key.getEncoded());
DTO의 변환 책임
- DTO 책임을 가진다.
- Dto 변환 컨벤션
- DTO → Entity
- dto.toEntity
- Entity → DTO
- dto.from(Entity) (정적 팩터리)
Controller 네이밍
- Api로 통일
선택
- 인프라 (시간나면 하면 좋을듯)
- CI/CD 툴 (이건 개발 중-말 사이)
- 최소한의 기능이 완성되었을 때 CI/CD 파이프라인을 구축해보자!
- 도커 (뭘 하고싶은지에 따라 난이도가 다름)