분산 시스템에서 중요한 문제는 클라이언트와 서버 간 구분을 명확하게 하는 것이다.
예를 들어, 분산 데이터베이스의 서버는 어떤 시점에서는 클라이언트 역할을 수행할 수 있다(서버가 데이터베이스 서버를 조회하는 경우).
이러한 문제를 해결하기 위해 많은 사람들은 사용자 인터페이스 레벨(user-interface level)
, 처리 레벨(processing level)
, 데이터 레벨(data level)
이라는 세 가지 수준으로 구분한다.
각 수준은 명확하게 정의되어 있으며 서로 다른 기능을 수행한다.
상호작용
하고, 요청
을 받아 처리이러한 구분은 클라이언트와 서버 간의 책임과 역할을 명확하게 분리하고, 시스템의 유지보수와 확장성을 용이하게 한다.
사용자 인터페이스 레벨(user-interface level)
사용자 인터페이스 레벨
은 사용자와 직접적인 상호작용
을 위해 필요한 모든 것을 포함한다.
이 수준에는 디스플레이 관리
가 포함되며 일반적으로 클라이언트에서 구현된다.
가장 간단한 수준은 문자 기반 화면 이상의 것이 아니며 일반적으로 최소한의 그래픽 디스플레이를 제공된다.
이 디스플레이는 팝업 또는 드롭다운 메뉴가 사용되는 경우가 많으며 키보드 대신 마우스를 사용하여 많은 화면 제어가 처리된다.
현대의 사용자 인터페이스는 응용 프로그램이 단일 그래픽 창을 공유하고 사용자 조작을 통해 데이터를 교환할 수 있도록 허용함으로써 훨씬 더 많은 기능을 제공한다.
처리 레벨(processing level)
처리 레벨
은 일반적으로 애플리케이션을 포함하고 있으며, 사용자 인터페이스 레벨과는 달리 공통적인 측면이 많지 않다.
예를 들어, 인터넷 검색 엔진은 매우 간단한 사용자 인터페이스를 갖고 있다.
사용자는 키워드 문자열을 입력하고 이에 대한 웹 페이지 제목 목록이 나타난다.
백엔드 데이터 수준은 대량의 웹 페이지 데이터베이스로 구성된다.
핵심 처리 수준은 사용자의 키워드 문자열을 하나 이상의 데이터베이스 쿼리로 변환하고 결과를 목록으로 정렬하며, 이 목록을 HTML 페이지 시리즈로 변환한다.
또한, 주식 중개업체의 의사 결정 지원 시스템의 경우 처리 수준은 재무 데이터 분석이다.
이에는 통계 및 인공 지능 기술이 필요할 수 있다.
데스크톱 패키지와 같은 일반적인 애플리케이션의 경우, 단어 처리기, 스프레드시트, 통신 기능 등이 포함될 수 있습니다. 처리 수준은 상대적으로 간단한 처리 기능을 가진 여러 프로그램의 집합으로 구성된다.
데이터 레벨(data level)
데이터 레벨
은 애플리케이션이 동작하는 실제 데이터를 유지하고 관리한다.
데이터는 종종 영속적(persistent)
이다.
일반적으로 서버 측에서 구현된다.
데이터를 저장하는 것 외에도, 데이터 레벨은 서로 다른 애플리케이션 간의 데이터 일관성
을 유지하는 역할을 힌다.
대부분의 비즈니스 환경에서 데이터 레벨은 관계형 데이터베이스로 구성된다.
데이터 구조는 애플리케이션에 영향을 주지 않으며, 그 반대도 마찬가지이다.
관계형 데이터베이스를 사용하면 처리 수준과 데이터 수준을 분리할 수 있어 유지보수와 확장성을 높일 수 있지만, 항상 최상의 선택은 아닐 수 있다.