본문 바로가기
학교 공부/분산 및 병렬처리

[분산 및 병렬처리 시스템] 분산 시스템의 소프트웨어 아키텍쳐

by 그적 2020. 10. 7.

 먼저 들어가기에 앞서, 소프트웨어 아키텍쳐와 시스템 아키텍쳐의 차이점을 알아보려 한다. 소프트웨어 아키텍쳐Logical or Conceptual적이다. 실제 실행이 이뤄지지는 않으며, 일반화되어 있다. 시스템 아키텍쳐Actual or Realized하다. 실제적이고 실현화된 상태를 의미한다. 일반적으로 소프트웨어 아키텍쳐가 시스템 아키텍쳐를 실행시킨다고 생각하면 될 것이다.

 

분산 시스템의 소프트웨어 아키텍쳐 종류

① Layered Architectures

② Object-based Architectures

③ Data-centered Architectures

④ Event-based Architectures

 

1. Layered Architectures(레이어 아키텍쳐)

: 각각의 레이어(컴포넌트)마다 역할분담을 하여 처리를 진행한다. 시스템을 하나로 만들면 컴파일과 수정이 불편하고, 여러 layer로 구성하게 된다면 각각의 레이어마다 교체가 편리해진다. 운영체제에서도 각각의 OS(=각각의 컴포넌트)로 분리되어 있으며, 중간에 middle layer를 통해 application layer에 통신하기 때문에 Layer Architecture라고 말할 수 있다. 분산 시스템에서 이러한 아키텍쳐를 대입시키면 각각의 컴포넌트들로 분리되어 있으며, connector는 하위 인터페이스를 이용하여 서비스를 받고 되돌려준다.

 

 

2. Object-based Architecture(객체지향 아키텍쳐)

: 각각의 Object(객체)가 컴포넌트가 된다. 이들 간의 connector는 method call(invocation, 기도)을 통해 연결된다.

 

 

3. Data-based Architecutre(데이터 베이스 아키텍쳐)

: 간단한 예시로, 수강 신청 과정에서 데이터베이스에 접근하고 데이터가 데이터베이스에 저장되는 것을 생각할 수 있다. 비동기적인 통신이 가능하고, 데이터 입력 혹은 삭제 등과 같은 변화가 일어났을 때 데이터 처리가 이루어진다.

 

 

4. Event-based Architecture(이벤트 베이스 아키텍쳐)

: publish component(정보 제공자)가 이벤트 버스를 통해 이벤트를 전달한다. 이벤트가 발생하면 이벤트 버스를 통해 이벤트 버스에 연결된 모든 구독자 컴포넌트에게 정보를 전달한다. "Publish subscribe modle"으로도 부른다.

 

5. Shared data-space Architecture

 

: 각각의 컴포넌트들이 공유된 data space를 통해 자원에 접근할 수 있다. Event-based Architecture와 Data-centered Architecture를 결합한 아키텍쳐이다. 두 아키텍쳐의 장점들만 가져왔는데, 특히 Data-centered Architecture는 이벤트를 발생하는 컴포넌트와 이를 적용시키는 컴포넌트가 서로 연결되어 있을 필요가 없다는 장점을 지닌다. 하지만 단점으로는 게시판과 같은 특정한 공간(space)에 접근 시에만 데이터 처리를 하기 때문에 다른 컴포넌트가 게시판에 접근할 때까지 변화된 데이터를 확인할 수 없기 때문에, 이러한 부족한 실시간성을 이벤트(Event-based Architecture)로 보완해준다.

 

 

댓글