클라이언트 서버 아키텍처

IT 위키

클라이언트 서버 아키텍처(Client-Server Architecture)는 서비스를 요청하는 클라이언트(Client)와 서비스를 제공하는 서버(Server)로 역할을 분리하여 구성하는 네트워크 기반 시스템 구조이다. 현대 인터넷 서비스와 기업 정보시스템의 가장 대표적인 구조 중 하나이다.

클라이언트 서버 아키텍처에서는 시스템의 기능이 요청(Request)을 보내는 클라이언트와 요청을 처리하는 서버로 분리된다.

클라이언트는 사용자 인터페이스와 요청 기능을 담당하며, 서버는 데이터 저장, 비즈니스 로직 처리, 인증, 파일 제공 등의 기능을 수행한다.

대표적인 예시는 다음과 같다.

  • 웹 브라우저와 웹 서버
  • 메일 클라이언트와 메일 서버
  • 게임 클라이언트와 게임 서버
  • 데이터베이스 클라이언트와 DB 서버

인터넷과 TCP/IP 네트워크의 발전과 함께 가장 널리 사용되는 시스템 구조가 되었다.

구성 요소

[편집 | 원본 편집]

클라이언트(Client)

[편집 | 원본 편집]

클라이언트는 서버에 서비스를 요청하는 시스템 또는 프로그램이다.

대표적인 역할은 다음과 같다.

  • 사용자 인터페이스 제공
  • 서버 요청 전송
  • 결과 출력
  • 일부 로컬 연산 수행

예:

  • 웹 브라우저
  • 메신저 앱
  • 모바일 애플리케이션
  • 게임 클라이언트

서버(Server)

[편집 | 원본 편집]

서버는 클라이언트의 요청을 처리하고 서비스를 제공하는 시스템이다.

대표적인 역할은 다음과 같다.

  • 데이터 저장 및 관리
  • 인증 및 권한 처리
  • 요청 처리
  • 파일 제공
  • 네트워크 서비스 제공

예:

  • 웹 서버
  • 데이터베이스 서버
  • 파일 서버
  • 메일 서버

동작 과정

[편집 | 원본 편집]

일반적인 클라이언트 서버 구조의 동작 과정은 다음과 같다.

  1. 클라이언트가 서버에 요청(Request)을 보낸다.
  2. 서버가 요청을 수신한다.
  3. 서버가 요청을 처리한다.
  4. 서버가 결과(Response)를 반환한다.
  5. 클라이언트가 결과를 사용자에게 표시한다.

예를 들어 웹 환경에서는 다음과 같이 동작한다.

  1. 웹 브라우저가 HTTP 요청 전송
  2. 웹 서버가 요청 처리
  3. 웹 페이지 데이터 반환
  4. 브라우저가 화면 출력
  • 역할 분리 구조
  • 중앙 집중형 관리 가능
  • 자원 공유 가능
  • 다수 클라이언트 지원 가능
  • 네트워크 기반 통신 수행
  • 유지보수 및 관리 효율성 향상

중앙 집중 관리

[편집 | 원본 편집]

데이터와 서비스가 서버에 집중되므로 관리가 용이하다.

자원 공유

[편집 | 원본 편집]

여러 클라이언트가 동일한 서버 자원을 공유할 수 있다.

보안 관리 용이

[편집 | 원본 편집]

인증, 접근 제어 등을 서버에서 통합 관리할 수 있다.

확장성

[편집 | 원본 편집]

서버 증설이나 로드 밸런싱 등을 통해 확장이 가능하다.

유지보수 효율

[편집 | 원본 편집]

업데이트나 데이터 변경을 서버 중심으로 수행할 수 있다.

서버 장애 영향

[편집 | 원본 편집]

중앙 서버 장애 시 전체 서비스에 영향을 줄 수 있다.

서버 부하 집중

[편집 | 원본 편집]

많은 요청이 서버에 집중될 수 있다.

네트워크 의존성

[편집 | 원본 편집]

네트워크 장애 발생 시 서비스 이용이 어려울 수 있다.

구축 비용

[편집 | 원본 편집]

고성능 서버와 네트워크 장비 구축 비용이 발생할 수 있다.

2계층 구조

[편집 | 원본 편집]

2-Tier 구조는 클라이언트와 서버가 직접 연결되는 형태이다.

예:

  • 클라이언트 ↔ 데이터베이스 서버

구조가 단순하지만 클라이언트 수 증가 시 확장성이 떨어질 수 있다.

3계층 구조

[편집 | 원본 편집]

3-Tier 구조는 프레젠테이션 계층, 애플리케이션 계층, 데이터 계층으로 분리한 구조이다.

구성 예:

  • 클라이언트
  • 웹/애플리케이션 서버
  • 데이터베이스 서버

현대 웹 서비스에서 매우 널리 사용된다.

프레젠테이션 계층

[편집 | 원본 편집]

사용자 인터페이스를 담당한다.

애플리케이션 계층

[편집 | 원본 편집]

비즈니스 로직과 요청 처리를 담당한다.

데이터 계층

[편집 | 원본 편집]

데이터 저장과 관리 기능을 수행한다.

P2P와의 비교

[편집 | 원본 편집]
구분 클라이언트 서버 구조 P2P 구조
구조 중앙 서버 존재 중앙 서버 의존도 낮음
관리 중앙 집중형 분산형
자원 제공 서버 중심 각 노드가 제공 가능
보안 관리 상대적으로 용이 상대적으로 어려움
장애 영향 서버 장애 영향 큼 일부 노드 장애 영향 제한적

웹 서비스

[편집 | 원본 편집]

웹 브라우저와 웹 서버 구조가 대표적이다.

이메일 시스템

[편집 | 원본 편집]

메일 클라이언트와 메일 서버 구조로 동작한다.

온라인 게임

[편집 | 원본 편집]

게임 서버가 사용자 데이터를 관리한다.

데이터베이스 시스템

[편집 | 원본 편집]

클라이언트가 DB 서버에 질의(Query)를 전송한다.

클라우드 서비스

[편집 | 원본 편집]

클라우드 기반 서비스 대부분이 클라이언트 서버 구조를 사용한다.

관련 기술

[편집 | 원본 편집]

시험 포인트

[편집 | 원본 편집]
  • 클라이언트 서버 구조는 역할을 클라이언트와 서버로 분리한 구조이다.
  • 클라이언트는 서비스를 요청하고 서버는 요청을 처리한다.
  • 중앙 집중형 관리가 가능하다.
  • 서버 장애 시 전체 서비스에 영향을 줄 수 있다.
  • 3-Tier 구조는 프레젠테이션, 애플리케이션, 데이터 계층으로 구성된다.
  • 웹 서비스는 대표적인 클라이언트 서버 구조이다.
  • P2P는 중앙 서버 의존도가 상대적으로 낮다.

같이 보기

[편집 | 원본 편집]