Client Server Architecture
클라이언트-서버 아키텍처는 네트워크 환경에서 클라이언트와 서버가 역할을 분담하여 상호작용하는 모델이다. 클라이언트(Client)가 요청(Request)을 보내고, 서버(Server)가 요청을 처리하여 응답(Response)한다.
이 아키텍처는 분산 시스템의 핵심으로, 확장성과 중앙 집중식 관리가 가능하며 현대의 웹 서비스, 모바일 앱, 엔터프라이즈 시스템의 기반이 되는 아키텍처로, 효율적이고 확장 가능한 시스템 구축을 지원한다.
핵심 개념
클라이언트-서버 아키텍처는 두 가지 주요 구성 요소로 이루어진 분산 컴퓨팅 모델이다:
- 클라이언트 (Client): 서비스를 요청하는 장치나 프로그램으로, 사용자와 직접 상호작용한다. 예시로는 웹 브라우저, 모바일 앱, 데스크톱 응용 프로그램 등이 있다.
- 서버 (Server): 클라이언트의 요청을 받아 처리하고 결과를 반환하는 컴퓨터 시스템 또는 프로그램이다. 웹 서버, 데이터베이스 서버, 파일 서버 등 다양한 유형이 있다.
목적
클라이언트-서버 아키텍처의 주요 목적은 다음과 같다:
- 리소스 중앙화: 데이터, 컴퓨팅 리소스 및 서비스를 중앙 집중식으로 관리
- 작업 분산: 처리 작업을 클라이언트와 서버 간에 효율적으로 분배
- 확장성 제공: 필요에 따라 클라이언트 또는 서버를 독립적으로 확장 가능
- 보안 강화: 중요 데이터와 비즈니스 로직을 서버 측에서 통제
- 일관된 서비스: 다양한 클라이언트 기기에 일관된 서비스 제공
특징
- 역할 분리: 클라이언트는 사용자 인터페이스와 상호작용을 담당하고, 서버는 데이터 처리와 저장을 담당한다.
- 비대칭적 관계: 일반적으로 서버는 다수의 클라이언트를 동시에 처리할 수 있다.
- 표준화된 프로토콜: HTTP, FTP, SMTP 등의 표준 프로토콜을 통해 통신한다.
- 독립적 운영: 클라이언트와 서버는 서로 다른 플랫폼, 운영체제에서 실행될 수 있다.
- 상태 관리: 서버는 클라이언트의 상태를 유지할 수도, 유지하지 않을 수도 있다(상태유지/무상태).
주요 원리 및 작동 원리
- 클라이언트가 서버로 요청을 전송한다.
- 서버는 요청을 수신하고, 내부 처리(비즈니스 로직, 데이터베이스 조회 등)를 수행한다.
- 서버는 처리 결과를 응답으로 클라이언트에 반환한다.
구성 요소 및 아키텍처
주요 구성 요소
- 클라이언트 (Client)
- 사용자 인터페이스 계층(UI)
- 프레젠테이션 로직
- 클라이언트 측 캐시
- 네트워크 통신 모듈
- 서버 (Server)
- 애플리케이션 로직 계층
- 데이터 접근 계층
- 리소스 관리 시스템
- 보안 및 인증 시스템
- 네트워크 통신 모듈
- 네트워크 인프라
- 통신 프로토콜(HTTP, TCP/IP 등)
- 네트워크 하드웨어(라우터, 스위치 등)
- 로드 밸런서
- 방화벽
- 미들웨어 (Middleware)
- 클라이언트와 서버 사이의 중개 소프트웨어
- 메시지 큐, API 게이트웨이 등
아키텍처 다이어그램
다계층 클라이언트-서버 아키텍처
|
|
주요 기능
- 요청 및 응답 처리
- 인증 및 권한 관리
- 세션 및 상태 관리
- 로깅 및 모니터링
- 오류 처리 및 복구
장점과 단점
구분 | 항목 | 설명 |
---|---|---|
✅ 장점 | 중앙화된 데이터 관리 | 데이터를 서버에 집중시켜 일관성, 보안, 백업이 용이해진다. |
자원 공유 | 여러 클라이언트가 동일한 서버 리소스를 공유하여 효율성이 향상된다. | |
클라이언트 다양성 | 다양한 플랫폼(웹, 모바일)에서 접근 가능 | |
역할 분리 | 클라이언트와 서버의 역할이 명확히 분리되어 각각 최적화할 수 있다 | |
확장성 | 클라이언트와 서버를 독립적으로 확장할 수 있어 유연한 시스템 구성이 가능하다 필요에 따라 서버를 확장(Scale-up, Scale-out) 가능 | |
유지보수성 | 서버 측 변경이 클라이언트에 영향을 최소화하며 독립적인 업데이트가 가능하다 | |
보안 강화 | 중요한 데이터와 비즈니스 로직을 서버에서 관리하여 보안을 강화할 수 있다 | |
⚠ 단점 | 단일 장애점 위험 | 서버 장애 시 전체 시스템 기능이 중단될 수 있는 리스크가 있다 |
네트워크 의존성 | 네트워크 문제가 발생하면 클라이언트와 서버 간 통신이 불가능해진다 대기시간(latency)에 민감하다. | |
서버 부하 | 동시 접속자 수가 많을 경우 서버에 과부하가 발생할 수 있다 | |
복잡한 설정 및 관리 | 분산 시스템 설정과 유지보수가 단일 시스템보다 복잡할 수 있다 | |
초기 비용 | 인프라 구축에 높은 초기 비용이 필요할 수 있다 | |
지연 시간 | 네트워크 통신으로 인한 지연이 발생할 수 있다 |
분류에 따른 종류 및 유형
분류 기준 | 유형 | 특징 |
---|---|---|
계층 수에 따른 분류 | 2-계층 (Two-tier) | 클라이언트와 서버가 직접 통신하는 가장 기본적인 구조 |
3-계층 (Three-tier) | 프레젠테이션, 애플리케이션 로직, 데이터 저장의 세 계층으로 분리 | |
N-계층 (N-tier/Multi-tier) | 다양한 기능적 계층으로 분리된 복잡한 구조 | |
통신 방식에 따른 분류 | 블로킹 방식 | 요청 후 응답을 받을 때까지 클라이언트가 대기하는 방식 |
논블로킹 방식 | 요청 후 응답을 기다리지 않고 다른 작업을 수행할 수 있는 방식 | |
동기식 통신 | 요청-응답이 순차적으로 이루어지는 방식 | |
비동기식 통신 | 요청과 응답이 독립적으로 처리되는 방식 | |
서버 유형에 따른 분류 | 웹 서버 | HTTP 요청을 처리하고 웹 페이지를 제공하는 서버 |
애플리케이션 서버 | 비즈니스 로직을 실행하고 애플리케이션 기능을 제공하는 서버 | |
데이터베이스 서버 | 데이터 저장, 검색, 관리 기능을 제공하는 서버 | |
파일 서버 | 파일 저장 및 공유 기능을 제공하는 서버 | |
메일 서버 | 이메일 송수신을 처리하는 서버 | |
클라이언트 유형에 따른 분류 | 씬 클라이언트 (Thin Client) | 최소한의 기능만 가진 경량 클라이언트, 대부분의 처리는 서버에서 수행 |
팻 클라이언트 (Fat Client) | 많은 기능을 포함한 클라이언트, 서버 의존도가 상대적으로 낮음 | |
리치 클라이언트 (Rich Client) | 씬과 팻의 중간 형태로, 일부 처리는 로컬에서 수행하지만 서버에도 의존 | |
상태 관리에 따른 분류 | 상태유지 (Stateful) | 서버가 클라이언트의 상태 정보를 유지하는 방식 |
무상태 (Stateless) | 서버가 클라이언트 상태를 유지하지 않고 각 요청을 독립적으로 처리하는 방식 |
실무 적용 예시
애플리케이션 유형 | 클라이언트 | 서버 | 설명 |
---|---|---|---|
웹 애플리케이션 | 웹 브라우저 | 웹 서버, 애플리케이션 서버 | 사용자는 브라우저를 통해 웹 서버에 접속하여 데이터를 요청하고 받는다 |
모바일 앱 | 모바일 애플리케이션 | RESTful API 서버 | 모바일 앱이 API를 통해 서버와 통신하며 데이터를 주고받는다 |
데이터베이스 시스템 | 데이터베이스 클라이언트 도구 | 데이터베이스 서버 | SQL 클라이언트가 데이터베이스 서버에 쿼리를 전송하고 결과를 받는다 |
이메일 시스템 | 이메일 클라이언트 | 메일 서버(SMTP, POP3, IMAP) | 이메일 클라이언트가 메일 서버를 통해 메일을 송수신한다 |
파일 공유 시스템 | 파일 관리자, FTP 클라이언트 | 파일 서버, FTP 서버 | 사용자는 클라이언트를 통해 파일 서버에 접근하여 파일을 업로드/다운로드한다 |
온라인 게임 | 게임 클라이언트 | 게임 서버 | 게임 클라이언트가 게임 상태를 서버와 동기화하며 다중 사용자 경험을 제공한다 |
클라우드 서비스 | 웹 인터페이스, API 클라이언트 | 클라우드 서비스 서버 | 사용자가 클라우드 리소스에 접근하고 관리할 수 있는 인터페이스를 제공한다 |
비즈니스 인텔리전스 | BI 도구, 대시보드 | 분석 서버, 데이터 웨어하우스 | 비즈니스 데이터를 수집, 처리, 분석하고 의사결정에 도움을 준다 |
IoT 시스템 | IoT 장치, 모바일 앱 | IoT 백엔드 서버 | IoT 장치가 센서 데이터를 서버로 전송하고, 서버는 이를 처리하고 명령을 내린다 |
마이크로서비스 | API 게이트웨이, 프론트엔드 앱 | 다수의 독립적 마이크로서비스 | 각 서비스가 특정 기능을 담당하며 API를 통해 통신하는 분산 아키텍처이다 |
실무에서 효과적으로 적용하기 위한 베스트 프랙티스와 고려사항
아키텍처 설계
- 적절한 계층 분리: 관심사 분리 원칙에 따라 프레젠테이션, 비즈니스 로직, 데이터 접근 계층을 명확히 분리한다.
- API 설계 표준화: RESTful API, GraphQL 등 일관된 인터페이스 설계를 통해 클라이언트-서버 통신을 표준화한다.
- 마이크로서비스 고려: 대규모 시스템의 경우, 모놀리식보다 마이크로서비스 아키텍처가 유연성과 확장성을 제공할 수 있다.
- 상태 관리 전략: 상태유지(Stateful) 또는 무상태(Stateless) 중 적합한 방식을 선택하며, 가능한 무상태 설계를 선호한다.
성능 및 확장성
- 로드 밸런싱: 다수의 서버 인스턴스 간에 요청을 분산하여 부하를 분산한다.
- 캐싱 전략: 클라이언트와 서버 양쪽에 적절한 캐싱을 구현하여 반복 요청의 효율성을 높링다.
- 수평적/수직적 확장: 부하 증가에 대응할 수 있는 확장 전략을 미리 계획한다.
- 비동기 처리: 장시간 실행 작업은 비동기 처리하여 클라이언트 응답성을 유지한다.
보안
- 인증 및 권한 부여: 토큰 기반 인증(JWT 등), OAuth, SSO 등 적절한 인증 메커니즘을 구현한다.
- 데이터 암호화: 전송 중 데이터(HTTPS), 저장 데이터의 암호화를 구현한다.
- 입력 검증: 모든 클라이언트 입력을 서버 측에서 검증하여 주입 공격을 방지한다.
- CORS 정책: 적절한 Cross-Origin Resource Sharing 정책을 설정한다.
- API 접근 제한: 속도 제한(Rate limiting), IP 기반 제한 등을 통해 API 남용을 방지한다.
가용성 및 복원력
- 장애 감지 및 복구: 헬스 체크, 자동 복구 메커니즘을 구현한다.
- 서비스 디스커버리: 동적 환경에서 클라이언트가 서버를 찾을 수 있는 메커니즘을 제공한다.
- 서킷 브레이커 패턴: 연쇄적 장애를 방지하기 위한 서킷 브레이커를 구현한다.
- 데이터 백업 및 복제: 정기적인 백업과 데이터 복제 전략을 마련한다.
개발 및 운영
- API 버전 관리: API 변경으로 인한 클라이언트 호환성 문제를 방지하기 위한 버전 관리 전략을 수립한다.
- 문서화: API 문서화(Swagger/OpenAPI 등)를 통해 클라이언트 개발자에게 명확한 가이드를 제공한다.
- 모니터링 및 로깅: 클라이언트-서버 통신, 성능, 오류를 추적할 수 있는 도구를 구축한다.
- CI/CD: 자동화된 테스트 및 배포 파이프라인을 구축하여 개발-운영 사이클을 효율화한다.
최적화하기 위한 고려사항 및 주의할 점
서버 측 최적화
- 효율적인 리소스 관리
- 연결 풀링: 데이터베이스 연결, 스레드 등의 리소스를 효율적으로 관리한다.
- 메모리 관리: 적절한 캐싱과 메모리 할당 전략을 통해 메모리 사용을 최적화한다.
- 비동기 I/O: 블로킹 I/O 대신 비동기 I/O를 활용하여 서버 자원을 효율적으로 사용한다.
- 응답 시간 최적화
- 요청 큐잉: 부하가 높을 때 효율적으로 요청을 처리하기 위한 큐잉 메커니즘을 구현한다.
- 병렬 처리: 독립적인 작업을 병렬로 처리하여 전체 응답 시간을 단축한다.
- 데이터베이스 최적화: 인덱싱, 쿼리 최적화, 샤딩 등의 기법을 활용한다.
- 부하 분산
- 로드 밸런싱 알고리즘: 라운드 로빈, 최소 연결 등 적절한 부하 분산 알고리즘을 선택한다.
- 지리적 분산: CDN, 다중 리전 배포를 통해 지리적으로 분산된 사용자에게 최적의 성능을 제공한다.
- 자동 스케일링: 트래픽 변화에 따라 서버 리소스를 자동으로 확장/축소한다.
네트워크 최적화
- 트래픽 최소화
- 응답 압축: GZIP, Brotli 등을 사용하여 전송 데이터를 압축한다.
- 필드 필터링: 클라이언트가 필요한 데이터만 요청할 수 있는 메커니즘(GraphQL 등)을 제공한다.
- 일괄 처리: 여러 작은 요청을 하나의 요청으로 일괄 처리한다.
- 지연 시간 감소
- 에지 컴퓨팅 (Edge Computing): 사용자와 가까운 위치에서 연산을 수행한다.
- 연결 최적화: HTTP/2, 영구 연결(Keep-alive)을 활용한다.
- 프리페칭: 예상 요청을 미리 처리하여 지연 시간을 감소시킨다.
- 캐싱 전략
- 다중 레벨 캐싱: 클라이언트, CDN, API 게이트웨이, 애플리케이션, 데이터베이스 등 여러 계층에 캐시를 구현한다.
- 캐시 무효화: 적절한 캐시 무효화 전략을 구현하여 데이터 일관성을 유지한다.
- 캐시 친화적 설계: URL 구조, 헤더 설정 등을 캐시 친화적으로 설계한다.
클라이언트 측 최적화
- 효율적인 자원 사용
- 지연 로딩: 필요한 시점에 리소스를 로드하여 초기 로딩 시간을 단축한다.
- 클라이언트 캐싱: 로컬 스토리지, 서비스 워커 등을 활용하여 클라이언트 측 캐싱을 구현한다.
- 리소스 번들링: 자원을 효율적으로 묶어 요청 수를 최소화한다.
- 네트워크 효율성
- 배치 요청: 여러 요청을 그룹화하여 네트워크 오버헤드를 줄인다.
- 효율적인 폴링: 필요한 경우 폴링 간격을 최적화하거나 웹소켓을 고려한다.
- 데이터 구독: 변경이 있을 때만 데이터를 받는 구독 모델을 구현한다.
주의할 점
- 오버엔지니어링 방지
- 실제 요구사항에 맞는 최적화 수준을 선택하고, 불필요한 복잡성을 피한다.
- “조기 최적화는 모든 악의 근원"이라는 원칙을 기억하고, 실제 병목 지점을 파악한 후 최적화한다.
- 테스트 및 측정
- 가정이 아닌 측정 기반으로 최적화를 진행한다.
- 부하 테스트, 성능 프로파일링, 사용자 경험 측정 등을 통해 최적화 효과를 검증한다.
- 확장성과의 균형
- 단기적 성능과 장기적 확장성 사이의 균형을 유지한다.
- 성능을 위해 유지보수성이나 확장성을 희생하지 않도록 주의한다.
- 보안과의 균형
- 성능 향상을 위해 보안을 약화시키지 않도록 주의한다.
- 캐싱, 압축 등의 최적화 기법 적용 시 보안 취약점이 발생하지 않도록 검토한다.
최신 동향과 앞으로의 전망, 주목해야 할 기술
구분 | 항목 | 설명 |
---|---|---|
아키텍처 동향 | 서버리스 아키텍처 | 개발자가 서버 관리 없이 애플리케이션 개발에 집중할 수 있는 클라우드 네이티브 아키텍처가 보편화되고 있습니다 |
마이크로프론트엔드 | 백엔드 마이크로서비스와 함께 프론트엔드도 독립적인 마이크로 단위로 개발하고 조합하는 접근법이 증가했습니다 | |
메시 아키텍처 | 서비스 간 직접 통신을 지원하는 서비스 메시 구조가 복잡한 클라이언트-서버 환경에서 인기를 얻고 있습니다 | |
통신 기술 | gRPC 및 프로토콜 버퍼 | HTTP/2 기반의 고성능 RPC 프레임워크가 마이크로서비스 간 통신에서 REST API를 대체하고 있습니다 |
WebSocket 및 서버 이벤트 스트리밍 | 실시간 양방향 통신이 필요한 애플리케이션에서 이러한 기술의 활용이 더욱 보편화되었습니다 | |
HTTP/3 (QUIC) | UDP 기반의 새로운 HTTP 프로토콜이 지연 시간 감소와 연결 신뢰성 향상을 제공합니다 | |
에지 컴퓨팅 | 에지 서버 확산 | 클라우드 중앙화에서 에지로 컴퓨팅이 분산되어 지연 시간을 줄이고 로컬 처리 능력을 향상시키고 있습니다 |
에지-클라우드 하이브리드 아키텍처 | 에지에서의 실시간 처리와 클라우드에서의 고급 분석을 결합한 하이브리드 모델이 등장했습니다 | |
에지 AI | 에지 장치에서 AI 모델을 실행하여 지연 시간 감소와 개인정보 보호 강화를 제공합니다 | |
API 관리 | 그래프 기반 API (GraphQL) | REST를 보완하는 클라이언트 중심의 유연한 데이터 요청 방식이 더욱 보편화되었습니다 |
노코드/로코드 API 통합 | 개발자가 아닌 사용자도 클라이언트-서버 통합을 구축할 수 있는 도구들이 발전하고 있습니다 | |
API 자동화 및 오케스트레이션 | API 라이프사이클 관리를 자동화하는 도구와 플랫폼이 성숙 단계에 접어들었습니다 | |
보안 트렌드 | 제로 트러스트 아키텍처 | 모든 요청을 기본적으로 신뢰하지 않고 지속적인 검증을 요구하는 보안 모델이 표준화되고 있습니다 |
서비스 메시 보안 | 서비스 간 통신에 자동화된 보안 기능(mTLS, 접근 제어 등)을 제공하는 메시 기반 보안이 확산되고 있습니다 | |
IAP (Identity-Aware Proxy) | 사용자 ID 기반의 세밀한 접근 제어를 제공하는 프록시 계층이 보편화되고 있습니다 | |
데이터 처리 | 실시간 처리 시스템 | 스트림 처리 기술이 발전하여 클라이언트-서버 간 실시간 데이터 처리 능력이 향상되었습니다 |
엣지 데이터베이스 | 분산된 엣지 위치에 데이터를 저장하고 동기화하는 데이터베이스 시스템이 등장했습니다 | |
벡터 데이터베이스 | AI와 기계학습 애플리케이션을 위한 특화된 벡터 기반 데이터 저장소가 보편화되었습니다 | |
개발 동향 | 서버리스 프레임워크 | AWS Lambda, Azure Functions, Google Cloud Functions 등의 서버리스 환경에 최적화된 프레임워크가 성숙했습니다 |
웹어셈블리 (WebAssembly) | 브라우저에서 고성능 코드를 실행하여 클라이언트 측 기능을 강화하는 기술이 표준화되었습니다 | |
AI 기반 개발 자동화 | 코드 생성, 최적화, 디버깅을 지원하는 AI 도구가 클라이언트-서버 개발 과정을 가속화하고 있습니다 |
추가로 알아야 하거나 학습해야할 내용
구분 | 항목 | 설명 |
---|---|---|
기반 지식 | 네트워크 기초 | TCP/IP, HTTP 프로토콜, 소켓 프로그래밍 등 네트워크 통신의 기본 개념을 이해해야 합니다 |
분산 시스템 이론 | CAP 정리, 일관성 모델, 분산 알고리즘 등 분산 시스템의 이론적 배경을 학습해야 합니다 | |
동시성 및 병렬성 | 스레드, 프로세스, 비동기 프로그래밍 등 동시 처리 모델을 이해해야 합니다 | |
아키텍처 패턴 | 마이크로서비스 아키텍처 | 서비스 분해, 통신 패턴, 서비스 디스커버리 등 마이크로서비스 설계 원칙을 학습해야 합니다 |
이벤트 기반 아키텍처 | 이벤트 소싱, CQRS, 메시지 큐 등 이벤트 중심 설계 방식을 이해해야 합니다 | |
서버리스 컴퓨팅 | FaaS(Function as a Service), BaaS(Backend as a Service) 등 서버리스 모델을 학습해야 합니다 | |
API 설계 | REST API 설계 | 리소스 모델링, 상태 관리, HATEOAS 등 RESTful 설계 원칙을 익혀야 합니다 |
GraphQL 쿼리 언어 | 스키마 정의, 쿼리/뮤테이션, 리졸버 등 GraphQL의 핵심 개념을 이해해야 합니다 | |
gRPC 및 프로토콜 버퍼 | 서비스 정의, 프로토콜 버퍼 사용법, 스트리밍 등 gRPC 개발 방법을 학습해야 합니다 | |
보안 | 인증 및 권한 부여 | OAuth 2.0, JWT, SAML 등 현대적인 인증 및 권한 부여 프로토콜을 익혀야 합니다 |
API 보안 위협 및 대응 | OWASP Top 10, API 보안 모범 사례, 보안 테스트 등을 학습해야 합니다 | |
암호화 및 데이터 보호 | TLS/SSL, 암호화 알고리즘, 데이터 마스킹 등 데이터 보호 기술을 이해해야 합니다 | |
성능 최적화 | 캐싱 전략 | 캐시 계층, 캐시 무효화, 캐시 일관성 등 다양한 캐싱 전략을 학습해야 합니다 |
성능 모니터링 및 분석 | APM(Application Performance Monitoring) 도구, 메트릭 수집, 병목 분석 방법을 익혀야 합니다 | |
부하 테스트 | 부하 테스트 도구, 테스트 시나리오 설계, 결과 분석 방법을 이해해야 합니다 | |
클라우드 및 인프라 | 컨테이너화 | Docker, Kubernetes 등 컨테이너 및 오케스트레이션 도구 사용법을 학습해야 합니다 |
IaC(Infrastructure as Code) | Terraform, AWS CloudFormation 등 인프라 자동화 도구를 익혀야 합니다 | |
클라우드 서비스 모델 | IaaS, PaaS, SaaS, FaaS 등 다양한 클라우드 서비스 모델의 특성을 이해해야 합니다 | |
개발 및 운영 | CI/CD 파이프라인 | 자동화된 빌드, 테스트, 배포 프로세스 구축 방법을 학습해야 합니다 |
로깅 및 모니터링 | 로그 집계, 분산 추적, 알림 시스템 등 운영 모니터링 기술을 익혀야 합니다 | |
장애 대응 및 복구 | 복원력 패턴, 장애 격리, 자동 복구 메커니즘 등을 이해해야 합니다 |
용어 정리
용어 | 설명 |
---|---|
클라이언트 (Client) | 서비스를 요청하고 사용자와 상호작용하는 애플리케이션이나 시스템 |
서버 (Server) | 클라이언트의 요청을 처리하고 서비스를 제공하는 컴퓨터 또는 프로그램 |
API (Application Programming Interface) | 애플리케이션 간의 통신을 위한 인터페이스 규약 |
REST (Representational State Transfer) | 자원을 URI로 표현하고 HTTP 메서드를 사용하여 자원을 조작하는 아키텍처 스타일 |
마이크로서비스 (Microservices) | 작고 독립적인 서비스들로 구성된 애플리케이션 아키텍처 방식 |
로드 밸런싱 (Load Balancing) | 여러 서버에 네트워크 트래픽을 분산하는 기술 |
HTTP (Hypertext Transfer Protocol) | 웹에서 클라이언트와 서버 간 통신을 위한 프로토콜 |
웹소켓 (WebSocket) | 클라이언트와 서버 간의 양방향 통신을 지원하는 프로토콜 |
CDN (Content Delivery Network) | 지리적으로 분산된 서버 네트워크를 통해 콘텐츠를 더 빠르게 전달하는 시스템 |
캐싱 (Caching) | 자주 사용되는 데이터를 임시 저장하여 접근 속도를 높이는 기술 |
무상태 (Stateless) | 각 요청이 이전 요청과 독립적으로 처리되는 시스템 특성 |
상태유지 (Stateful) | 이전 상호작용의 컨텍스트를 유지하는 시스템 특성 |
프록시 서버 (Proxy Server) | 클라이언트와 서버 사이에서 중개 역할을 하는 서버 |
애플리케이션 서버 (Application Server) | 비즈니스 로직을 실행하는 미들웨어 서버 |
에지 컴퓨팅 (Edge Computing) | 사용자와 가까운 위치에서 데이터 처리를 수행하는 분산 컴퓨팅 패러다임 |
서버리스 (Serverless) | 개발자가 서버 인프라를 관리할 필요 없이 코드를 실행할 수 있는 클라우드 컴퓨팅 모델 |
웹어셈블리 (WebAssembly) | 웹 브라우저에서 고성능 코드를 실행하기 위한 바이너리 명령어 형식 |
서비스 메시 (Service Mesh) | 마이크로서비스 간의 통신을 관리하는 인프라 계층 |
mTLS (mutual TLS) | 클라이언트와 서버가 서로 인증서를 검증하는 양방향 암호화 통신 방식 |
벡터 데이터베이스 (Vector Database) | 벡터 임베딩을 효율적으로 저장하고 검색하는 데이터베이스 시스템 |
High Availability (고가용성) | 시스템 장애 발생 시에도 지속 가능한 특성 |
Horizontal Scaling | 클라이언트 수평 확장 |
Vertical Scaling | 서버 성능 업그레이드 |
참고 및 출처
- Client-Server Architecture Fundamentals
- Client-Server Testing Challenges
- Backend Architecture Best Practices
- 2025 Backend Trends
- AWS Client-Server Architecture 설명 문서
- Cloudflare Edge Computing 설명 문서
- Serverless Framework 공식 문서
- GraphQL 공식 문서
- Mozilla Developer Network - Client-Server Overview
- OWASP - Web Service Security Cheat Sheet
- Microsoft - Cloud Design Patterns
- AWS - Best Practices for API Gateway
- NGINX - Microservices: From Design to Deployment
- Martin Fowler - Patterns of Enterprise Application Architecture
- Google Cloud - Microservices Architecture on Google Cloud
- The Twelve-Factor App
- Web Fundamentals - Performance
- Cloudflare - What is Edge Computing