1, 2, 3 티어 아키텍쳐와 씬 및 팻(fat) 클라이언트의 개요와 미들웨어의 개념을 살펴보았다. 네트워크 장비 벤더들이 최초로 제품을 판매했던 80년대에는 클라이언트/서버라는 용어가 신규 하드웨어에서 지원하는 화려한 기능을 설명하는데 사용됐다. 오늘날, 클라이언트/서버는 하드웨어와는 전혀 무관한 특별한 의미를 지니고 있다. 그럼에도 불구하고 대부분의 사용자들은 클라이언트라는 용어를 현재 사용하고 있는 물리적인 컴퓨터와 관련하여 이해하고 있으며 서버라는 용어는 물리적인 컴퓨터들이 연결된 또 다른 물리적인 컴퓨터로 이해하고 있다. 물론, 이와 같은 정의가 전혀 틀린 것은 아니지만 현재 사용되고 있는 클라이언트/서버라는 용어는 더 큰 의미를 갖고 있다. 이제 클라이언트/서버의 본질을 파헤치게 된다. 먼저 1 티어, 2 티어, n 티어 클라이언트/서버 프로그램 아키텍처에 대해 정의한다. 그리고 씬 클라이언트와 팻 클라이언트의 차이점을 설명하고 미들웨어의 개념에 대해 다룬다. 이에 앞서 일반적인 소프트웨어 아키텍처에 대한 몇 가지 이해가 필요하다.대부분의 애플리케이션 프로그램은 세 개의 레이어를 갖고 있다. 인간과 시스템 사이의 상호 작용을 가능하도록 하는 사용자 인터페이스를 제공하는 프레젠테이션 레이어가 제일 위에 자리잡고 있다. 프레젠테이션 레이어는 키보드, 마우스, 기타 장비의 입력 내용과 화면에 표시되는 출력 내용을 처리한다. 가운데에는 애플리케이션 또는 비즈니스 로직이 자리잡고 있으며 애플리케이션 프로그램에 특성을 부여하는 기능을 제공한다. 예를 들어, 애플리케이션 로직은 주문 등록 시스템과 재고 제어 시스템을 구분하는 역할을 한다. 애플리케이션 로직에는 주어진 엔터프라이즈 환경의 운영에 필요한 업무 관련 기준과 규칙들이 포함되어 있기 때문에 비즈니스 로직이라고 부르기도 한다. 제일 아래 부분을 차지하고 있는 바닥 레이어는 파일 서비스, 인쇄 서비스, 통신 서비스, 가장 중요한 데이터베이스 서비스 등과 같이 다른 레이어에서 필요로 하는 일반화된 서비스를 제공한다. 편의상 토론의 범위를 데이터베이스 서비스를 필요로 하는 프로그램에 한정하기로 한다. 대부분의 아키텍처에서 클라이언트/서버라는 용어를 논의할 때 데이터베이스 서비스를 제일 먼저 고려하게 되지만 일반적인 기준을 모든 서비스에 적용할 수 있다. 클라이언트/서버 애플리케이션의 티어 수는 세 가지의 프로그램 레이어가 통합된 수준에 따라 결정된다. 1 티어 애플리케이션은 세 가지 프로그램 레이어가 긴밀하게 연결된 경우이다. 특히, 프레젠테이션 레이어는 데이터베이스 구조에 대한 상세한 정보를 보유하고 있다. 애플리케이션 레이어는 프레젠테이션 레이어 및 서비스 레이어와 얽혀있다. 데이터베이스 엔진을 포함한 세 가지 레이어는 동일한 컴퓨터에서 실행할 수 있다.1 티어 애플리케이션은 설계와 개발이 손쉽고 특히 오늘날 사용되고 있는 최신 소프트웨어 툴에 적합하다. 또한, 여러 대의 PC에서 애플리케이션을 실행하고 데이터베이스를 공유하여 다중 사용자 1 티어 애플리케이션을 구축하는 것도 가능하다. 데이터베이스는 PC (피어 솔루션) 중 한 대 또는 파일 서버에 저장할 수 있다. 애플리케이션을 실행하는 각 PC는 데이터베이스 엔진을 자체적으로 복사한다는 사실에 유의한다. 데이터만을 공유할 뿐 데이터베이스 로직 자체는 아니다. 다중 사용자 1 티어 애플리케이션은 사용자의 수가 증가해도 문제없이 사용할 수 있다. 모든 데이터베이스 작업을 각 클라이언트에서 수행한다는 것이 가장 큰 문제이다. 예를 들어, 프로그램에서 모든 클라이언트를 스미스라는 성을 기준으로 표시해야 할 경우 데이터베이스에서 질의를 처리하는데 필요한 색인 및 데이터 기록과 같은 모든 정보들은 네트워크에서 전송해야 한다. 일부 복합적인 질의에서는 엄청난 양의 데이터를 검색하며 데이터베이스 전체를 검색하는 경우도 있다. 기술적인 측면에서 보면 독립적인 데이터베이스 엔진을 관리하여 두 개의 클라이언트에서 동일한 기록에 액세스하거나 업데이트할 경우 충돌이 발생하지 않도록 하는 것은 매우 어려운 작업이다. 다중 사용자 1 티어 프로그램과 관련된 성능 및 기술적인 문제를 해결할 수 있는 솔루션으로 2 티어 클라이언트/서버 아키텍처를 활용한다. 이와 같은 유형의 애플리케이션은 대개의 경우 1 티어 애플리케이션과 동일한 방식으로 작성되며 데이터베이스 서비스(엔진)가 클라이언트에서 더 이상 실행되지 않을 경우만을 예외로 한다. 대신에 데이터베이스 자체가 포함된 서버 컴퓨터에서 실행한다. 애플리케이션 로직 레이어와 데이터베이스 서비스 사이에서 정보를 전달하는데 몇 가지 기법을 사용하기도 한다.오늘날, 상대적으로 간결한 구문에서 복합적인 데이터베이스 질의를 캡슐화할 수 있는 언어인 SQL(structured query language)을 일반적으로 사용한다. SQL 구문은 데이터베이스 서버에 전송되며 물리적인 컴퓨터에서 작업을 수행하여 관련된 정보(해답)만을 클라이언트 PC에 돌려보낸다. 2 티어 설계에서는 데이터베이스 서비스만을 애플리케이션에서 분리할 수 있다. 프레젠테이션과 비즈니스 로직 레이어를 연계하여 데이터베이스에 대한 상세한 정보 획득이 가능하다. 2 티어 애플리케이션은 개발이 다소 복잡하지만 대부분의 개발 툴은 통합 개발 환경을 광범위하게 지원하여 신속한 프로그래밍을 활용할 수 있다. 툴의 기능이 탁월하기 때문에 2 티어 프로그램은 1 티어 애플리케이션만큼 신속하게 개발할 수 있다. 단지 고가의 비용이 소요된다는 것이 단점이다. 대부분의 툴은 액세스나 비주얼 베이식 등에서 사용되는 제트 엔진과 같은 1 티어 설계를 처리할 수 있는 데이터베이스 엔진을 제공한다. 그러나 2 티어 애플리케이션은 오라클, IBM DB2, 사이베이스, 마이크로소프트 SQL 서버 등과 같은 독립형 데이터베이스 제품을 필요로 한다.3 티어 클라이언트/서버 애플리케이션은 예상한 바와 같이 세 가지 프로그램 레이어를 독립 섹션으로 분리한다. 데이터베이스 서비스를 다양한 컴퓨터에서 실행할 수 있다는 것은 이미 알고 있다. 비즈니스 로직이 서비스가 되면 애플리케이션 서버 또는 간단하게 apps 서버라 부르게 된다.애플리케이션 서버는 데이터베이스와 동일한 물리적인 서버 하드웨어에서 실행된다. 동일한 위치에 배치하는 것은 성능 향상에 도움이 되기 때문에 첫 번째 선택 사항으로 사용되는 경우가 많다. 그러나 애플리케이션 서버를 구현하게 되면 요구 사항을 수용할 수 있는 최상의 입지를 확보하게 된다는 것이 가장 큰 이점이다.예를 들어, 판매 부문에서 업무를 운영할 경우, 일부 지역에서는 대다수의 영업 사원들이 독립된 물리적 컴퓨터에서 실행되는 애플리케이션 서버를 공유하게 된다. 그러나, 원격 지역의 영업 사원은 클라이언트와 애플리케이션 서버를 단일 PC에서 실행하게 된다. 클라이언트와 애플리케이션 서버의 구성 방식에 상관없이 모든 애플리케이션 서버는 중앙화된 컴퓨터인 메인프레임에서 데이터베이스 서비스를 받게 된다. 그리고 애플리케이션 서버의 구현 방식과 상관없이 모든 사용자는 애플리케이션을 클라이언트와 동일한 방식으로 운영한다. 애플리케이션 서버와 데이터베이스 서버의 위치는 사용자와 관련되어 있다.3 티어 클라이언트/서버 애플리케이션에서는 프레젠테이션 레이어에 데이터베이스에 대한 상세한 정보가 포함되어 있지 않다. 프레젠테이션 레이어는 이미 정의된 메시지 전략을 사용하여 애플리케이션 서버와 정보를 교환한다.웹을 예로 들면 이상의 설명을 쉽게 이해할 수 있다. 예를 들어, 브라우저는 Amazon.com의 데이터베이스 구조를 전혀 알지 못한다. 그러나 책을 주문하면 데이터베이스와의 상호 작용이 가능하다. 이는 클라이언트인 브라우저에서 애플리케이션 서버인 웹사이트와 정보를 교환할 수 있도록 설계된 인터넷 프로토콜 덕분에 가능한 것이다. 또, 어느 PC에서나 책을 주문할 수 있으며 폼을 지원하는 모든 브라우저를 사용할 수 있다.3 티어 애플리케이션은 2 티어 애플리케이션 보다 구축이 훨씬 어렵다. 소프트웨어 툴의 통합된 개발 환경이 2 티어 모델에서처럼 3 티어 모델을 제대로 인식하지 못한다는 것이 가장 큰 문제이다. 결과적으로 3티어 애플리케이션을 개발하려면 일일이 코드를 작성해야 하는 것이다. 3 티어 애플리케이션은 직접적인 2 티어 애플리케이션에 비해 추상적인 개념을 갖고 있기 때문에 설계가 훨씬 어렵다. 소프트웨어 툴 벤더들이 3 티어 또는 n 티어 개발 지원을 표방하는 신 버전을 발표하고 있지만 아직은 성숙된 기술은 아니다.2 티어 관계가 애플리케이션 서버와 데이터베이스 서버 사이에서 존재한다는 것이 관심의 대상이 되고 있다. 즉, 3 티어 애플리케이션의 클라이언트가 데이터베이스에 대한 상세한 정보를 갖고 있지 않은 경우에도 애플리케이션 서버는 상세한 정보를 갖게 되는 것이다.「n 티어」라는 용어는 현재 유행처럼 번지고 있다. 실제로 3 티어가 한계이다. 「n 티어」는 애플리케이션 서버가 다양한 기타 서비스에서 서비스를 요청하고 서비스 자체에서 클라이언트의 초기 요청에 대응하기 위해 필요로 하는 서비스를 요구한다는 사실을 기반으로 한다. 미들웨어는 애플리케이션 서버에 존재하는 애플리케이션이나 비즈니스 로직을 설명하기 위해 자주 사용되는 용어이다. 유감스럽게도 동일한 용어를 사용하여 일반적인 서비스를 설명하기도 한다. 예를 들어, 정보 교환을 위해 3 티어에서는 메시징 시스템을 사용한다. 이는 3 티어 사이에서 운영된다는 측면에서 보면 진정한 미들웨어이다. 미들웨어라는 용어를 사용할 경우 정확한 의미를 파악할 수 있어야 한다. 3 티어 클라이언트/서버 애플리케이션을 설계하고 구축할 경우 대부분의 개발자들은 비즈니스 로직이 독립적인 애플리케이션 서버로 전환되는 수준에 대해 의식적인 결정을 하게 된다. 대표적인 예로 입력 데이터 유효화를 들 수 있다. 애플리케이션 서버가 다양한 물리적 컴퓨터에 존재한다면 클라이언트의 프레젠테이션에서 엔트리가 유효하지 못하다고 보고하기 전에 지연 현상이 발생할 수 있다. 일정한 수준의 성능을 유지하기 위해 클라이언트의 프레젠테이션 레이어에는 유효화 기준이 적용된다.비즈니스 로직이 클라이언트에 거의 존재하지 않는 프레젠테이션 레이어의 경우 클라이언트를 씬 클라이언트라 한다. 클라이언트에 비즈니스 로직이 다양하게 존재할 경우 팻 클라이언트라 부른다. 웹 브라우저는 씬 클라이언트의 대표적인 예이다. 씬 클라이언트이기 때문에 상세한 정보를 보유하지 못한 다양한 애플리케이션에 연결이 가능하고 적절한 사용자 인터페이스를 제공한다. 네트워크 컴퓨터의 개념은 웹 브라우저를 실행할 수 있는 가장 저렴하고 작은 시스템을 기반으로 구현된다. 클라이언트/서버 컴퓨팅은 서버 컴퓨터와 사용자 PC와의 단순한 분리 이상의 의미를 갖는다.@원문 작성일 : 1999/02/09