2020.06.06
@godori at sat10am
HTTP 요청에 대해 정적인 컨텐츠를 제공하는 서버
서버 사이드 코드를 이용하여 동적인 컨텐츠를 만드는 서버
+
+
HTTP 요청
정적 컨텐츠 제공
서블릿 : HTTP 텍스트를 자바 오브젝트로 변환해주는 자바 언어의 표준 규격
웹 컨테이너 혹은 서블릿 컨테이너
Common Gateway Interface
WAS 가 없던 당시 웹서버에서
동적 컨텐츠를 처리하기 위해 고안된 게이트웨이 인터페이스
Common Gateway Interface
Gateway 챕터에
자세히 나옴
문제점
하나의 요청마다 웹 서버가 하나의 프로세스를 생성하기 때문에 부하가 심함
다양한 해결법
fastCGI 나 Java 의 Servlet, Python의 WSGI 등
uWSGI를 통해 웹서버(Nginx)가 보낸 요청을 파이썬 언어로 해석
RACK를 통해 사용자 요청을 Ruby 언어로 변환하여 Rails에 전달
Node.js 빌트인 http 사용
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 패턴을 적용한 형태로 발전한다
다음에 계속..