Client-Server Pattern

분산 시스템에서 널리 사용되는 소프트웨어 아키텍처 패턴.

이 패턴은 시스템을 두 가지 주요 구성 요소로 나눈다:

  • 서비스를 제공하는 서버
  • 서비스를 요청하는 클라이언트.
    이들은 네트워크를 통해 서로 통신하며, 각자 명확한 역할과 책임을 가지고 있다.

클라이언트-서버 패턴 (Client-Server Pattern)

클라이언트-서버 패턴은 분산 시스템에서 널리 사용되는 소프트웨어 아키텍처 패턴이다.

이 패턴은 시스템을 두 가지 주요 구성 요소로 나뉜다:
서비스를 제공하는 서버와 서비스를 요청하는 클라이언트이다.

주요 구성 요소

Client-Server Pattern Diagram
https://apptraitsolutions.com/different-software-architectural-patterns-and-how-to-choose-the-right-one-for-your-app/

  1. 클라이언트 (Client):

    • 사용자 인터페이스를 제공하고 서버에 서비스를 요청한다.
    • 웹 브라우저, 모바일 앱 등이 클라이언트 역할을 한다.
  2. 서버 (Server):

    • 클라이언트의 요청을 처리하고 적절한 서비스를 제공한다.
    • 웹 서버, 데이터베이스 서버 등이 이에 해당한다.

작동 방식

  1. 클라이언트가 서버에 서비스나 리소스를 요청한다.
  2. 서버는 요청을 받아 처리한다.
  3. 서버는 처리 결과를 클라이언트에게 응답으로 전송한다.
  4. 클라이언트는 받은 응답을 사용자에게 표시한다.

특징

  • 위치 투명성: 클라이언트와 서버는 같은 시스템에 있을 수도 있고, 네트워크를 통해 연결될 수도 있다.
  • 독립성: 클라이언트와 서버는 요청과 응답을 주고받을 때를 제외하고는 서로 독립적으로 작동한다.
  • 확장성: 클라이언트나 서버의 수를 늘려 시스템을 확장할 수 있다.
  • 중앙 집중식 관리: 데이터와 리소스가 서버에 집중되어 있어 관리가 용이하다.

장점

  1. 리소스 공유: 여러 클라이언트가 서버의 리소스를 공유할 수 있다.
  2. 보안성: 중앙 집중식 데이터 관리로 보안 강화가 가능하다.
  3. 유지보수 용이성: 서버 측 업데이트로 모든 클라이언트에 변경사항을 적용할 수 있다.
  4. 역할 분리: 클라이언트는 사용자 인터페이스에, 서버는 데이터 처리와 저장에 집중할 수 있다.

단점

  1. 서버 의존성: 서버에 문제가 생기면 전체 시스템에 영향을 미칠 수 있다.
  2. 네트워크 부하: 많은 클라이언트 요청이 동시에 발생하면 네트워크 병목 현상이 생길 수 있다.

사용 예시

  • 웹 애플리케이션: 웹 브라우저(클라이언트)와 웹 서버의 상호작용.
  • 이메일 시스템: 이메일 클라이언트와 메일 서버.
  • 파일 공유 서비스: 클라이언트 애플리케이션과 파일 서버.
  • 온라인 뱅킹: 사용자의 웹 브라우저(클라이언트)와 은행의 서버 시스템.

참고 및 출처