💜 Key Point

컨트롤러, 서비스, 저장소

💜 Today I Learned

[3계층 아키텍처 복습]

  • 컨트롤러
    • 프레젠테이션 계층
      3계층 아키텍처 패턴에서 가장 먼저 클라이언트의 요청을 만나게 되는 계층
    • 클라이언트가 전달한 데이터에 대해 유효성을 검증하는 기능 수행
    • 클라이언트의 요청을 처리한 후 서버에서 처리된 결과를 반환
    • 컨트롤러의 역할
      1) 클라이언트의 요청 수신
      2) 요청에 들어온 데이터 및 내용 검증
      3) 서버에서 수행된 결과를 클라이언트에게 반환
  • 서비스
    • 서비스 계층(비즈니스 로직 계층)
      아키텍처의 가장 핵심적인 비즈니스 로직을 수행하고 클라이언트가 원하는 요구사항을 구현하는 계층
    • 프레젠테이션 계층과 데이터 엑세스 계층 사이에서 중간 다리 역할을 하며, 서로 다른 두 계층이 직접 통신하지 않게 만들어줌
    • 데이터가 필요할 때 저장소에 데이터 요청
    • 서비스 계층의 장점
      1) 유즈 케이스와 워크플로우를 명확히 정의하고 이해할 수 있도록 도와줌
      2) 자유롭게 수정하거나 리팩터링할 수 있음
      3) 저장소 패턴, 가짜 저장소와 조합하면 높은 수준의 테스트 작성 가능
    • 서비스 계층의 단점
      1) 추상화 계층이기 때문에 코드의 복잡성을 증가시킬 수 있음
      2) 한 서비스 계층이 다른 서비스 계층에 의존하는 경우 의존성 관리가 복잡해짐
      3) 서비스 계층에 너무 많은 기능을 넣으면 안티 패턴 발생
  • 저장소
    • 저장소 계층(데이터 엑세스 계층)
      데이터베이스와 관련된 작업을 처리하는 계층
    • 데이터 접근과 관련된 세부 사항을 숨기는 동시에 데이터가 존재하는 것처럼 가정하여 코드를 구현
    • 테스트 코드 작성 시 가짜 저장소를 제공하기가 더 쉬워짐
    • 저장소 계층의 변경 사항이 다른 계층에 영향을 주지 않음
    • 저장소 계층의 장점
      1) 단위 테스트를 위한 가짜 저장소를 쉽게 만들 수 있음
      2) 도메인 모델을 미리 작성, 처리할 비즈니스 문제에 더 잘 집중 가능
      3) 객체를 테이블에 매핑하는 과정에서 원하는 대로 제어할 수 있어서 DB 스키마 단순화 가능
    • 저장소 계층의 단점
      1) 저장소 계층이 없더라도 ORM은 모델과 저장소의 결합도를 충분히 완화시킬 수 있음
      2) ORM 매핑을 수동으로 하려면 개팔 코스트가 더욱 소모됨

0개의 댓글