loop-study
개발 공부할래?
loop-study
전체 방문자
오늘
어제
  • 분류 전체보기 (186)
    • 목표 및 회고 (25)
    • 세미나 & 워크샵 (1)
    • 교육 및 인강 (67)
      • TDD, Clean Code with Java (5)
      • ATDD, 클린 코드 with Spring (6)
      • DDD 세레나데 (3)
      • 인프라 공방 (6)
      • 이규원의 현실 세상의 TDD (19)
      • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (18)
      • 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 (8)
      • 코딩으로 학습하는 GoF의 디자인 패턴 (1)
      • 스프링 시큐리티 완전정복 6.x (1)
    • 서적 (62)
      • 객체지향의 사실과 오해 (1)
      • 객체지향과 디자인패턴 (7)
      • 만들면서 배우는 클린 아키텍처 (3)
      • 테스트 주도 개발로 배우는 객체 지향 설계와 실천 (1)
      • 오브젝트: 코드로 이해하는 객체지향 설계 (17)
      • 리팩토링 : 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기 (0)
      • 토비의 스프링 (3)
      • 엔터프라이즈 애플리케이션 아키텍처 패턴 (9)
      • 개발자의 글쓰기 (1)
      • 소프트웨어 장인 (17)
      • Real MySQL 8.0 (2)
      • JVM 밑바닥까지 파헤치기 (0)
    • 개발 & 방법론 (29)
      • Java (13)
      • TDD (5)
      • ATDD (3)
      • DDD (6)
      • 인프라 (2)
      • SQL (0)
    • 개인이야기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 백엔드 로드맵

인기 글

태그

  • 테스트 주도 개발
  • 스터디
  • JUnit
  • ATDD
  • 이규원
  • 인프라공방
  • 오브젝트
  • 백기선
  • 마틴 파울러
  • 엔터프라이즈 애플리케이션 아키텍처 패턴
  • 넥스트스탭
  • TDD
  • 객체지향
  • 자바
  • DDD 세레나데
  • fastcampus
  • 인프런
  • 김영한
  • nextstep
  • study
  • 장인정신
  • 추상화
  • java
  • 소프트웨어 장인
  • 스프링
  • 현실세상의 TDD
  • 조영호
  • Patterns of Enterprise Application Architecture
  • 모든 개발자를 위한 HTTP 웹 기본 지식
  • Test Driven Development

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
loop-study

개발 공부할래?

1부 이야기 - 종합
서적/엔터프라이즈 애플리케이션 아키텍처 패턴

1부 이야기 - 종합

2021. 8. 2. 21:24

마틴 파울러의 엔터프라이즈 애플리케이션 아키텍처 패턴을 읽고 정리한다.

1부 이야기 마지막인 종합이다. 이전 시간에 언급된 내용이 반복된다.

작성 시점은 20년 전으로 당시와 지금의 용어 & 개념이 다를 수 있고, 더 이상 사용 안 하는 것도 있을 수도 있다.

자세한 내용이 궁금하면 읽어보는 걸 권한다.

 

엔터프라이즈 애플리케이션 아키텍처 패턴(재출간판) - 교보문고

엔터프라이즈 애플리케이션 구축을 위한 객체지향 설계의 원리와 기법 | 이 책은 『엔터프라이즈 애플리케이션 아키텍처 패턴』의 재출간판이다. 『리팩토링』의 저자로도 잘 알려진 마틴 파

www.kyobobook.co.kr


도메인 계층으로 시작하기

프로세스의 시작은 어떤 도메인 논리를 사용할지 선택하는 것이다.

- 트랜잭션 스크립트 : 가장 간단한 패턴으로 절차적 모델과 관계형 데이터베이스를 기반으로 구축하기 쉽다. 다만, 복잡한 비즈니스 논리 대처나 중복 코드에 취약하다.

- 도메인 모델 : 트랜잭션 스크립트와 정반대의 성격을 가진다. 논리가 복잡할 때 가장 적합한 방법이다. 다만, 배우기가 어렵고 관계형 데이터베이스 연결이 어렵다. 이를 해결하기 위한 O/R 매핑 방법이 있지만 복잡하다.

- 테이블 모듈 : 트랜잭션 스크립트와 도메인 모델의 중간에 해당된다. 트랜잭션 스크립트보다 논리를 원활하게 수행하면서 관계형 데이터베이스 활용에 아주 적합하다.


데이터 원본 계층

도메인 계층 선택 후 데이터 원본 연결 방법을 선택해야 한다.

 

트랜잭션 스크립트의 데이터 원본

관련 패턴으로 행 데이터 게이트웨이와 테이블 데이터 게이트웨이가 있다.

- 행 데이터 게이트웨이 : 레코드가 확실하고 명시적 인터페이스 객체로 읽는다

- 테이블 데이터 게이트웨이 : 데이터에 접근하는 접근자 코드가 필요 없어 코드 양은 줄지만 레코드 구조에 접근하는 암시적 인터페이스를 사용해야 한다.

인메모리 구조가 데이터베이스 구조와 잘 매핑되어 있어 다른 O/R 매핑 패턴이 필요 없다.

 

테이블 모듈의 데이터 원본

레코드 집합과 어울리는 테이블 데이터 게이트웨이가 좋은 선택이다.

 

도메인 모델의 데이터 원본

도메인 모델의 단점은 데이터베이스와 연결이 복잡한 것이다.

도메인 모델이 간단하면, 활성 레코드가 가장 합리적 선택이고, 결합을 느슨하게 하기 위해선 테이블 데이터 게이트웨이나 행 데이터 게이트웨이를 사용한다.

도메인 모델이 복잡하면 구현하기 가장 까다로운 데이터 매퍼를 사용하며 O/R 매핑과 관련된 패턴이 개입된다. (작업 단위를 추천)


프레젠테이션 계층

계층을 선택하는 첫번째 질문은 리치 클라이언트 인터페이스와 HTML 브라우저 인터페이스의 선택이다.

HTML 선택했으면, 애플리케이션 기본 구조를 선택하며, 기본적으로 모델 뷰 컨트롤러를 추천한다.

하위 계층과 통신 방법은 도메인 계층을 원격 파사드로 래핑하고 데이터 전송 객체를 사용해 웹 서버와 통신한다. 


다른 계층화 체계

지금까지 세 가지 주요 계층을 중심으로 내용을 진행했지만 다른 필자의 체계를 알아보자.

 

브라운의 계층

브라운 파울러
프레젠테이션 프레젠테이션
컨트롤러/중재자 프레젠테이션(애플리케이션 컨트롤러)
도메인 도메인
데이터 매핑 데이터 원본(데이터 매퍼)
데이터 원본 데이터 원본

 

코어 J2EE 계층

코어 J2EE 파울러
클라이언트 클라이언트에서 실행되는 프레젠테이션 (ex : 리치 클라이언트 시스템)
프레젠테이션 서버에서 실행되는 프레젠테이션 (ex : HTTP 처리기, 서버 페이지)
비즈니스 도메인
통합 데이터 원본
리소스 데이터 원본과 통신하는 외부 리소스

 

 

마이크로소프트 DNA 계층

마이크로소프트 DNA 파울러
프레젠테이션 프레젠테이션
비즈니스 도메인
데이터 접근 데이터 원본

모든 계층이 레코드 집합(데이터 전송 객체 역할을 한다)을 이용해 작업하기 때문에 비즈니스, 프레젠테이션이 데이터베이스에 강하게 결합된다. 

 

 

 

마리네스쿠 계층

마리네스쿠 파울러
프레젠테이션 프레젠테이션
애플리케이션 프레젠테이션(애플리케이션 컨트롤러)
서비스 도메인(서비스 계층)
도메인 도메인(도메인 모델)
지속성 데이터 원본

 

 

닐슨의 계층

닐슨 파울러
소비자 프레젠테이션
소비자 도우미 프레젠테이션(애플리케이션 컨트롤러)
애플리케이션 도메인(서비스 계층)
도메인 도메인(도메인 모델)
지속성 접근 데이터 원본
공용 저장 프로시저 데이터 원본(도메인 일부를 포함할 수 있음)
전용 저장 프로시저 데이터 원본(도메인 일부를 포함할 수 있음)

 

'서적 > 엔터프라이즈 애플리케이션 아키텍처 패턴' 카테고리의 다른 글

1부 이야기 - 분산 전략  (0) 2021.08.02
1부 이야기 - 세션 상태  (0) 2021.07.28
1부 이야기 - 동시성  (0) 2021.07.28
1부 이야기 - 웹 프레젠테이션  (0) 2021.07.26
1부 이야기 - 관계형 데이터베이스 매핑  (0) 2021.07.26
    '서적/엔터프라이즈 애플리케이션 아키텍처 패턴' 카테고리의 다른 글
    • 1부 이야기 - 분산 전략
    • 1부 이야기 - 세션 상태
    • 1부 이야기 - 동시성
    • 1부 이야기 - 웹 프레젠테이션
    loop-study
    loop-study
    오늘도 공부하자

    티스토리툴바