새소식

Backend/[Backend] ETC

[Backend ETC] 아파치 (Apache)

  • -

아파치 HTTP 서버 (Apache HTTP Server)

아파지 Http 서버는 웹 서버입니다. 
주로 정적인 콘텐츠(HTML 파일, 이미지, CSS 파일 등)를 클라이언트(웹 브라우저)에게 제공하는 역할을 합니다.

 

특징

 

  • 멀티 프로세스: 기본적으로 아파치는 멀티 프로세스 구조로 구현되어 있습니다. 즉, 여러 개의 프로세스를 생성하여 각 프로세스가 독립적으로 클라이언트의 요청을 처리합니다.
  • 멀티 쓰레드 지원: 설정에 따라 멀티 쓰레드 방식도 지원합니다. 이는 Apache MPM (Multi-Processing Module)이라는 모듈을 통해 가능합니다. MPM을 사용하면 멀티 프로세스와 멀티 쓰레드 중 하나를 선택할 수 있습니다.
  • 확장성: 다양한 모듈을 통해 기능을 확장할 수 있습니다. 예를 들어, PHP, Perl, Python 등의 스크립트를 실행할 수 있도록 하는 모듈을 추가할 수 있습니다.

 

 

 

 

아파치 톰캣 (Apache Tomcat)

아파치 톰캣은 웹 애플리케이션 서버(WAS)입니다. 
주로 동적인 콘텐츠(서블릿, JSP 등)를 처리하고 제공하는 역할을 합니다.
자바 서블릿과 JSP(JavaServer Pages), Spring을 실행할 수 있습니다.

 

특징

 

  • 멀티 쓰레드: 톰캣은 요청을 처리하기 위해 기본적으로 멀티 쓰레드 구조를 사용합니다. 즉, 요청이 들어오면 스레드 풀(Thread Pool) 내에서 스레드를 할당하여 처리합니다.
  • 서버사이드 자바: 자바 기반의 웹 애플리케이션을 실행하는 데 최적화되어 있습니다.
  • 통합성: 종종 아파치 HTTP 서버와 통합되어 사용되며, 아파치 HTTP 서버가 정적 콘텐츠를 처리하고 톰캣이 동적 콘텐츠를 처리하도록 설정할 수 있습니다.
대표) 자바 기반의 웹 애플리케이션 
1. Spring Framework 기반 웹 애플리케이션
2. JSP/서블릿 기반 웹 애플리케이션

 

 

 

참고) "멀티 프로세스"와 "멀티 쓰레드"

두 방식 모두 병렬 처리 방법이라는 공통점이 있지만, 동작 방식의 차이가 있습니다. 

멀티 프로세스 (Multi-Process)

  멀티 프로세스 (Multi-Process) 멀티 쓰레드 (Multi-Thread)
  하나의 응용 프로그램을 여러 개의 프로세스로 실행 하나의 프로세스 내에서 여러 개의 쓰레드를 실행
메모리 공간 각 프로세스는 자신만의 메모리 공간을 가지고 있으며, 프로세스 간에는 직접적인 메모리 공유가 없습니다. 같은 프로세스 내의 쓰레드들은 동일한 메모리 공간을 공유
효율성 각 프로세스가 독립된 메모리 공간을 사용하므로 메모리 사용량이 상대적으로 높습니다. 메모리 사용량이 적고, 쓰레드 간 전환이 빠릅니다. 쓰레드 생성과 종료가 프로세스보다 비용이 적습니다.
안정성 하나의 프로세스가 오류를 일으켜도 다른 프로세스에는 영향을 미치지 않습니다. 쓰레드가 메모리를 공유하기 때문에 동기화 문제가 발생할 수 있으며, 동기화 관리를 잘못하면 데드락이나 레이스 컨디션 같은 문제가 발생할 수 있습니다.
비용 및 속도 프로세스 간 전환 시 컨텍스트 스위칭 비용이 크며, 프로세스 생성과 종료에 더 많은 시간이 소요됩니다. 쓰레드 간 컨텍스트 스위칭 비용이 적어 더 빠르게 동작할 수 있습니다.
예시 웹 서버(Apache HTTP Server), 데이터베이스 관리 시스템 등. Java 애플리케이션, 웹 애플리케이션 서버(Apache Tomcat) 등.

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.