본문 바로가기

CS

Layered pattern

Layered pattern 은 코드의 구조를 어떻게 구성하고 관리해야하는가에 대한 문제를 위해

코드를 논리적인 부분 혹은 역할에 따라 독립적인 모듈로 구성하는 패턴입니다.

각 모듈이 서로의 의존도에 따라 층층이 연결되어서 전체의 시스템을 구현하는 구조입니다.

즉 역할에 따라 분리되었던 파일은 하나의 layer라고 볼 수 있습니다.

 

 

Layered 아키텍처의 핵심요소

단방향 의존성 : 각각의 Layer는 자기보다 하위에 있는 레이어에만 의존하고 있음

관심사 분리(SOC) : 각 Layer 별 역할이 구분되어 명확함, 역할의 중첩이 없음

 

장점

  • 확장성
  • 재사용성 : 코드 구조상의 재사용성은 일반 코드 레벨의 재사용성, 함수나 클래스 재사용하는 수준이 아니라 구조적인 재사용성
  • 유지 보수 가능성 : 함수나 클래스등을 사용하여 코드를 추상화(abstraction)하고 서로 독립적인 로직을 분리하여 필요한 곳에 적절하게 사용되도록 하는 코드 구현하여 유지보수를 더 쉽게해야함
  • 가독성 : 어려운 로직을 쉽고 간단하게 구현 / 가독성이 어려우면 다른개발자가 이해하기 힘들어 유지보수가 어려워지며 오류가 많이 생김
  • 테스트 가능성 : 추상화가 잘 구현되어 있고 담당하는 역할이 잘 나뉘어 있는 구조가 테스트하기 쉬운구조

 

 

 

 

 

 

 

일반적으로 다음과 같은 3개의 레이어(MVC)

Presentation Layer

data에 대한 입출력 맡음 / 클라이언트와 직접적으로 연결되는 부분, 엔드포인트들을 정의하고 전송된 http요청(reqest)을 읽어 들이는 로직구현

-(controller) 요청/응답을 읽어 들여 처리, 비지니스 로직으로 갈 데이터가 올바른 형태를 하고있는지 검열

: 서버에서 원하는 특정 데이터의 key 값이 요청시 전해지지않았을떄 발상해는 key error를 사전에 에러처리로 검열

Business Layer :

실제 비니지스 규칙과 로직들이 접목됨 어플리케이션을 직접 다루는 운영자입장에서 기획한 비지니스모델들이 점목되어야함

예) 비밀번호 8자 미만(비번조건)이면 회원가입 거부등의 실질적인 시스템이 구현해야하는 로직들을 이 레이어에서 구현

-(service) 비지니스 로직처리

Persistence Layer

: database와 관련된 로직 / business layer에서 필요한 crud를 처리하여 데이터베이스에서 crud를 해냄

(Model ) SQL처리

 

 

 


 

 

layer dependency(의존성) 순서

app → Router → Controller →Service → Models

  • app : express app으로 서버를 여는 로직 express app 인스턴스만들고 필요한 미들웨어 붙이는 로직, 경우에 따라서 app.js와 server.js에 각기다른 기능을 유도하여 두가지 파일 모두 유지할수 있고 둘의 기능을 한데 모아서 한파일로 유지가능 개발자의 의도에 맞게 파생되어질수 있는 다양한 경우의 수에 유의 코드작성
  • Routes: 라우팅(엔드 포인트 나누기) 로직을 담당합니다.
  • controllers: 엔드포인트에 해당하는 함수 로직 - http 요청에 따른 에러 핸들링, service 로직에서 데이터를 받아와서 응답으로 내보내는 로직입니다.
  • services: controller 에서 넘겨받은 인자로 다양한 알고리즘(필터, 정렬 등..)을 처리해서 데이터에 접근하는 로직입니다.
  • models: 데이터베이스에 접근하기 위한 모델(DAO)이 정의되어 있는 폴더입니다.

 

'CS' 카테고리의 다른 글

페이지 교체 알고리즘  (0) 2023.07.12
4XX 대 상태코드  (0) 2023.03.30
인터넷 동작원리  (0) 2023.03.24
HTTP 메시지  (0) 2023.03.23
RESTful API  (0) 2023.03.23