클라이언트-서버 시스템에 대한 정의와 장단점
현대의 시스템 설계의 주류가 되고 있는 시스템에는 '독립형 시스템', '클라이언트 서버 시스템', 'WEB 시스템' 등 3개가 있는데, 각각 특징이나 구성이 다르다. 이번에는 그 3개의 시스템 중 하나, 클라이언트 서버 시스템에 대해 소개해 보고자 한다.
클라이언트 서버 시스템이란, 컴퓨터를 '서버'와 '클라이언트'로 나누어 각각 역할 분담을 하고 운용하는 구조를 말한다. "서버"는 시스템에서 이용되는 데이터의 보존 및 관리 기능, 접속된 주변기기 등의 하드웨어의 관리 기능, 그리고 데이터 처리 기능을 가지는 컴퓨터나 소프트웨어를 가리킨다. 이러한 기능과 정보는 네트워크를 통해 외부에 제공한다.
"클라이언트"는 '서버'로부터 기능이나 정보의 제공을 받는 컴퓨터나 소프트웨어를 가리킨다. 이용자가 클라이언트 측의 컴퓨터를 조작해, 화면 표시나 입력의 접수 등의 비교적 가벼운 처리를 담당하는 경우가 많다. '클라이언트'는 네트워크를 통해 '서버'에 다양한 요구를 보내고, '서버'가 이에 대응하여 처리를 한다는 흐름으로 보면 된다.
일반 LAN을 구성하는 기기 외에도 서버용 컴퓨터 또는 PC가 필요하다. 대규모 LAN의 경우 서버 전용의 컴퓨터를, 소규모의 경우는 서버용의 OS가 설치된 PC를 사용하는 것도 가능하다. 서버와 클라이언트의 연결에는 피어 투 피어 연결 등과 마찬가지로 LAN 케이블이나 허브를 사용할 수 있다.
복수의 컴퓨터로 처리를 분담하여 실시를 하면, 1대 당 부하가 적어지게 되므로 처리를 빨리 마칠 수 있다. 또, 1대에서는 할 수 없는 큰 처리도 가능하다. 여러 대의 컴퓨터에 분산되어 처리를 수행하기 때문에, 만약 하나가 고장 나면 전체 시스템이 다운되지도 않는다. 다른 컴퓨터의 부하는 증가하지만 시스템을 그대로 계속할 수 있다.
1대의 고장의 영향 범위는 작고, 고장 난 단말기를 수리 및 교환하면 다시 복구할 수 있다. 또한 클라이언트와 서버에서 역할을 공유함으로써 문제의 원인을 신속하게 파악하고 복구를 신속하게 실시할 수 있다는 장점도 있다. 집중형 시스템의 경우, 각 클라이언트 단위로 문제 발생하고 있는지, 혹은 서버 측에서 문제 발생하고 있는지 문제를 구분하는 데 시간이 걸리는 경향이 있다 보니 복구까지 상당한 시간이 걸릴 수가 있다.
클라이언트 서버 시스템이라면 시스템 변경을 하는 경우 클라이언트나 서버의 어느 쪽인지에 따라 해당 부분만 변경하면 좋고, 다른 쪽에는 영향을 주지 않는다는 이점이 있다. 특정 부분만 세세하게 변경도 가능하다. 또한, 메인 처리를 주로 서버 측에서 실시하고, 또한 서버 측을 소량으로 운용하기 때문에, 서버를 변경하는 경우 다른 곳에 미치는 영향 범위가 작아, 효율성을 높일 수가 있다. 중앙 집중식 시스템이라면 이와 같은 유연한 변경이 어렵다.
클라이언트 서버 시스템은 분산 시스템이므로, 관리가 필요한 컴퓨터의 수가 증가하고 운영 관리가 복잡해 지는 단점이 있다. 사용하는 모든 컴퓨터에 대해 소프트웨어를 업데이트하거나 네트워크 연결에 문제가 없는지 모니터링이 필요하다. 만약, 클라이언트측의 컴퓨터가 여러 대가 있는 경우, 클라이언트측의 프로그램 변경이 필요하다면 전부 바꿔야 하기 때문에 상당한 시간이 소요가 될 수 있다. 그리고 클라이언트 서버 시스템에서는 모든 컴퓨터에 보안 조치가 필수적이다.
클라이언트 서버 시스템은 때때로 웹 시스템과 나란히 비교될 수 있지만, 본래의 의미에서는 웹 시스템도 클라이언트 서버 시스템의 일종으로 볼 수 있다. 웹 브라우저를 클라이언트로 하는 클라이언트 서버 시스템을 '웹 시스템'이라고 합니다만, 웹 시스템과 비교되는 경우 클라이언트 서버 시스템은 'PC에 뭔가 특별한 프로그램을 넣을 필요가 있는 클라이언트 서버 시스템'으로 해석해야 한다. 클라이언트 서버 시스템 중 웹 브라우저를 클라이언트로 사용하는 시스템이 웹 시스템이고, 그 외를 클라이언트 서버 시스템이라고 한다.
이상, 클라이언트 서버 시스템에 대해 소개해 봤다. 클라이언트 서버 시스템을 간결하게 말하면 "컴퓨터를 서버 측과 클라이언트 측으로 나누고, 각각의 기능을 분산하여 운용하는 구조"로, "클라이언트가 네트워크를 통해 서버에 다양한 요구를 보내고, 서버는 그에 맞춰 처리를 실시한다"라고 하는 것이다. 이러한 서버나 네트워크 관련의 기본적인 구조 등에 대해 알아 두는 것은 매우 중요하다.