저번 글을 통해 톰캣의 전체적인 구조와 주요 컴포넌트들에 대해 파악할 수 있었다.
이번 글에는 톰캣의 Coyote, Catalina에 대해 알아보려고 한다.
Catalina란
Catalina는 Tomcat의 핵심 구성 요소로 Java 서블릿 스펙을 구현하는 서블릿 컨테이너 구현체이다.
Tomcat이 웹 서버 기능과 서블릿/JSP 컨테이너를 모두 포함하는 전체 패키지라면, Catalina는 Tomcat 내에서 서블릿 컨테이너 전체를 관리하고 구현하는 시스템이라고 생각하면 된다.
따라서 Catalina는 서블릿의 초기화, 실행, 소멸 등 전체 생명주기 등 컨테이너 내의 모든 서블릿의 라이프사이클을 관리한다.
이때 Catalina는 Engine 자체를 나타내는 것이 아니고 주요 5개 컴포넌트(Server, Service, Engine, Host, Context)를 포함한다.
개인적으로 Engine이라는 용어가 곧곧에서 튀어나와서 헷갈렸다.
Coyote란
톰캣의 Coyote는 HTTP 1.1과 HTTP 2.0 프로토콜을 지원하는 Connector 컴포넌트이다.
Connector 컴포넌트이기 때문에 당연히 서버로 들어오는 연결에 대해 요청을 수신하고 Engine에게 요청을 전달한다.
Coyote는 또한 정적 콘텐츠를 직접 처리할 수도 있는데, Coyote 덕분에 Tomcat은 Apache HTTP Server와 같은 별도의 웹 서버 없이도 웹 요청을 직접 처리할 수 있다.
즉, Catalina가 처리하는 서블릿/JSP 동적 콘텐츠뿐만 아니라 Coyote의 처리 덕분에 정적 콘텐츠도 직접 제공할 수 있어 톰캣이 완전한 웹 서버 역할을 수행할 수 있다.
'우아한테크코스 6기 > 4단계' 카테고리의 다른 글
API 성능 개선하기 2탄 (feat. 검색 전문 인덱스 적용하기) (1) | 2024.09.28 |
---|---|
API 성능 개선하기 1탄 (feat. N + 1과 불필요한 쿼리 개선) (0) | 2024.09.25 |
ApplicationContext vs ServletContext (0) | 2024.09.17 |
Tomcat의 전체 구조와 역할에 대해 알아보자 (0) | 2024.09.07 |
Http Status 300 Multiple Choices와 수동 리다이렉션은 언제 사용할까? (0) | 2024.09.04 |