Skip to content

Commit

Permalink
Docs: Add Patterns of Enterprise Application Architecture Chapter00
Browse files Browse the repository at this point in the history
  • Loading branch information
fkdl0048 committed Mar 5, 2024
1 parent 66f61de commit db0a767
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
1 change: 1 addition & 0 deletions Objects/Chapter03.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
## 3장
34 changes: 34 additions & 0 deletions Patterns of Enterprise Application Architecture/Chapter00.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## 서문

이 책은 총 두 부분으로 구성되어 있다. 1부에서는 엔터프라이즈 애플리케이션의 설계를 이해하기 쉽게 설명하는 이야기 장을 포함한다. 엔터프라이즈 아키텍처와 관련된 다양한 문제와 그 해결책을 소개한다. 다만 이러한 해결책을 심도 있게 다루지는 않는다. 해결책에 대한 깊이 있는 내용은 패턴별로 정리된 2부에서 다룬다. 2부는 순서대로 읽기보다는 참고서로 적합하다. (필요할 때 더 깊게 읽을 것)

이 책은 엔터프라이즈 애플리케이션 설걔에 대한 책이다. **엔터프라이즈 애플리케이션은 막대한 규모와 복잡한 데이터를 표시, 관리, 저장하고, 이러한 데이터를 이용한 비즈니스 프로세스를 지원하거나 자동화하는 애플리케이션을 말한다.** 예로는 예약 시스템, 금융 시스템, 공급망 시스템 그밖의 현대 비즈니스 운영에 필수적인 다양한 시스템이 있다. *일반적인 소프트웨어 아키텍처에 대한 책은 POSA를 추천한다.*

저자는 반복적 개발을 선호하며, 이는 완전하지 않더라도 사용자에게 유용한 소프트웨어를 최대한 신속적으로 만든다는 것이다. 거의 애자일과 동일한 철학이다. 이 책은 완벽하진 않지만 엔터프라이즈 애플리케이션 아키텍처에 대한 유용한 개요를 담고 있다.

- 엔터프라이즈 애플리케이션 계층화
- 도메인 논리 구성
- 웹 사용자 인터페이스 구성
- 인메모리 모듈과 관계형 데이터베이스 연결
- 상태 비저장 환경에서 세션 상태 처리
- 분산의 원리

이 책에서 다루지 않는 주제는 `유효성 검사 구성`, `메시징과 비동기 통신의 통합`, `보안`, `오류 처리`, `클러스터링`, `애플리케이션 통합`, `아키텍처 리팩터링`, `리치 클라이언트 사용자 인터페이스 구성` 등이 있다.

예제는 자바나 C#코드로 구성되어 있다. 예제는 패턴의 개념에 대한 영감과 설명을 제공하기 위한 것이며, 완성된 해결책이 아니다. 예제를 활용하기 위해선 많은 수정작업이 필요하니 패턴 자체를 정답으로 인식하지 말자.

## 들어가며

컴퓨터 시스템을 구축하는 일은 아주 어렵다. 시스템의 복잡도가 높아지면 소프트웨어를 구축하는 일이 기하급수적으로 어려워진다. 다른 전문 직업과 마찬가지로 우리는 실수나 성공에서 배우는 과정을 통해서만 앞으로 전진할 수 있다.

### 아키텍처

소프트웨어 업계에서는 한 용어를 미묘하게 모순되는 무수히 많은 의미로 확장하기를 즐기는 경향이 있다. 그 피해자 중 하나가 "아키텍처"라는 용어다. 이 단어 자체가 **시스템을 구성 요소로 나누는 최상위 수준의 분해를 의미**하며, 다른 하나는 **번복하기 어려운 결정을 의미**한다. 관점에 따라 설명이 달라지기도 한다.

### 엔터프라이즈 애플리케이션

대부분 컴퓨터 소프트웨어를 개발하며, 이러한 작업을 모두 소프트웨어 개발이라고 부른다. 하지만 과제와 복잡도 면에서 뚜렷하게 구분되는 다양한 종류가 있다. 통신분야로 사실 엔터프라이즈 애플리케이션은 통신 소프트웨어에 가깝다.

엔터프라이즈 애플리케이션은 **게임**은 포함하지 않는다.

**엔터프라이즈 애플리케이션은 단독으로 운영되는 경우가 거의 없다. 즉, 엔터프라이즈 애플리케이션은 기업 전체에 분산된 다른 엔터프라이즈 애플리케이션과 통합해야 하는 경우가 많다.**

0 comments on commit db0a767

Please sign in to comment.