###이 둘의 차이는 무엇일까 ?
정적,동적인 운영의 차이
WAS는 애플리케이션 코드를 실행하는데 더 특화
실무에서의 용도는 어떻게 될까?
웹시스템 구성 - WAS,DB
그래서 현재는
서블릿이 생긴이유는 : 과거에는 HTTP 요청이 왔을떄 서버 대기 부터, HTTP 요청 메세지를 파싱해서 읽고 비즈니스 로직 실행에서 데이터베이스에 요청을 하고 마무리로
HTTP 응답메세지를 생성해 보내주며 소켓을 종료시키는 이러한 일련의 과정을 전부 다했다. 이러한 비효율적인 작업을 줄이기 위해 서블릿이 생겼고 서블릿은 '비즈니스 로직을 실행'만 개발자가 하게하고 나머지는 다 서블릿이 지원해 효율성을 높이기 위해 생겼다
개발자는 HTTP스펙을 매우 편하게 사용할 수 있게되었다.
HTTP 요청시
WAS는 Request,Response객체를 새로 만들어서 서블릿 객체 호출
개발자는 Request 객체에서 HTTP요청 정보를 편리하게 꺼내서 사용
개발자는 Response 객체에 HTTP 응답정보를 편리하게 입력
WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보 생성
서블릿 특징
서블릿 컨테이너는 서블릿 객체를 생성,초기화,호출,종료하는 생명주기 관리
싱글톤으로 관리
공유 변수 사용 주의
동시 요청을 위한 멀티 쓰레드처리 지원
(10000명정도 한번에 요청와도 자동으로 해결 할 수 있다)
클라이언트가 요청이 들어오면 해결을 위해 써블릿을 호출하는데 도대체 누가
' 써블릿 ' 을 호출할까?
답은 바로 => 쓰레드
요청마다 쓰레드 생성하면 장점과 단점이 존재
장점: 동시요청 가능,하나의 스레드가 지연되어도 나머지 쓰레드 정상 동작
단점: 쓰레드 생성 비용 비쌈, 고객 요청올떄마다 쓰레드 생성하면 응답속도 늦어짐
쓰레드 생성에 제한이 없기에 고객 요청이 너무많이오면 CPU메모리 임계점 넘어 서버죽음
이것을 해결하기 위해 WAS는 쓰레드 풀을 만들어 그안에 쓰레드 사용하고 반납할 수 있게 함 즉, 미리 만들어 놓고 빌려쓰고 가져다 쓰게 만듦
최대 쓰레드가 모두 사용중이거나 쓰레드 풀에 없으면 쓰레드를 대기하고 거절할 수 있게함
정적 리소스를 제공 : 고정된 HTML파일, CSS 이미지 제공
동적인 HTML 페이지의 제공: 동적으로 필요한 HTML파일을 생성햇 ㅓ전달
웹 브라우저 (요청) -> WAS가 -> DB(주문정보조회)를 한다음에 -> WAS에서 (동적으로 HTML 생성,타임리프) 통해 HTML 생성-> 웹브라우저에게 전달
HTTP API : HTML이 아니라 데이터를 전달, 주로 JSON 형식 사용
(예를 들면, 주문내역 보여주세요 라는 요청이오면 WAS가 주문정보를 조회하고
JSON형식으로 {"주문번호":100,"금액":5000}이렇게 데이터 정보를 내려줌
다양한 시스템에서 사용되는데 이럴떄 HTTP API가 사용된다
데이터만 주고받을떄, 만약 UI화면이 필요하면, 클라이언트가 별도 처리
앱, 웹 클라이어언트, 서버TO서버
서버개발자는 3가지를 고려해서 개발하면된다!
정적페이지 어떻게 제공할것인가, 동적HTML 어떻게 할것인가, HTTP API 어떻게 제공할까 이 3가지를 고려해서 개발해야한다.
SSR: 서버 사이드 렌더링
서버에서 최종 HTML생성해서 클라이언트에 전달
CSR: HTML결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용