클라이언트-서버 구조는 네트워크 기반 애플리케이션에서 가장 널리 사용되는 아키텍처 중 하나입니다. 이 구조는 **클라이언트(요청자)와 서버(응답자)로 역할을 나누어 통신하며 작업을 수행합니다.
[Client] ──요청(Request)──▶ [Server]
[Client] ◀─응답(Response)── [Server]
흐름 설명
- 클라이언트는 사용자의 입력에 따라 서버에 요청(Request)을 보냅니다. (예: 로그인 요청, 데이터 조회 등)
- 서버는 요청을 처리한 후, 처리 결과(Response)를 클라이언트에 전달합니다.
- 클라이언트는 응답 결과를 사용자에게 보여줍니다.
예) 웹 브라우저가 서버에 게시판 목록을 요청하면, 서버는 DB에서 목록을 가져와 HTML 또는 JSON으로 응답합니다.
장점
| 장점 | 설명 |
| 역할 분리 | 클라이언트는 UI/사용자 인터페이스 담당, 서버는 비즈니스 로직/데이터 처리 담당 → 유지보수 용이 |
| 확장성 | 서버 성능만 향상시키면 더 많은 클라이언트를 처리 가능 |
| 중앙 집중 관리 | 데이터나 보안을 서버에서 일괄적으로 관리 가능 |
| 재사용성 | 여러 클라이언트(웹, 모바일 등)가 같은 서버 API를 재사용할 수 있음 |
단점
| 단점 | 설명 |
| 서버 의존성 | 서버가 다운되면 클라이언트는 정상 동작 불가 |
| 네트워크 비용 | 모든 요청과 응답이 네트워크를 통해 이뤄지므로 지연(latency) 발생 가능 |
| 확장 비용 | 사용자가 많아질수록 서버에 부하 증가 → 인프라 확장 필요 |
| 복잡성 | 인증, 보안, 세션 관리 등의 이슈가 따름 |
실제 예시
- 웹 브라우저(클라이언트) ↔ 웹 서버(Apache, Nginx)
- 모바일 앱 ↔ 백엔드 서버 (Spring, Node.js 등)
- React 프론트엔드 ↔ RESTful API 서버
'웹' 카테고리의 다른 글
| 스프링 프레임워크(Spring Framework)란? (5) | 2025.05.20 |
|---|---|
| WAS에 대하여 (2) | 2025.05.19 |
| HTTP(HyperText Transfer Protocol) (0) | 2025.05.14 |
| MVC패턴 (0) | 2025.05.13 |