

HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML (API) 등HTTP사용지금은 HTTP 시대!
HTTP 기반으로 동작ex) NGINX, APACHE 등
HTTP 기반으로 동작웹 서버 기능(정적 리소스 제공 기능) 포함프로그램 코드를 실행해서 애플리케이션 로직 수행ex) 톰캣(Tomcat) Jetty, Undertow📌
Web Server와Web Application Server의 용어 &경계는 모호함
Web Server도 프로그램을 실행하는 기능을 포함하기도 함Web Application Server도 웹 서버의 기능을 제공📌 Java는 서블릿 컨테이너 기능을 제공하면
Web Application Server
📌 WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있다.


너무 많은 역할을 담당하게 된다.서버 과부하 우려애플리케이션 로직이 정적 리소스 때문에 수행 못 할 수 있음WAS 장애시 오류 화면도 노출 불가능
Web Server는 정적 리소스 처리WAS에 요청을 위임애플리케이션 로직 처리 전담리소스 관리
Web Server 증설WAS 증설
Web Server는 장애가 거의 발생하지 않음

이전, 이후에 처리해야할 업무가 너무 많다!Web Application Server를 개발할 때 마다 이 과정을 반복 → 비효율적
Java를 사용하여Web을 만들기 위해 필요한 기술
클라이언트의요청을 처리하고, 그결과를 반환하는
Servlet 클래스의 구현 규칙을 지킨자바 웹 프로그래밍 기술

📌
Servlet은 비지니스 로직 전 후에 많은 업무를대신 처리해줌
@WebServlet(name ="helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet{
@Override
protected void servie(HttpServletRequest request, HttpServletResponse response){
// Application Logic
}
}
urlPatterns의 URL 호출 → Servlet Code실행HttpServletRequestHttpServletResponse매우 편리하게 사용 가능
HTTP 요청Request, Response객체 생성 → Servlet객체 호출Request객체에서 HTTP 요청 정보를 꺼내서 사용Response객체에 HTTP 응답 정보를 입력Response객체에 담겨있는 내용으로 HTTP 응답 정보 생성HTTP 응답
Servlet을 지원하는 WAS == Servlet Containerex) TomcatServlet 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리Servlet 객체는 싱글톤으로 관리비효율재활용Servlet 객체 인스턴스에 접근
⚠️ 공유 변수 사용 주의
Servlet Container 종료 → Servlet 객체 도 함께 종료JSP도 서블릿으로 변환 되어서 사용멀티 쓰레드 처리 지원
Servlet 객체를 호출한다.Servlet 객체를 누가 호출할까? → Thread !!Application Code 순차적으로 실행Java main method를 처음 실행 → main이라는 이름의 쓰레드 실행Thread가 없으면?Java Application 실행 불가능Thread는 한번에 하나의 코드 라인만 수행Thread 추가 생성


요청1의 처리가 지연되면 요청2 역시 지연된다.
동시 요청 처리 가능Resource(CPU, 메모리)가 허용할 때 까지 처리 가능Thread는 정상 동작Thread 생성 비용은 매우 비쌈Thread생성 → 응답 속도 늦어짐Context Switching비용 발생Thread 생성에 제한이 없음Server Down단점 보완
특징
Thread를 Thread Pool에 보관 & 관리Thread Pool에 생성 가능한 Thread 최대치를 관리Tomcat은 최대 200개 기본 설정 (변경 가능)사용
Thread Pool에서 꺼내서 사용Thread Pool에 해당 Thread 반납Thread가 모두 사용 중이면?요청 거절특정 시간 만큼 대기장점
(CPU) 절약응답 시간이 빠르다.처리 가능📌 WAS 의 주요 튜닝 포인트는
최대 쓰레드(max thread)수이다.
Max Thread 값을 너무 낮게 설정
동시 요청이 많을 때Server Resource는 여유로움응답 지연Max Thread 값을 너무 높게 설정
동시 요청이 많을 때Resource 임계점 초과 → Server DownThread Pool의 Max Thread의 적절한 값
상황에 따라 모두 다름성능 테스트를 통해 찾아야 함📌
Multithread관련 부분은WAS가 처리한다는 것이 핵심!!
개발자는 Multithread 관련 부분을 신경 쓰지 않아도 됨!! (Max Thread 값만 설정하면 됨)
⚠️
Multithread이므로싱글톤 객체(Servlet, Spring Bean 등)사용할 때 주의!!




데이터를 전달JSON 형식 사용클라이언트가 별도 처리
정적인 화면에 사용관련 기술
HTML 결과를 Javascript를 사용해 웹 브라우저에서 동적 생성 및 적용
주로 동적인 화면에 사용
관련 기술
참고
SSR을 사용하더라도, 자바스크립트를 사용해서 화면 일부를 동적으로 변경 가능
SSR - Server Side Rendering
SSR - Server Side Rendering 기술 학습 필수선택과 집중
📌 Backend 개발자의 Web Frontend 기술 학습은 선택
Backend 개발자는 수 많은 Backend 기술을 공부해야 함
Web Frontend도 깊이 있게 배우기엔 오랜 시간이 필요