계층의 발전
일괄 처리 시스템 시절에는 계층을 적용할 필요가 없었다.
필요한 형식의 파일(ISAM, VSAM 등)을 조작하는 프로그램을 작성하면 충분했기 때문이다.
90년대에 클라이언트-서버 시스템이 등장하면서 계층은 조금 더 중요해졌다.
클라이언트-서버 시스템은 클라이언트가 사용자 인터페이스와 다른 애플리케이션 코드를 포함하고 있어야 하고 서버는 관계형 데이터베이스를 포함하는 2 계층 시스템이다.
애플리케이션의 기능이 주로 데이터를 표시하고 간단한 업데이트를 수행하는 것이라면 클라이언트-서버 시스템은 상당히 잘 작동한다.
문제는 도메인 논리를 수행하는 경우에 일어난다.
일반적으로 클라이언트에 이러한 논리를 추가하였고 논리가 복잡해지면 코드를 작업하기가 매우 어려워지는 문제가 있었다.
게다가 화면에 삽입한 논리는 코드를 복제하기가 쉽기 때문에 간단한 변경을 수행하더라도 수많은 화면의 비슷한 코드를 찾아야 했다.
이 문제의 대안으로 도메인 논리를 저장 프로시저로 만들어 데이터베이스에 저장하는 방법이 있다.
그러나 *저장 프로시저는 제한적인 구조화 메커니즘을 가지고 있어서 어색한 코드가 되는 문제는 여전하다.*
또한, 데이터베이스 공급업체를 바꾸는 경우가 있는데 저장 프로시저는 공급업체별로 다르기 때문에 제품을 교체하기 어렵다.
객체지향의 세계가 시작되면서 도메인 논리 문제에 대한 해결책으로 3계층 시스템을 제안했다.
UI를 위한 프레젠테이션 계층, 도메인 논리를 위한 도메인 계층 그리고 데이터 원본을 이용한다.
이 방식으로 복잡한 도메인 논리를 UI에서 분리해 올바른 구조로 만들 수 있었다.
하지만 당시 시스템은 너무 간단해서 객체지향 기법은 큰 진전을 이루지 못했다.
그러다가 웹이 등장하면서 모든 사람들이 애플리케이션을 브라우저로 배포하기를 원했다. 3계층 시스템을 이용해서 간단하게 새 프레젠테이션 계층을 추가해 클라이언트-서버 시스템의 문제를 해결할 수 있었다. *게다가 자바가 프로그래밍의 주류로 자리 잡으면서 웹 페이지 작성 툴은 SQL과의 결합이 훨씬 느슨했기 때문에 세 번째 계층을 받아들이는 데도 유리했다.*
3가지 주요 계층
1. 프리젠테이션 논리
사용자와 소프트웨어 간 상호작용을 처리한다.
주 역할은 사용자에게 정보를 표시하고 사용자가 내린 명령을 도메인과 데이터 원본에서 수행할 작업으로 해석하는 것이다.
2. 데이터 원본 논리
애플리케이션을 대신해 다른 시스템(트랜잭션 모니터, 다른 앱, 메시징 시스템 등)과 통신한다.
대부분의 엔터프라이즈 애플리케이션에서 가장 큰 데이터 원본 논리는 데이터베이스다.
3. 도메인 논리
애플리케이션이 수행해야 하는 도메인과 관련된 작업이다.
입력과 저장된 데이터를 바탕으로 하는 계산, 받은 데이터의 유효성 검사, 받은 명령을 기준으로 작업 대상이 될 데이터 원본 논리를 결정하는 등의 작업이 포함된다.
때로는 도메인 계층이 데이터 원본을 프레젠테이션으로부터 완전히 감추도록 구성된 경우도 있다.
하지만 프레젠테이션이 데이터 저장소에 접근하는 경우가 더 많다.
이 방식은 순수하지는 않지만 실제로는 잘 작동한다. 이 경우 프레젠테이션은 사용자의 명령을 해석하고 데이터 원본을 통해 데이터를 가져온 다음 도메인 논리에 데이터 처리를 맡긴 후 처리된 데이터를 사용자에게 제공한다.
계층 분리 이외에도 의존성에 대한 중요한 규칙이 하나 있다. 도메인과 데이터 원본은 프레젠테이션에 의존하지 않아야 한다.
다시 말해 도메인이나 데이터 원본 코드가 프레젠테이션의 코드의 서브 루틴을 호출하면 안 된다. 이러하면 동일한 기반을 유지하면서 프레젠테이션을 손쉽게 교체할 수 있으며, 다른 계층에 미치는 영향을 최소화하면서 프레젠테이션을 수정하기도 쉽다.
계층이 실행될 위치 선택
한곳에서 모든 것을 실행하는 경우
1. 서버에서 실행
가장 큰 장점은 서버에서 모든 작업이 이뤄지므로 업그레이드, 수정이 쉽다. 여러 데스크톱에 배포 및 동기화 작업에는 신경 쓰지 않아도 된다. 또한 데스크톱 소프트웨어와의 호환성 문제도 생각할 필요가 없다.
2. 클라이언트에서 실행
응답성이나 비연결 작업에 유리하다. 서버에서 실행되는 논리는 응답하기 위해 서버로 왕복해야 한다. 따라서 즉각적인 반응이 필요할때 이 왕복이 방해가 된다. 또한, 서버에서 실행되는 논리는 네트워크로 연결돼야 실행된다.
계층별 선택할 수 있는 위치
1.데이터 원본
2.프레젠테이션
3.도메인 논리
'Study > 엔터프라이즈 애플리케이션 아키텍처 패턴' 카테고리의 다른 글
05장 - 동시성 (0) | 2023.02.14 |
---|---|
03장 - 관계형 데이터베이스 매핑 02 - 데이터 읽기 / 구조적 매핑 패턴 (0) | 2023.02.08 |
03장 - 관계형 데이터베이스 매핑 01 - 아키텍처 패턴 / 동작 문제 (0) | 2023.02.07 |
02장 - 도메인 논리 구성 (0) | 2023.02.07 |
01장 - 계층화 : 계층화의 이점과 단점 (0) | 2023.01.31 |