마틴 파울러의 엔터프라이즈 애플리케이션 아키텍처 패턴을 읽고 정리한다.
1부 이야기 마지막인 종합이다. 이전 시간에 언급된 내용이 반복된다.
작성 시점은 20년 전으로 당시와 지금의 용어 & 개념이 다를 수 있고, 더 이상 사용 안 하는 것도 있을 수도 있다.
자세한 내용이 궁금하면 읽어보는 걸 권한다.
도메인 계층으로 시작하기
프로세스의 시작은 어떤 도메인 논리를 사용할지 선택하는 것이다.
- 트랜잭션 스크립트 : 가장 간단한 패턴으로 절차적 모델과 관계형 데이터베이스를 기반으로 구축하기 쉽다. 다만, 복잡한 비즈니스 논리 대처나 중복 코드에 취약하다.
- 도메인 모델 : 트랜잭션 스크립트와 정반대의 성격을 가진다. 논리가 복잡할 때 가장 적합한 방법이다. 다만, 배우기가 어렵고 관계형 데이터베이스 연결이 어렵다. 이를 해결하기 위한 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 |