'2022/08'에 해당되는 글 2건

Chapter 2. Organizing Domain Logic :: 2022/08/22 15:15

Chapter 2. Organizing Domain Logic

(도메인 로직 구성)

도메인 로직을 구성할 때, 트랜잭션 스크립트, 도메인 모델, 테이블 모듈 3가지 기본 패턴으로 구분.
트랜잭션 스크립트 : 도메인 로직을 저장하는 가장 간단한 방법. 프리젠테이션에서 입력값을 가져와서 유효성 검사 및 계산 처리하고 데이터베이스에 데이터를 저장하고, 다른 시스템에서 작업을 호출하는 절차. 프레젠테이션에 데이터를 응답. 작업에 대한 절차이므로 프리젠테이션에서 호출하는 모든 기능을 트랜잭션 스크립트라고 할 수 있음.

트랜잭션 스크립트의 장점
- 대부분의 개발자들이 이해하는 간단한 절차 모델
- Row Data Gateway or Table Data Gateway를 사용하는 단순 데이터 소스 계층과 잘 동작함
- 트랜잭션을 열고 닫는 것으로 트랜잭션 경계를 명확하게 설정

도메인 모델 : 복잡한 논리를 해결하는 것은 도메인 모델을 사용하는 것. 명사로 이루어진 도메인 주위에 도메인 모델(클래스)을 구축. 각 클래스에 연관된 로직을 배치. 트랜잭션 스크립트와 반대되는 도메인 모델의 사용은 객체 지향에서 이야기하는 패러다임 전환의 본질임. 사용자의 Action에 대한 모든 로직이 있는 하나의 루틴이 아니라, 각 객체별 관련된 논리가 분산되어 있음. 시퀀스 다이어그램도 객체 중심으로 그림. 도메인 모델의 가치는 우선 익숙해지면, 점점 더 복잡해지는 로직을 잘 구조화된 방식으로 처리할 수 있는 많은 기술적 방법이 있다는 것.
트랜잭션 스크립트는 새로운 조건이나 알고리즘이 추가되면 코드 내 분기로 추가하게 되지만, 도메인 모델은 기존 코드를 수정하지 않고 새로운 메소드나 클래스를 추가하면 됨.

테이블 모듈 : 데이터베이스에서 쿼리로 필요한 데이터를 가져다 놓고, 요청에 따라 해당 데이터 결과를 리턴.

Making a Choice (선택)

3가지 패턴은 상호 보완적임. 대부분 도메인 모델로 시작하지만, 일부 로직에서는 트랜잭션 스크립트를 사용하고, 다른 부분에서는 도메인 모델이나 테이블 모듈을 사용할 수 있다.

Service Layer

도메인 로직을 처리하는 일반적인 방법은 도메인 레이어를 둘로 나누는 것이다. 서비스 레이어는 기본 도메인 모델이나 테이블 모듈 위에 위치한다. 트랜잭션 스크립트만 사용하는 도메인 레이어는 레이어 분리의 유익한 점이 없기 때문에 도메인 모델이나 테이블 모듈에서만 레이어 분리로 인한 잇점을 얻을 수 있다.
프리젠테이션 로직은 어플리케이션에 대한 API 역할을 하는 서비스 레이어를 통해서 도메인과 상호작용을 한다.

서비스 레이어는 명확한 API를 제공할 뿐만 아니라, 트랜잭션이나 보안을 처리하는 좋은 위치이기도 하다. 대부분의 비즈니스 로직은 서비스 레이어의 트랜잭션 스크립트에 위치함. 하위에 위치한 도매인 객체는 매우 간단하다. 도메인 모델이 데이터베이스와 1:1이다. 컨트롤러-엔터티 스타일에 해당함. MVC, Application Controller라고도 함.

고정된 레이어를 만들면 안 됨.

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Name
Password
Homepage

Secret

Chapter 1. Layering :: 2022/08/22 15:14

이 글은 Martin Fowler의 "Patterns of Enterprise Application Architecture"의 내용을 번역, 요약 & 발췌하여 정리한 글입니다.

Chapter 1. Layering

Layer와 Tier : Layer는 역할과 책임을 명확하게 구분할 수 있는 논리적인 구분이고, Tier는 물리적인 구분.
하나의 Tier에 모든 Layer를 구현하여 동작시킬 수 있음.

<The three principle layer>
 1) Presentation (UI) : 사용자와 소프트웨어간 인터페이스를 담당하는 로직. 사용자에게 정보를 보여주고, 사용자의 command를 해석하여 비즈니스 로직이나 데이터 소스로부터 실제적인 액션을 수행하게 함
 2) Domain (Business) : 시스템의 실제적인 비즈니스 로직을 수행. 응용 프로그램이 도메인에 대해 수행해야 하는 작업을 나타냄.
 3) Data Source (Data) : 응용 프로그램을 위한 작업을 수행하는 다른 시스템과의 통신하는 것. 트랜잭션 모니터링, 메시징 시스템, 등. 대부분 데이터베이스를 사용함.

Choosing Where to Run Your Layers (레이어를 실행할 위치 선택)

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Name
Password
Homepage

Secret