호우동의 개발일지

Today :

article thumbnail

애플리케이션 아키텍처

개발/도입 이유

  • 비즈니스 또는 조직의 필요를 만족시키기 위해
  • 비즈니스들은 해당 영역에 특화된 공통 애플리케이션 사용
    → 이런 공통점으로 인해 아키텍처 도입

애플리케이션 아키텍처

  • 시스템 클래스의 주요 특성 포함
    • 예: 실시간 시스템 - 데이터 수집 시스템 또는 모니터링 시스템

  • 같은 유형의 시스템을 개발 시 공통적인 아키텍처 구조를 재사용
    • 비즈니스 시스템에서 애플리케이션 아키텍처 재사용을 함

애플리케이션 아키텍처 모델 사용법

  • 아키텍처 설계 프로세스의 시작점
    • 개발하는 애플리케이션 유형에 익숙하지 않은 경우에 해당
    • 초기 설계를 일반 애플리케이션 아키텍처에 기반을 두고 시작
    • 추후 개발할 특정 시스템을 위해 설계를 특화

  • 설계 점검표
    • 애플리케이션 시스템을 위한 설계가 일반적인 아키텍처와 일치하는지 점검

  • 개발팀의 업무를 조직하는 방법
    • 애플리케이션 아키텍처 - 시스템 아키텍처의 안정적 구조적 특징을 식별
    • 애플리케이션 아키텍처를 동시에 개발하는 것이 가능

  • 재사용할 컴포넌트를 평가하는 수단
  • 애플리케이션에 관해 대화하는 용어
    • 애플리케이션들을 비교하는데 활용
    • 특정 애플리케이션에 대해 논의할 때 사용

애플리케이션 아키텍처 예시

  • 트랜잭션 처리 애플리케이션(데이터베이스 중심 애플리케이션)
    • 정보에 대한 사용자 요청을 처리하고 데이터베이스의 정보를 갱신
    • 다수의 웹 기반 비즈니스 시스템
    • 대화식 비즈니스 시스템의 가장 흔한 유형
      • 사용자들의 행위가 서로 간섭 X
      • 데이터베이스의 무결성 유지

    • 대화식 은행 시스템, 전자 상거래 시스템, 정보 시스템, 예약 시스템 등

  • 언어 처리 시스템
    • 사용자의 의도가 프로그래밍 언어와 같은 형식 언어로 표현되어 있는 시스템
    • 언어를 처리하여 내부 형식으로 만들고 이 내부 표현을 해석
    • 모든 소프트웨어 개발이 해당 시스템에 의존
    • 컴파일러 - 가장 잘 알려진 언어 처리 시스템

트랜잭션 처리 시스템

  • 데이터베이스와 연관된 요청 처리를 위해 설계됨
    • 데이터베이스에 있는 정보에 대한 사용자 요청
    • 데이터베이스 갱신을 위한 요청

  • 데이터베이스 트랜잭션
    • 연속된 작업의 일부이고 단일 단위로서 여겨짐
    • 데이터베이스의 일관성을 보장해야 함
      • 한 트랜잭션 내의 모든 작업들을 데이터베이스 변경이 영구적으로 이뤄지기 전에 완료

  • 사용자 관점에서의 트랜잭션
    • 목표를 만족시키기 위한 작업들의 일관된 순서

  • 사용자가 서비스 요청을 비동기적으로 하는 대화식 시스템
    • 사용자가 입출력 처리 컴포넌트를 통해 시스템에 요청
      • 요청은 애플리케이션 특화 논리로 처리

    • 트랜잭션이 생성되고 트랜잭션 관리자에 전달
    • 트랜잭션 관리자가 트랜잭션이 완료되었음을 확인한 후 처리가 끝났다는 신호를 보냄

트랜잭션 처리 구조


은행 시스템 예시

은행 시스템 프로세스
은행 시스테 프로세스

  • 파이프 필터 아키텍처로 구성될 수 있음
    • 시스템 컴포넌트가 입력과 처리와 출력을 책임짐
    • ATM 소프트웨어 및 계정 처리 소프트웨어로 구성

정보 시스템

계층화 아키텍처

  • 공유 데이터베이스와 상호작용에 관련된 모든 시스템
  • 대규모로 축적된 정보에 대한 통제된 접근을 가능케 함

  • 웹 기반 시스템으로 구성
    • 사용자 인터페이스를 거의 항상 웹 브라우저로 구현

MentCare 시스템 아키텍처

예시


정보와 자원 관리 시스템

  • 트랜잭션 처리 시스템이기도 함
  • 전자상거래 시스템 - 인터넷 기반 자원 관리 시스템

    • 시스템이 제공하는 기능
      • 물품 또는 서비스에 대한 전자 주문을 받음
      • 상품과 서비스의 배송을 준비

    • 애플리케이션 특화 계층은 다음의 추가적인 기능을 포함
      • 사용자가 여러 트랜잭션에서 여러 개의 항목을 장바구니에 담아둠
      • 단일 트랜잭션에서 한 번에 지불

    • 여러 서버들에 시스템을 분산할 수도 있음

      • 웹 서버
        • 모든 사용자 상호작용을 책임지며, 사용자 인터페이스는 웹브라우저를 이용하여 구현

      • 애플리케이션 서버
        • 정보 저장과 검색 요청뿐만 아니라 애플리케이션에 특화된 논리 구현

      • 데이터베이스 서버
        • 정보를 데이터베이스로 들어가고 나오게 하고 트랜잭션 관리를 다룸

    • 다중 서버의 장점
      • 처리 능력 향상
      • 요청이 증가하면 추가 처리를 대처할 수 있게 서버를 추가할 수 있음

언어 처리 시스템

  • 한 언어를 그 언어의 다른 표현으로 번역
  • 예, 컴파일러, XML 변환기, 자연어 처리 시스템

언어 처리 시스템의 아키텍처

언어 처리기 프로세스


언어처리 시스템을 위한 저장소 아키텍처

언어처리 시스템 아키텍처

 


애플리케이션 아키텍처 추가 예시


일괄 데이터 처리 시스템

  • 기록 또는 트랜잭션이 트랜잭션 전체에 걸쳐 상태를 유지할 필요 없이 연속적으로 처리되는 시스템
    • 기능 지향적이다.(객체 지향 X)
    • 함수-호출 간에 내부 상태 정보를 유지하지 않는 컴포넌트
    • 데이터 흐름 다이어그램으로 데이터 처리 시스템의 아키텍처를 설명하기 좋음

  • 비즈니스 시스템(일괄 데이터 처리 시스템 중 하나)
    • 시스템보다 규모가 훨씬 큰 데이터와 시스템에 의존하는 데이터베이스에 중점
    • 비즈니스의 여러 측면 지원

  • 입력과 출력
    • 파일이나 데이터베이스로 이뤄진 일괄 데이터

  • 동작 방법
    • 입력받은 기록으로부터 데이터 선택
    • 기록 상의 필드 값들을 토대로 프로그램에 정의된 동작들을 수행
    • 계산 결과를 데이터 베이스에 쓰거나, 입력 및 계산된 출력의 형식을 지정

데이터 처리 시스템 입력-처리-출력 모델

처리-출력 모델

  • 3개의 주요 컴포넌트로 구성

    • 입력 컴포넌트
      • 데이터(입력)를 읽고 해당 데이터의 유효성을 확인하고, 오류 수정(처리)한 다음
        처리(출력)를 위해 유효한 데이터를 큐에 넣을 수 있음

    • 처리 컴포넌트
      • 대기열(입력)에서 트랜잭션을 가져오고 데이터에 일부 계산을 수행하고 계산 결과를 기록하는
        새 데이터 기록을 만든 후 인쇄(출력()을 위해 새 기록을 대기열에 넣을 수 있음
      • 시스템 데이터베이스 내에서 수행되는 경우도 있고, 별도의 프로그램인 경우도 있음

    • 출력 컴포넌트
      • 대기열(입력)에서 기록을 읽고 출력 형식(처리)에 따라 형식을 지정한 다음
        프린터로 보내거나 새 기록을 데이터베이스(출력)에 다시 쓸 수 있음

자원 할당 시스템

  • 4 계층 일반 구조를 갖는 정보 시스템 유형
  • 정해진 양의 주어진 자원을 관리하는 시스템
  • 유사하지 않아 보이는 많은 프로그램들이 자원 할당 시스템에 해당

    • 시간표 슬롯에 수업을 할당하는 시간표 시스템
      • 기간을 자원으로 다루며, 자원에 대한 각 수요와 관련된 많은 제약이 있음

    • 도서 또는 기타 항목의 대출 및 인출을 관리하는 도서관 시스템
      • 자원이 단순히 할당되는 것이 아니라, 자원 사용자로부터 할당을 해제해야 할 수도 있음

    • 영공을 여러 부분으로 나눈 것을 자원으로 관리하는 항공 교통 관리 시스템
      • 자원의 동적 할당 및 재할당이 포함되지만, 이 경우에는 가상 자원

자원 할당 시스템의 계층 모델

계층 모델


자원 할당 시스템의 구성 요소

  • 자원 데이터베이스
    • 할당되는 자원의 세부 정보를 보유하며 자원을 추가하거나 제거

  • 자원 정책 제어 구성요소
    • 자원 할당 규칙을 설명하는 규칙 집합 포함

  • 자원 관리 구성 요소
    • 자원 공급자가 시스템에서 자원 추가, 편집 또는 삭제할 수 있도록 도움
    • 도서관 시스템 예 : 대여 가능한 사람, 대여 가능 기간, 최대 대여 가능 수량 등을 제한

  • 자원 할당 구성 요소
    • 자원이 할당될 때, 자원 데이터베이스를 업데이트하고 자원 요청자 정보와 연결

  • 사용자 인증 모듈
    • 시스템이 인증된 사용자에게 자원이 할당되고 있는지 확인할 수 있도록 함
    • 예 : 도서관 카드 혹은 신용 카드

  • 쿼리 관리 모듈
    • 사용자가 사용 가능한 리소스를 검색
    • 도서관 시스템 : 특정 항목에 대한 쿼리를 기반

  • 자원 전달 구성요소
    • 요청자에게 전달한 자원 준비

  • 사용자 인터페이스 구성요소(웹브라우저도 가능)
    • 자원 요청자가 할당할 자원에 대한 쿼리 및 요청을 실행
    • 시스템 외부에 위치

계층 구조는 여러 방식으로 구현 가능

  • 정보 시스템 소프트웨어
    • 각 계층을 별도의 서버에서 실행되는 대규모 구성 요소로 구성
      • 각 계층은 외부 인터페이스를 정의하며, 모든 통신은 인터페이스를 통해 이루어짐

    • API를 통해 데이터베이스와 통신하는 단일 프로그램
      • 전체 시스템이 단일 컴퓨터에서 실행되는 경우

    • 세분화된 구성 요소를 별도의 웹 서비스로 구성
      • 사용자의 요청에 따라 동적으로 구성

이벤트 처리 시스템

  • 시스템 환경 또는 사용자 인터페이스의 이벤트에 반응하는 시스템
    • 이벤트 발생 시점 예측 불가
    • 이벤트가 발생했을 때 대응할 수 있어야 함

  • 이벤트 처리 시스템 예시
    • 워드 프로세서, 프레젠테이션, 게임
      • 시스템은 이벤트를 감지하고 해석
      • 사용자 인터페이스 이벤트
        • 시스템에 대한 암시적 명령을 나타내며 해당 명령을 따르기 위해 조치를 취함

    • 외부 자극에 반응해 실시간 조치하는 실시간 시스템
      • 시스템 서버

편집 시스템 - 이벤트 처리 시스템 예시

  • 편집 시스템 특성
    • 단일 사용자 시스템
      • 데이터에 대한 다중 동시 액세스 문제 처리 할 필요 없음
      • 트랜잭션 기반 시스템보다 데이터 관리가 간단

    • 사용자 작업에 대한 신속한 피드백
      • 컴퓨터 메모리에 저장된 데이터 표현에 대해 작동해야 함
      • 오류 복구를 위한 준비도 필요

    • 편집 세션은 다른 세션보다 훨씬 김
      • 진행 중인 작업 자동 저장, 시스템 오류 발생 시 복구 기능 포함
  • 아키텍처 모델

썸네일

 


참조 아키텍처

  • 도메인별 아키텍처를 논의하고 도메인의 서로 다른 시스템을 비교하는 방법
    • 시스템을 평가할 수 있는 기반 역할
    • 설명 및 이해를 더 쉽게 하기 위해 이상화된 다양한 기능 통합

OSI 참조 모델

  • 분산 시스템용 OSI모델
    • 가장 잘 알려진 참조 아키텍처
    • 하위 계층 - 물리적 상호 연결
    • 중간 계층 - 데이터 전송
    • 상위 계층 - 응용 프로그램 정보 전송

  • 해당 모델을 준수하는 시스템이 서로 통신할 수 있도록 구현 표준을 정의
  • 이상적 목표 : 각 레이어는 그 아래에 있는 레이어에만 의존해야 함
  • OSI 참조 모델 아키텍처

OSI 참조 모델