인터넷 web server web application server

강정우·2023년 11월 27일
0

네트워크

목록 보기
22/32

웹 서버

  • HTTP 기반으로 동작
  • 정적 리소스 제공, 기타 부가기능
  • 정적(파일) HTML, CSS, JS, 이미지, 영상
  • 예) NGINX, APACHE

기능

  • 웹 서버는 위와같은 기능을 한다.
    req가 오면 물론 UDP 기반의 HTTP3가 있긴 하지만 대부분은 TCP/IP 프로토콜을 쓰니까 3-way handshake 갈겨주고 소켓이 연결이 되면 메시지를 짤라서 파싱해서 읽고... etc... 하다가 중간에 이제 의미있는 비즈니스 로직이 등장하고 그거 끝나면 또 결과 req message를 만들어다가 보내줘야한다.

  • 그런데 비즈니스 로직을 제외한 나머지를 계속한다? 미치는 노릇이다. 그래서 나온것이 Servelt이다.
    이는 다음 포스팅에서 다루도록 하겠다.

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

  • HTTP 기반 동작
  • 웹 서버 기능 포함+ (정적 리소스 제공 가능)
  • 웹 서버와 차이는 프로그램 코드를 실행해서 어플리케이션 로직 수행
    • 동적 HTML, HTTP API(JSON)
    • 서블릿, JSP, 스프링 MVC
  • 예) Tomcat, Jetty, Undertow

웹 서버 vs WAS

  • 웹 서버는 정적 리소스(파일), WAS는 어플리케이션 로직
  • 사실은 둘의 용어도 경계도 모호하다.
    • 웹 서버도 프로그램을 시행하는 기능을 포함하기도 함
    • 웹 어플리케이션 서버도 웹 서버의 기능을 제공함
  • 자바는 서블릿 컨테이너 기능을 제공하면 WAS
    • 서블릿 없이 자바코드를 실행하는 서버 프레임웤도 있다.
  • WAS는 어플리케이션 코드를 실행하는데 더 특화

웹 시스템 구성

WAS, DB

  • WAS, DB만으로 시스템 구성 가능
  • WAS는 정적 리소스, 어플리케이션 로직 모두 제공 가능

  • 그럼 WAS가 만능처럼 보이지만 위 사진을 보면 알 수 있는 WAS의 과부하가 너무 심하다.
  • 가장 "비싼" 어플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다.
  • WAS 장애시 오류 화면도 노출이 불가능하다.

WEB server, WAS, DB

  • 정적 리소스는 웹 서버가 처리
  • 웹 서버는 어플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임
  • WAS는 중요한 어플리케이션 로직 처리 전담

  • 그리고 이는 효율적인 리소스 관리가 가능한데
    • 정적 리소스가 많이 사용되면 Web 서버를 증설하고
    • 어플케이션 리소스가 많이 사용되면 WAS를 증설하면 된다.
  • 또한 정적 리소스만 제공하는 웹 서버는 잘 죽지 않고
  • 어플리케이션 로직이 동작하는 WAS 서버는 여전히 잘 죽지만
    WAS, DB 장애지 WEB 서버가 오류 화면을 제공할 수 있기 떄문에 UX 적인 측면에서 OK이다.

  • 또 최근에는 CDN이라고 정적 리소스들을 캐시할 수 있는 중간서버(프록시서버)가 있다.

  • 또 사바사이긴한데 API로 데이터만 제공하는 서버는 웹서버가 없어도 되긴 하다.
    즉, 회사끼리 데이터를 주고받을 땐 WAS만 있어도 괜춘하긴 하다.

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글