0
박성철
스프링 프레임워크 코어
Spring Web App Architecture
다중 계층 아키텍쳐
다중 계층 아키텍쳐
표현 계층
애플리케이션 계층
비지니스 로직 계층
인프라 계층
업무A 업무B 업무C
스프링 MVC + 다중 계층
사용자 측
프론트

컨트롤러
컨트롤러
모델뷰
애플리케이션 계층
비지니스 로직 계층
인프라 계층
스프링 컨테이너 분리
프론트

컨트롤러
컨트롤러
모델뷰
최상단 애플리케이션 컨텍스트
웹 애플리케이션 컨텍스트
Dispatch Servlet이 생성
WebApplicationInitializer 구현체에서 직접 만들거나 ...
트랜잭션 스크립트 패턴

(Transaction Script)
표현 계층
애플리케이션 계층
비지니스 로직 계층
인프라 계층
업무A 업무B 업무C
중복

발생
다중 계층 + 도메인 모델
표현 계층
애플리케이션 계층
비지니스 로직 계층
인프라 계층
도메인모델
육각 아키텍쳐
인프라
사용자측
데이터측
도메인

모델
서비스
App 서비스
스프링 MVC + 육각 아키텍쳐
사용자 측
데이터측
인프라
App 서비스
도메인

모델
프론트

컨트롤러
컨트롤러
모델뷰
서비스
스프링 컨테이너 분리
프론트

컨트롤러
컨트롤러
모델뷰
인프라
도메인

모델
서비스
App 서비스
최상단 애플리케이션 컨텍스트
웹 애플리케이션 컨텍스트
Dispatch Servlet이 생성
WebApplicationIn...
데이터측
인프라
도메인

모델
서비스
애플리케이션 서비스
애플리케이션의 사용자 쓰임새
애플리케이션의 컨트롤러 역할

비 도메인 로직과 도메인 로직의 통합

도메인 로직은 도메인 서비스나 도메인 모델에 위임
스프링 @
A...
데이터측
인프라
도메인

모델
서비스
도메인 서비스
여러 도메인 객체가 관여하는 복잡적 업무 처리
순수 도메인 로직

외부 도메인 로직 노출 단순화, 파싸드(Facade)
App 서비스
도메인 서비스
애플리케이션 

서...
데이터측
인프라
도메인

모델
서비스
도메인 모델
복잡한 업무를 도메인 객체의 협력 구조로 모델링

OO 도메인 모델
객체로 업무 규칙(rule)
데이터베이스 모델과 유사

단순한 도메인 모델 = DB
App 서비스
도메인 모델 VS DTO
도메인 모델

- 모델링 된 결과

- 영속화 대상

- 리치 도메인 모델은 중량 객체
DTO(
- 계층간 데이터 전송용 객체

- 주고 받는 쌍방 간의 관심사 반영

- 도메인 로직 은익

-...
도메인 모델: 저장소
도메인 모델이 인프라에 의존하지 않도록 저장소 추상화
데이터 검색/저장 작업을 일반 자료구조와 유사하게 처리
스프링의
데이터측
인프라
도메인

모델
서비스
App 서비스
저장소 인터페이스
저장소 클...
도메인 모델: 인프라 서비스
도메인 모델이 인프라에 의존하지 않도록 외부 연동 추상화
데이터측
인프라
도메인

모델
서비스
App 서비스인프라 서비스

인터페이스
인프라 서비스

클래스
도메인

객체
도메인 모델
인프라
데이터 접근: 테이블 데이터 GW
일반적으로 DAO
DB
단일 테이블에 대한 모든 SQL
무상태 객체
find(int)
findWithLastName(String)
update(…)
insert(…)
delete(int...
데이터 접근: 행 데이터 GW
데이터와 DB
DB
데이터와 DB
검색은 Finder
update(…)
insert(…)
delete(int)
PersonGateway
find(int)
findWithLastName(St...
데이터 접근: 액티브 레코드
행 데이터 게이트웨이 + 도메인 로직
update(…)
insert(…)
delete(int)
isValid()
getFullName()
Person
find(int)
findWithLast...
데이터 접근: 데이터 매퍼
도메인 객체와 DB
도메인 객체 그래프와 DB
isValid()
getFullName()
Person
lastname
firstname
numberOfDependents
PersonMapper...
Upcoming SlideShare
Loading in...5
×

스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처

2,676

Published on

사내에서 진행 된 스프링 웹 애플리케이션 개발 과정 중 스프링 코어 부분의 세번째 발표 자료입니다

Published in: Software
0 Comments
62 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,676
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
121
Comments
0
Likes
62
Embeds 0
No embeds

No notes for slide

Transcript of "스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 "

  1. 1. 박성철 스프링 프레임워크 코어 Spring Web App Architecture
  2. 2. 다중 계층 아키텍쳐
  3. 3. 다중 계층 아키텍쳐 표현 계층 애플리케이션 계층 비지니스 로직 계층 인프라 계층 업무A 업무B 업무C
  4. 4. 스프링 MVC + 다중 계층 사용자 측 프론트 컨트롤러 컨트롤러 모델뷰 애플리케이션 계층 비지니스 로직 계층 인프라 계층
  5. 5. 스프링 컨테이너 분리 프론트 컨트롤러 컨트롤러 모델뷰 최상단 애플리케이션 컨텍스트 웹 애플리케이션 컨텍스트 Dispatch Servlet이 생성 WebApplicationInitializer 구현체에서 직접 만들거나 ContextLoeaderListner가 생성 애플리케이션 계층 비지니스 로직 계층 인프라 계층
  6. 6. 트랜잭션 스크립트 패턴 (Transaction Script) 표현 계층 애플리케이션 계층 비지니스 로직 계층 인프라 계층 업무A 업무B 업무C 중복 발생
  7. 7. 다중 계층 + 도메인 모델 표현 계층 애플리케이션 계층 비지니스 로직 계층 인프라 계층 도메인모델
  8. 8. 육각 아키텍쳐 인프라 사용자측 데이터측 도메인 모델 서비스 App 서비스
  9. 9. 스프링 MVC + 육각 아키텍쳐 사용자 측 데이터측 인프라 App 서비스 도메인 모델 프론트 컨트롤러 컨트롤러 모델뷰 서비스
  10. 10. 스프링 컨테이너 분리 프론트 컨트롤러 컨트롤러 모델뷰 인프라 도메인 모델 서비스 App 서비스 최상단 애플리케이션 컨텍스트 웹 애플리케이션 컨텍스트 Dispatch Servlet이 생성 WebApplicationInitializer 구현체에서 직접 만들거나 ContextLoeaderListner가 생성
  11. 11. 데이터측 인프라 도메인 모델 서비스 애플리케이션 서비스 애플리케이션의 사용자 쓰임새 애플리케이션의 컨트롤러 역할 비 도메인 로직과 도메인 로직의 통합 도메인 로직은 도메인 서비스나 도메인 모델에 위임 스프링 @ App 서비스 애플리케이션 서비스 UI 도메인 서비스
  12. 12. 데이터측 인프라 도메인 모델 서비스 도메인 서비스 여러 도메인 객체가 관여하는 복잡적 업무 처리 순수 도메인 로직 외부 도메인 로직 노출 단순화, 파싸드(Facade) App 서비스 도메인 서비스 애플리케이션 서비스 도메인 서비스
  13. 13. 데이터측 인프라 도메인 모델 서비스 도메인 모델 복잡한 업무를 도메인 객체의 협력 구조로 모델링 OO 도메인 모델 객체로 업무 규칙(rule) 데이터베이스 모델과 유사 단순한 도메인 모델 = DB App 서비스
  14. 14. 도메인 모델 VS DTO 도메인 모델 - 모델링 된 결과 - 영속화 대상 - 리치 도메인 모델은 중량 객체 DTO( - 계층간 데이터 전송용 객체 - 주고 받는 쌍방 간의 관심사 반영 - 도메인 로직 은익 - 과거 값 객체( 애플리케이션 서비스 UI 요청 반환 도메인 DTO 전송 객체 생성기 DTO 참조 참조
  15. 15. 도메인 모델: 저장소 도메인 모델이 인프라에 의존하지 않도록 저장소 추상화 데이터 검색/저장 작업을 일반 자료구조와 유사하게 처리 스프링의 데이터측 인프라 도메인 모델 서비스 App 서비스 저장소 인터페이스 저장소 클래스 도메인 객체 도메인 모델 인프라
  16. 16. 도메인 모델: 인프라 서비스 도메인 모델이 인프라에 의존하지 않도록 외부 연동 추상화 데이터측 인프라 도메인 모델 서비스 App 서비스인프라 서비스 인터페이스 인프라 서비스 클래스 도메인 객체 도메인 모델 인프라
  17. 17. 데이터 접근: 테이블 데이터 GW 일반적으로 DAO DB 단일 테이블에 대한 모든 SQL 무상태 객체 find(int) findWithLastName(String) update(…) insert(…) delete(int) PersonGateway
  18. 18. 데이터 접근: 행 데이터 GW 데이터와 DB DB 데이터와 DB 검색은 Finder update(…) insert(…) delete(int) PersonGateway find(int) findWithLastName(String) PersonFinder lastname firstname numberOfDependents
  19. 19. 데이터 접근: 액티브 레코드 행 데이터 게이트웨이 + 도메인 로직 update(…) insert(…) delete(int) isValid() getFullName() Person find(int) findWithLastName(String) PersonFinder lastname firstname numberOfDependents
  20. 20. 데이터 접근: 데이터 매퍼 도메인 객체와 DB 도메인 객체 그래프와 DB isValid() getFullName() Person lastname firstname numberOfDependents PersonMapper insert() update() delte()
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×