Patthern of Enterprise Application Architecture에서 언급하는 주요 용어의 정의와 역할을 기술한다.

아키텍처의 의미

"아키텍처"는 아주 많은 사람들이 정의하려고 하지만 의견이 분분한 용어다. 다만 두 가지 공통적 요소가 있는데, 하나는 시스템을 구성 요소로 나누는 최상위 수준의 분해를 의미하며, 다른 하나는 번복하기 어려운 결정을 의미한다.
또한 한 가지 방법만으로는 시스템의 아키텍처를 설명할 수 없으며, 하나의 시스템 안에도 여러 아키텍처가 있을 뿐 아니라 아키텍처적으로 무엇이 중요한지에 대한 관점도 시스템의 수명 기간 중 달라질 수 있다는 인식이 점차 설득력을 얻고 있다. (p.10)

아키텍처에서 중요한 건 무엇일까?

  • 프로젝트에 참여하는 전문 개발자의 시스템 설계에 대한 공유된 이해를 반영하는 주관적 개념이다.

  • 이 공유된 이해는 일반적으로 시스템의 중요 컴포넌트, 그리고 이러한 컴포넌트 간의 상호작용 방법에 대한 것이다.

  • 또한 결정에 대한 것이기도 한데, 이 결정은 번복하기 어렵다고 인식되므로 개발자들이 되도록 일찍, 그리고 올바르게 내리고 싶어하는 것이라고 했다.

  • 주관성은 이 부분에도 작용한다. 어떤 것이 원래 생각했던 것보다 바꾸기 쉽다면 더 이상 아키텍처에 속하지 않기 때문이다. 아키텍처의 본질은 그것이 무엇이든 중요한 것으로 요약된다. (p.11)

이 책은 다양한 상황에 유용하게 활용할 수 있는 계층형 아키텍처(Layered Architecture)를 소개하고, 엔터프라이즈 애플리케이션을 계층으로 분할하는 방법과 이러한 계층이 상호작용 하는 방법에 대해 서술한다.

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

엔터프라이즈 애플리케이션은 아래와 같은 특성을 내포한다.

지속적인 데이터를 처리한다

이러한 데이터는 최소한 몇 년 동안 유지해야 하는 경우가 많다. 환자 기록, 급여 관리, 신용 점수와 같은 데이터가 여기에 해당된다.

유지 기간동안 기존 데이터를 손상시키지 않고 새로운 데이터를 업데이트 할 수 있게 데이터의 구조가 여러번 바뀔 수 있다.

막대한 양의 데이터를 처리한다

수천만 개의 레코드로 구성된 데이터를 이용하는 경우가 많다.

여러 사람이 동시에 데이터에 접근한다

동시 사용자가 다수이기 때문에 모든 사용자가 올바르게 시스템에 접근할 수 있어야 한다.

이렇게 많은 데이터를 처리하기 위한 사용자 인터페이스 화면의 수가 많다

다양한 용도에 맞게 다양한 방식으로 애플리케이션 사용자에게 데이터를 제공해야 한다.

신용 점수 조회 화면과 입출금 내역 조회 화면이 각각 다른 화면에서 보여주는 걸 예시로 들 수 있다.