◈ Section 1 : Understanding Web Application
□ Web Server & Web Application Server(WAS)
○ Web Server: 정적 리소스(파일)
○ WAS : 애플리케이션 로직 → 애플리케이션 코드를 실행하는데 더 특화.

○ 정적 리소스와 애플리케이션 리소스의 사용량 증가시 각각 별도로 Web Server와 WAS를 증설시켜 효율적으로
리소스를 관리할 수 있다.
□ Servlet
: TCP/IP통신 및 HTTP요청을 처리하고 응답을 자동으로 수행하는 기능을 제공
○ Servlet Container
: Servlet을 지원하는 WAS
- Servlet 객체는 싱글톤으로 관리.
- 멀티 쓰레드 처리 지원
- JSP도 Servlet으로 변환 되어서 사용
□ Thread
: 애플리케이션 코드를 하나하나 순차적으로 실행하는 것을 Thread
(자바 메인메서드 실행시 main이라는 이름의 Thread가 실행. 쓰레드가 없을시 실행 불가.)
Thread는 한번에 하나의 코드Line만 수행하며, 동시 처리 필요시 쓰레드 추가 생성.
○ 단일 Thread 사용

○ 요청 발생마다 쓰레드를 생성할 수 있지만
→ 생성 비용이 비싸고 응답속도가 늦어진다.
→ 스위칭 비용이 발생한다.
→ Thread는 생성 제한이 없어 요청이 너무 많을시에 서버가 다운될수도 있다.
○ Thread Pool

- Thread가 미리 생성되어 있어 응답시간이 빠르며 Thread생성 종료 비용(CPU)가 절약된다.
- Thread의 최대치가 정해져 있어, 요청이 많이 들어와도 기존 요청에 대해 안전하게 처리가 가능하다.
(개발자는 Thread pool의 최대치만 요건 및 상황에 맞게 설정하면 WAS가 나머지는 잘 해결해준다.)
□ SSR & CSR
○ SSR (Server-Side Rendering)
- HMTL 최종 결과를 서버에서 만들어서 웹 브라우저에 전달.
- 주로 정적인 화면에 사용
- JSP, Thymeleaf → 백엔드 개발자
○ CSR (Client-Side Rendering)
- HMTL 결과를 자바스크립트를 이용하여 웹 브라우저에서 동적으로 생성해서 적용.
- 주로 동적인 화면에 사용
- React, Vue.js → 프론트엔드 개발자