[Node.js] 아키텍처 패턴

Asher Park·2022년 12월 28일
0

내일배움캠프_Node.js

목록 보기
15/17
post-thumbnail

스파르타코딩클럽 내일배움캠프 Node.js 심화주차 강의를 들으며 공부한 것을 적은 것입니다.

도메인

  • 프로세스가 지원하는 활동을 의미
  • 한 도메인은 다시 하위 도메인으로 나눌 수 있다
  • 한 도메인은 다른 하위 도메인과 연동하여 완전한 기능을 제공

도메인 모델

  • 특성을 포함하는 프로세스나 지도
  • 특정 도메인을 개념적으로 정리한 모델

종류

  1. Entity
    실제 DB 테이블과 연관되어 있는 핵심 클래스
    Entity를 기준으로 테이블이 생성되고 스키마가 변경
  2. Value Object
  3. Domain Service

아키텍처 패턴

  • 소프트웨어의 구조를 구성하기 위한 가장 기본적인 토대
  • 시스템들과 역할이 정의되어 있고, 관계와 규칙 등이 포함

대표적인 패턴

  • 저장소 패턴
  • 서비스 계층 패턴
  • 작업 단위 패턴
  • 애그리게이트 패턴

고민해야 할 것

  • 아키텍처 패턴이 주는 이익과 비용에 대한 이유
  • 장단점 파악
  • 노력과 시간을 투자할 만한 가치가 있을 정도로 도메인이 복잡한 경우에 도입

계층형 아키텍처 패턴

  • 계층을 분리해서 관리하는 아키텍처 패턴
  • 단순하고 대중적, 비용도 적게 듦
  • 각 계층이 자신의 바로 아래 계층에만 의존
  • 각 계층은 응집도가 높으면서, 다른 계칭과는 결합도가 낮아야함
  • 상위 계층은 하위 계층을 사용할 수 있지만, 하위 계층은 상위 계층에 누가있는지 알 수 없다

3계층 아키텍처

  • 프레젠테이션 계층
  • 비즈니스 로직 계층
  • 데이터 엑세스 계층

3계층 아키텍처 구현

  • Controller : 요청/응답 처리
    - 클라이언트의 요청을 처리 후, 결과를 반환해주는 역할
  • Service : 중요한 동작을 많이 하는 부분
    - 가장 핵심적인 비즈니스 로직이 수행
  • Repository : DB와 연관된 부분
    - 실제 DB의 데이터를 사용하는 부분

장점

  • 관심사를 분리, 코드를 명확하게 인지
  • 계층별로 읜존성이 낮아 수정에 용이
  • 계층별로 유닛 테스트

Controller

  • 클라이언트의 요청을 수신
  • 서버에서 수행된 결과를 클라이언트에게 반환
  • 하위 계층에서 발생하는 예외를 처리
  • 데이터에 대해 유효성 검증

Service

  • 핵심적인 비즈니스 로직을 수행
  • 클라이언트의 요구사항을 구현하는 계층
  • 서비스 계층에 너무 많은 기능을 넣으면 빈약한 도메인 모델과 같은 안티 패턴이 생길 수 있다

Repository

  • 데이터 엑세스 계층
  • 데이터 접근과 관련된 세부 사항을 감춘다
  • 데이터 저장소를 간단히 추상화한 것이므로, 모델 계층과 데이터 계층을 분리할 수 있다
profile
배움에는 끝이없다

0개의 댓글