본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

9일차 - 각 클래스의 역할과 Git rebase, Git Flow & Github Flow

각 클래스 별 역할

  • 컨트롤러 : 요구사항에 대해 적절하게 서비스로 토스할 수 있어야 한다. => 기본적인 요구사항에 대한 확인, 입출력을 담당한다.(사용자와의 상호작용)
  • 서비스 : 프로그램의 핵심적인 기능(비즈니스 로직)을 모두 담고 있어야(관리해야) 한다.(사용자와 직접적으로 소통하지 않는다. 오직 컨트롤러의 요청에 의한 작동)
  • App : 라우팅. 적절한 컨트롤러로 연결해 준다.
  • Repository : 데이터의 저장/조회를 담당한다.(오직 서비스의 요청에 의한 작동)
  • DB : 데이터의 영속 저장/조회를 담당한다.(오직 리포지터리의 요청에 의한 작동)

< 컨트롤러 ⇒ 서비스 ⇒ 리포지터리 ⇒ DB >

위와 같이 계층적으로 나뉘며, 화살표 방향으로 1단계씩 요청이 진행됨. 반대 방향은 안 된다!

  • 응집도 : 높을 수록(각 모듈 안에는 해당 모듈과 관련된 내용만 들어가 있을 수록) 좋다
  • 결합도 : 낮을 수록(모듈 간의 통신이 단순할 수록) 좋다

Git rebase

- merge와의 차이?

  • merge가 흡입이라면 rebase는 이사가는 것
  • rebase 후에 남아있는 브랜치를 삭제할 수 있고, 히스토리 파악이 쉽다.
git checkout -b bugFix
git commit
git checkout main
git commit
git rebase main bugFix   // 맨 아래 두줄과 같은 역할
---------
git checkout -b bugFix
git commit
git checkout main
git commit
git checkout bugFix;
git rebase main;

Git Flow

  • 브랜치를 다루는 수많은 방법 중 하나
  • hot fixes, release, develop, feature 등 많은 브랜치를 이용한다.

ex) 기능 별로 세분화한 브랜치(feature)를 두고, 작업이 완료되면 develop 브랜치에 반영


Github Flow

  • Git Flow의 간단한 축소 버전
  • main(master) 브랜치와 feature 브랜치로 이루어져 있다.
  • Git Flow보다 더 빠른 배포가 가능하다.