[MVC][1] 웹 어플리케이션 이해

kiteB·2021년 9월 7일
0

Spring 강의노트

목록 보기
21/24
post-thumbnail

스프링 MVC 1편

새로운 강의를 시작했습니다!

🔗 강의 링크


[ 웹 서버, 웹 어플리케이션 서버 ]

1. 웹 - HTTP 기반

  • 클라이언트 - 서버 통신할 때 HTTP를 기반으로 통신한다.
  • 서버 간에 데이터를 주고받을 때도 HTTP를 사용한다.

2. 웹 서버 vs 웹 어플리케이션 서버

1) 웹 서버(Web Server, WS)

  • 정적 리소스 제공(컴퓨터에 저장되어 있는), 기타 부가기능

2) 웹 어플리케이션 서버(WAS, 와스)

  • 웹 서버 기능 포함 + 정적 리소스 제공 기능
  • 프로그램 코드를 실행해서 어플리케이션 로직 수행

3) WS, WAS 차이

  • WS는 정적 리소스, WAS는 어플리케이션 로직
  • WAS는 어플리케이션 코드를 실행하는데 더 특화되어 있다.

3. 웹 시스템 구성

1) WAS, DB

WAS, DB 만으로 시스템 구성이 가능하다.

  • 하지만 이렇게 되면 WAS가 너무 많은 역할을 담당하게 되어 서버 과부하의 우려가 있다.
  • 정적 리소스를 서빙하는 것은 간단한데, 가장 비싼 애플리케이션 로직이 이 정적 리소스 때문에 수행이 어려워질 수 있다.
  • 또한, WAS가 생각보다 잘 죽는다. (장애 발생) → WAS 장애 시 오류 화면도 노출할 수 없다!

2) WS, WAS, DB

정적 리소스는 웹 서버가, 동적인 동작은 WAS에 요청을 위임한다.

  • 효율적인 리소스 관리가 가능하다.
  • 리소스만 제공하는 웹 서버는 잘 죽지 않지만 WAS는 잘 죽는다.
  • 이렇게 WAS 장애 또는 DB 장애 시 WS오류 화면을 제공할 수 있다!

[ 서블릿 ]

💡 서블릿이란?

서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램.

1. 서버에서 처리해야 하는 업무

1) WAS 직접 구현

  • WAS를 직접 구현해야 하는 경우, 의미있는 비즈니스 로직뿐만 아니라 여러 일을 모두 구현해줘야 한다.

2) 서블릿을 지원하는 WAS 사용

  • 하지만 서블릿을 지원하는 WAS를 사용하면, 이제 비즈니스 로직만 처리해주면 된다!

2. 서블릿 특징

  • WebServlet 어노테이션을 이용해 urlPatterns 속성으로 해당 URL이 호출되면 서블릿 코드가 실행된다.
  • HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest
  • HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse
  • HTTP 요청/응답 정보를 자바 객체화해서 제공하기에 사용이 매우 편리하다.
  • 개발자는 HTTP 스펙을 매우 편리하게 사용할 수 있다.

3. 서블릿 - HTTP 요청, 응답 흐름

/hello 경로로 HTTP 요청시

  1. WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체를 호출한다.
  2. 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용한다.
  3. 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력한다.
  4. WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성한다.

4. 서블릿 컨테이너

WAS 안에는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리하는 서블릿 컨테이너가 있다.

특징

  • 서블릿 객체는 싱글톤으로 관리한다.
    • 고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율
    • 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용
    • 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근
    • 공유 변수 사용 주의
    • 서블릿 컨테이너 종료시 함께 종료
  • JSP도 서블릿으로 변환 되어서 사용
  • 동시 요청을 위한 멀티 쓰레드 처리 지원
profile
🚧 https://coji.tistory.com/ 🏠

0개의 댓글