참고
WAS (Web Application Server)
NOTE
DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server
Web Server → 정적 컨텐츠 담당
Web Container → 동적인 컨텐츠 담당
•
HTTP를 통해 컴퓨터나 장치에 Application을 수행해주는 미들웨어(소프트웨어 엔진) 이다
•
웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container)라고 부른다.
•
Application Server
◦
Servlet을 통해서 요청메시지를 처리함 ( Request, Response )
1.
Data get
2.
Logic
3.
response page
Web Server vs WAS
•
WebServer
◦
웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(html, css, Js, 이미지, 영상 등등..) 등을 제공함
◦
WAS를 거치지 않고 바로 데이터 제공, 동적인 컨텐츠 제공을 위한 요청을WAS에게 전달해줌
•
WAS
◦
Web Server의 기능을 구조적으로 분리하여 처리하고자 만들어짐
◦
주로 DB서버와 같이 수행됨
◦
ex) 서블릿, JSP, 스프링 MVC
참조
•
구분하는 이유
WAS가 장애가 발생하면 아무것도 못행..
◦
WAS가 WebServer의 기능도 모두 수행은 가능하지만 단점이 존재한다
◦
WAS에 장애가 발생했을 시 가용 서버 자체가 없기에 오류 화면 노출도 불가능하며WAS에 너무 많은 역할을 담당하게 되기에 서버 과부하가 생긴다.
◦
이러한 이유로 관심사 분리 웹 애플리케이션 서버 앞에 일반 웹 서버 (프록시 서버)를 놓는 방식을 권장한다.
•
프록시 서버(관심사의 분리)
Web Server(프록시)를 두어 부하를 줄인다!
◦
프록시(웹 서버)가 정적 리소스를 처리해서 WAS의 부담을 줄여준다!
확장면에서도 구분해서 할 수 있다
◦
리소스 관리가 효율적으로 이루어짐
▪
정적 리소스가 많아진다 → 웹 서버 증설
▪
애플리케이션 리소스가 많아진다 → WAS를 증설
◦
참고로 API만 제공한다면 굳이 웹 서버를 사용할 필요는 없음
WAS 실습 - SOCKET
NOTE
서버에서 처리해야 할 작업(순수 서버구현)
•
SOCKET 이란?
◦
프로세스가 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기
위한 실제 창구 역할을 한다
◦
프로토콜, IP 주소, 포트 넘버로 정의된다.
1.
Client class를 생성한다
2.
해당 클래스에 서버의 ip주소와 port번호를 넣고 출력 스트림으로 넘어간 후
Server Socket에 접근한다
3.
Server Socket class는 clinet가 접속을 했는지 확인하는 용도
4.
접근이 인식되면 서버는 클래스는 Socket.accpet()를 실행한다.
Socket으로 하는거라서 .java 파일 실행하고 주소로 직접 들어가야함
Socket 코드
Response , Request 코드
Clinet 요청받기 코드
QueryString 파싱 코드
SOCKET - GET
NOTE
Header
Response
GET - (처음 index.html 불러옴) 코드
Header
GET - (/list 게시판 목록 가져오기) 코드
SOCKET - POST
NOTE
header
payload
payload
POST - (글 생성) 코드