TIL/Spring

TIL 2024-11-01 (Spring 입문 - Web Application)

myoma 2024. 11. 1. 21:15

1 ) Web Server

  • 웹 서버는 HTTP 기반으로 동작하며 정적 리소스(HTML, CSS, JS, 이미지 등)를 제공한다.
    • 정적 리소스? - 리소스가 이미 완성된 채로 서버에 존재하여 원본 그대로 응답하는 데이터

 

 

  • WAS(Web Application Server)
    • HTTP 기반으로 동작하며 웹 서버의 기능을 포함한다. 추가적으로 코드를 실행해서 Application 로직을 수행하고 DB와 상호작용하여 동적 컨텐츠를 생성.
    • 대표적인 WAS
      1. Tomcat - Spring boot 내장
      2. Jetty
      3. Undertow 

 

  • Web Server 와 WAS 차이점
    1. 실제로는 Web Server도 Application 로직 포함 가능.
    2. WAS는 Application 코드를 실행하는 것에 더욱 특화되어있다.
    3. java에서는 Servlet Container 기능을 제공하면 WAS 이다.

 

  • Web System 구성
    • WAS 만 사용하면 많은 문제점 발생.
    • 실제 Web System 구성
      • 정적 리소르는 Web Serve에서 처리, Application 로직이 필요한 경우 WAS에 전달
    • 실제 Web System 구성의 장점
      • 효율적으로 리소스 관리
      • 오류 화면 제공

 

 


2 ) Servlet

  • Servlet?
    • HTTP  프로토콜 기반 요청(Request) 및 응답(Response)을 처리하는데 사용.
    • JAVA에서 ServletDMS HttpServlet 클래스를 상속받아 구현되며, 웹 애플리케이션 개발의 핵심 기술 중 하나
  • 역할
    • 클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송하는 역할
  • 서버에서 처리해야 하는 작업
    1. 서버와 TCP/IP 연결
    2. HTTP Request Message  필요한 형태로 변환하여 읽기
      1. HTTP Method 및 URL 분석
      2. HTTP Header 분석
      3. HTTP Message Body 읽기 및 변환
    3. 분석을 결과를 통해 프로세스 실행
    4. 비지니스 로직 실행
    5. HTTP Response Message 생성
      1. HTTP Start Line 생성
      2. Header 생성
      3. HTTP Message Body에 응답 데이터를 요청한 형식에 맞춰 응답
      4. 처리가 불가하다면 예외처리
    6. 응답처리
    7. 연결 종료

 

 

  • Servlet 동작 순서
    1. WAS는 HTTP 요청 메시지를 기반으로 새로운 Request, Response 객체 생성
    2. WAS는 만들어진 Request, Response 객체를 서블릿 컨테이너에 넘겨주며 ExampleServlet 객체 호출
    3. ExampleServlet에서 비지니스 로직 처리
    4. 응답에 필요한 정보를 개발자가 입력
    5. WAS는 Response 객체 정보(개발자가 입력한 정보)로 HTTP 응답 메시지 생성

 

  • 개발자가 하는 일
    • Request 객체에 담겨져 있는 HTTP 요청 정보를 꺼내서 사용.
    • 생산된 Response 객체에 HTTP 응답 정보를 입력.

 

 

  • Servlet Container
    • 서블릿을 초기화, 생성, 관리, 호출, 종료하는 역할

 


 

  • Thread
    • 애플리케이션 코드를 하나하나 순차적으로 실행하는 것
    • Java에서  Main method를 실행하면 main이라는 이름을 가진 Thread가 실행되며 하나의 Thread는 한번에 하나의 코드 라인만 수행한다.
    • 동시 처리가 필요한 경우 추가적으로 생성해야한다,
  • SSR (Server Side Rendering) 
    • 서버에서 동적으로 HTML을 만들어 클라이언트에게 제공하는 기술로 백엔드 개발자 영역에 속한다.
    • 동작 흐름
      1. 서버에서 HTML 요청
      2. 서버에서 로직을 거친 후 DB 조회
      3. 조회 결과를 기반으로 HTML 동적 생성
      4. 생성된 HTML 응답
  • CRS (Client Side Rendering)
    • 웹 브라우저에서 자바스크립트를 사용해 동적으로 HTML을 생성해서 적용하는 기술
    • 웹을 모바일 앱처럼 부분 변경할 수 있게 해준다.
    • 동작 흐름
      1. HTML 요청, 비어있는 HTML을 응답 받는다. JS가 존재하는 주소 링크 응답
      2. 자바스크립트 를 요청
      3. HTTP API 요청을 하고 화면에 필요한 데이터를 JSON 형채로 응답받는다.
      4. 응답받은 JSON 데이터로 HTML을 동적으로 그린다.