들어가기에 앞서
실제 프로젝트 진행했던 코드 내용은 업로드하지 않았으며 그 외 세부 내용은 일부만 업로드하였습니다.
1. 프로젝트 개요와 목표
(1) 프로젝트 목표
- 이해하기 쉬운 소재로 명확한 기능 요구사항 제작
- 요구사항 구현에 필요한 문서 작업
- 프로젝트 요구사항을 실제로 구현
- 기획 -> 문서 작성 -> 개발 -> 형상 관리 -> 테스트 -> 배포
(2) 문서 작업
- diagrams.net : 도메인, ERD 설계, 유즈케이스
- 구글 시트 : API 디자인
- Git + GitHub : 커밋 메시지 작성, 프로젝트 관리 및 협업 환경 꾸미기
(3) 개발 목적의 이해
- 고객의 니즈와 문제를 정리
- 문제 -> 요구사항 -> 기능(feature) 도출 -> 구현 방안의 기획 -> 개발 계획 수립 -> 실행
(4) 추가 다운로드 플러그인
- CamelCase
- GitToolBox
- JPA Buddy
- Key Promotor X
- Prsentation Assistant
- Ideolog
- Spring Boot Assistant
(5) 테스트와 배포
- 테스트
- 개발 요구사항이 빠짐 없이 모두 구현되었는가
- 구현된 요구사항이 오류 없이 동작하는가
- JUnit 5.8.2 및 각종 테스트 라이브러리(Mockito, AssertJ)
- 스프링 부트 슬라이스 테스트 테크닉
- GitHub : 테스트/빌드 자동화
- 배포
- GitHub 릴리즈 작성
- 클라우드 서버에 배포 (Heroku)
- GitHub : Heroku 배포 자동화
(6) 필요한 기술
- 세부 기술 뽑는 방법
- 미리 사용 기술을 모두 파악한 후 처음부터 프로젝트에 넣기
- 기능 하나를 만들 때마다 필요한 기술을 추가해나가는 방법
- 예상 세부 기능
- 웹 기능 : Spring Web
- 게시판, 댓글 도메인 설계, 도메인 데이터 DB 저장 : Spring Data JPA, H2, MySQL Driver
- JSON API로 데이터 제공 : Rest Repositories, HAL Explorer
- 사용자에게 웹 화면으로 서비스 제공 + 디자인 요소 (게시판, 게시글, 로그인 페이지)
Thymeleaf + Bootstrap
- 적절한 입출력 데이터 검증 : Validation
- 인증 기능 : Spring Security
- 생산성에 도움이 되는 도구들 선택 : Lombok, DevTools, Actuator
2. GitHub 관리, Git Branch
(1) GitHub
New Repository
Issue
에는 안건, 업무를 적고 업무 배정이 가능 (label 등으로 분류)
enhancement
: '개발'에 사용되는 label
Milestone
: 프로젝트 진행 과정에서 특정할만한 건, 일정 등 (구글 '개발 마일스톤' 검색)
Pull request
: 요청된 개발을 반영하는 것
Actions
: 빌드와 배포를 자동화
Projects
: 검색 키워드 '애자일 소프트웨어 개발 방법론', '칸반 보드'
Projects
: 설명 및 템플릿 적용 / 제작, 리뷰 기능
Projects Beta
: Projects의 기능을 포함하며 발전된 기능이 있음 (기존 Project는 특정 Repository에 종속되었으나 Beta는 어느 Repository에 종속되지 않은 총괄 느낌)
- 이번 프로젝트에서는 Projects Beta의 Team backlog 사용
Projects
의 우측 상단 Settings
- 프로젝트 관련 설정
Custom fields
를 통해 신규 field 설정 가능
Projects
의 우측 상단 Workflows
Wiki
기능 지원
Setting > Discussions
기능 활성화 가능 (질의응답)
- Backlog 부분은 강의 업데이트된 내용 확인하여 별도로 만들어보기
Workflows
세팅 수정
Item closed
: issue
에 대해서만 set status done
Pull request merged
: set status done
- Fields 삭제 : Settings > Status에서 삭제
(2) Git Branch 전략
- 운영 방법론 > 레퍼런스 찾아보기
gitflow
: main, develop, feature, release, hotfix 브랜치를 설정, 운영
github flow
: main, feature 브랜치만으로 운영하는 방식
- 브랜치 전략 수립 이유와 요령
- 하나의 프로젝트 소스 코드를 여러 개발자가 다루면서 발생하는 부작용 해결
- 개발 협업 원활
- 전략 수립 시 고려 요소
- 이 브랜치는 제품으로 내보낼 수 있는가
- 이 브랜치는 빌드 실패를 허용하는가
- 이 브랜치는 테스트 실패를 허용하는가
- 이 브랜치는 임시로 운영하는지, 유지하지 않고 수시로 삭제하는지
3. 유즈 케이스 작성
- diagrams.net (draw.io)
- GitKraken Terminal
gk ~
: gk 명령어
git ~
: git 명령어
- Terminal Linux 명령어 Window 환경에서 실행하기 -> Git Bash 설치 후 GitKraken 적용
- Github Autolink reference
- GitHub 연동 및 커밋 메시지 작성
- UML에서 템플릿 사용
포함 관계 (include)
: 기능을 포함하고 있음
(회원 로그인 기능은 인증 기능을 포함)
확장 관계 (extend)
: 이 기능이 일어남으로서 일어날 수 있는 여러 가지 분기 중 하나
(실패 기능은 회원 로그인 기능의 분기 중 하나)
- 관련 자료 : https://googry.tistory.com/2
- 위의 내용처럼 커밋이 중간에 갈려버린 경우
(이미 Push된 상황에서 Local에서 내용이 바뀌어버린 경우)
Force Push
(강제 Push), 신중히 할 것 **
- Git Commit 관련 강의
https://djkeh.github.io/articles/How-to-write-a-git-commit-message-kor/
Pull Request
- GitHub > Pull requests > Compare & pull request
Review
작성
- File changes > 변경된 내역 확인 > Review Changes
-Merge Pull request
- 유형에 대해서는 추후 레퍼런스 참조
- Branch 삭제
- 언제든지 복원 가능하므로 삭제
- 삭제한다고 내역이 사라지는 것이 아님
- 해냈당!!