본문 바로가기

[ study ]

[Distributed System]분산 시스템 - Architecture - Architectural styles - Application layering

반응형
SMALL

분산 시스템의 중요한 목표

- 미들웨어 계층으로 platform, app 분리 => distribution transparency

 

2.1 Architectural styles

구성 요소, 구성요소의 연결 방식, 고성 요소 간 교환 데이터, 시스템 구성 방식에 따라 아키텍처 스타일이 구분된다.

 

1. 구성 요소

- 구성 요소는 특히, 시스템이 가동하는 동안 교체가 가능하다는 모듈식 단위라는 것이 중요하다.

- 유지 보수 관리를 위해서 일부만 일시적으로 고장이 났을 가능성이 있기 때문에 시스템을 종료하는 옵션이 필요 없을 수 있다.

 

2. 구성 요소 간 통신을 중재하는 커넥터

구성 요소 간의 데이터 흐름을 허락한다.

- 프로시저 호출, 메시지 전달, 데이터 스트리밍 기능

 

1 + 2. 구성요소 + 커넥터

구성요소와 커넥터를 사용하여 다양한 구조가 가능하다.

- 계층으로 나눠진 구조

- 개체 기반

- 리소스 중심 구조

- 이벤트 기반 구조

 

우리는 다양한 스타일이 결합되어 있음을 알고 있고 특히, 시스템을 세분화하는 접근을 한다. 여러 레이어로 나누는 것을 일반적으로 대부분의 다른 아키텍처 스타일과 결합되는 보편적인 원칙이다.

 


계층으로 나눠진 구조

구성 요소는 계층화된 방식으로 구성되어 계층 Lj (i<j) 의 구성 요소가 하위 계층 Li의 구성 요소를 downcall 할 수 있고 응답을 기다린다. 예외적 경우만 상향 호출이 이뤄진다. 

 

(a). pure layered organization (b). Mixed layered organization (c). Layered organization with upcalls

(a)는 일반적인 다음으로 오는 낮은 레이어에 downcall 하는 구조다. 일반적인 네트워크 통신 시 배포된다.

(b)는 많은 상황과 조직에서 마주한다. 예를 들어, 운영 체제에 접속하기 위해 OS를 사용하는 application A를 고려한다. A는 OS를 사용하여 구현된 math 라이브러리를 사용한다. (b)를 보면, Layer N-1에서 A가 구현되고 Layer N-2에서 math 라이브러리가 구현되고 Layer N-3에서 공통으로 이용하는 OS가 구현된다.

(c)는 upcall을 사용하는 특별한 상황이다. 운영 체제가 이벤트의 발생을 알리고 이를 위해 애플리케이션이 이전 참조를 전달한 사용자 작업을 호출하는 경우다. (일반적으로 핸들이라고 함.)

 

레이어드 된 통신 프로토콜

레이어드된 통신 프로토콜 스택, 서비스, 인터페이스와 배포하는 프로토콜의 차이를 보여준다. (각각)

 

- 통신 프로토콜 스택에서 각 레이어는 한 곳에서 여러 곳으로 데이터를 전송할 수 있게 하는 하나 이상의 통신 서비스를 구현한다. 이를 위해 각 레이어는 호출할 수 있는 기능을 지정하는 인터페이스를 제공한다. 원칙적으로 인터페이스는 서비스의 실제 구현을 완전히 숨겨야 한다. 통신의 경우 정보 교환을 위해 따라야 하는 규칙을 설명하는 프로토콜의 개념이다.

 

- 레이어에서 제공하는 서비스, 해당 서비스를 사용할 수 있게 하는 인터페이스, 레이어가 통신을 설정하기 위해 구현하는 프로토콜 간의 차이를 이해하는 것이 중요하다. (위의 그림)

 

- 차이를 명확하게 하기 위해 통신 시스템에서 제공하는 안정적인 연결 지향 서비스를 고려해야한다. 이럴 때, 통신하는 자는 먼저 다른 통신하는 자에 대한 연결을 설정해야 두 사람이 메시지를 주고받을 수 있다. 신뢰할 수 있다는 것은 메시지가 손실될 위험이 높은 경우에도 전송된 메시지가 실제로 상대방에게 전달될 수 있다는 강력한 보증이 제공된다는 것을 말한다. 또한, 이런 서비스는 일반적으로 메시지가 전송된 순서와 동일한 순서로 전달되도록 한다.

 

- 이러한 종류의 서비스는 TCP(Transmission Control Protocol)를 통해 인터넷에서 실현된다. 프로토콜은 연결을 설정하거나 해제하기 위해 교환할 메시지, 전송된 데이터의 순서를 유지하기 위해 수행하는 작업, 전송 중 손실된 데이터를 감지하고 수정하기 위해 서로가 수행해야 하는 작업을 지정한다. 이 서비스는 연결을 설정하고, 메시지를 주고받고, 연결을 다시 끊는 호출을 포함하는 비교적 간단한 프로그래밍 인터페이스의 형태로 제공된다. 실제로 사용 가능한 운영 체제나 프로그래밍 언어에 따라 다양한 인터페이스를 사용할 수 있다. 마찬가지로 프로토콜과 인터페이스의 다양한 구현이 있다.

 

Application Layering

- 많은 분산 app은 데이터 베이스에 대한 사용자나 app 접근 지원을 목표로 한다. 그래서 이를 고려하여 사람들이 레이어드된 논리적 구조 스타일을 따르는 세 가지 논리적 수준들을 지지하고 있다.

 

1.  The application-interface level

2. The processing level

3. The data level

 

사용자나 일부 외부 app 과의 상호작용을 처리하는 부분, 데이터베이스 또는 파일 시스템에서 작동하는 부분, 일반적으로는 app 의 핵심 기능을 포함하는 중간 부분처럼 세 가지로 러프하게 나눠질 수 있다. 이 중간 부분은 논리적으로 처리 수준에 배치된다. 사용자 인터페이스 및 데이터베이스와 달리 처리 수준에 공통적인 측면이 많지 않다. 따라서, 이 수준들을 명확하게 하기 위해 여러 예를 본다.

 

예시 1. 검색 엔진

모든 애니메이션 배너, 이미지, 기타 멋진 창 장식을 신경쓰지 않고 검색 엔진의 사용자 인터페이스는 매우 간단할 수 있다. 사용자가 키워드 스트링을 입력하면 웹 페이지 제목 목록이 표시된다. 백엔드는 미리 가져온 인덱싱 된 큰 웹 페이지 데이터베이스로 구성된다. 검색 엔진의 핵심은 사용자의 키워드 스트링을 하나 이상의 데이터베이스 쿼리로 변환하는 프로그램이다. 이후, 결과 랭킹을 리스트로 지정하고 해당 리스트를 일련의 HTML 페이지로 변환한다. 이 정보 검색 부분은 일반적으로 처리 수준에 배치된다.

예시 1. 검색엔진

 

예시 2. 증권 중개를 위한 의사 결정 지원 시스템

검색 엔진과 유사하게 시스템은 다음 세 가지 계층으로 나눠진다.

 

1. 사용자 인터페이스를 구현하거나 외부 app 에 프로그래밍 인터페이스를 제공하는 프론트엔드

2. 재무 데이터가 있는 데이터베이스에 접근하기 위한 백엔드

3. 프론트엔드와 백엔드 사이의 분석 프로그램

 

재무 데이터의 분석은 통계나 인공 지능의 정교한 방법과 기술이 필요할 수 있다. 또 어떤 경우는 재무 의사 결정 지원 시스템의 핵심을 사용자가 기대하는 처리량과 응답성을 달성하기 위해 고성능 컴퓨터에서 실행해야 할 수도 있다.

 

예시 3. 워드 프로세서, 스프레드 시트 프로그램, 통신 기능 등으로 구성된 일반적인 데스크톱 패키지

사무실에 적합한 제품군은 일반적으로 통합 문서 관리를 지원하는 공통 사용자 인터페이스를 통해 통합되고 사용자의 홈 디렉터리에 있는 파일에서 작동한다. 오피스 환경에서, 이 홈 디렉터리는 종종 원격 파일 서버에 위에 위치한다. 예에서 처리 레벨은 비교적 단순한 처리 기능을 가진 큰 프로그램들의 모음으로 구성된다.

 

데이터 레벨에는 애플리케이션이 작동하는 실제 데이터를 유지 관리하는 프로그램이 포함된다. 이 레벨의 중요한 속성은 데이터가 종종 영구적이다. 즉, 실행 중인 애플리케이션이 없더라도 데이터는 다음 사용을 위해 어딘가에 저장된다. 가장 단순한 현태의 데이터 레벨을 파일 시스템으로 구성되지만, 본격적인 데이터베이스를 사용하는 것도 일반적이다.

 

단순히 데이터를 저장하는 것 외에도 데이터 레벨은 일반적으로 애플리케이션에서 데이터를 일관되게 유지하는 역할도 한다. 데이터베이스를 사용할 때, 일관성을 유지한다는 것은 "테이블 설명, 엔트리 제약조건 그리고, 애플리케이션 메타데이터"와 같은 메타데이터도 이 레벨에 저장된다는 것을 의미한다. 

 

예를 들어, 은행은 고객의 신용 카드 부채가 특정 금액에 도달하면 알림을 생성할 수 있다. 이러한 유형의 정보는 적절한 순간에 해당 트리거에 대한 핸들러를 활성화하는 데이터 베이스 트리거를 통해 유지 관리할 수 있다.

 

출처:https://www.distributed-systems.net/index.php/books/ds3/

 

Distributed Systems 3rd edition (2017) - DISTRIBUTED-SYSTEMS.NET

Get your free copy of Distributed Systems

www.distributed-systems.net

 

반응형
LIST