8.1. 서버-클라이언트 구조

서버-클라이언트 구조(Server-Client Architecture)는 네트워크 컴퓨팅 환경에서 주로 사용되는 아키텍처로, 서버와 클라이언트라는 두 가지 주요 구성 요소로 이루어집니다.

서버-클라이언트 구조는 다양한 네트워크 기반 서비스와 응용 프로그램에서 사용되며, 다음과 같은 개념으로 구성됩니다.

../../_images/ch08_01_01_server_client.webp

Fig. 8.3 서버-클라이언트 구조는 인터넷에서 가장 많이 사용하는 구조입니다.

8.1.1. 서버(Server)

  • 서버는 네트워크를 통해 클라이언트에 서비스를 제공하는 컴퓨터 시스템입니다.

  • 데이터 저장, 처리, 관리, 및 응용 프로그램 제공과 같은 다양한 기능을 수행합니다.

  • 서버는 여러 클라이언트의 요청을 처리하고 응답할 수 있도록 설계되어 있습니다.

8.1.2. 클라이언트(Client)

  • 클라이언트는 서버로부터 서비스를 요청하고 받는 컴퓨터 시스템 또는 소프트웨어 응용 프로그램입니다.

  • 사용자가 직접 사용하는 장치(예: PC, 스마트폰, 태블릿)나 특정 응용 프로그램이 클라이언트로 작동합니다.

  • 클라이언트는 서버에 특정 요청을 보내고, 서버는 해당 요청을 처리하여 응답을 반환합니다.

8.1.3. 서버-클라이언트 예시

  • 웹 서버와 웹 브라우저

    웹 브라우저(클라이언트)는 웹 서버에 HTTP 요청을 보내고, 웹 서버는 해당 요청을 처리하여 HTML 문서를 반환합니다.

  • 파일 서버와 파일 공유 클라이언트

    파일 서버는 네트워크를 통해 파일을 저장하고 관리하며, 클라이언트는 파일 서버에 접속하여 파일을 업로드하거나 다운로드할 수 있습니다.

  • 데이터베이스 서버와 응용 프로그램

    데이터베이스 서버는 데이터베이스를 관리하며, 응용 프로그램(클라이언트)은 데이터베이스 서버에 쿼리를 보내어 데이터를 조회하거나 수정합니다.

8.1.4. 서버-클라이언트 구조의 장단점

장점

  • 중앙 집중식 관리:

    데이터와 자원이 중앙 서버에 집중되어 관리됩니다. 이는 데이터 일관성 유지와 보안 관리에 유리합니다.

  • 확장성

    여러 클라이언트를 쉽게 추가할 수 있으며, 서버의 성능을 향상시키는 방식으로 전체 시스템의 성능을 확장할 수 있습니다.

  • 유지보수 용이

    서버에서 소프트웨어 업데이트나 변경 사항을 중앙에서 관리할 수 있어 유지보수가 용이합니다.

단점

  • 서버의 과부하

    다수의 클라이언트 요청이 집중되면 서버에 과부하가 발생할 수 있으며, 이는 성능 저하를 초래할 수 있습니다.

  • 단일 장애점

    서버가 고장나면 전체 시스템이 중단될 위험이 있습니다. 이를 방지하기 위해 서버 이중화나 백업 시스템을 도입할 필요가 있습니다.

8.1.5. 서버-클라이언트 구조의 동작

서버-클라이언트 구조의 동작은 주로 요청(request)과 응답(response) 메커니즘으로 이루어집니다. 이를 통해 클라이언트와 서버 간의 정보 교환이 이루어집니다. 다음은 서버-클라이언트 구조의 동작 원리에 대한 설명입니다.

요청(Request)

  • 클라이언트: 클라이언트는 사용자의 입력이나 특정 이벤트에 따라 서버에 요청을 보냅니다. 이 요청은 클라이언트가 서버에 데이터나 서비스를 요청하는 행위입니다.

../../_images/ch08_01_02_request.webp

Fig. 8.4 사용자(클라이언트)가 서버에게 뭔가를 요청하는 행위를 “Request”라고 합니다.

  • 전송: 요청은 네트워크를 통해 서버로 전달됩니다. 이때 HTTP, HTTPS와 같은 프로토콜을 사용하여 요청을 전송합니다.

  • 예시: 웹 브라우저에서 사용자가 URL을 입력하면, 웹 브라우저는 해당 URL에 대한 HTTP 요청을 서버에 보냅니다.

처리(Processing)

  • 서버: 서버는 클라이언트로부터 받은 요청을 처리합니다. 요청된 리소스나 데이터를 검색하거나, 특정 작업을 수행합니다.

  • 응답 준비: 서버는 요청을 처리한 결과를 바탕으로 응답을 준비합니다. 이 응답에는 요청한 데이터나 리소스, 또는 작업의 결과가 포함됩니다.

../../_images/ch08_01_03_process.webp

Fig. 8.5 사용자로부터 요청(Request)를 받아서 답변하기 위해 일하는 것을 “Processing”이라고 합니다.

  • 예시: 웹 서버는 요청된 웹 페이지를 검색하여 클라이언트에 반환할 HTML 파일을 준비합니다.

응답(Response)

  • 서버: 서버는 준비된 응답을 클라이언트에게 돌려보냅니다. 이 응답은 클라이언트가 요청한 정보를 포함하고 있습니다.

  • 전송: 응답은 네트워크를 통해 클라이언트로 전달됩니다. HTTP, HTTPS 프로토콜을 통해 전송됩니다.

  • 클라이언트: 클라이언트는 서버로부터 받은 응답을 처리하여 사용자에게 표시합니다. 웹 브라우저의 경우, 서버로부터 받은 HTML을 해석하여 웹 페이지로 렌더링합니다.

../../_images/ch08_01_04_response.webp

Fig. 8.6 사용자로부터 요청(Request)를 받아서 답변하기 위해 일하는 것을 “Processing”이라고 합니다.