본문 바로가기
공부중/스프링부트 개념정리

스프링부트 개념정리(3) - 서블릿 컨테이너, 톰캣

by 식빵ee 2023. 12. 26.

(1) 내장 톰켓을 가진다.

소켓통신

Soket통신 :  Server와 Client가 특정 Port를 통해 실시간으로 통신을 하는 방식

- Server와 Client가 계속 연결을 유지하는 양방향 통신이다.

- Server와 Client가 실시간으로 데이터를 주고받는 상황이 필요한 경우에 사용된다.

- 실시간 동영상 Streaming이나 온라인 게임 등과 같은 경우에 자주 사용된다.

- 부하가 발생할 수도 있다. 또 그러다보니 더 많은 리소스가 필요하게 되고 비용 및 유지보수도 Http방식보다 까다로워진다. 

HTTP 통신 : Client의 요청이 있을 때만 서버가 응답하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식

- Client가 요청을 보내는 경우에만 Server가 응답하는 단방향 통신이다.
- Server로부터 응답을 받은 후에는 연결이 바로 종료된다. 
- 실시간 연결이 아니고, 필요한 경우에만 Server로 요청을 보내는 상황에 유용하다.
- 요청을 보내 Server의 응답을 기다리는 어플리케이션의 개발에 주로 사용된다.

 

웹서버

브라우저가 웹 서버의 파일을 필요로 할 때 웹 서버에서 HTTP를 통해 파일을 요청합니다. 요청이 올바른 웹 서버(하드웨어)에 도달하였을 때, HTTP 서버(software)는 요청된 문서를 HTTP를 이용해 보내줍니다. 웹 사이트를 공개하기 위해서는, 당신은 정적 혹은 동적 웹 서버가 필요합니다. 정적 웹 서버 혹은 스택은 HTTP 서버 (소프트웨어)가 있는 컴퓨터(하드웨어)로 구성되어 있습니다. 서버가 그 불려진 파일을 당신의 브라우저에게 전송하기 때문에, 저희는 그것을 "정적"이라고 부릅니다. 즉, 웹 서버란 HTTP 프로토콜을 이용하여 클라이언트의 GET, POST 등의 메소드를 활용한 요청을 서버에 전달하고 이를 서버라는 또 다른 컴퓨터가 그 요청을 처리하여 다시 클라이언트에게 전달해주는 작업이라고 생각할 수 있다.

 

톰켓 : 요청한 파일 중에 자바 코드,파일이 요청되면 그것을 컴파일해서 html파일로 번역해서 돌려줌

주로 아파치라는 웹서버를 사용함.

아파치 : 클라이언트 요청이 들어왔을 때만 응답하는 정적 웹페이지에 사용된다.

웹서버에서 정적으로 처리해야할 데이터를 제외한 JSP, ASP, PHP 등 자바로 된 요청을 아파치는 이해하지 못한다. 그래서 제어권을 톰켓에게 넘긴다. 톰켓은 jsp에 있는 자바 코드를 컴파일하고 html 문서로 만들어 아파치에게 돌려준다. 그리고 아파치는 .html에 반응해서 넘겨준다.

웹브라우저:html파일, javascript파일, css파일을 읽어주는 프로그램

 

(2) 서블릿 컨테이너

서블릿 컨테이너 = 톰캣

client가 요청했을 때 최초 요청이면 객체를 생성하고 아니면 객체를 생성하지 않고 이미 생성된 객체를 재사용한다.

//서블릿이 객체를 생성하는 방법

1. 최초 요청인 경우 서블릿 객체를 만든다.

2. 초기화 메세드 init()이 호출

3. service()메서드 호출이 되기전에 새로운 스레드 생성, service()메서드는  post인지 get인지 어떻게 요청이 왔는지 체크를 한다.

4. 다른 클라이언트가 두 번째로 요청을 하면 서블릿 객체를 생성하지 않고 재사용을 한다.

메모리에 메서드를 사용한 스택 공간이 남아있는데 메서드는 공유하지 않고 독립적으로 사용한다. 그래서 스레드마다 다 르기 때문에 스레드를 새로 만들어 계속 요청하게 됨. 그래서 서블릿 객체는 하나여도 메서드는 따로 사용을 할 수 있어서 새로 객체를 만들지 않는 것이다.

 

//풀링기법

스레드는 많게는 100개도 설정되지만 컴퓨터사양마다 스레드 다름

만약 스레드가 20개이고 사용자가 21번째 요청이 들어왔을 때는 대기해야한다.(더 이상 스레드를 못 만들어서)

첫 번째 스레드 사용이 종료되면(요청에 대한 응답이 끝나면) 스레드1을 메모리에서 날리지 않고 21번째가 스레드1을 재사용하게 된다.

//스케일 업

컴퓨터 성능을 업그레이드 해서 100명 받는걸 1000명으로 올리는 업그레이드 방식

//스케일 아웃

100명을 받을 수 있는 컴퓨터를 10개 만들어서 1000명 받는 수평적인 확장 방식

댓글


post image post image post image post image post image post image post image post image