본문 바로가기

웹 프로그래밍/스프링

웹 애플리케이션 이해

웹 서버

HTTP 기반 동작

정적 리소스 제공(HTML, CSS, JS, 이미지, 영상)

예) APACHE

 

웹 애플리케이션 서버(WAS - Web Application Server)

HTTP 기반 동작

웹 서버 + 애플리케이션 로직(코드) 수행

동적 HTML, HTTP API(JSON)

서블릿, JSP, 스프링 MVC

예) Tomcat

 

웹 시스템 구성1 -WAS, DB

정적 리소스 때문에 핵심 비지니스 로직 수행이 어려울수 있음

 

웹 시스템 구성2 -WEB, WAS, DB

정적 리소스는 웹 서버가 처리 WAS는 비지니스 로직 전담

WAS나 DB 장애시 웹서버 에서 오류화면도 제고 가능

 

서블릿

WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출

또 Response 객체에 담겨있는 내용으로 HTTP 응답 정보 생성

 

서블릿 컨테이너

서블릿 객체를 생성, 초기화, 호출 종료(생명주기 관리)

서블릿 객체는 싱글톤으로 관리(공유 변수 사용 주의)

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

 

멀티쓰레드

애플리케이션 코드를 순차적으로 실행하는것은 쓰레드(main 쓰레드 처음 실행)

쓰레드는 한번에 하나의 코드 라인만 수행

 

요청마다 쓰레드 생성

장점: 동시 요청 처리 가능, 지연되도 다른 쓰레드는 정상 동작

단점: cost가 비쌈(속도 느려짐, 컨텍스트 스위칭 비용 발생), 쓰레드 생성에 제한 없어서 임계점을 넘어서 서버가 죽음

 

쓰레드 풀(여러 쓰레드 보관, 대기, 거절)로 해결-쓰고 반납

최대 쓰레드가 중요함

 

멀티쓰레드에 대한 부분은 WAS가 처리(개발자는 싱글 쓰레드처럼 코딩하면됨)

단, 싱글톤 객체(서블릿, 스프링 빈)는 주의해서 사용

 

HTTP 서비스 제공 3가지

정적리소스(컨트롤러), 동적 HTML 페이지(JSP, 타임리프), HTTP API

 

HTTP API

WAS가 HTML이 아니라 단순히 데이터를 전달(JSON)

데이터만 주고받고 UI 화면이 필요하면 클라이언트가 별도 처리

앱, 웹 클라이언트, 서버 to 서버

 

SSR(서버 사이드 렌더링)

서버에서 동적으로 최종 HTML을 생성해서 클라인언트에 전달(서버가 다 만듬)

백엔드

 

CSR(클라이언트 사이드 렌더링)

HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용

웹 환경을 마치 앱처럼 부분부분 변경할수있음(네이버 지도)

프론트엔드

 

redirect와 forward의 차이

redirect는 실제 클레이언트(웹 브라우저)에 응답이 나갔다가, 클라이언트가 redirect 경로로 다시 요청

따라서 클라이언트가 인지할수 있고, URL 경로도 실제로 변경됨, 반면에 포워드는 서버 내부에서 일어나는 호출이므로

클라이언트랑 상관이 없음

 

 

'웹 프로그래밍 > 스프링' 카테고리의 다른 글

스프링 MVC(2) 검증 정리  (0) 2023.04.14
스프링 MVC(1) 원리 정리  (0) 2023.04.08
빈 스코프  (0) 2023.02.20
빈 생명주기(라이프사이클) 콜백  (0) 2023.02.19
스프링 빈 가져올때 팁  (0) 2023.02.18