이 책은 『엔터프라이즈 애플리케이션 아키텍처 패턴』의 재출간판이다. 『리팩토링』의 저자로도 잘 알려진 마틴 파울러는 이 책에서 기업용 애플리케이션을 개발할 때 직면하는 갖가지 까다로운 문제와 이 문제의 해법을 모색하는 데 도움될 만한 패턴을 소개한다. 이 책에서 소개하는 패턴들은 다양한 전문가의 손길을 거쳐 정제된 것으로서 자바나 .NET을 비롯해 어떤 엔터프라이즈 애플리케이션을 구축하는 데도 적용할 수 있다.

엔터프라이즈 애플리케이션 개발 분야는 새로운 기반 기술이 등장함에 따라 함께 혜택을 받으며 크게 발전했다. 덕분에 이 분야에도 자바나 .NET과 같은 다중 계층 객체지향 플랫폼이 표준화됐다. 이러한 새로운 도구와 기술은 강력한 애플리케이션을 구축할 수 있는 기반이지만 제대로 구현하기는 어렵다. 엔터프라이즈 애플리케이션을 개발할 때 자주 겪는 문제 중에는 숙련된 객체지향 개발자라면 알고 있어야 할 아키텍처에 대한 경험 부족 때문에 유발되는 것들이 많다.

『엔터프라이즈 애플리케이션 아키텍처 패턴』은 엔터프라이즈 애플리케이션 개발자가 맞닥뜨리는 까다로운 과제를 극복하기 위한 지식을 전수하기 위해 쓰여졌다. 유명한 객체지향 설계자이자 저자인 마틴 파울러는 스몰토크와 코바에서 시작해 현재의 자바와 .NET까지 핵심 기술은 계속 진화하지만 일상적이고 공통적인 문제는 근본적으로 동일한 설계 아이디어를 적용해 해결할 수 있다는 사실을 깨달았다. 그리고 이러한 기본 아이디어를 바탕으로 전문적인 여러 공동 저자 그룹의 도움을 받아 40가지 공통적인 해결책을 패턴으로 만들어냈다. 그리고 이러한 해결책을 어떠한 엔터프라이즈 애플리케이션 플랫폼에도 적용할 수 있게 한 권의 유용한 핸드북으로 정리하는 데 성공했다.

이 책은 사실 두 권의 책을 한 권으로 묶었다고 할 수 있다. 이 책의 앞부분은 엔터프라이즈 애플리케이션 개발에 대한 간단한 자습서 역할을 하며, 독자가 처음부터 순서대로 읽으면서 이 책의 주요 주제를 개략적으로 파악할 수 있게 구성됐다. 그리고 더 많은 비중을 차지하는 뒷부분은 패턴 자체에 대한 아주 자세한 참조서 역할을 한다. 각 패턴에는 사용법과 구현 정보는 물론 자바나 C#으로 작성된 자세한 코드 예제를 함께 실었으며 설명하는 개념을 시각적으로 이해하는 데 도움이 되는 UML 다이어그램도 다양하게 준비했다.

이 책을 통해 엔터프라이즈 애플리케이션을 개발하면서 중요한 설계상의 결정을 내리는 데 필요한 지식과 함께 개발 과정에 사용할 수 있는 입증된 패턴을 체계적으로 이해할 수 있을 것이다.

★ 이 책에서 다루는 내용 ★

  • 엔터프라이즈 애플리케이션을 여러 계층으로 분할하는 방법
  • 비즈니스 논리를 구성하는 여러 주요 방식
  • 객체와 관계형 데이터베이스 간 매핑에 대한 심도 깊은 논의
  • 모델 뷰 컨트롤러를 통한 웹 프레젠테이션 운영
  • 여러 트랜잭션에 걸친 데이터의 동시성을 처리하는 방법
  • 분산 객체 인터페이스 설계

마틴 파울러 (Martin Fowler)

마틴 파울러는 지난 십여 년 이상 까다로운 비즈니스 문제에 객체를 적용해 해결하는 방법을 전문적으로 연구한 독립 컨설턴트다. 특히 보건, 금융거래, 기업재정 등 다양한 분야의 시스템에 대한 컨설팅을 수행했으며 주요 고객사로는 크라이슬러, 시티뱅크, 영국 국립보건원, 앤더슨 컨설팅, 넷스케이프 커뮤니케이션 등이 있다. 또한 파울러는 다양한 행사에서 객체, UML(Unified Modeling Language), 패턴 등의 주제에 대한 강연자로 꾸준히 활동하고 있다.

최민석

번역회사에서 언어전문가로 일하다 뜻하는 바를 이루기 위해 프리랜서로 독립해서 현재는 전문 번역가로 일하고 있다. 주로 IT 관련 소프트웨어의 현지화와 개발자 웹 사이트 관련 프로젝트를 진행하고 있으며 앞으로 개발자 서적 분야에서 작은 변화를 일으키고 싶다는 소박한 소망을 하고 있다. 번역가의 고민은 독자의 고민과 반비례한다는 믿음으로 오늘도 기꺼이 고민할 준비가 돼 있다. 번역한 책으로는 『유니티와 C#으로 배우는 게임 개발 교과서』 『게임 디자인 워크숍』 『시작하세요! 스프링 4 프로그래밍』 『자바 웹 개발 완벽 가이드』가 있다.

  • ▣ 들어가며
    • 아키텍처
    • 엔터프라이즈 애플리케이션
    • 엔터프라이즈 애플리케이션의 유형
    • 성능에 대한 고려
    • 패턴
    • 패턴의 구조
    • 이러한 패턴의 한계
    •  
  • [01부] 이야기
    •  
    • ▣ 01장: 계층화
      • 엔터프라이즈 애플리케이션에서 계층의 발전
      • 세 가지 주요 계층
      • 계층이 실행될 위치 선택
    •  
    • ▣ 02장: 도메인
      • 선택
      • 서비스 계층
    •  
    • ▣ 03장: 관계형
      • 아키텍처 패턴
      • 동작 문제
      • 데이터 읽기
      • 구조적 매핑 패턴
        • 관계 매핑
        • 상속
      • 매핑
        • 이중 매핑
      • 메타데이터 사용
      • 데이터베이스 연결
      • 기타 주의사항
      • 참고 자료
    •  
    • ▣ 04장: 웹 프레젠테이션
      • 뷰 패턴
      • 입력 컨트롤러 패턴
      • 참고 자료
    •  
    • ▣ 05장: 동시성
      • 동시성 문제
      • 실행 컨텍스트
      • 격리와 불변성
      • 낙관적 동시성 제어와 비관적 동시성 제어
        • 일관성 없는 읽기 예방
        • 교착 상태
      • 트랜잭션
        • ACID
        • 트랜잭션 리소스
        • 활동성을 위한 트랜잭션 격리성 저하
        • 비즈니스 트랜잭션과 시스템 트랜잭션
      • 오프라인 동시성 제어를 위한 패턴
      • 애플리케이션 서버 동시성
      • 참고 자료
    •  
    • ▣ 06장: 세션 상태
      • 상태 비저장의 가치
      • 세션 상태
      • 세션 상태를 저장하는 방법
    •  
    • ▣ 07장: 분산 전략
      • 분산 객체의 매력
      • 원격 및 로컬 인터페이스
      • 분산이 필요한 상황
      • 분산 경계를 사용한 작업
      • 분산을 위한 인터페이스
    •  
    • ▣ 08장: 종합
      • 도메인 계층으로 시작하기
      • 데이터 원본 계층
        • 트랜잭션 스크립트(115)의 데이터 원본
        • 테이블 모듈(132)의 데이터 원본
        • 도메인 모델(122)의 데이터 원본
      • 프레젠테이션 계층
      • 몇 가지 기술 관련 조언
        • 자바와 J2EE
        • .NET
        • 저장 프로시저
        • 웹 서비스
      • 다른 계층화 체계
    •  
  • [02부] 패턴
    •  
    • ▣ 09장: 도메인 논리 패턴
      • 트랜잭션 스크립트
        • 작동 원리
        • 사용 시점
        • 수익 인식 문제
        • 예제: 수익 인식(자바)
      • 도메인 모델
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 수익 인식(자바)
      • 테이블 모듈
        • 작동 원리
        • 사용 시점
        • 예제: 테이블 모듈을 이용한 수익 인식(C#)
      • 서비스 계층
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 수익 인식(자바)
    •  
    • ▣ 10장: 데이터 원본 아키텍처 패턴
      • 테이블 데이터 게이트웨이
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 인물 게이트웨이(C#)
        • 예제: ADO.NET 데이터 집합 사용(C#)
      • 행 데이터 게이트웨이
        • 작동 원리
        • 사용 시점
        • 예제: 인물 레코드(자바)
        • 예제: 도메인 객체를 위한 데이터 홀더(자바)
      • 활성 레코드
        • 작동 원리
        • 사용 시점
        • 예제: 간단한 인물 클래스(자바)
      • 데이터 매퍼
        • 작동 원리
        • 사용 시점
        • 예제: 간단한 데이터베이스 매퍼(자바)
        • 예제: 검색기 분리(자바)
        • 예제: 비어 있는 객체 만들기(자바)
    •  
    • ▣ 11장: 객체-관계형 동작 패턴
      • 작업 단위
        • 작동 원리
        • 사용 시점
        • 예제: 객체 등록을 사용하는 작업 단위(자바)
      • 식별자 맵
        • 작동 원리
        • 사용 시점
        • 예제: 식별자 맵의 메서드(자바)
      • 지연 로드
        • 작동 원리
        • 사용 시점
        • 예제: 지연 초기화(자바)
        • 예제: 가상 프락시(자바)
        • 예제: 값 홀더 사용(자바)
        • 예제: 고스트 사용(C#)
    •  
    • ▣ 12장: 객체-관계형 구조 패턴
      • 식별자 필드
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 정수 키(C#)
        • 예제: 키 테이블 사용(자바)
        • 예제: 복합 키 사용(자바)
      • 외래 키 매핑
        • 작동 원리
        • 사용 시점
        • 예제: 단일 값 참조(자바)
        • 예제: 다중 테이블 검색(자바)
        • 예제: 참조의 컬렉션(C#)
      • 연관 테이블 매핑
        • 작동 원리
        • 사용 시점
        • 예제: 직원과 기술(C#)
        • 예제: 직접 SQL 사용(자바)
        • 예제: 여러 직원을 쿼리 하나로 처리(자바)
      • 의존 매핑
        • 작동 원리
        • 사용 시점
        • 예제: 앨범과 트랙(자바)
      • 포함 값
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 간단한 값 객체(자바)
      • 직렬화 LOB
        • 작동 원리
        • 사용 시점
        • 예제: 부서 계층을 XML로 직렬화(자바)
      • 단일 테이블 상속
        • 작동 원리
        • 사용 시점
        • 예제: 선수 정보를 단일 테이블로 매핑(C#)
        • 데이터베이스에서 객체 로드
      • 클래스 테이블 상속
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 선수의 상속 구조 매핑(C#)
      • 구현 테이블 상속
        • 작동 원리
        • 사용 시점
        • 예제: 구현 테이블 상속(C#)
      • 상속 매퍼
        • 작동 원리
        • 사용 시점
    •  
    • ▣ 13장: 객체-관계형 메타데이터 매핑 패턴
      • 메타데이터 매핑
        • 작동 원리
        • 사용 시점
        • 예제: 메타데이터와 리플렉션 사용(자바)
      • 쿼리 객체
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 간단한 쿼리 객체(자바)
      • 리포지토리
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 인물의 의존자 검색(자바)
        • 예제: 리포지토리 전략의 교체(자바)
    •  
    • ▣ 14장: 웹 프레젠테이션 패턴
      • 모델 뷰 컨트롤러
        • 작동 원리
        • 사용 시점
      • 페이지 컨트롤러
        • 작동 원리
        • 사용 시점
        • 예제: 서블릿 컨트롤러와 JSP 뷰를 사용한 간단한 표시(자바)
        • 예제: JSP를 처리기로 사용(자바)
        • 예제: 코드 숨김을 이용한 페이지 처리기(C#)
      • 프런트 컨트롤러
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 간단한 디스플레이(자바)
      • 템플릿 뷰
        • 작동 원리
        • 사용 시점
        • 예제: 별도의 컨트롤러와 함께 JSP를 뷰로 사용(자바)
        • 예제: ASP.NET 서버 페이지(C#) 380
      • 변환 뷰
        • 작동 원리
        • 사용 시점
        • 예제: 간단한 변환(자바)
      • 2단계 뷰
        • 작동 원리
        • 사용 시점
        • 예제: 2단계 XSLT(XSLT)
        • 예제: JSP와 커스텀 태그(자바)
      • 애플리케이션 컨트롤러
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 상태 모델 애플리케이션 컨트롤러(자바)
    •  
    • ▣ 15장: 분산 패턴
      • 원격 파사드
        • 작동 원리
        • 사용 시점
        • 예제: 자바 세션 빈을 원격 파사드로 사용(자바)
        • 예제: 웹 서비스(C#)
      • 데이터 전송 객체
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 앨범에 대한 정보 전송(자바)
        • 예제: XML을 사용한 직렬화(자바)
    •  
    • ▣ 16장: 오프라인 동시성 패턴
      • 낙관적 오프라인 잠금
        • 작동 원리
        • 사용 시점
        • 예제: 도메인 계층과 데이터 매퍼(174)(자바)
      • 비관적 오프라인 잠금
        • 작동 원리
        • 사용 시점
        • 예제: 간단한 잠금 관리자(자바)
      • 굵은 입자 잠금
        • 작동 원리
        • 사용 시점
        • 예제: 공유된 낙관적 오프라인 잠금(441)(자바)
        • 예제: 공유된 비관적 오프라인 잠금(452)(자바)
        • 예제: 루트 낙관적 오프라인 잠금(441)(자바)
      • 암시적 잠금
        • 작동 원리
        • 사용 시점
        • 예제: 암시적인 비관적 오프라인 잠금(452)(자바)
    •  
    • ▣ 17장: 세션 상태 패턴
      • 클라이언트 세션 상태
        • 작동 원리
        • 사용 시점
      • 서버 세션 상태
        • 작동 원리
        • 사용 시점
      • 데이터베이스 세션 상태
        • 작동 원리
        • 사용 시점
    •  
    • ▣ 18장: 기본 패턴
      • 게이트웨이
        • 작동 원리
        • 사용 시점
        • 예제: 특정 메시징 서비스에 대한 게이트웨이(자바)
      • 매퍼
        • 작동 원리
        • 사용 시점
      • 계층 상위 형식
        • 작동 원리
        • 사용 시점
        • 예제: 도메인 객체(자바)
      • 분리 인터페이스
        • 작동 원리
        • 사용 시점
      • 레지스트리
        • 작동 원리
        • 사용 시점
        • 예제: 싱글턴 레지스트리(자바)
        • 예제: 스레드로부터 안전한 레지스트리(자바)
      • 값 객체
        • 작동 원리
        • 사용 시점
      • 금액
        • 작동 원리
        • 사용 시점
        • 예제: 금액 클래스(자바)
      • 특수 사례
        • 작동 원리
        • 사용 시점
        • 참고 자료
        • 예제: 간단한 null 객체(C#)
      • 플러그인
        • 작동 원리
        • 사용 시점
        • 예제: ID 생성기(자바)
      • 서비스 스텁
        • 작동 원리
        • 사용 시점
        • 예제: 소비세 서비스(자바)
      • 레코드 집합
        • 작동 원리
        • 사용 시점
  • 80쪽, 두 번째 문단 5번째 줄

    데이비드가 업데이트하기 전 잠금 패키지의 파일은 17개였고, 다상 패키지에는 15개였다 ==> 데이비드가 업데이트하기 전 잠금 패키지의 파일은 7개였고, 다상 패키지에는 5개였다

관련 글


엮인 글

엮인 글 주소: http://wikibook.co.kr/peaa/trackback/