[TIL] Layered Architecture Pattern 23.07.12

이상훈·2023년 7월 13일
0

[내일배움캠프]

목록 보기
45/68

도메인 (Domain)

  • 개발자는 비지니스 프로세스를 개선하거나 자동화하기 위해 일하는데, 도메인은 이런 프로세스가 지원하는 활동을 의미함(SW로 해결하고자 하는 문제의 영역)
  • 한 도메인은 다시 하위 도메인으로 나뉠 수 있음(하위 도메인 구성 여부는 상황에 따라 달라짐, B2B / B2C)

도메인 모델 (Domain Model)

  • 도메인 모델이란 유용한 특성을 포함하는 프로세스나 현상의 지도를 뜻함
  • 특정 도메인을 개념적으로 정리한 모델을 뜻하며 사용할 객체를 기억하기 쉬운 이름(식별자)을 부여해 대상을 쉽게 공유할 수 있게 해줌

도메인 모델링의 종류
1) 엔티티 (Entity)

  • 실제 DB테이블과 연관되어 있는 핵심 클래스이고, 엔티티를 기준으로 테이블이 생성되고 DB스키마가 변경된다.
  • 엔티티를 요청이나 응답값으로 전달하는 클래스로 사용하면 안된다.
  • 엔티티 내부의 속성이 변경되더라도 여전히 동일한 엔티티로 남아있음
  • 엔티티는 시간에 따라 변하는 속성이 포함될 수 있음
    2) 값 객체 (Value object)
    3) 도메인 서비스 (Domain service)

아키텍처 패턴 (Architecture Pattern)

대표적인 아키텍처 패턴

  • 저장소 패턴 (Repository pattern)
    영속적인 저장소에 대한 추상화
  • 서비스 계층 패턴 (Service layer pattern)
    유스케이스(Usecase)의 시작과 끝을 명확하게 정의하기 위한 패턴
  • 작업 단위 패턴 (Unit of work pattern)
    원자적 연산을 제공
  • 애그리게이트 패턴 (Aggregate pattern)
    데이터 정합성을 강화하기 위한 패턴

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

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

계층형 아키텍처 패턴

4-Tier Layered Architecture

  • 아키텍처의 컴포넌트들은 각각 어플리케이션의 특정한 역할을 수행하도록 가로로 나누어져 계층을 이룸
  • 가장 널리 알려진 아키텍처로 전통적인 IT workflow와 조직 구성이 잘 맞아 떨어져 많은 비즈니스에서 채택된다
  • 주로 3계층으로 이루어져 있으며 3계층 패턴은 비즈니스 레이어 + 퍼시스턴스 레이어를 합쳐서 애플리케이션 레이어가 들어감

1) Presentation Layer

  • 유저 + 브라우저와 상호작용
  • 이 계층은 클라이언트의 요청을 받고 응답하는 계층, 특징으로는 어떻게 클라이언트의 요청을 처리할 것인지는 관심이 없고 그저 요청을 어떻게 받고 응답을 어떻게 할지에 대해 관심이 있는 계층이다. 요청에 대한 처리는 Business Layer로 전달

2) Business Layer

  • 요청에 따른 비즈니스 로직을 수행
  • Presentation Layer가 클라이언트의 요청을 받아오면 Business는 실제 요청에 대한 처리를 하는 부분임. 클라이언트가 웹이던 앱이던 혹은 database를 어떤 것을 사용하는지 관심 없으며 그저 비즈니스 로직을 처리한다.

3) Persistence Layer

  • 데이터를 저장, 관리
  • 데이터베이스에 접근하는 게층으로 Business의 요청 처리에 따라 데이터베이스에서 데이터를 저장, 조회, 삭제 등의 로직을 수행

4) Database Layer

  • 데이터베이스 그 자체

업로드중..

-> 계층화 아키텍처의 핵심요소는 단방향 의존성이다.

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

1) Controller : 어플리케이션의 가장 바깥 부분, 요청/응답을 처리함

  • 클라이언트의 요청을 처리 한 후 서버에서 처리된 결과를 반환해주는 역할

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

  • 아키텍처의 가장 핵심적인 비즈니스 로직이 수행되는 부분

3) Repository : 어플리케이션의 가장 안쪽 부분, DB와 맞닿아 있음

  • 실제 데이터베이스의 데이터를 사용하는 계층
  1. 클라이언트가 요청을보냅니다.
  2. 요청을 URL에 알맞은 컨트롤러가 수신을 받음
  3. 컨트롤러는 넘어온 요청을 처리하기 위해 서비스를 호출
  4. 서비스는 필요한 데이터를 가져오기 위해 저장소에게 데이터를 요청
  5. 서비스는 저장소에서 가져온 데이터를 가공하여 컨트롤러에게 데이터를 넘김
  6. 컨트롤러는 서비스의 결과물을 클라이언트에게 전달해줌
profile
코린이

0개의 댓글