개방성(Openness)
이 적용된 시스템은 표준 규칙
에 따라 서비스를 제공하고, 문법
과 의미
를 명확하게 정의한다.
이러한 서비스는 인터페이스를 통해 제공되며, 함수 이름, 매개 변수, 반환 값 등의 서비스 문법을 인터페이스 정의 언어(IDL)
를 통해 정의한다.
가장 어려운 부분은 이러한 인터페이스의 의미
를 명확하게 설명하는 것이다.
개방성을 설명할 때 중요한 2가지 개념이 있다.
바로 상호 운용성과 이식성이다.
상호 운용성(Interoperability)
은 서로 다른 업체에서 만든 시스템이나 컴포넌트들이 공통된 표준
을 바탕으로 상호작용하면서 작동하는 정도를 의미한다.
이식성(Portability)
은 어떤 분산 시스템을 위해 개발된 응용 프로그램이 다른 분산 시스템
에서도 실행될 수 있는 정도를 의미한다.
separating policy from mechanism
오픈 분산 시스템에서 유연성
을 확보하기 위해서는, 상대적으로 작고 쉽게 교체하거나 조정할 수 있는 모음으로 구성해야 한다.
그러나 많은 이전 및 현대 시스템에서는 구성 요소들이 논리적
으로만 분리되어 있고, 하나의 거대한 프로그램으로 구현된다.
이는 사용자나 응용 프로그램에 맞지 않는 구성 요소를 변경하는 것이 어려워지게 만든다.
예를 들어 웹 캐싱
의 경우 사용자가 캐싱 매개 변수
중 일부를 제어할 수 없는데, 이를 해결하려면 정책(policy)
과 메커니즘(mechanism)
을 분리해야 한다.
즉, 웹 브라우저는 문서만 저장하는 기능을 제공하고 사용자가 어떤 문서를 얼마 동안 저장할지 결정할 수 있도록 해야 한다.
이렇게 사용자가 브라우저에 자신만의 정책
을 구현할 수 있다면 시스템에서 더 큰 유연성을 제공할 수 있다.