클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램 또는 장치를 의미한다.
간단히 정리하자면 서버란 요청을 받으면 데이터를 보내주는 프로그램이나 장치를 말한다.
이때 보내주는 데이터를 서비스라고 할 수 있다.
읽기 (GET)
쓰기, 생성 (POST)
수정 (PUT)
삭제 (DELETE)
웹 서버
웹 페이지를 배포할 수 있지만 애플리케이션을 배포하거나 호스팅 할 수 없는 서버.
S/W적 의미로 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹페이지를 반환하는 컴퓨터 프로그램
H/W적 의미로 이러한 프로그램을 실행하는 컴퓨터
Apache HTTP server, 마이크로소프트 IIS 등
애플리케이션 서버
사용자가 원격으로 액세스 할 수 있는 애플리케이션을 호스팅하거나 배포하는 서버.
WAS라고 불린다.
기본적인 기능 3가지
Apache tomcat, weblogic 등
프록시 서버
클라이언트와 서버의 중간에 위치하는 서버. (중계기)
요청 받았던 내용들을 캐시 형태로 저장해두고 캐시 안의 정보를 요구하는 요청을 중간에서 전달함으로써 전송 시간을 절약할 수 있게 한다.
보안을 위해 익명성을 유지하는 데 사용하기도 한다.
메일 서버
이메일 프로토콜(SMTP)을 사용하여 이메일을 보내고 받는 서버.
메일 전송 에이전트(송신), 메일 배달 에이전트(수신)로 구분된다.
둘 이상의 컴퓨터들이 통신할 때 호스트에 종속되어 통신하는 컴퓨터.
사용자가 서버에 접속하기 위해 사용하는 프로그램 또는 서비스.
데이터를 제공받는 쪽을 의미한다.
크롬, 익스플로러 같은 브라우저가 해당된다.
팻 클라이언트 (fat client)
스스로 다량의 데이터를 처리하는 클라이언트.
서버에 의지하지 않는다.
개인용 컴퓨터, 노트북 등이 해당
환경은 닷넷 프레임워크, 자바, 비주얼 스튜디오 등
씬 클라이언트 (thin client)
최소한의 클라이언트. 호스트 컴퓨터의 리소스 사용.
다량의 데이터를 처리하는 애플리케이션 서버가 제공한 사진을 그래픽으로 보여주는 역할.
환경은 js/ajax, asp, jsp, django, PHP 등
하이브리드 클라이언트
위 두 개를 합쳐놓은 형태.
로컬로 처리하지만 데이터 보관을 위한 서버에 의지한다.
서버와 클라이언트는 성능과 관계 없이 역할에 따라 구분된다.
역할은 애플리케이션이 결정한다.
클라이언트는 서버에 필요한 데이터를 요청한다.
서버는 클라이언트의 요청을 응답한다.
대표적인 웹 서버 - 클라이언트 구조로 월드 와이드 웹(WWW)이 있다.
- 비유하자면 (get 요청) 고객(클라이언트)가 네이버 웹툰을 보기 위해 도메인 주소를 입력하면
- DNS에서 입력된 도메인 값을 IP주소로 변환하여 웹브라우저로 전송한다.
- 전송받은 웹 페이지 정보를 HTTP 프로토콜을 사용하여 웹 서버에 요청 메시지를 전송한다.
- 서버에서 받은 내용을 분석하여 URL 정보에 해당하는 데이터를 검색하여 결과값을 응답 메시지로 생성하여 브라우저에 전송한다.
- 전송 받은 응답 메시지를 브라우저를 통해 변환하여 고객이 네이버 웹툰 페이지를 볼 수 있게 된다.
클라이언트 - 서버 구조를 이용한다.
특정 프로토콜을 사용하여 네트워크를 통해 통신한다.
WAS
브라우저라는 제약이 있기 때문에 HTTP 프로토콜만을 사용한다.
단방향 통신 모델을 사용한다. (connectionless, stateless)
웹 또는 브라우저에 캐시를 저장하여 캐싱한다.
생산성과 확장성이 중요하다. -> 프레임워크가 많다.(스프링부트,장고 등)
게임 서버
대규로의 사용자의 요청을 받기 때문에 많은 연산이 필요하다. -> 병렬 분산 처리를 사용한다.
서버가 클라이언트로 패킷을 전송할 수 있다.
서버가 요청에 대한 응답을 보내지 않아도 된다.
실시간 통신이 중요하다. (반응성) (응답 시간이 짧아야한다. -> 연산을 최저치로 유지)
실시간으로 변동되는 데이터를 다뤄야하지만 무결해야한다.