-
어느정도 http 스펙은 알아야, request && response 에 반응할 수 있음
-
스프링 부트를 사용하면 좋은점
WAS 서버를 내장하고 있기 때문에, 톰캣을 별도로 설치 및 적용 안해줘도 된다.
서블릿 컨테이너
- 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 한다.
서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다.
- 서블릿 객체는 싱글톤으로 관리
- client의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율적이다.
—> 최초 로딩 시점에 서블릿 객체를 싱글톤으로 미리 만들어두고 재활용한다.
—> 그렇게 되면, 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근한다.
- 공유 변수 사용 주의해야한다.
- 서블릿 컨테이너 종료시 서블릿 객체도 함께 종료된다.
- JSP도 서블릿으로 변환 되어서 사용한다
<aside>
💡 동시 요청을 위한 멀티 쓰레드 처리를 지원한다 (WAS)
- 멀티 쓰레드에 대한 부분은 WAS가 처리한다.
—> 개발자가 멀티 쓰레드 관련 코드를 신경쓰지 않아도 됨
- 개발자는 마치 싱글 쓰레드 프로그래밍을 하듯이 편리하게 소스 코드를 개발할 수 있는 것이다.
- 멀티 쓰레드 환경이므로 싱글톤 객체(서블릿, 스프링 빈)는 주의해서 사용해야 한다.
</aside>
멀티 쓰레드 (동시 요청) —> 백엔드에선 상당히 중요한 부분
- 서블릿 객체를 누가 호출하지? —> 쓰레드가 호출한다.
- 쓰레드란 ?
- 쓰레드 풀
쓰레드 풀의 적정 숫자는 어떻게 찾을까 ?
—> (배포 전에) 최대한 실제 서비스와 유사하게 성능 테스트를 해봐야한다.
백엔드 개발자가 서비스 제공시 3가지를 유의하며 코드를 짜야한다.
- 정적으로 제공되는 리소스
- 동적으로 생성된 HTML페이지를 어떻게 제공할지
- HTTP API 어떻게 제공할지
HTTP API
SSR - 서버 사이드 렌더링 —> 백엔드 개발자
- HTML 최종 결과를 서버에서 만들어서 웹 브라우저에 전달