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
실행HttpServletRequest
HttpServletResponse
매우 편리하게
사용 가능HTTP 요청
Request, Response
객체 생성 → Servlet
객체 호출Request객체
에서 HTTP 요청 정보를 꺼내서 사용Response객체
에 HTTP 응답 정보를 입력Response객체
에 담겨있는 내용으로 HTTP 응답 정보
생성HTTP 응답
Servlet
을 지원하는 WAS == Servlet Container
ex) Tomcat
Servlet 객체
를 생성, 초기화, 호출, 종료하는 생명주기
관리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 Down
Thread 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도 깊이 있게 배우기엔 오랜 시간이 필요