TIL_220725_강의용 게시판 프로젝트 1

창고·2022년 7월 26일
0

들어가기에 앞서
실제 프로젝트 진행했던 코드 내용은 업로드하지 않았으며 그 외 세부 내용은 일부만 업로드하였습니다.

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
    • 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)
    • GitHub 연동
  • 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 삭제
    • 언제든지 복원 가능하므로 삭제
    • 삭제한다고 내역이 사라지는 것이 아님
  • 해냈당!!
profile
공부했던 내용들을 모아둔 창고입니다.

0개의 댓글