응용 프로그램이 확장 가능 서비스가 될 수 있는지 여부는 일련의 기준에 따라 결정됩니다. 응용 프로그램이 확장 가능 서비스가 될 수 있는지를 결정하려면 Solaris OS용 Sun Cluster 데이터 서비스 개발 안내서의 응용 프로그램 적합성 분석를 참조하십시오. 일련의 기준을 요약하면 다음과 같습니다.
첫째, 해당 서비스는 하나 이상의 서버 인스턴스로 구성됩니다. 각 인스턴스는 클러스터의 서로 다른 노드에서 실행됩니다. 동일한 서비스에서 두 개 이상의 인스턴스가 동일한 노드에서 실행될 수는 없습니다.
둘째, 서비스에서 외부 논리 데이터 저장소를 제공하는 경우에는 주의해야 합니다. 여러 서버 인스턴스에서 이 저장소로 동시에 액세스할 때 업데이트 사항이 손실되거나 변경 중인 데이터를 읽지 않도록 동기화해야 합니다. 저장소를 메모리 내장 상태와 구별하기 위해 “외부”라는 용어를 사용합니다. “논리”라는 용어에는 저장소 자체가 복제될 수는 있어도 저장소는 단일 엔티티로 표시된다는 의미가 담겨 있습니다. 또한, 이 논리 데이터 저장소에는 서버 인스턴스가 저장소를 업데이트할 때마다 다른 인스턴스가 즉시 업데이트된 내용을 “볼” 수 있는 특성이 있습니다.
Sun Cluster 시스템은 클러스터 파일 시스템과 전역 원시 분할 영역을 통해 이러한 외부 저장소를 제공합니다. 예를 들면, 서비스가 새로운 데이터를 외부 로그 파일에 기록하거나 기존 데이터를 제 위치에서 수정한다고 가정합시다. 이 서비스의 여러 인스턴스가 실행되는 경우 각 인스턴스는 이 외부 로그에 대한 액세스 권한을 가지고 있으므로 이 로그에 동시에 액세스할 수 있습니다. 각 인스턴스는 해당되는 액세스를 이 로그에 동기화해야 합니다. 그렇지 않으면, 인스턴스는 서로 간섭합니다. 서비스는 fcntl(2) 및 lockf(3C) 명령을 통한 일반 Solaris 파일 잠금을 사용하여 필요한 동기화를 수행합니다.
이 유형의 저장소에 대한 다른 예는 SPARC 기반 클러스터 또는 Oracle용 고가용성 Oracle Real Application Clusters Guard 등의 백엔드 데이터베이스입니다. 이 백엔드 데이터베이스 서버 유형은 데이터베이스 쿼리나 업데이트 트랜잭션을 사용하여 내장된 동기화를 제공합니다. 따라서 여러 서버 인스턴스는 자체적으로 동기화를 구현할 필요가 없습니다.
Sun IMAP 서버는 확장 가능 서비스가 아닌 서비스의 예입니다. 이 서비스는 저장소를 갱신하지만, 그 저장소는 개인용이므로 여러 IMAP 인스턴스가 저장소에 기록하면 갱신 작업이 동기화되지 않았기 때문에 인스턴스들 간에 서로 덮어쓰게 됩니다. IMAP 서버는 동시 액세스를 동기화하기 위해 다시 작성해야 합니다.
마지막으로, 인스턴스에는 다른 인스턴스의 데이터에서 분리된 개별 데이터가 있을 수 있다는 점에 유의하십시오. 이러한 경우 데이터는 개별 데이터여서 해당 인스턴스만 조작할 수 있으므로 서비스에는 동기화된 동시 액세스가 필요하지 않습니다. 이 때에는 개별 데이터를 데이터 클러스터 파일 시스템에 저장하지 않도록 주의해야 합니다. 이 곳에 저장된 데이터는 전역으로 액세스될 수 있기 때문입니다.