web server
간단하게 말해서 HTML, 파일,이미지, 비디오 등 정적 웹 사이트의 컨텐츠에 대한 클라이언트 요청을 수행한다.
클라이언트는 거의 브라우저,모바일이며 웹서버의 응답과 마찬가지로 요청은 HTTP메시지의 형태이다.
요청이 웹 서버로 들어오면 웹 서버는 요청을 처리 할 수 있는 가장 좋은 프로그램으로 요청을 전달한다. 웹 서버는 서버 측 프 로그램이 생성 된 응답을 실행하고 다시 전달할 수 있는 중간 환경을 제공하는 것 이상의 기능을 넣지 않는다.
웹서버 자체가 트랜잭션 또는 데이터베이스 연결을 지원하지는 않지만 로드밸런싱, 캐싱 및 클러스터링과 같은 내결함성 및 확 장성에 대한 다양한 전략을 진행할 수 있다.
web application server
동적 콘텐츠에 대한 작업을 한다, 즉 비지니스, 서비스 또는 응용 프로그램에서 제공하는 특수 기능을 제공하도록 데이터를 조회하고, 전달하는 등 다양한 기능을 한다. ( 실질적으로 헤비한 작업 )
대부분의 경우 was는 EJB(Enterprise JavaBean)컴포넌트 모델과 같은 컴포넌트 api를 통해 비지니스 로직을 수행한다.
Servlet
요청-응답 프로그래밍 모델을 통해 액세스하는 응용프로그램을 호스팅하는 서버의 기능을 확장하는데 사용되는 Java 프로그래밍 언어 클래스이다.
서버측에 있으며 동적 웹 페이지를 작성한다.
Servlet이전에는 CGI(Common Gateway Interface)스크립트언어가 있었지만 여러 문제가 있었다 ( 다음에 다룰 예정 )
Servlet API에는 Servlet, GenericServlet, HttpServlet, ServletRequest, ServletResponse 등의 다양한 인터페이스와 클래스가 있다.
servlet라이프사이클을 보자
servlet의 라이프 사이클은 servlet이 배포 된 컨테이너에 의해 제어된다. 요청이 servlet에 맵핑되면 컨테이너는 다음 단계를 수행한다.
1. servlet의 인스턴스가 존재하지 않으면 웹 컨테이너는 servlet 클래스를 로드한다.
2. servlet클래스의 인스턴스를 생성한다.
3. init메소드를 호출하여 servlet 인스턴스를 초기화한다.
4. 컨테이너는 service메소드를 호출하여 요청 및 응답 오브젝트를 전달한다.
* servlet을 제거해야하는 경우 컨테이너는 servlet의 destroy메소드를 호출하여 servlet을 마무리한다.
웹 컴포넌트들은 작업을 수행하면서 다른 오브젝트들과 유기적으로 소통하공 움직여야 하는데, web 컴포넌트들은 다음과 같은 방식으로 동작될 수 있다.
1. private helper object를 사용 ( ex. javaBeans component)
2. public scope의 atrribute를 공유한다.
3. database를 사용한다.
4. 다른 웹 리소스를 호출한다.
또한 멀티쓰레드 서버에서 공유 리소스에 동시에 엑세스가 가능하다.
공유리소스에는 인스턴스, 클래스 변수와 같은 in memory data, file, database connection, network connection과 같은 외부객체도 포함된다.
'혼자 공부하는 내용 ( 잡다한 것들 )' 카테고리의 다른 글
TCP 핸드쉐이크 주요 플래그 (0) | 2025.04.19 |
---|---|
osi 7계층 (0) | 2025.04.19 |
servlet , JSP (0) | 2020.06.27 |
yaml 기본 문법 (0) | 2020.05.28 |
웹 서비스 구조를 알아보자 (0) | 2019.10.03 |