관심사 분리 세션

SJ.CHO·2024년 10월 10일

MVC (Model View Controller)

VIEW

  • 서버사이드 렌더링 : 서버측에서 View를 구현하여 데이터렌더링까지 진행.

현재 VIEW를 사용하는가?

  • 현재는 프론트 없이 VIEW가 존재하지 않는 API만을 개발하고있음.

Layer 분리에 대해

  • Layer는 관심사의 집합.

프레젠테이션 레이어

  • 클라이언트의 요청을 받고 알맞는 응답을 도출
  • 요청의 분해 및 응답에 중점을 둠 (로직 및 DB의 접근등을 하지않음)
  • 요청정보가 서비스에서 요구하는 형식과 일피하는지 검증 및 가공

비즈니스 레이어

  • 해당 기능의 핵심적인 비즈니스 로직이 포함
  • 하나의 로직은 하나의 트랜잭션 단위로 이루어짐.
  • APP의 세부작업을 가짐
  • 요청정보의 유효성 및 접근권한을 확인.

데이터 액세스 레이어

  • 데이터를 저장,수정,삭제하는 DB와 맞닿는 곳
  • 도메인 객체를 영속화 하고 쿼리의 결과를 통한 영속성 객체를 바탕으로 서비스레이어에 전달.

비즈니스 레이어에 로직이 전부 들어있어야 하는가?

  • 서비스레이어에서 직접 책임을지는게 아닌 DTO 혹은 Entity에서 맞는 자료를 검증하게끔 진행이 가능 (명령을 하는 역할)

결론

  • 서비스레이어는 절대 만능 클래스가 되어선 안됌.
  • 서비스를 조합 및 Entity를 연결하는 역할.
  • 서비스에 핵심 로직을 구현하기 보단 로직의 대한 상태값을 가지고있는 모델단에서 처리를하는게 올바른 형태.
profile
70살까지 개발하고싶은 개발자

0개의 댓글