쌤리

웹 서버, NGINX / APACHE 본문

IT 관련

웹 서버, NGINX / APACHE

saml2l 2020. 5. 19. 15:36
  • 웹 서버 (web server): HTTP 를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일)을 전송해주는 서비스 프로그램. 
  • 웹의 전체 적인 프로토콜은 다음과 같다
    1.  방문자가 웹 주소에 있는 문서를 요청한다.
    2.  웹 주소에는 DNS 와 IP 시스템이 알맞은 컴퓨터에게 요청을 전달할수 있게 해준다.
    3.  이 컴퓨터는 요청받은 웹페이지를 호스팅 해주는 컴퓨터이며 방문자에게 웹페이지를 "serve" 해준다
  • 웹 페이지는 기본적으로 HTML 문서이다. 각각 다른 웹페이지를 방문자에게 "serve" 하려면 컴퓨터는 서버 프로그램(server program) 이 있어야 한다. NginxApache 같은 소프트어가 요청을 처리, 분석해서 관련된 문서를 방문자의 브라우저에서 열람 가능하게 해준다.
  • NGINX 와 APACHE 는 사용자의 브라우저로 웹페이지를 전달해주는 웹서버이다. 

APACHE

  • APACHE 는 1995년에 등장
  • 스레드 / 프로세스 기반 구조
    • 클라이언트 요청 하나당 스레드 하나가 처리하는 구조.
      • 쓰레드 thread:  프로세스 내에서 실행되는 여러 흐름의 단위
      • 프로세스 vs 스레드 : 멀티프로세스와 멀티스레드는 양쪽 모두 여러 흐름이 동시에 진행된다는 공통점을 가지고 있다. 하지만 멀티프로세스에서 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지하고 있는 것과 달리 멀티스레드는 프로세스 내의 메모리를 공유해 사용할 수 있다. 또한 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다.
    • 요청이 많을수록 CPU와 메모리 사용이 증가하기 때문에 성능이 저하될 수 있다.

NGINX

  • 프로그램의 흐름이 이벤트에 의해 결정이 되는 EventDriven 방식의 웹 서버
    •  Event Driven 처리 기반 구조는 여러  개의 커넥션을 모두 Event-Handler 를 통해 비 동식 방식으로 처리해 머저 처리되는 것 부터 로직이 진행되도록 한다.  
      • Event Driven : 요청에 대한 각 상태를 정해서 Event 가 발생할 때마다 event 를 처리
    • NGINX 는 스레드를 많이 사용하지 않기 때문데 CPU 소모 낮음
    • 적은 수의 스레드로 효율적인 일처리, 스레드당 할당되는 메모리도 적음

 

참고: cntechsystems.tistory.com/24

Comments