소프트웨어 아키텍처
는 분산 시스템을 구성하는 논리적인 소프트웨어 구성 요소들의 조직화 방식
을 말한다.
계층형, 객체 기반, 데이터 중심, 이벤트 기반 등의 구조가 있으며, 각각 구성 요소
, 연결 방식
, 데이터 교환 방식
등을 정의한다.
계층형 구조(Layered Architecture)
계층형 아키텍처
는 구성 요소들이 계층적
으로 구성되는 방식으로, 각 계층은 하위 계층보다 높은 수준의 서비스를 제공한다.
이 구조에서는 구성 요소가 상위 계층으로 갈수록 추상화
되고, 하위 계층으로 갈수록 구체화
된다.
각 계층에서는 그 계층에서만 필요한 기능을 수행하며, 상위 계층은 하위 계층의 기능만 사용한다.
즉, 상위 계층의 구성 요소는 하위 계층의 구성 요소를 호출할 수 있지만, 그 반대는 불가능하다.
이런 구조는 네트워킹 커뮤니티
에서 널리 사용되고 있다.
객체 기반 구조(Object-based Architecture)
객체 기반 아키텍처
는 계층형 아키텍처보다 조직화 수준이 낮다.
구성 요소 간에는 원격 프로시저 호출(rpc: remote procedure call)
과 같은 메커니즘을 사용하여 연결된다.
이 아키텍처는 클라이언트-서버
시스템 아키텍처와 잘 맞아 떨어진다.
데이터 중심 구조(Data-centered Architecture)
데이터 중심 아키텍처
는 프로세스 간의 통신을 하나의 공통된 리포지토리
를 통해 이루어지도록 구성된 아키텍처이다.
이러한 리포지토리는 파일 시스템
이나 데이터베이스
등으로 구현될 수 있다.
대부분의 통신이 파일
을 통해 이루어지기 때문에, 데이터 관리
와 데이터의 일관성 유지
가 중요한 역할을 한다.
이 아키텍처는 대규모 데이터 처리와 분석에 효과적이며, 웹 기반 분산 시스템
에서 많이 사용된다.
이벤트 기반 구조(Event-based Architecture)
이벤트 기반 아키텍처
는 프로세스 간 통신을 이벤트 전파를 통해 처리하는 아키텍처이다.
이벤트 전파는 데이터
를 함께 전달할 수도 있으며, 발행-구독 시스템
과 관련이 있다.
이벤트 전파 시스템에서는 이벤트를 발행하면 해당 이벤트를 구독한 프로세스에게만 전달된다.
이를 통해 프로세스 간의 느슨한 결합
을 유지할 수 있다.