계획
이번 5회차에서는 spring이 동작하는 원리인 java의 servlet에 대해 알아보았다.
CGI
- Common Gateway interface
- 웹 서버가 외부 프로그램을 실행할 수 있도록 해주는 인터페이스 명세(specification)이다.
- 외부 프로그램 = 동적 웹 콘텐츠를 생성하는 역할을 한다.
- c,c++,java,php,go ....
- 웹 서버와 GCI 프로그램(Applicaiton)간의 규칙이다.
- 환경변수나 표준입출력을 다룰 수 있는 프로그램 언어라면 어떤 언어든지 확장하여 이용 가능하다.
- 실행속도나 텍스트 처리의 용이함 등의 이유로, perl이나 python, ruby 등의 스크립트 언어를 주로 사용한다.
CGI 프로그램
- 컴파일 방식
- 기계어, 컴파일 된 상태
- c++, c
- 인터프리터 방식
- 스크립트 언어
- Asp, Php, Python, Per
- 스크립트 엔진
- 해당 스크립트를 실행할 수 있는 엔진
- 즉시 코드를 수정할 수 있다.
CGI Spec
CGI Version 1.1
- RFC 3875에 정의된 CGI의 표준 버전이다.
입력과 출력
- 주로 표준 입출력을 사용한다. CGI 프로그램은 표준 입력으로 클라이언트의 요청을 받고, 표준 출력으로 응답을 생성한다.
Meta-Variables(메타 변수)
- 웹 서버에서 CGI 프로그램으로 전달되는 요청과 관련된 데이터를 나타낸다.
- 주로 환경 변수 (environment variable) 형태로 제공된다.
- SERVER_NAME : 웹 서버의 호스트 이름
- SERVER_PORT : 웹 서버의 포트 번호
- REMOTE_ADDR : 클라이언트의 IP주소
- REQUEST_METHOD : HTTP 요청의 메소드 (GET,POST 등)
- CONTENT_TYPE : HTTP 요청의 본문 유형
- CONTENT_LENGTH : HTTP 요청 본문의 길이
Script(스크립트)
- 서버에 의해 호출되는 소프트웨어를 나타낸다.
- 런타임에 해석되는 일련의 명령문으로 구성된다.
장점
- 언어, 플랫폼에 독립적이다.
- 구조가 단순하고 다른 서버 사이드 프로그래밍 언어에 비해 쉽게 수행한다.
단점
- 속도가 느림
- 매 요청마다 DB Connection을 새로 열어야한다.
- HTTP 요청마다 새로운 프로세스를 만들어 서버 메모리를 사용한다.
- 데이터가 메모리에 캐시 될 수 없다.
WAS
- WAS ( Web Application Server )
->영미권에서는 주로 (Java) Application Server 라고 부른다. - 주로 정적 웹 콘텐츠를 처리하는 웹서버(apache httpd, nginx)와 구분하기 위한 용도이다.
- Servlet Container(=Web Container), EJB Container 등의 역할을 수행한다.
- 동적 웹 콘텐츠를 생성하기 위한 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공한다.
- (Servlet만 한정해서 보면) 흔히 WAS = Servlet Container
tomcat
- apache 재단에서 개발한 무료 오픈 소스 WAS(Web Application Server)이다.
- Servlet Container의 reference 구현
요약
Servlet
- Java를 사용하여 동적 웹 콘텐츠를 생성하는 서버 측 프로그램이다.
- GCI 단점 해결 -> Servlet Container 도입
Servlet Container
- Servlet의 생명주기를 관리하고, URL과 특정 서블릿을 맵핑하여 URL 요청을 처리한다.
- Jave EE 아키텍처에 속한다.
Java EE
- Java 언어로 엔터프라이즈 애플리케이션을 개발하고 운영할 수 있도록 지원해 주는 플랫폼이다.
- 현재는 Eclipse 재단으로 운영이 넘어가서 Jakarta EE로 변경됨.
WAS
- Web Application Server (= Servlet Container)
tomcat
- apache 재단에서 만든 WAS 중의 하나이다.
- 사실상 Servlet Container = WAS = tomcat이다.
웹 서버와 WAS 연동 (Reverse Proxy)
Proxy
자원을 요청하는 클라이언트와 자원을 제공하는 서버 사이에서 중재자 역할을 하는 서버 프로그램
Forward Proxy
- 사용자의 실제 요청을 실제 서버가 직접 받는 것이 아니라 중간에서 포워드 프록시 서버가 대신 요청받아 실제 서버에 연결하여 그 결과를 클라이언트에 전달한다.(forward)
- Caching을 통한 성능 향상
- 웹 사용 환경 제한을 통한 보안 강화
Forward Proxy
Reverse Proxy
- 보안상의 이유로 DMS 존에 웹서버를 두고 Reverse Proxy로 설정하고 WAS는 내부망에 위치시킨다
- 상황에 맞게 웹서버나 WAS를 유연하게 늘릴 수 있다.
Reverse Proxy
'2023-24 동계 모각코' 카테고리의 다른 글
2024.02.06 모각코 6회차 결과 (0) | 2024.02.07 |
---|---|
2024.01.31 모각코 4회차 결과 (3) | 2024.02.07 |
2024.01.05 모각코 3회차 결과 (1) | 2024.01.07 |
2023.12.29 모각코 2회차 결과 (0) | 2024.01.02 |
2023.12.29 모각코 2회차 계획 (3) | 2024.01.02 |