WAS는 Request 발생을 처리하기 위해, 실질적으로 아래의 과정을 수행한다.
설정된 Socket의 TCP/IP 연결 대기
HTTP Request 수신시 Parsing하여 읽음
Content-Type 확인
Body 내용 파싱하여 원하는 항목 추출 후 저장
비지니스 로직 실행
HTTP Response 메시지 생성
TCP/IP에 응답 전달, 소켓 종료
위의 과정에서 의미있는 로직은 5번 '비지니스 로직 실행' 뿐이며, 나머지는 일련의 반복적인 과정이다.
WAS를 A to Z 구현한다고 하면, 위에서 설명한 7개 과정을 모두 코딩해야한다. 하지만 Servlet을 통해 5번 '비지니스 로직 수행' 과정을 제외한 나머지 과정을 Servlet을 통해자동화할 수 있으며, 이를 통해 개발 생산성을 높일 수 있다.
@WebServlet(name="orderServlet", urlPatterns="/order")
public class OrderServlcet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response){
//로직 구현
}
}
Spring에서는 위와 같이 @WebServlet을 통해 HTTP 메시지 처리/생성을 위한 과정들을 자동화하고, service 함수만을 구현하여 비지니스 로직 처리에 집중할 수 있다.
Servlet 기능을 지원하는 WAS를 Servlet Container라 부른다.
Thread Pool의 적정 숫자를 찾는법
로직 복잡도, 컴퓨팅 리소스에 따라 모두 다르며, 각종 툴을 통해 성능 테스트를 수행해야 한다. 보통 프로그램 실행시 CPU를 최소 50퍼정도는 사용하도록 튜닝해야한다.
튜닝 툴로는 Apache ab, Jmeter, nGrinder 등이 있다.