애플리케이션 아키텍처
개발/도입 이유
- 비즈니스 또는 조직의 필요를 만족시키기 위해
- 비즈니스들은 해당 영역에 특화된 공통 애플리케이션 사용
→ 이런 공통점으로 인해 아키텍처 도입
애플리케이션 아키텍처
- 시스템 클래스의 주요 특성 포함
- 예: 실시간 시스템 - 데이터 수집 시스템 또는 모니터링 시스템
- 예: 실시간 시스템 - 데이터 수집 시스템 또는 모니터링 시스템
- 같은 유형의 시스템을 개발 시 공통적인 아키텍처 구조를 재사용
- 비즈니스 시스템에서 애플리케이션 아키텍처 재사용을 함
애플리케이션 아키텍처 모델 사용법
- 아키텍처 설계 프로세스의 시작점
- 개발하는 애플리케이션 유형에 익숙하지 않은 경우에 해당
- 초기 설계를 일반 애플리케이션 아키텍처에 기반을 두고 시작
- 추후 개발할 특정 시스템을 위해 설계를 특화
- 설계 점검표
- 애플리케이션 시스템을 위한 설계가 일반적인 아키텍처와 일치하는지 점검
- 애플리케이션 시스템을 위한 설계가 일반적인 아키텍처와 일치하는지 점검
- 개발팀의 업무를 조직하는 방법
- 애플리케이션 아키텍처 - 시스템 아키텍처의 안정적 구조적 특징을 식별
- 애플리케이션 아키텍처를 동시에 개발하는 것이 가능
- 재사용할 컴포넌트를 평가하는 수단
- 애플리케이션에 관해 대화하는 용어
- 애플리케이션들을 비교하는데 활용
- 특정 애플리케이션에 대해 논의할 때 사용
애플리케이션 아키텍처 예시
- 트랜잭션 처리 애플리케이션(데이터베이스 중심 애플리케이션)
- 정보에 대한 사용자 요청을 처리하고 데이터베이스의 정보를 갱신
- 다수의 웹 기반 비즈니스 시스템
- 대화식 비즈니스 시스템의 가장 흔한 유형
- 사용자들의 행위가 서로 간섭 X
- 데이터베이스의 무결성 유지
- 대화식 은행 시스템, 전자 상거래 시스템, 정보 시스템, 예약 시스템 등
- 언어 처리 시스템
- 사용자의 의도가 프로그래밍 언어와 같은 형식 언어로 표현되어 있는 시스템
- 언어를 처리하여 내부 형식으로 만들고 이 내부 표현을 해석
- 모든 소프트웨어 개발이 해당 시스템에 의존
- 컴파일러 - 가장 잘 알려진 언어 처리 시스템
트랜잭션 처리 시스템
- 데이터베이스와 연관된 요청 처리를 위해 설계됨
- 데이터베이스에 있는 정보에 대한 사용자 요청
- 데이터베이스 갱신을 위한 요청
- 데이터베이스 트랜잭션
- 연속된 작업의 일부이고 단일 단위로서 여겨짐
- 데이터베이스의 일관성을 보장해야 함
- 한 트랜잭션 내의 모든 작업들을 데이터베이스 변경이 영구적으로 이뤄지기 전에 완료
- 한 트랜잭션 내의 모든 작업들을 데이터베이스 변경이 영구적으로 이뤄지기 전에 완료
- 사용자 관점에서의 트랜잭션
- 목표를 만족시키기 위한 작업들의 일관된 순서
- 목표를 만족시키기 위한 작업들의 일관된 순서
- 사용자가 서비스 요청을 비동기적으로 하는 대화식 시스템
- 사용자가 입출력 처리 컴포넌트를 통해 시스템에 요청
- 요청은 애플리케이션 특화 논리로 처리
- 요청은 애플리케이션 특화 논리로 처리
- 트랜잭션이 생성되고 트랜잭션 관리자에 전달
- 트랜잭션 관리자가 트랜잭션이 완료되었음을 확인한 후 처리가 끝났다는 신호를 보냄
- 사용자가 입출력 처리 컴포넌트를 통해 시스템에 요청
은행 시스템 예시
- 파이프 필터 아키텍처로 구성될 수 있음
- 시스템 컴포넌트가 입력과 처리와 출력을 책임짐
- ATM 소프트웨어 및 계정 처리 소프트웨어로 구성
정보 시스템
- 공유 데이터베이스와 상호작용에 관련된 모든 시스템
- 대규모로 축적된 정보에 대한 통제된 접근을 가능케 함
- 웹 기반 시스템으로 구성
- 사용자 인터페이스를 거의 항상 웹 브라우저로 구현
MentCare 시스템 아키텍처
정보와 자원 관리 시스템
- 트랜잭션 처리 시스템이기도 함
- 전자상거래 시스템 - 인터넷 기반 자원 관리 시스템
- 시스템이 제공하는 기능
- 물품 또는 서비스에 대한 전자 주문을 받음
- 상품과 서비스의 배송을 준비
- 애플리케이션 특화 계층은 다음의 추가적인 기능을 포함
- 사용자가 여러 트랜잭션에서 여러 개의 항목을 장바구니에 담아둠
- 단일 트랜잭션에서 한 번에 지불
- 여러 서버들에 시스템을 분산할 수도 있음
- 웹 서버
- 모든 사용자 상호작용을 책임지며, 사용자 인터페이스는 웹브라우저를 이용하여 구현
- 모든 사용자 상호작용을 책임지며, 사용자 인터페이스는 웹브라우저를 이용하여 구현
- 애플리케이션 서버
- 정보 저장과 검색 요청뿐만 아니라 애플리케이션에 특화된 논리 구현
- 정보 저장과 검색 요청뿐만 아니라 애플리케이션에 특화된 논리 구현
- 데이터베이스 서버
- 정보를 데이터베이스로 들어가고 나오게 하고 트랜잭션 관리를 다룸
- 정보를 데이터베이스로 들어가고 나오게 하고 트랜잭션 관리를 다룸
- 웹 서버
- 다중 서버의 장점
- 처리 능력 향상
- 요청이 증가하면 추가 처리를 대처할 수 있게 서버를 추가할 수 있음
- 시스템이 제공하는 기능
언어 처리 시스템
- 한 언어를 그 언어의 다른 표현으로 번역
- 예, 컴파일러, XML 변환기, 자연어 처리 시스템
언어 처리 시스템의 아키텍처
언어처리 시스템을 위한 저장소 아키텍처
애플리케이션 아키텍처 추가 예시
일괄 데이터 처리 시스템
- 기록 또는 트랜잭션이 트랜잭션 전체에 걸쳐 상태를 유지할 필요 없이 연속적으로 처리되는 시스템
- 기능 지향적이다.(객체 지향 X)
- 함수-호출 간에 내부 상태 정보를 유지하지 않는 컴포넌트
- 데이터 흐름 다이어그램으로 데이터 처리 시스템의 아키텍처를 설명하기 좋음
- 비즈니스 시스템(일괄 데이터 처리 시스템 중 하나)
- 시스템보다 규모가 훨씬 큰 데이터와 시스템에 의존하는 데이터베이스에 중점
- 비즈니스의 여러 측면 지원
- 입력과 출력
- 파일이나 데이터베이스로 이뤄진 일괄 데이터
- 파일이나 데이터베이스로 이뤄진 일괄 데이터
- 동작 방법
- 입력받은 기록으로부터 데이터 선택
- 기록 상의 필드 값들을 토대로 프로그램에 정의된 동작들을 수행
- 계산 결과를 데이터 베이스에 쓰거나, 입력 및 계산된 출력의 형식을 지정
데이터 처리 시스템 입력-처리-출력 모델
- 3개의 주요 컴포넌트로 구성
입력 컴포넌트
- 데이터(입력)를 읽고 해당 데이터의 유효성을 확인하고, 오류 수정(처리)한 다음
처리(출력)를 위해 유효한 데이터를 큐에 넣을 수 있음
- 데이터(입력)를 읽고 해당 데이터의 유효성을 확인하고, 오류 수정(처리)한 다음
처리 컴포넌트
- 대기열(입력)에서 트랜잭션을 가져오고 데이터에 일부 계산을 수행하고 계산 결과를 기록하는
새 데이터 기록을 만든 후 인쇄(출력()을 위해 새 기록을 대기열에 넣을 수 있음 - 시스템 데이터베이스 내에서 수행되는 경우도 있고, 별도의 프로그램인 경우도 있음
- 대기열(입력)에서 트랜잭션을 가져오고 데이터에 일부 계산을 수행하고 계산 결과를 기록하는
출력 컴포넌트
- 대기열(입력)에서 기록을 읽고 출력 형식(처리)에 따라 형식을 지정한 다음
프린터로 보내거나 새 기록을 데이터베이스(출력)에 다시 쓸 수 있음
- 대기열(입력)에서 기록을 읽고 출력 형식(처리)에 따라 형식을 지정한 다음
자원 할당 시스템
- 4 계층 일반 구조를 갖는 정보 시스템 유형
- 정해진 양의 주어진 자원을 관리하는 시스템
- 유사하지 않아 보이는 많은 프로그램들이 자원 할당 시스템에 해당
- 시간표 슬롯에 수업을 할당하는 시간표 시스템
- 기간을 자원으로 다루며, 자원에 대한 각 수요와 관련된 많은 제약이 있음
- 기간을 자원으로 다루며, 자원에 대한 각 수요와 관련된 많은 제약이 있음
- 도서 또는 기타 항목의 대출 및 인출을 관리하는 도서관 시스템
- 자원이 단순히 할당되는 것이 아니라, 자원 사용자로부터 할당을 해제해야 할 수도 있음
- 자원이 단순히 할당되는 것이 아니라, 자원 사용자로부터 할당을 해제해야 할 수도 있음
- 영공을 여러 부분으로 나눈 것을 자원으로 관리하는 항공 교통 관리 시스템
- 자원의 동적 할당 및 재할당이 포함되지만, 이 경우에는 가상 자원
- 시간표 슬롯에 수업을 할당하는 시간표 시스템
자원 할당 시스템의 계층 모델
자원 할당 시스템의 구성 요소
자원 데이터베이스
- 할당되는 자원의 세부 정보를 보유하며 자원을 추가하거나 제거
- 할당되는 자원의 세부 정보를 보유하며 자원을 추가하거나 제거
자원 정책 제어 구성요소
- 자원 할당 규칙을 설명하는 규칙 집합 포함
- 자원 할당 규칙을 설명하는 규칙 집합 포함
자원 관리 구성 요소
- 자원 공급자가 시스템에서 자원 추가, 편집 또는 삭제할 수 있도록 도움
- 도서관 시스템 예 : 대여 가능한 사람, 대여 가능 기간, 최대 대여 가능 수량 등을 제한
자원 할당 구성 요소
- 자원이 할당될 때, 자원 데이터베이스를 업데이트하고 자원 요청자 정보와 연결
- 자원이 할당될 때, 자원 데이터베이스를 업데이트하고 자원 요청자 정보와 연결
사용자 인증 모듈
- 시스템이 인증된 사용자에게 자원이 할당되고 있는지 확인할 수 있도록 함
- 예 : 도서관 카드 혹은 신용 카드
쿼리 관리 모듈
- 사용자가 사용 가능한 리소스를 검색
- 도서관 시스템 : 특정 항목에 대한 쿼리를 기반
자원 전달 구성요소
- 요청자에게 전달한 자원 준비
- 요청자에게 전달한 자원 준비
사용자 인터페이스 구성요소(웹브라우저도 가능)
- 자원 요청자가 할당할 자원에 대한 쿼리 및 요청을 실행
- 시스템 외부에 위치
계층 구조는 여러 방식으로 구현 가능
- 정보 시스템 소프트웨어
- 각 계층을 별도의 서버에서 실행되는 대규모 구성 요소로 구성
- 각 계층은 외부 인터페이스를 정의하며, 모든 통신은 인터페이스를 통해 이루어짐
- 각 계층은 외부 인터페이스를 정의하며, 모든 통신은 인터페이스를 통해 이루어짐
- API를 통해 데이터베이스와 통신하는 단일 프로그램
- 전체 시스템이 단일 컴퓨터에서 실행되는 경우
- 전체 시스템이 단일 컴퓨터에서 실행되는 경우
- 세분화된 구성 요소를 별도의 웹 서비스로 구성
- 사용자의 요청에 따라 동적으로 구성
- 각 계층을 별도의 서버에서 실행되는 대규모 구성 요소로 구성
이벤트 처리 시스템
- 시스템 환경 또는 사용자 인터페이스의 이벤트에 반응하는 시스템
- 이벤트 발생 시점 예측 불가
- 이벤트가 발생했을 때 대응할 수 있어야 함
- 이벤트 처리 시스템 예시
- 워드 프로세서, 프레젠테이션, 게임
- 시스템은 이벤트를 감지하고 해석
- 사용자 인터페이스 이벤트
- 시스템에 대한 암시적 명령을 나타내며 해당 명령을 따르기 위해 조치를 취함
- 시스템에 대한 암시적 명령을 나타내며 해당 명령을 따르기 위해 조치를 취함
- 외부 자극에 반응해 실시간 조치하는 실시간 시스템
- 시스템 서버
- 워드 프로세서, 프레젠테이션, 게임
편집 시스템 - 이벤트 처리 시스템 예시
- 편집 시스템 특성
- 단일 사용자 시스템
- 데이터에 대한 다중 동시 액세스 문제 처리 할 필요 없음
- 트랜잭션 기반 시스템보다 데이터 관리가 간단
- 사용자 작업에 대한 신속한 피드백
- 컴퓨터 메모리에 저장된 데이터 표현에 대해 작동해야 함
- 오류 복구를 위한 준비도 필요
- 편집 세션은 다른 세션보다 훨씬 김
- 진행 중인 작업 자동 저장, 시스템 오류 발생 시 복구 기능 포함
- 단일 사용자 시스템
- 아키텍처 모델
참조 아키텍처
- 도메인별 아키텍처를 논의하고 도메인의 서로 다른 시스템을 비교하는 방법
- 시스템을 평가할 수 있는 기반 역할
- 설명 및 이해를 더 쉽게 하기 위해 이상화된 다양한 기능 통합
OSI 참조 모델
- 분산 시스템용 OSI모델
- 가장 잘 알려진 참조 아키텍처
- 하위 계층 - 물리적 상호 연결
- 중간 계층 - 데이터 전송
- 상위 계층 - 응용 프로그램 정보 전송
- 해당 모델을 준수하는 시스템이 서로 통신할 수 있도록 구현 표준을 정의
- 이상적 목표 : 각 레이어는 그 아래에 있는 레이어에만 의존해야 함
- OSI 참조 모델 아키텍처