우리가 사용하는 웹페이지는 아파치와 톰캣으로 이루어져있다. 리눅스 서버를 만들거나 웹서버를 만들다보면 아파치 톰캣을 설치하라고 한다. 그 아파치와 톰캣의 기능과 차이를 아는 것 또한 중요하다.
아파치 (Apache)
아파치 소프트웨어 재단의 오픈소스 프로젝이다. 일명 웹서버로 불리며, 클라이언트 요청이 왔을때만 응답하는 정적 웹페이지에 사용된다.
톰캣 (Tomcat)
dynamic(동적)인 웹을 만들기 위한 웹 컨테이너, 서블릿 컨테이너라고 불리며, 웹서버에서 정적으로 처리해야할 데이터를 제외한 JSP, ASP, PHP 등은 웹 컨테이너(톰캣)에게 전달한다.
WAS(Web Application Server)
하지만 톰캣(WAS)를 쓰면 동적인 데이터 처리가 가능하다. DB연결,데이터 조작, 다른 응용프로그램과 상호 작용이 가능하다. 톰캣은 8080포트로 처리한다.
기본적으로 위처럼 아파치와 톰캣의 기능은 나뉘어져 있지만,
톰캣 안에 있는 컨테이너를 통해 일부 아파치의 기능을 발휘하기 때문에
보통 아파치 톰캣으로 합쳐서 부르곤 한다.
프로세스
프로세스는 코드로 작성된 프로그램이 메모리에 적재되어 사용할 수 있는 상태가 된 것입니다. 프로그램 자체는 생명이 없습니다. 프로그램은 보조 기억장치에 존재하며, 실행되기를 기다리는 명령어(코드)와 정적인 데이터의 묶음입니다. 즉, 프로세스는 실행 중인 프로그램이라 말할 수 있습니다.
스레드
스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행하고, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 부릅니다.
멀티 프로세스(Multi process)
두 개 이상 다수의 프로세서(CPU)가 협력적으로 하나 이상의 작업(Task)을 동시에 처리하는 것입니다. (병렬처리)각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용합니다.
멀티 스레드(Multi Thread)
개념 - 하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것입니다.
멀티 스레드 vs 멀티 프로세스
아파치는 기본적으로 멀티 프로세스로 구현되어 있다. 하지만 설정에 따라 멀티 쓰레드를 같이 운용할 수 있다.
톰캣은 요청을 처리하기 위한 쓰레드 풀을 관리하고 있다. 그리고 요청이 오면 해당 쓰레드 풀에서 쓰레드를 꺼내 요청을 처리하도록 한다.
참고 자료 :
https://namu.wiki/w/%EC%95%84%ED%8C%8C%EC%B9%98%20HTTP%20%EC%84%9C%EB%B2%84
https://byul91oh.tistory.com/65
https://velog.io/@kdhyo/Apache-Tomcat-%EB%91%98%EC%9D%B4-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EC%A7%80
https://livenow14.tistory.com/67
https://mangkyu.tistory.com/95