항해99의 페어 프로그래밍 과제를 수행하면서, 정말 실무에서 협업을 하면 어떻게 하는지 열심히 찾아보고 개발 프로세스를 최대한 업무하는 것처럼 진행하고자 했다.
다행히도 멋진 페어님과도 뜻이 맞아서 주어진 짧은 시간 내에서 할 수 있는 것들을 가능한 반영하려고 했다.
협업 과정
- ERD, API명세, UseCase Diagram 공동작업
- 깃헙 organization 활용
- main - fix - release - dev - feature 브랜치 전략
- feature branch에서 pull request 날리기
- 코드리뷰 후 merge
- application.properties & application-secret.properties 활용
- release 브랜치 merge 후 테스트
branch 구조

Pull Request들

가능한 코드를 열어보지 않아도 어디가 수정되는지 짐작될 수 있도록 적자고 했는데, 시간에 쫓기며 하다보니 Pull Request 제목 정하는 것도 어려움이 있다.
협업간 application-secret.properties 적용 방법
application.properties에 local db 테스트간 설정이나, jwt secret key 등
- git repository에 push되면 안되는 설정
- 타인과 공유되어서는 안되는 개인 local에 종속된 설정
의 경우들을 협업간에 관리하기 까다롭다.
하나의 대안으로는 application.properties git.ignore에 추가해 설정들을 각각 개인이 관리하는 방법이 있겠지만, 팀원 전체가 공유해야하는 설정이 개인만 다르게 저장될 가능성이 존재한다는 것이 안정적이지 않다고 생각이 들었다.
검색해보다가 secret properties를 위한 설정방법을 찾았다.
git.ignore 파일에 아래와 같이 추가하고,
### secret properties ###
application-secret.properties
application.properties에 들어가면 안되는 설정 역할을 할 application-secret 파일을 생성한다.
application.properties 파일
spring.profiles.include=secret
spring.datasource.url=jdbc:mysql://localhost:3306/library
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
맨 윗 줄처럼, secret property를 포함한다는 것을 알려주면, application-secret.properties에 있는 설정과 같이 적용될 수 있다.
(database 명인 library도 개인적으로 다르게 할 수도 있을 것이다. 어차피 local db는 테스트용이니까)
참고로 application-secret.properties 파일에는 아래와 같은 값이 들어있다.
spring.datasource.username={mydbtestuser}
spring.datasource.password={mydbtestuserpwd}
개인적인 아쉬움으론 Pull Request를 보내는 과정과, 코드 리뷰, conflict가 발생한 상태에서 해결하고 merge하는 등의 작업이 익숙해질 쯤 프로젝트가 끝나버렸다.
다음 페어 프로그래밍부터는 아래의 과정도 진행한 후 할 예정이다.
- 코드 컨벤션 정립 및 Intellij fommater 설정
- 테스트 코드 작성
- Swagger 사용
- JIRA 사용으로 업무 진척도 관리 및 공유(PullRequest와 같이 확인)
항해99의 페어 프로그래밍 과제를 수행하면서, 정말 실무에서 협업을 하면 어떻게 하는지 열심히 찾아보고 개발 프로세스를 최대한 업무하는 것처럼 진행하고자 했다.
다행히도 멋진 페어님과도 뜻이 맞아서 주어진 짧은 시간 내에서 할 수 있는 것들을 가능한 반영하려고 했다.
협업 과정
- ERD, API명세, UseCase Diagram 공동작업
- 깃헙 organization 활용
- main - fix - release - dev - feature 브랜치 전략
- feature branch에서 pull request 날리기
- 코드리뷰 후 merge
- application.properties & application-secret.properties 활용
- release 브랜치 merge 후 테스트
branch 구조

Pull Request들

가능한 코드를 열어보지 않아도 어디가 수정되는지 짐작될 수 있도록 적자고 했는데, 시간에 쫓기며 하다보니 Pull Request 제목 정하는 것도 어려움이 있다.
협업간 application-secret.properties 적용 방법
application.properties에 local db 테스트간 설정이나, jwt secret key 등
- git repository에 push되면 안되는 설정
- 타인과 공유되어서는 안되는 개인 local에 종속된 설정
의 경우들을 협업간에 관리하기 까다롭다.
하나의 대안으로는 application.properties git.ignore에 추가해 설정들을 각각 개인이 관리하는 방법이 있겠지만, 팀원 전체가 공유해야하는 설정이 개인만 다르게 저장될 가능성이 존재한다는 것이 안정적이지 않다고 생각이 들었다.
검색해보다가 secret properties를 위한 설정방법을 찾았다.
git.ignore 파일에 아래와 같이 추가하고,
### secret properties ###
application-secret.properties
application.properties에 들어가면 안되는 설정 역할을 할 application-secret 파일을 생성한다.
application.properties 파일
spring.profiles.include=secret
spring.datasource.url=jdbc:mysql://localhost:3306/library
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
맨 윗 줄처럼, secret property를 포함한다는 것을 알려주면, application-secret.properties에 있는 설정과 같이 적용될 수 있다.
(database 명인 library도 개인적으로 다르게 할 수도 있을 것이다. 어차피 local db는 테스트용이니까)
참고로 application-secret.properties 파일에는 아래와 같은 값이 들어있다.
spring.datasource.username={mydbtestuser}
spring.datasource.password={mydbtestuserpwd}
개인적인 아쉬움으론 Pull Request를 보내는 과정과, 코드 리뷰, conflict가 발생한 상태에서 해결하고 merge하는 등의 작업이 익숙해질 쯤 프로젝트가 끝나버렸다.
다음 페어 프로그래밍부터는 아래의 과정도 진행한 후 할 예정이다.
- 코드 컨벤션 정립 및 Intellij fommater 설정
- 테스트 코드 작성
- Swagger 사용
- JIRA 사용으로 업무 진척도 관리 및 공유(PullRequest와 같이 확인)