본문 바로가기

면접준비

MVC 1편 요약

 

(1) 웹 서버와 WAS 

 

- 지금은 바야흐로 HTTP의 시대임

 

- 웹 서버

(1) 정적 리소스 제공

(2) Nginx, Apache

 

- 웹 어플리케이션 서버(WAS)

(1) 웹 서버 기능을 포함하고, 애플리케이션 로직 실행 가능

(2) Tomcat

(3) 자바는 서블릿 컨테이너를 제공하면 WAS

 

- 웹 시스템 구성은 WAS, DB만으로 가능

-> 단, WAS가 너무 많은 역할을 담당하면, 서버 과부하 우려

-> 가장 비싼 애플리케이션 로직의 수행이 어려울 수 있음

 

- 정적 리소스는 웹 서버가 처리, 애플리케이션은 WAS가 처리로 분리

 

- 웹 서버는 잘 안 죽음. WAS는 잘 죽음.

 

 

(2) 서블릿

 

- 서블릿은 HTTP 통신을 하는데 있어서, 비즈니스 로직을 제외한 모든 것을 지원함

 

- HTTP 요청 정보를 쉽게 사용할 수 있는 HttpServletRequest

- HTTP 응답 정보를 쉽게 사용할 수 있는 HttpServletResponse

 

- HTTP 요청이 들어오면 Request 객체, Response 객체를 만듦

-> 요청 정보를 Request 객체에 담아서 받음

-> 서블릿 객체를 실행함

-> 응답 정보를 Response 객체에 담아서 반환함

-> 응답 메시지를 전달함

 

- WAS 안에 서블릿 컨테이너가 존재함

-> 서블릿 컨테이너는 서블릿 객체의 생명 주기를 관리함

-> 서블릿 객체는 싱글톤임

-> 공유 변수 사용에 주의해야 함

-> 동시 요청을 위한 멀티 쓰레드 처리를 지원함

 

 

(3) 멀티 쓰레드

- 백엔드 개발자는 멀티 쓰레드에 대한 개념이 중요함

 

- 쓰레드가 없으면 자바 어플리케이션의 실행이 불가능함

-> 동시 처리가 필요하면 쓰레드를 추가로 생성해야 함

 

 

- 요청마다 쓰레드 생성

(1) 장점

- 동시 요청 처리 가능

- 리소스가 허용할 때 까지 처리 가능

- 하나의 쓰레드가 지연되어도 나머지 쓰레드는 정상 동작 

 

(2) 단점

- 쓰레드 생성 비용이 너무 비쌈

- 쓰레드 컨텍스트 스위칭 비용이 발생

- 쓰레드 생성에 제한이 없음

 

- 보통 WAS는 내부에 쓰레드 풀을 사용함 

 

 

- 쓰레드 풀

(1) 특징

- 필요한 쓰레드를 쓰레드 풀에 보관함

- 쓰레드의 최대치 설정 가능함

 

(2) 장점

- 쓰레드를 생성하는 비용이 없음

- 생성 가능한 쓰레드의 최대치가 있어서, 기존 요청을 안정적으로 처리 가능

 

 

- 쓰레드 풀 실무 팁

-> WAS의 주요 포인트는 쓰레드 풀 최대 쓰레드 수

(1) 쓰레드 풀을 너무 낮게 설정하면?

-> CPU 이용률이 너무 낮음

(2) 쓰레드 풀을 너무 높게 설정하면?

-> 동시 요청이 너무 많으면, 서버 다운

 

- 쓰레드 풀의 적정 숫자는

  애플리케이션 로직, CPU, 메모리, I/O 리소스 등에 따라 다 다름

-> 성능 테스트가 필요함

 

- 멀티 쓰레드에 대한 부분은 WAS가 처리

 

 

(4) HTML, HTTP API, SSR, CSR

 

- 정적 리소스

 

- HTML

-> 동적 화면을 전달

 

- HTTP API

-> JSON 형식으로 주고 받음

 

- SSR

-> 서버 사이드 렌더링

-> 백엔드 개발자는 서버 사이드 렌더링 기술 학습 필수

 

- CSR

-> 클라이언트 사이드 렌더링

 

 

(5) 자바 백엔드 웹 기술의 역사

 

- 서블릿 - JSP - MVC 패턴 - MVC 프레임웍

'면접준비' 카테고리의 다른 글

면접 오답 노트  (0) 2022.08.12
자바 면접 준비  (0) 2022.07.19
스프링 면접 준비  (0) 2022.07.19
base64  (0) 2022.07.03
커피챗 0624  (0) 2022.06.24