Web Server

2020.06.06

@godori at sat10am

Topic

NGINX

Load Balancing

WAS

Web Server

...

Web Server

Web Server

Web Server

HTTP 요청에 대해 정적인 컨텐츠를 제공하는 서버

Web Application Server

서버 사이드 코드를 이용하여 동적인 컨텐츠를 만드는 서버

WAS

+

WAS

+

+

WAS = 웹 서버 + 웹 컨테이너

HTTP 요청

정적 컨텐츠 제공

서블릿 : HTTP 텍스트자바 오브젝트로 변환해주는 자바 언어의 표준 규격

웹 컨테이너 혹은 서블릿 컨테이너

WAS = 웹 서버 + 웹 컨테이너

CGI

Common Gateway Interface

WAS 가 없던 당시 웹서버에서

동적 컨텐츠를 처리하기 위해 고안된 게이트웨이 인터페이스

CGI

Common Gateway Interface

Gateway  챕터에

자세히 나옴

문제점

하나의 요청마다 웹 서버가 하나의 프로세스를 생성하기 때문에 부하가 심함

다양한 해결법

fastCGI 나 Java 의 Servlet, Python의 WSGI 등

  • ASGI - The spiritual successor to WSGI, adding support for asynchronous applications
  • Rack – Ruby web server interface
  • PSGI – Perl Web Server Gateway Interface
  • SCGI – Simple Common Gateway Interface
  • JSGI – JavaScript web server gateway interface

WAS in Python

uWSGI를 통해 웹서버(Nginx)가 보낸 요청을 파이썬 언어로 해석

WAS in Ruby

RACK를 통해 사용자 요청을 Ruby 언어로 변환하여 Rails에 전달

WAS in Node.js

Node.js 빌트인 http 사용

Web Server

 Socket

HTTP Request

GET /index.html HTTP/1.1

Host: www.godori.dev
User-Agent: curl/7.54.0
Accept: */*

HTTP Resonse

HTTP/1.1 200 OK

Content-Encoding: gzip

Content-Type: text/html; charset=UTF-8
Content-Length: 606


<title>Hello World!</title>
 

 

즉, 웹 서버의 핵심은

 

HTTP 요청

 

소켓 통신을 통해 처리하고

 

HTTP응답을 보내는 것

 

자바에서는 소켓 통신 & HTTP처리

서블렛 엔진(HTTP Parser)이 포함된

서블릿 컨테이너로 처리하기 시작하다가

서블릿 엔진에 뷰와 데이터 오브젝트 처리 로직이 추가되고

MVC 패턴을 적용한 형태로 발전한다

 다음에 계속..

Made with Slides.com