2024.02.02 모각코 5회차 결과

2024. 2. 7. 20:50·2023-24 동계 모각코
계획
이번 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
'2023-24 동계 모각코' 카테고리의 다른 글
  • 2024.02.06 모각코 6회차 결과
  • 2024.01.31 모각코 4회차 결과
  • 2024.01.05 모각코 3회차 결과
  • 2023.12.29 모각코 2회차 결과
폐프
폐프
  • 폐프
    폐프의삶
    폐프
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • 2023 하계 모각코 (12)
      • 2023-24 동계 모각코 (8)
      • 2024 SW ACADEMY (5)
      • Spring (1)
      • JPA (0)
      • JAVA (2)
      • Database (10)
      • OS (5)
      • Network (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
폐프
2024.02.02 모각코 5회차 결과
상단으로

티스토리툴바