본문 바로가기

Develop Log/개발 관련 잡학다식

Tomcat, Nginx

반응형

Tomcat, NginX

1. Tomcat

  • 의미
    • 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너(또는 웹 컨테이너)만 있는 웹 애플리케이션 서버
    • 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바서버 페이지(.jsp)와 자바 서블릿이 실행할 수 있는 환경을 제공
    • 관리툴을 통해 설정을 변경할 수 있지만, XML 파일을 편집하여 설정할 수도 있다.
    • HTTP 서버 자체 내장
  • Java Servlet
    • 웹 서버가 HTTP 프로토콜을 상요하여 동적 Java 기반 웹 콘텐츠를 처리할 수 있도록 하는 소프트웨어
    • Java Servlet 및 JSP는 Java 프로그래밍 언어를 기반으로 한다는 점에서 PHP 또는 ASP.NET와 대체로 비슷함
  • Coyote 엔진으로 구성되어 있으며 Tomcat의 기능을 확장하여 여러 Java 엔터프라이즈 사양을 포함하고 Java Persistence API를 포함할 수 있다.
    • 더 많은 엔터프라이즈 기능을 포함하는 TomEE로 알려진 확장 버전도 존재
  • 장점
    • 오픈소스 : 누구나 어디서든 무료로 다운로드 설치 및 사용할 수 있다.
    • 높은 유연성 : 내장된 사용자 지정 옵션, 광범위하고 가벼운 특성으로 인해 높은 유연성을 제공하고 사용자가 원하는 방식으로 실행할 수 있으며 문제없이 여전히 잘 작동함
    • 안정성 : 가장 안정적인 플랫폼 중 하나이며 Apache 설치와 독립적으로 실행되기 때문에 매우 안정적이며 Teomcat에 장애가 발생하여 작동이 중지되는 경우에도 다른 서버는 문제없이 실행이 가능

2. Nginx

  • 의미
    • 가벼움과 높은 성능을 목표로 하는 비동기 이벤트 기반 구조의 웹서버 소프트웨어
    • 웹 서버, 리버스 프록시 및 메일 프로식 기능을 가진다
    • 어플리케이션 서버의 소켓을 가리기 위한 프록시 서버, 클러스터링 된 애플리케이션 서버의 로드밸런서 등 설정을 통해 원하는 방식으로 사용 가능
  • 하는 일
    • HTTP server
      • 정적 파일을 처리하는 web server의 역할
    • Reverse proxy server
      • 클라리언트의 요청을 각 Application server에 배분
      • ex) 클라이언트에서는 80 포트로만 요청이 들어오는데, 이 요청을 8080, xxxx등 여러 Application server로 보내준다
  • 장점
    • 요청 처리비용이 적다
      • 비동기적으로 요청을 애플리케이션 프로그램에 전달할 수 있고 요청을 처리하는 데에 드는 비용이 적다
    • 다양한 Event-driven api feature를 지원
      • 상대편 소켓이 셧다운 되거나 장애 발생 시 유연하게 대처 가능
    • 메모리 사용량이 적다
      • 비활성화된 HTTP keep-alive 연결 1만 개에 2.5mb의 메모리만 사용

3. 차이점

  • Apache
    • 스레드/프로세스 기반 구조로 요청 하나당 스레드 하나가 처리하는 구조
    • 사용자가 많으면 많은 스레드가 생성되고 메모리와 CPU의 낭비가 심함
  • Nginx
    • 비동기 Event-Driven 기반의 구조
    • 다수의 연결을 효과적으로 처리 가능
    스레드 방식

스레드 방식

 

Event-driven 방식

Event-driven 방식

스레드 방식의 경우 하나의 커넥션당 하나의 스레드를 잡아먹지만 이벤트 드라이븐 방식은 여러 개의 커넥션을 모두 Event Handler를 통해 비동기 방식으로 처리해 먼저 처리되는 것부터 진행이 되도록 함

 

참고 사이트

https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%ED%86%B0%EC%BA%A3

https://www.javatpoint.com/what-is-tomcat

https://azderica.github.io/00-network-nginx/

https://m.blog.naver.com/jhc9639/220967352282

https://blog.mayleaf.dev/18

반응형

'Develop Log > 개발 관련 잡학다식' 카테고리의 다른 글

HTTP Method  (0) 2023.07.21
OSI(Open Systems Interconnection) 7계층  (0) 2023.07.18
ORM  (0) 2023.07.17
Http 버전별 특징  (0) 2023.07.16
첫번째 이야기 WAS, Web Server  (0) 2023.07.16