클라이언트-서버 모델(Client-Server Model)은 네트워크 기반의 통신 구조로, 클라이언트가 서비스를 요청하고 서버가 그 요청에 응답하는 구조이다. 현대의 대부분의 인터넷 서비스(웹, 메일, DB 등)가 이 모델을 기반으로 동작한다.
1. 기본 구조
- 클라이언트(Client): 서비스를 요청하는 주체 (예: 웹 브라우저, 모바일 앱)
- 서버(Server): 클라이언트의 요청을 받아 처리하고 응답하는 주체 (예: 웹 서버, DB 서버)
2. 특징
- 역할 분리: 클라이언트는 요청만, 서버는 처리만 담당한다.
- 중앙 집중식: 서버에 데이터와 로직이 집중되어 관리가 용이하다.
- 확장성: 여러 클라이언트가 하나의 서버 또는 서버 풀에 접속 가능하다.
- 유지보수 용이: 서버만 수정하면 모든 클라이언트에게 효과가 반영된다.
3. 작동 흐름
- 클라이언트가 서버의 주소(IP/도메인)와 포트로 접속을 시도한다.
- 서버는 클라이언트의 연결 요청을 수락한다.
- 클라이언트가 요청(Request)을 전송한다.
- 서버는 요청을 처리한 후 응답(Response)을 반환한다.
- 연결을 유지하거나 종료한다 (HTTP는 기본적으로 단발성).
4. 예시: 웹 브라우징
- 클라이언트: 웹 브라우저 (Chrome, Safari 등)
- 서버: 웹 서버 (Apache, Nginx)
- 요청: GET /index.html HTTP/1.1
- 응답: HTML, CSS, JS 파일 전송
5. 클라이언트-서버 모델의 확장 형태
- 멀티스레드 서버: 여러 클라이언트를 동시에 처리할 수 있도록 스레드로 분기한다.
- 멀티프로세스 서버: 프로세스를 fork 하여 각 클라이언트를 독립적으로 처리한다.
- 비동기 I/O: select/epoll 등을 사용하여 다수의 클라이언트를 효율적으로 처리한다.
- 로드 밸런싱: 여러 서버로 요청을 분산하여 부하를 나누고 안정성 확보
6. 단점
- 서버 과부하: 클라이언트가 많아질수록 서버 성능 한계에 도달
- 단일 장애점(SPOF): 서버가 중단되면 전체 서비스가 마비됨
- 비용 문제: 서버 운영 및 유지보수 비용 발생
'Deep Dive > CS' 카테고리의 다른 글
[CS] Datagram Socket vs Stream Socket (1) | 2025.05.06 |
---|---|
[CS] 소켓(socket, bind, listen, accept, connect, close) (0) | 2025.05.06 |
[CS] 파일 디스크립터 (file descriptor) (0) | 2025.05.06 |
[CS] 프록시(Proxy) (0) | 2025.05.06 |
[CS] HTTP (요청/응답, 헤더, 메소드, 상태코드, HEAD 메소드) (0) | 2025.05.05 |