[스프링 MVC 1편] - 웹 애플리케이션 이해

2022. 12. 31. 19:05·Spring

웹 애플리케이션 이해

모든 것이 HTTP

  • 모든 정보를 HTTP메시지에 담아 주고 받음
  • HTML, TEXT
  • IMAGE, 음성, 영상, 파일
  • JSON, XML (API)
  • 거의 모든 형태의 데이터 전송 가능

웹 서버(Web Server)

  • HTTP기반으로 동작
  • 정적 리소스(HTML , CSS , JS) 제공
  • EX) NGINX , APACHE

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

  • HTTP기반으로 동작
  • 웹 서버(비즈니스 로직) + 정적 리소스 실행 가능
  • 동적 HTML , HTTP API(JSON)
  • 서블릿 , JSP , 스프링 MVC
  • EX) Tomcat

웹 서버 vs 웹 애플리케이션 서버(WAS)

웹 시스템 구성 - WAS, DB

  • 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직
  • WAS가 모든 것을 처리할수 있지만 부담이 너무큼
  • WAS장애시 오류화면도 노출 불가능

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

  • 정적 리소스는 웹서버가 처리
  • 동적인 처리와 같은 부담이 큰 주요처리는 WAS에 위임
  • 정적 리소스 , 동적 리소스 각각의 부담에 따라 서버증설의 유동성 증가
  • 웹서버는 잘 죽지 않기때문에 WAS서버가 죽더라도 사용자에게 오류페이지 제공 가능

서블릿

HTML Form 데이터 전송

  • POST 전송 - 저장
  • 사용자가 다음과 같이 값을 넣어 서버로 전송하면 다음과 같은 HTTP메시지가 전송된다.

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

  • 서버에서는 사용자가 보낸 정보가 담긴 초록색 박스만이 필요하다! 하지만 초록박스 외의 부분을 모두 파싱(잘라내기)해서 의미있는 부분을 추출하는 작업을 진행해야한다.
  • 너무 반복적인 작업으로 생략할 방법 모색!

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

  • 서블릿을 지원하는 WAS 사용
  • 서블릿을 지원하는 WAS를 이용하면 파싱을 모두 자동으로 진행해 준다!

서블릿

서블릿

  • urlPatterns(/hello)의 URL이 호출되면 서블릿 코드가 실행
  • HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest
  • HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse

HTTP 요청, 응답 흐름

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

서블릿 컨테이너

  • 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 함
  • 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 '생명주기' 관리
  • 서블릿 객체를 싱글톤으로 관리
  • 공유변수 사용주의!!
  • JSP도 서블릿으로 변환되어 사용
  • 동시요청을 위한 '멀티 쓰레드' 처리 지원

동시 요청 - 멀티 쓰레드

  • 사용자가 요청하면 WAS서버에 연결될때 서블릿 객체를 누가 부를까?
  • -> 쓰레드가 서블릿 객체를 호출한다!!

쓰레드

  • 애플리케이션 코드를 하나하나 순차적으로 실행시켜주는 것을 쓰레드
  • 자바 메인 메서드를 처음 실행하면 main이라는 쓰레드가 실행
  • 쓰레드가 없으면 실행 불가
  • 동시처리가 필요하면 쓰레드를 추가로 생성

 

단일 요청 - 쓰레드 하나 사용

  • 클라이언트1이 요청하면 쓰레드1이 서블릿을 호출하고 코드를 돌게된다.
  • 동시에 클라이언트2가 쓰레드를 요청한다면 쓰레드가 1개이기 때문에 대기를 하게 된다
  • 이때 만약 클라이언트1의 요청이 지연된다면 서버가 오류나버릴수 있다!

쓰레드 풀

  • 미리 쓰레드를 여러개를 생성하여 쓰레드풀에 넣어준다.
  • 동시에 요청이 들어올때 쓰레드 풀에서 잔여 쓰레드를 꺼내 사용한다
  • 만약 쓰레드풀에 쓰레드가 비게 되면 그때는 대기하게한다.
  • 때문에 적정 튜닝이 중요하다!!

HTML, HTTP API, CSR, SSR

정적 리소스

  • 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공

HTML 페이지

  • 동적으로 필요한 HTML 파일을 생성해서 전달

HTTP API

  • HTML이 아니라 데이터를 전달
  • 주로 JSON 형식 사용
  • 다양한 시스템에서 호출

 


참고 강의

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

728x90
저작자표시 (새창열림)

'Spring' 카테고리의 다른 글

[스프링 MVC 1편] - 서블릿 HttpServletRequest(startLine, header)  (0) 2023.01.02
[스프링 MVC 1편] - 서블릿  (0) 2023.01.02
[spring] 게시판 CRUD 만들기  (0) 2022.12.30
JPA Auditing기능이란?  (0) 2022.12.29
스프링 핵심 원리[기본편] - 의존관계 자동 주입  (0) 2022.12.28
'Spring' 카테고리의 다른 글
  • [스프링 MVC 1편] - 서블릿 HttpServletRequest(startLine, header)
  • [스프링 MVC 1편] - 서블릿
  • [spring] 게시판 CRUD 만들기
  • JPA Auditing기능이란?
study ticket
study ticket
  • study ticket
    혼자하는 공부
    study ticket
  • 전체
    오늘
    어제
    • 개발 (77)
      • 오류 (1)
      • Spring (13)
      • Java (0)
      • Data structure (6)
      • Algorithm (49)
        • 백준 (17)
        • 프로그래머스 (2)
      • 문제풀면서 알게되는것들 끄적 (2)
      • 머신러닝 (4)
        • sklearn (3)
        • pandas (1)
      • 프로젝트 (0)
        • 핏두 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준1157
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
study ticket
[스프링 MVC 1편] - 웹 애플리케이션 이해
상단으로

티스토리툴바