[Node.js][TIL] 아키텍처 패턴 (Architecture Pattern)

Trippy·2023년 12월 2일
1

Node.js

목록 보기
20/28
post-thumbnail

아키텍처 패턴

아키텍처 패턴은 소프트웨어의 구조를 구성하기 위한 가장 기본적인 토대를 제시한다.

  • 아키텍처 패턴은 각각의 시슽쳄들과 그 역할이 정의되어 있고, 여러 시스템 사이의 관계와 규칙 등이 포함되어 있다.
  • 검증된 구조로 개발을 진행하기 때문에 안정적인 개발이 가능하다.
  • 복잡한 도메인 문제를 해결할 떄, 아키텍처 패턴을 사용하면 모델이나 코드를 더 쉽게 변경할 수 잇다는 측면에서 큰 이익을 얻을 수 있다.

아키텍처 패턴을 도입하기 전에 고민해야 할 것

  1. 이점비용에 대한 확실한 이유가 있어야 한다.
  2. 해당하는 아키텍처 패턴을 채택했을 때어떤 장단점이 존재하는지 명확하게 인지해야 한다.
  3. 여러 계층을 추가하기 위해 들이는 노력과 시간을 투자할 만한 가치가 있을 정도로 어플리케이션도메인복잡한 경우에만 아키텍처 패턴을 도입해야 한다.

계층형 아키텍처 패턴(Layered Architecture Pattern)

  • 시스템의 서로 다른 기능을 여러 계층(layer)로 분할하는 패턴
  • 일반적으로 컨트롤러, 서비스, 저장소 계층으로 분리됨

계층형 아키텍처 패턴은 각 계층을 명확하게 분리해서 유지하고, 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이 목표이다.

계층화

각 계층이 높은 응집도 <----->다른 계층과는 결합도를 최소화
상위 ---> 하위계층 O
하위 ---> 상위계층 X
하위 계층은 독립적으로 동작

3계층 아키텍처

컨트롤러 : 어플리케이션의 가장 바깥 부분, 요청/응답을 처리
서비스 : 어플리케이션의 중간 부분, API의 핵심적인 동작이 많이 일어나는 부분
저장소 : 어플리케이션의 가장 안쪽 부분, 데이터베이스와 맞닿아 있음.

컨트롤러

  • 클라이언트의 요청(req)을 받는다.
  • 요청에 대한 처리는 -> 서비스에게 위임
  • 클라이언트에게 응답(res)을 한다.

서비스

  • 현업에서는 서비스 코드가 계속 확장되는 문제가 발생할 수 있다.
  • DB정보가 필요할 때는 Repository에게 요청

저장소

  • 데이터베이스 관리(연결, 해제, 자원 관리) 역할을 담당.
  • 데이터베이스의 CRUD작업을 처리.

3계층 전체 모습

장점

  • 관심사를 분리하여 현재 구현하려는 코드를 명확하게 인지 가능
  • 각 계층은 서로 독립적이며, 의존성이 낮아 모듈을 교체하더라도 코드 수정이 용이하다
  • 각 계층별로 단위 테스트를 작성할 수 있어 테스트 코드를 조금 더 용이하게 구성할 수 있다.
profile
감금 당하고 개발만 하고 싶어요

1개의 댓글

comment-user-thumbnail
2023년 12월 3일

정리 깔쌈쓰~

답글 달기