본문 바로가기
프로그래밍/Node.js

[23] 아키텍쳐 패턴이란? Layered Architecture Pattern 이론 -4탄-

by 제이스톨 2023. 8. 22.
728x90

들어가기 전에..

Layered Architecture Pattern에서는 어떻게 파일을 쪼개는지 잘 이해를 해야한다.

3탄까지는 하나의 라우터에서 모든 기능이 이루어졌지만 여기서는 아니다..

 

1탄

https://jh-healing-place.tistory.com/105

 

[14] 회원가입, 로그인, 게시판CRUD 구현해보자! (Node.js x mySQL x sequelize) 1탄

1. 들어가기 전에 개발자라고 하면 모두들 CRUD는 기본이라고한다. 하지만 이 CRUD를 구현한다는게 가장 어렵고 이를 자유자재로 구현하게 되면 그때서야 비로소 초급 개발자의 문턱에 들어갔다고

jh-healing-place.tistory.com

 

2탄

https://jh-healing-place.tistory.com/117

 

[15] 회원가입, 로그인, 게시판CRUD 구현해보자! (Node.js x mySQL x sequelize) 2탄

1. 들어가기 전에.. 여기서는 본격적으로 로그인, 로그아웃 기능을 위해 user라는 DB를 만들고 게시글과 댓글 기능을 위한 post와 cmt라는 DB를 만들어보도록 하겠다. ( 환경세팅 방법은 아래 1탄에 있

jh-healing-place.tistory.com

 

3탄

https://jh-healing-place.tistory.com/119

 

[16] 댓글기능, 좋아요 기능을 구현해보자! (Node.js x mySQL x sequelize) -3탄-

들어가기 전에.. 지난 시간까지는 개발환경 세팅하는 방법과 회원가입, 로그인, 게시글CRUD 구현까지 알아보았다. 이번 3탄에서는 댓글기능(Cmt), 좋아요(like)기능을 넣어보도록 하겠다. [아직까지

jh-healing-place.tistory.com

 


1. 아키텍쳐 패턴레이어드 아키텍쳐 패턴

1-1. 아키텍쳐 패턴 ( Architecture Pattern )

: 소프트웨어의 구조를 구성하기위한 가장 기본적인 토대를 말한다. 이를 사용하면 검증된 구조로 개발이 진행하기 때문에 안정적인 개발이 가능하다.

 

- 아키텍처 패턴 종류

  • 저장소 패턴 (Repository pattern)
  • 서비스 계층 패턴 (Service layer pattern)
  • 작업 단위 패턴 (Unit of work pattern)
  • 애그리게이트 패턴 (Aggregate pattern)
아키텍처 패턴을 도입하기 전에 어떠한 문제를 해결하고 싶은것인지, 
어떤 장단점이 존재하는지 확실하게 인지한 상태에서 도입하는 것을 추천!!

 

1-2. 레이어드 아키텍쳐 패턴 ( Layered Architecture Pattern )

: 계층을 분리해서 관리하는 아키텍처 패턴이고, 현재 가장 흔하게 사용되고 있는 아키텍처 패턴 중 하나이다. (현재 가장 흔하게 사용되고 있는 아키텍처 패턴 중 하나임..!)

 

계층화의 핵심은 각 계층응집도(Cohesion)가 높으면서, 다른 계층과는 낮은 결합도(Coupling)를 가지고 있어야한다.

여기서 상위 계층하위 계층사용할 수 있지만, 하위 계층은 자신의 상위 계층에 누가 있는지 알 수 없고, 사용할 수 조차 없도록 구성해야한다.

 

일반적으로 계층형 아키텍처 패턴의 경우 규모가 작은 어플리케이션의 경우 3개, 크고 복잡한 경우는 그 이상의 계층으로 이루어져있다.

 

1-3. 3계층 아키텍처 (3-Layered Architecture)

: 3-Layered Architecture는 아래의 3가지의 처리과정을 이용해서 구현합니다.

- Controller : 어플리케이션의 가장 바깥 부분, 요청/응답을 처리한다.

- Service : 어플리케이션의 중간 부분, 실제 중요한 작동이 많이 일어나는 부분이다.

- Repository : 어플리케이션의 가장 안쪽 부분, DB와 맞닿아 있다. (실제 데이터베이스의 데이터를 사용하는 계층)


2. Layered Architecture Pattern 실행 및 개발 순서

"migration, model -> repository -> service -> controller -> 마지막 router"

이 순서로 기능이 실행된다고 보면 된다.

 

2-1. migration, model 만들기

여기까지는 3탄까지 했던 것과 똑같다. (모르겠다면 2탄과 3탄을 보고 오기!)

 

2-2. repository : 데이터 엑세스 계층(Data Access Layer)이라고도 불리는데, 대표적으로 Database와 관련된 작업을 수행하는 계층

  • 클라이언트의 요청을 받음
  • 요청에 대한 처리는 서비스에게 전담
  • 클라이언트에게 응답

 

2-3. service : 아키텍처의 가장 핵심적인 비즈니스 로직을 수행하고 실제 사용자(클라이언트)가 원하는 요구사항을 구현하는 계층

  • 사용자의 요구사항을 처리 ('비즈니스 로직') 하는 실세 중에 실세!!! (현업에서는 서비스 코드가 계속 비대해짐)
  • DB 정보가 필요할 때는 Repository 에게 요청

 

2-4. controller : 클라이언트의 요청을 처리 한 후 서버에서 처리된 결과반환해주는 역할

  • DB 관리 (연결, 해제, 자원 관리)
  • DB CRUD 작업 처리

 

2-5. router

: 마지막 관문 느낌! 위 3개를 실행시켜준다.

 

3계층 레이어드 패턴의 전체적인 모습


2, 3탄처럼 한 라우터 폴더에서 모든 작업이 이루어지다가

분할하는 작업하는게 처음에는 많이 어렵고 복잡하다.

 

하지만 현업에서 쓰이는 방법이니 확실하게 이해하고 넘어갈 필요가 있다고 생각한다.

5탄에서는 실제로 레이어드 아키텍처 패턴을 적용해서 회원가입, 로그인 기능을 구현해보고자한다.

728x90