0%

200826 TIL

HTTP(Hypertext Transfer Protocol)

  • Tim Berners-Lee와 그가 속한 팀은 CERN에서 HTML뿐만 아니라 웹 브라우저 및 웹 브라우저 관련 기술과 HTTP를 발명하였다.
  • 문서화된 최초의 HTTP버전은 HTTP v0.9(1991년)이다.
  • HTTP는 서버와 클라이언트가 인터넷 상에서 데이터를 주고받기 위한 protocol이다.
  • HTTP는 계속 발전하여 HTTP/2까지 버전이 등장했다.

HTTP 작동방식

  • HTTP는 Server/Client model을 따른다.
  • 장점
    • 불특정 다수를 대상으로 하는 서비스에는 적합하다.
    • 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에 클라이언트와 서버 간의 최대 연결 수 보다 훨신 더 많은 요청과 응답을 처리할 수 있다.
  • 단점
    • 연결을 끊어버리기 때문에, 클라이언트의 이전 상황을 알 수 없다.
    • 이러한 특징을 무상태(Stateless)라고 한다.
    • 이러한 특징 때문에 정보를 유지하기 위해서 Cookie와 같은 기술이 등장하게 되었다.

HTTP 요청 Method의 구조

  • 요청 Method: GET, PUT, POST, PUSH, OPTIONS등의 요청 방식이 온다.
    • GET: 정보를 요청하기 위해서 사용 (SELECT)
    • POST: 정보를 밀어 넣기 위해서 사용 (INSERT)
    • PUT: 정보를 업데이트하기 위해서 사용 (UPDATE)
    • DELETE: 정보를 삭제하기 위해서 사용 (DELETE)
    • HEAD: (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
    • OPTIONS: 웹서버가 지원하는 메서드의 종류를 요청한다.
    • TRACE: 클라이언트의 요청을 그대로 반환한다. 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용한다.
  • 요청 URI: 요청하는 자원의 위치를 명시한다.
  • HTTP 프로토콜 버전: 웹 브라우저가 사용하는 프로토콜 버전이다.

URL(Uniform Resource Locator)

  • 인터넷 상의 자원의 위치
  • 특정 웹 서버의 특정 파일에 접근 하기위한 경로 혹은 주소

Web Server

  • Web Server는 Web Server Software 가 동작하는 컴퓨터를 말한다.
  • Web Server의 가장 중요한 기능은 Client가 요청하는 HTML문서나 각종 Resource를 전달하는 것이다.
  • Web brower나 web crawler가 요청하는 Resource는 컴퓨터에 저장된 정적 데이터 이거나 동적인 결과가 될 수 있다.

Web Server Software의 종류

  • 가장 많이 사용하는 웹 서버는 Aphache, Nginx, Microsoft IIS
  • Apache 웹 서버는 Apache Software Foundation에서 개발한 웹서버로 오픈소스 소프트웨어(Open-source Software)이며, 거의 대부분 운영체제에서 설치 및 사용을 할 수 있다.
  • Nginx는 차세대 웹서버로 불리며 더 적은 자원으로 더 빠르게 데이터를 서비스하는 것을 목적으로 만들어진 서버이며 Apache웹 서버와 마찬가지로 오픈소스 소프트웨어입니다.

WAS(Web Application Server)

  • WAS는 일종의 MiddleWare로 Web Client(보통 web browser)의 요청 중 보통 web application이 동작하도록 지원하는 목적을 가진다.
  • 초창기 Web Server는 정적인 content를 주로 제공하였으나 동적인 컨텐츠의 수요가 증가 함에 따라서 WAS가 대두 되게 되었다.
  • WAS가 보통 웹 서버 기능을 내장하고 있다.
  • 현재는 WAS가 가지고 있는 웹 서버도 정적인 contents를 처리하는데 있어서 성능상 큰 차이가 없다.
  • 규모가 커질수록 웹 서버와 WAS를 분리한다.
    • 자원 이용의 효율성 및 장애 극복 기능(failover), 유지 보수의 편의성을 위해 분리
  • 보통 Web Server가 WAS 앞단에서 동작하도록 한다.

Client/Server 구조

  • Client는 Service를 제공하는 Server에게 정보를 요청하며 응답 받은 결과를 사용합니다.

DBMS(Database Management System)

  • 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어

MiddleWare

  • Client쪽에 비즈니스 로직이 많을 경우, Client 관리(배포 등)로 인해 비용이 많이 발생하는 문제가 발생
  • 비즈니스 로직을 Client와 DBMS사이의 middleware server에서 동작하도록 함으로써 client는 입력과 출력을 담당하도록 함

Apache Tomcat

Apache Tomcat is an open-source implementation of the Java servlet, JavaServer Pages, Java Expression Language and WebSocket technologogies.
Tomcat provies a “pure Java” HTTP web server environment in which Java code can run.

  • Apache Tomcat: The most widley used WAS developed from Apache Software Foundation.
  • Web Application can run on top of the WAS that is analogous to relation between application and Operating System.