아파치는 멀티 프로세스로 구현되어 있다. (prefork)
설정에 따라 멀티 스레드와 멀티 프로세스를 모두 사용하는 것으로 변경할 수 있다. (worker)
WS(Web Server)인 아파치로 요청이 들어오면 서로 다른 클라이언트일 경우 내용을 공유하면 안된다. 그래서 하나의 요청마다 독립적이므로 하나의 프로세스가 할당되는 멀티 프로세스로 구현이 된 것 같다. 하지만 두 방식을 섞은 worker 방식도 요청이 많을 때 사용한다고 한다.
톰캣은 요청을 처리하기 위한 쓰레드 풀을 관리하고 있다. 그리고 요청이 오면 해당 쓰레드 풀에서 쓰레드를 꺼내 요청을 처리하도록 한다.
WAS(Web Application Server)인 톰캣은 이렇게 하나의 클라이언트 요청이 들어오면 공유 자원을 바탕으로 서버 사이드에서 비교적 복잡한 비즈니스 로직을 처리하여 넘겨주기 때문에, 서로 값을 공유할 수 있는 멀티 스레드를 사용하는 것 같다. 예를 들어, Repository, Controller 등의 객체를 한 프로세스에서 스레드끼리 공유하는 것이다.