D Placement


  • 객체 또는 서비스와 같은 엔티티가 기본 물리적 분산 인프라에 매핑되는 방법
  • 신중한 디자인 문제
  • 배치 고려 필요
    • 실제 간의 커뮤니케이션 패턴
    • 주어진 기계의 신뢰성
    • 전류 부하
    • 서로 다른 기계 간의 통신 품질
  • 응용지식이 풍부하여 배치여부 결정
    • 최적의 솔루션을 얻기 위한 몇 가지 보편적인 지침이 있음
  1. 여러 서버에 서비스 매핑
  • 서비스는 별도의 호스트 컴퓨터에서 여러 서버 프로세스로 구현될 수 있다.
  • 서버는 서비스의 기반이 되는 오브젝트 집합을 분할하여 그들끼리 분산하거나, 또는 복제된 복사본을 여러 호스트에 유지 관리 할 수 있다.

K-009

  1. 캐싱
  • 객체 자체보다 한 클라이언트 또는 특정 클라이언트 집합에 더 가까운 최근에 사용한 데이터 객체 저장
  • 각 고객과 함께 위치할 수 있음
  • 웹브라우저는 최근 방문한 웹페이지 및 기타 웹자원의 캐시를 클라이언트의 로컬 파일 시스템에 유지 관리
  • 여러 클라이언트가 공유할 수 있는 프록시 서버에 위치할 수 있다.
  • 광역망 및 웹서버의 부하를 줄여 서비스의 가용성과 성능을 높이는 것이 프록시서버의 목적

K-010

  1. 모바일 코드
  • 애플릿은 널리 알려진 모바일 코드 사례
    • 브라우저를 실행하는 사용자는 코드가 웹 서버에 저장된 애플리에 대한 링크를 선택한다.
    • 코드가 브라우저에 다운로드되어 실행된다.
  • 대역폭의 지연이나 가변성을 겪지 않기 때문에 좋은 대화형 응답 제공
  • 지역 자원에 대한 잠재적 보안 위협
    • a) 클라이언트 요청으로 인해 애플릿 코드가 다운로드된다.
    • b) 클라이언트는 애플릿과 상호작용한다.
  1. 모바일 에이전트
  • 실행중인 프로그램
  • 네트워크 안에 있는 한 컴퓨터로부터 다른 컴퓨터를 탐색한다.
  • 정보 수집과 같은 다른 사람을 대신해서 업무를 수행
  • 결국 결과를 가지고 돌아 온다
  • 방문하는 각 사이트의 로컬 리소스를 여러번 호출할 수 있다.
  • 방문하는 컴퓨터의 리소스에 대한 잠재적인 보안 위협

2. Architectural patterns


  • 보다 원시적인 구조적 요소 위에 만듬
  • 보다 정교한 분산 시스템 솔루션을 개발하거나 보다 일반적으로 조합하여 사용한다
  • 그 자체가 반드시 완전한 해결책은 아니지만, 다른 패턴과 결합되었을 때, 디자이너가 주어진 문제 영역에 대한 해결책으로 이끄는 부분적인 통찰력을 제공한다.

A. 레이어링

B. 게층형 아키텍처

C. 얕은 클라이언트

D. 기타 일반적으로 발생하는 패턴 : 대리, 중계

2. A Layering


  • 서비스를 추상화 계층으로 수직 조직화하는 것을 다룬다.
  • 복잡한 시스템은 주어진 계층이 아래의 계층이 제공하는 서비스를 이용하는 여러 계층으로 분할된다.
  • 따라서 주어진 계층은 사우이 계층들이 구현 세부 사항 또는 그 아래의 다른 게층들에 대해 인식하지 못하는 소프트웨어 추상화를 제공한다.

플랫폼

  • 저레벨 하드웨어와 소프트레이어들로 구성되어 있다.

미들웨어

  • 이질성을 감추고 애플리케이션 프로그래머들에게 편리한 프로그래밍 모델을 제공하는 것이 목적인 소프트웨어 계층

K-011

B Tiered architecture


  • 주어진 계층의 기능을 구성하고 이 기능을 적절한 서버에 배치하며, 2차적 고려사항으로 물리적 노드에 배치
  • 주어진 애플리케이션의 기능적 분해
  • 표현 논리 (표현 계층)
    • 사용자 상호 작용 처리 및 사용자에게 제공되는 애플리케이션 보기 업데이트에 관한 사항
  • 애플리케이션 로직(애플리케이션 계층 또는 비즈니스 계층)
    • 애플리케이션과 관련된 세부 애플리케이션별 처리 관련
    • 비즈니스 로직이라고도 하지만, 비즈니스 애플리케이션에만 국한된 개념이 아니다
  • 데이터 논리(데이터 계층)
    • 일반적으로 데이터베이스 관리 시스템에서 애플리케이션의 영구 저장소에 대해 관련되어 있다.
  • 2계층 솔루션
    • 클라이언트와 서버의 두가지 프로세스로 분할되어야 한다.
    • 애플리케이션 로직을 분할하여 일부는 클라이언트에 상주하고 나머지는 서버에 상주한다.
    • 상호작용 측면에서 짧은 대기 시간

K-012

  • 3계층 솔루션
    • 표현 로직 계층은 얇은 클라이언트에 대한 고유 자원을 제공한느 단순한 사용자 인터페이스일 수도 있다
    • 애플리케이션 로직 계층이 한 곳에 유지됨
    • 소프트웨어의 유지관리성 강화
    • 데이터 로직 계층은 (완벽하게 표준화된) 관계형 서비스 인터페이스를 제공하는 데이터베이스이다
    • 3대의 서버를 관리하는 복잡성과 네트워크 트래픽 및 대기 시간 증가

n 계층 솔루션쪽으로 일반화한다.

B 계층과 가장 유사하게 작동하는게 AJAX(Asynchronous JavaScript and XML)

  • WWW에서 사용되는 표준 클라이언트-서버 상호작용 스타일의 확장
  • 웹 브라우저에서 실행 중인 자바스크립트 프론트 엔드 프로그램과 애플리케이션 상태를 설명하는 서버 기반 백엔드 프로그램 간의 세분화된 통신 필요성 충족
  • 인터넷의 불확실한 대기 시간 맥락에서 대응성 웹 애플리케이션 구축에 효과적인 기술 구성

  • 상호작용의 표준
    • 브라우저는 주어진 URL로 페이지, 이미지 또는 다른 리소스에 대한 HTTP요청을 서버로 보낸다.
    • 서버는 서버에 있는 파일을 읽거나 프로그램에 의해 생성된 전체 페이지를 전송한다
    • 클라이언트에게 콘텐츠가 수신되면 브라우저는 해당 MIME 유혀에 대한 표시방법에 따라 제공한다
  • 이러한 상호작용의 표준 스타일은 웹 애플리케이션의 개발을 제한한다.

    • 브라우저가 새로운 웹페이지에 대한 HTTP 요청을 만들면 브라우저가 새로운 HTML 콘텐츠를 수신하여 제공할 때까지 사용자는 페이지와 상호작용할 수 없다.
    • 현재 페이지의 작은 부분이라도 서버의 추가 데이터로 업데이트 하기 위해서는 새로운 페이지 전체를 요청하여 표시해야한다. 이로 인해 사용자에 대한 응답 지연, 클라이언트와 서버 모두에서 추가 처리 및 중복 네트워크 트래픽이 발생한다.

    • 서버에 저장된 애플리케이션 데이터의 변경에 따라 클라이언트에 표시되는 페이지 내용을 업데이트할 수 없다.

고전적 모델은 비효율적이다.

  • 모든 페이지 내용이 사라졌다 다시 나타남
  • 부분 변경으로 인해 페이지가 다시 로드될 때마다 일부 정보만 변경되었음에도 불구하고 모든 내용을 다시 전송해야 한다.
  • 서버에 대한 추가 부하 및 과도한 대역폭

K-013

C 얇은 클라이언트


  • 최종 사용자 기기에서 네트워크 서비스로 복잡성이 옮겨가는 추세
  • 클라우드 컴퓨팅 및 게층형 아키텍처에서 분명하다
  • 응용 프로그램을 실행하는 동안 또는 보다 일반적으로 원격 컴퓨터의 서비스에 액세스하는 동안 사용자에게 로컬인 창 기반 사용자 인터페이스를 지원하는 소프트웨어 계층

장점과 단점

  • 장점 : 잠재적으로 자원이 제한된 로컬 장치는 정교환 네트워크 서비스와 기능으로 크게 향상될 수 있다.
  • 사용자가 경험하는 지연이 허용할 수 없는 수준으로 증가하는 대화형 그래픽 활동에서
    • 씬 클라이언트와 애플리케이션 프로세스 간의 이미지 및 벡터 정보 전송 필요성
    • 단점 : 네트워크 및 운영 체제 지연

D Other commonly occurring patterns


1. 프록시

  • RPC 또는 RMI의 위치 투명성을 지원하기 위해 특별히 설계됨
  • 원격 개체를 나타내기 위해 로컬 주소 공간에 프록시가 생성된다
  • 프록시는 원격 개체와 정확히 동일한 인터페이스를 제공한다.
  • 프로그래머는 이 프록시 객체에 대해 호출 하므로 상호작용의 분산 특성을 인식할 필요가 없다.

2. 브로커

  • 웹 서비스에서의 중개 이용은 잠재적으로 복잡한 분산형 인프라에서 상호 운용성을 지원하는 아키텍처 패턴으로 볼 수 있다.
  • 서비스 제공자, 서비스 요청자, 서비스 브로커 3인방(서비스 제공대상과 일치하는 서비스)로 구성되어 있다.
  • JAVA RMI의 레지스트리 및 CORBA의 이름 지정 서비스와 같은 분산시스템의 여러 영역에서 복제됨

  • 서버에서 클라이언트를 분리하기 위한 브로커 구성요소 설계

  • 서버:

    • 브로커에 등록
    • 고객에게 메소드 인터페이스 제시

    고객 :

    • 브로커를 통해 서버 메소드 액세스
    • 서버의 메소드를 호출할 때 동일한 형식 사용
  • 브로커 :

    • 적합한 서버 위치 파악
    • 서버로 요청 전달
    • 의뢰인에게 결과 및 예외사항 전달
  • 더 높은 수준의 프로그래밍 추상화를 제공하고, 계층화를 통해, 상호 운용성과 휴대성을 촉진하기 위해 기본 인프라의 이질성에 대해 추상화한다.

Fundamental Models


  • 근본적인 특성에 기반한 모델

  • 지금까지의 시스템 모델
    • 몇가지 기본 속성을 공유한다
      • 모드 프로세스로 구성되어 있다
    • 설계 요구사항을 공유한다
      • 프로세스 및 네트워크의 성능 및 신뢰성 특성 달성
      • 시스템 내 자원의 보안 보장
  • 기초적 특성에 따른 모델의 목적
    • 모델링 중인 시스템에 대한 모든 관련 가정을 명시한다
    • 이러한 가정을 고려할 때 가능한 것과 불가능한 것을 일반화한다.
  1. 상호작용 모델
  • 상호작용 모델은 의사소통이 이루어지는 사실을 반영해야 한다.
  • 지연시간과 함께, 또한 독립 프로세스가 조정될 수 있는 정확성은 이러한 지연과 분산 시스템의 모든 컴퓨터에서 동일한 시간 개념을 유지하는 것의 어려움으로 인해 제한된다.
  1. 고장 모델

  2. 보안 모델

상호작용 모델

  • 많은 프로세스가 복잡한 방식으로 상호작용하고 있다
  • 다중 서버 프로세스 간 협력으로 서비스 제공
  • 일련의 동료 프로세스들이 공동의 목표를 달성하기 위해 서로 협력할 수 있다.

알고리즘

  • 원하는 연산을 수행하기 위해 취해야 할 일련의 단계
  • 단순한 프로그램은 단계가 엄격하게 순차적인 알고리즘에 의해 제어된다
  • 프로그램의 작동 및 변수 상태는 알고리즘에 의해 결정된다
  • 단일 프로세스로 프로그램 실행

분산 알고리즘

  • 다공정으로 구성된 분산시스템
  • 분산 알고리즘으로 동작과 상태를 기술할 수 있다.
  • 프로세스 간 메시지 전송을 포함하여 프로세스별로 취해야 할 단계에 대한 정의
  • 정보 전달 프로세스 간 메시지 전달 및 활동 조정
  • 각 공정의 진행속도와 그 사이의 메시지 전송시기는 일반적으로 예측할 수 없다.
  • 상호작용 과정에 영향을 미치는 두가지 중요한 요인
    • 통신 성과는 종종 제한된 특성
    • 세계적인 시간 관념 하나 유지 불가능

레이턴시

  • 한 프로세스에서 메시지 전달이 시작되고 다른 공정에서 메시지 수신이 시작되는 시점 사이의 지연
  • 네트워크를 통해 전송된 일련의 비트 중 첫 번째 비트들이 목적지에 도달하는데 걸리는 시간
  • 네트워크 접속 지연
  • 네트워크 부하가 심할 때 크게 증가
  • 운영체제 통신서비스가 송수신 과정에서 걸리는 시간
  • 대역폭
  • 주어진 시간에전송할 수 있는 정보의 양
  • 지터
  • 일련의 메시지를 전달하는 데 걸리는 시간 변화
  • 멀티미디어 데이터 관련