레이어드 패턴


레이어드 패턴이 있는 개략도

논리적인 부분이나 역할에 따라 코드를 독립적인 모듈로 나누고 각 모듈을 서로의 종속성에 따라 레이어별로 연결하여 마치 레이어를 쌓아 전체 시스템을 구현한 것처럼 형태를 만드는 패턴입니다. 하다.

시스템마다 종류는 다르지만 일반적으로 위와 같이 3개의 계층이 있습니다.

프레젠테이션 슬라이드

클라이언트와 접촉하는 첫 번째 레이어이며 백엔드 API의 엔드포인트 부분에 해당합니다. 따라서 프리젠테이션 계층은 API 엔드포인트를 정의하고 전송된 HTTP 요청을 읽는 로직을 구현하지만 그 이상은 작동하지 않고 실제 시스템에서 구현한 로직을 비즈니스 계층으로 전달합니다.

비즈니스 계층

이름에서 알 수 있듯이 비즈니스 로직을 구현하는 계층입니다. 실제 기업의 성과기획이 여기에 반영되고 시스템이 구현해야 하는 로직이 여기에 결정적이다.

데이터가 서비스 화면에 표시되는 방식이나 특정 데이터베이스에서 데이터를 검색하는 방식에 대한 정보가 없습니다.

단순히 프리젠테이션 계층에서 데이터를 가져오고 비즈니스 로직을 구현하여 지속성 계층을 통과합니다.

지속성 계층

데이터베이스와 직접 소통하는 곳입니다. 따라서 데이터베이스 관련 로직을 구현하고 비즈니스 계층에서 필요한 데이터의 생성, 수정, 읽기를 처리하여 데이터를 데이터베이스에 저장, 수정, 읽어옵니다.


변화 패턴의 핵심 요소는 일방적 종속성과 관심사의 분리입니다.

일방적인 의존각 레이어는 아래 및 아래 레이어에만 의존합니다. 위의 사진을 예로 들어

프레젠테이션 계층은 비즈니스 계층에 종속되고 비즈니스 계층은 지속성 계층에만 종속됩니다. 프리젠테이션 계층에서는 비즈니스 계층을 건너뛰고 지속성 계층에 액세스하지 않습니다. 따라서 각 레이어는 상위 레이어와 독립적입니다.

이해관계 분리(SOC)역할이 각 수준에 대해 명확하게 분배되고 역할 중복이 없음을 의미합니다. 예를 들어, 각 레이어가 다른 레이어의 로직을 전혀 작성하지 않았기 때문에 프레젠테이션 레이어에서 퍼시스턴스 레이어의 로직을 사용하려면 퍼시스턴스 레이어의 코드를 호출해서 사용해야 합니다.

시프트 패턴을 사용하는 이유는 다음과 같습니다.

  • 확장성 : 각 레벨은 독립적이고 역할이 명확하기 때문에 다른 레벨에 미치는 영향을 최소화하면서 확장하거나 수정할 수 있습니다.
  • 읽기 쉬움 : 레이어가 완벽하게 분리되어 역할이 명확하여 가독성이 높아지고 코드의 구조가 이해하기 쉬우며, 각 레이어에 있는 코드의 목적이 명확하고 범위가 명확합니다.
  • 유지 적절하게 구조화된 코드는 문제가 발생한 위치와 찾아야 할 흐름이 명확하므로 유지 관리가 더 쉬워집니다.
  • 재사용 성 : 레이어가 독립적이기 때문에 비즈니스 레이어는 여러 프레젠테이션 레이어에 적용할 수 있습니다. Express 기반 API 엔드포인트에 적용된 비즈니스 계층은 다른 프레임워크를 사용하는 엔드포인트에도 사용할 수 있습니다.
  • 테스트 가능성 : 이해가 이미 명확한 역할로 나누어져 있기 때문에 각 레벨을 테스트하는 코드를 레벨을 나눈 것처럼 명확하게 구분할 수 있고, 복잡한 로직이 아닌 clear 및 scope 함수만 테스트하기 쉽습니다. 또한 레이어 자체가 다른 레이어에서 사용하는 구조체이기 때문에 테스트에서 호출하여 테스트하기가 쉽습니다.