[CS] 6. 서버, 클라이언트, WAS, DB 서버
클라이언트
클라이언트는 네트워크를 통해 서버에 데이터 또는 서비스를 요청(Reqeust)하며 서버로부터 응답(Response)을 받는다. 클라이언트는 우리와 같은 사용자가 될 수도 있고 컴퓨터, 스마트폰 같은 기기가 될 수도 있으며, 애플리케이션이나 웹 브라우저가 될 수도 있다. 웹 브라우저 같은 경우는 "웹 클라이언트"라고도 한다.
서버
클라이언트로부터 네트워크를 통해 받은 요청(Reqeust)을 처리 후 정보나 데이터를 응답(Response) 해주는 컴퓨터(Service provider)를 뜻한다. 데이터베이스(DB)에 들러 필요한 정보를 가져다 가공하여 클라이언트에게 가져다 준다.
다수의 클라이언트에게 서비스를 제공하기 때문에 고사양의 하드웨어를 갖춘 컴퓨터여야 한다. 컴퓨터의 사양으로 서버와 클라이언트를 구분하는 것이 절대 아니다. 서비스를 제공하는 쪽이 서버이다.
웹 서버: 웹 서버에 각종 정보를 담은 웹 페이지를 저장한 후 서버의 웹 페이지를 요청하는 클라이언트에게 제공한다.
웹 브라우저: 웹 서비스 이용자는 웹 브라우저라는 전용 클라이언트 어플리케이션으로 웹 서버가 제공하는 서비스를 이용한다. 웹 브라우저가 웹 서버에게 필요한 페이지를 요청하면 웹 서버가 이에 대해 응답해 웹 페이지를 보내주고, 웹 브라우저가 이 웹 페이지를 받아 클라이언트에게 보여준다.
네트워크를 통해 데이터를 주고받는 주체는 결국 애플리케이션. 서버 클라이언트 구조에서는 각 서버들은 자신만의 사용자 인터페이스를 갖고 있었다. 쉽게 말하면 서버가 제공하는 서비스를 이용하기 위해 사용자는 각 서버에 대응하는 전용 클라이언트 애플리케이션을 컴퓨터에 설치해야 했던 것이다. 실제로 과거에는 메일 서버가 제공하는 이메일 서비스를 사용하려면 아웃룩 익스프레스(Outlook Express)와 같은 클라이언트 애플리케이션이 필요했다. 요즘은 메일 전용 클라이언트의 도움 없이 인터넷에서 웹 브라우저를 통해 메일 서비스 등을 사용할 수 있다. 이메일 서비스가 웹서비스로 통합되어 웹메일이 된 것이다. 이메일 서비스가 웹메일이 된 것처럼 인터넷의 대중화와 함께 개별적으로 제공되던 다양한 서비스들이 웹 서비스 형태로 이전되거나 통합되었다(인터넷 서비스의 웹 서비스화). 파일 전송, 원격 제어 서비스뿐만 아니라 온라인 게임도 웹 기반으로 서버를 만드는 추세(물론 복잡한 로직이 있는 경우에는 여전히 전용 서버를 개발한다).
Client-Server 커뮤니케이션
- Client-Server는 프로토콜에 따라 메시지를 교환
- 클라이언트는 API라는 추상화된 인터페이스를 바탕으로 원격 서버에 요청 (RPC : Remote Procedure Call) 을 하고, 응답에 대해 적절한 형태로 화면에 표시
Client-Server MESSAGING PATTERNS
- Request-Response
- 대표적으로 HTTP가 사용하는 메시징 패턴
- 보통 동기적으로 작동하며, 연결이 열리면 응답이 전달될떄까지 기다리거나, timeout 전달
- Publish-Subscribe
- 수신자가 지정되지 않은 대신, 메시지가 발행되면 구독을 신청한 수신자에게 일괄적으로 전달
- 비동기 메시징이며, 메시지 브로커 또는 Event bus 라고 불리는것이 중간에 구현되어야 함
- Push technology (Server push)
- Publish-Subscribe 모델의 일종
- 전송 요청이 클라이언트로부터 시작되지 않음
- HTTP/2에서 Server push 라는 이름으로 구현
- WebSocket 프로토콜을 이용해 구현 가능
인터넷의 작동 원리
- 브라우저 > HTTP Request URL + 요청메서드 > 서버
- 브라우저 < HTTP Response 상태코드 + 응답body < 서버
URL을 브라우저에 입력하면 벌어지는 일
- STEP 1: 도메인 이름 탐색
- 1) DNS 서버에 접속한 후, url의 IP가 무엇인지 요청
2) DNS 서버는 요청에 대한 응답으로 ip 리턴 - STEP 2: 웹 서버(HTTP) 요청 (request)
- DNS (Domain Name System) 서버
: 사람이 읽을 수 있는 도메인이름을 컴퓨터 기계가 읽을 수 있는 IP주소로 변환
- DNS (Domain Name System) 서버
- 1) 웹 서버의 라우팅(routing: 주소 탐색 규칙)에 따라 요청 처리
2) 서버가 요청에 대한 응답을 자원(resource: HTML/JS 파일 등)의 형태로 전달
3) 서버가 보내주는 자원을 브라우저에서 처리
HTTP (HyperText Transfer Protocol)
- 정의 : 데이터를 주고받을 수 있는 클라이언트와 서버 간 프로토콜(규약, 규칙, 약속)
- 주로 TCP/UDP 80번 포트를 사용
- 애플리케이션 레벨의 프로토콜로 TCP/IP위에서 작동한다.
- 매우 양도 많고 복잡하지만, 이러한 규칙이 있기 때문에, 모든 프로그래밍이 정해진 규칙 하에 서로 데이터를 교환할 수 있게 된다.
- HTTP로 보낼 수 있는 데이터는 HTML문서, 이미지, 동영상, 오디오, 텍스트 문서 등 여러종류가 있다.
WAS
웹 서버에 저장된 웹페이지를 웹브라우저에게 전달하던 역할에서 시작된 웹 서버는 사용자의 욕구에 부응하여 점차 다양한 기능을 제공하기 시작했다. 웹페이지를 매개로 작동하는 응용 프로그램들을 웹 서버와 구분하여 애플리케이션 서버 또는 웹 애플리케이션 서버(WAS, Wep Application Server)라고 부른다.
웹 애플리케이션 서버는 제공하고자 하는 서비스에 맞게 데이터를 가공하거나 다른 서버와 상호작용하면서 즉석에서 웹페이지를 만들어낸다. 즉 애플리케이션 서버가 이메일, 파일을 전송, 온라인 게임 등 다양한 서비스의 기능을 구현하는 것이다.
*. 보통 웹 서버, 애플리케이션 서버, 데이터베이스(Database)를 합하여 웹 (서버) 애플리케이션이라고 한다. 서비스의 성격이나 규모에 따라 하나의 서버 컴퓨터에 세 가지 프로그램을 설치할 수도 있고, 각각 별개의 컴퓨터, 나아가 수십 대의 컴퓨터에 설치하여 사용할 수도 있다.
WAS는 사용자가 입력한 데이터를 바탕으로 사용자마다 다른 웹페이지를 만들어 '나의 최근 검색어', '나의 장바구니' 등 개인화된 웹페이지를 구현 가능하다. WAS는 클라이언트와 상호작용 가능하다.
DB 서버
이러한 데이터를 저장하고, 잘 사용하기 위해서 이용되는 것이 데이터베이스 서버이다.
SQL은 구조화된 쿼리 언어를 의미하며, SQL은 관계형 데이터베이스를 다루는 표준 언어이다. SQL은 데이터베이스 레코드를 삽입, 검색, 업데이트 및 삭제하는 데 사용할 수 있으며, SQL은 데이터베이스의 최적화 및 유지보수를 포함한 다른 많은 작업을 수행할 수 있다.
MySQL, Oracle, Ms SQL Server, Aurora 등과 같은 관계형 데이터베이스는 SQL을 사용한다.
관계형 데이터베이스(DBMS, Database management system)는 사용자들이 데이터베이스에 접근하고, 데이터를 조작하며, 보고/표현할 수 있는 프로그램이다.
비관계형 데이터베이스(NoSQL): 비관계형 데이터베이스는 데이터 간의 관계를 줄이는대신 성능을 높이는데 목적으로 사용된다. 데이터끼리의 관계가 줄어들기 때문에 서버를 수평적으로 늘려 더 좋은 성능을 이끌어 낼 수 있다.
주로 Key, Value 형식으로 구성되어 있으며, JSON 방식으로 사용하기도 한다.
비관계형 데이터베이스에는 MongoDB, Casandra, AWS의 DynamoDB, Hadoop이 있으며, 메모리 DB로 Memcached, Redis 가 존재한다.
DBMS와 NoSQL 각자 장단점이 존재하기 때문에 적재적소에 사용하는 것이 중요하다. DBMS의 경우 회원 정보 등 복잡한 데이터의 관계가 있을 경우 적합하며, NoSQL은 로그 분석 등 단일 칼럼으로 사용할 수 있을 경우 적합하다.
Reference
https://better-together.tistory.com/60
쉽게 이해하는 네트워크 4. 서버, 클라이언트와 웹 서비스 (ft. 비즈니스 로직과 사용자 인터페이
서버와 클라이언트의 정의 및 서버의 종류 IT란? IT의 핵심은 ① 네트워크를 통해 ② 컴퓨터와 컴퓨터가 데이터를 주고받는 것입니다. IT에 대해 자세히 → IT란? 네트워크의 구성 포스팅에서 살펴
better-together.tistory.com
클라이언트와 서버 빠르게 개념잡기
IT계열에서 네트워킹의 개념은 '두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는것'을 네트워킹이라고 한다. 현재에는 셀 수도 없을 만큼 많은 수의 컴퓨터가 인터넷이라는 하나
velog.io
DB 서버란? DB 서버의 종류 및 소개
데이터베이스 서버란? 무엇일까요? 예를 들어 쇼핑몰 웹사이트는 사이트 내의 사용자 이름, 나이, 키 등의 개인 정보나 구매 이력 등 데이터 정보를 저장해야 합니다. 이 뿐만 아니라 사진, PDF 등
learn-news.info
https://velog.io/@delilah/Node.js-서버와의-연결통신-2-HTTP-Ajax-Fetch
[Node.js] 서버와의 연결/통신 (2) HTTP / Ajax / Fetch 💯️
goalBrowserServerAPIHTTPAjaxFetch웹이라는 공간에서 데이터가 어떤 형태로 전달되는지 이해한다서버와 어떻게 통신하는지 이해한다Web Architectures클라이언트, 서버, API의 정의Browser의 역할Browser와 서버
velog.io