클라이언트-서버 구조(Client-Server Architecture)는 컴퓨터 네트워크에서 역할이 분리된 두 주체(클라이언트와 서버)가 요청과 응답(Request/Response)을 주고받으며 작동하는 구조입니다.
✅ 1. 클라이언트-서버 구조의 흐름
- 클라이언트(Client)
- 사용자가 사용하는 프로그램 (예: 웹 브라우저, 모바일 앱 등)
- 서버에 **요청(request)**을 보냄 (예: 로그인, 데이터 조회 등)
- 서버(Server)
- 요청을 처리하고, 클라이언트에게 **응답(response)**을 반환
- 주로 데이터베이스와 연결되어 클라이언트 요청에 따른 데이터를 처리함
- 네트워크를 통한 통신
- 보통 HTTP/HTTPS 프로토콜을 사용하여 통신
- REST API 또는 GraphQL 등의 API 형태로 구조화됨
📊 예시:
[클라이언트] — (로그인 요청) → [서버]
[클라이언트] ← (성공 응답: 사용자 정보) — [서버]
✅ 2. 장점
장점 설명
| 🔌 역할 분리 | 클라이언트는 UI/UX 중심, 서버는 데이터 처리 중심 → 개발이 명확히 분리되어 협업에 용이 |
| 📦 재사용 가능 | 하나의 서버를 여러 클라이언트가 공유 가능 (웹, 앱 등 다양한 플랫폼에서 이용) |
| 📈 확장성 | 서버 성능이나 용량을 독립적으로 확장할 수 있어 대규모 서비스에 적합 |
| 🔐 보안 관리 | 데이터는 서버에 저장되고 중앙 집중식 보안 관리가 가능 |
| 🛠 유지보수 용이 | 서버만 업데이트해도 모든 클라이언트에 영향 (예: 버그 수정, 기능 개선 등) |
⚠️ 3. 단점
단점 설명
| 🧍 서버 의존성 | 서버가 중단되면 모든 클라이언트가 동작 불가 (단일 장애 지점, SPOF) |
| 🐢 네트워크 지연 | 클라이언트-서버 간 통신에 따른 속도 지연 발생 가능 |
| 🔋 비용 문제 | 서버 운영 및 유지보수 비용이 발생 (서버, 네트워크 인프라 등) |
| 🔄 상태 유지 어려움 | HTTP는 비연결(stateless) 기반이라 사용자의 상태 유지(세션, 로그인 등)가 복잡할 수 있음 |
| ⚙ 복잡성 증가 | 서버 로직이 많아질수록 설계와 유지보수가 복잡해질 수 있음 |
✅ 요약 정리
항목 설명
| 구조 | 요청(Request)과 응답(Response) 기반 |
| 클라이언트 역할 | 사용자 인터페이스 및 사용자 요청 발생 |
| 서버 역할 | 요청 처리 및 데이터 제공 |
| 장점 | 역할 분리, 확장성, 보안 관리 등 |
| 단점 | 서버 의존, 네트워크 지연, 관리 비용 등 |
'탐구하기' 카테고리의 다른 글
| Spring 프레임워크는 무엇일까? (1) | 2025.05.20 |
|---|---|
| WAS란 무엇일까? (1) | 2025.05.19 |
| HTTP는 무엇일까?? (0) | 2025.05.14 |
| MVC패턴은 무엇일까? (1) | 2025.05.13 |
| 트랜잭션은 무엇일까? (1) | 2025.05.13 |