제이제이
article thumbnail

1. 스프링 부트는 내장 톰캣을 가집니다.


스프링 부트에서는 톰캣을 따로 설치할 필요가 없이 바로 프로그램을 실행할 수 있습니다.

톰캣에 대해서 설명하기 전 1. 먼저 웹 서버에 대한 이해를 하고 나서 2. 톰캣과 웹 서버의 차이에 대해 알아보겠습니다.

웹 서버(Web Server)

다음의 그림을 먼저 살펴봅시다.

 

다음 그림과 같이 A가 내가 가지고 있는 컴퓨터라고 가정하겠습니다.

내가 가진 컴퓨터에는 A게임에 대한 공략법들이 있는 자료들이 있고 이를 친구들이 요청하는 상황입니다.

이때 내가 가진 컴퓨터을(친구들)필요한 자료들(A게임에 대한 공략법들이 적혀져 있는 자료)가 있으므로 이 됩니다.

반대로 게임에 대한 자료들을 원하는 친구들의 컴퓨터이 됩니다.

 

이때의 과정을 순서로 나타내면 다음과 같습니다.

과정

1. 친구들의 컴퓨터(을)내 컴퓨터(갑)에게 자료를 달라고 요청을 하게 됩니다.

2. 이에 내 컴퓨터(갑)은 친구들의 컴퓨터(을)에 자료를 응답하게 됩니다.

 

이 과정의 요청과 응답 과정을 자세하게 살펴보겠습니다.

자료를 요청할때

친구들의 컴퓨터(을)내 컴퓨터(갑)의 ip주소를 토대로 요청(request)합니다.

  • 이때 친구들의 컴퓨터(을) 내 컴퓨터(갑)가 어디 있는지 알아야 요청이 가능합니다.

 

자료를 응답할 때

내 컴퓨터(갑)친구들의 컴퓨터(을)에게 요청된 자료에 대해서 응답(response)합니다.

  • 이때 내 컴퓨터(갑)친구들의 컴퓨터(을)가 어디있는 상관 없이 요청에 대한 응답만 하면 됩니다.

 

이처럼 을이 원하는 자료가 가지고 있는 컴퓨터웹서버라고 합니다.

웹 서버와 통신하기 위해 필요한 것은 다음과 같습니다.

1. 웹 서버의 ip주소 = 웹 서버에게 자료를 요청하기 위해 어디 있는지 ip주소를 알아야합니다.

2. URL의 주소 = 웹 서버의 어떤 자료가 필요한지 표시하기 위해 URL이 필요합니다.

 

❓URL이란?

🔥 Uniform Resource Locator의 약자로, 웹 사이트의 주소뿐만 아닌 및 네트워크상에서 자원을 표기합니다.

자원이 있는 위치를 요청해서 나에게 필요한 자원을 가져올 수 있습니다.

ex)

a.html 파일 → http:// ~~/a.html

a.avi 파일 → http:// ~~/a.avi

 

다음으로 웹 서버에 대한 질문을 살펴봅시다.

친구들의 컴퓨터(을)에서 요청하지 않을 때 웹서버(갑)은 응답을 할 수 있을까?

웹서버는 친구들의 컴퓨터(을)의 주소를 모르기 때문에 불가능합니다.

 

❓ 만약 내 컴퓨터(웹 서버)에서 임의로 친구들 컴퓨터(을)게임의 공략집을 전송하고 싶다면?

내 컴퓨터(갑, 웹서버)에서 친구들 컴퓨터(을)의 ip주소를 알아야하는데 http통신은 모릅니다.
따라서 이러한 통신을 위해서는 지속적으로 연결이 되는 소켓통신이 필요합니다.

 

하지만 우리가 사용하는 http통신은 단순히 요청에 대해서 응답을 해주는 방식이고, 그 응답은 html문서,avi 등 요청시에 변하는 자원이 아닙니다. 이러한 자원들을 static자원(정적 자원)이라고 합니다.

톰캣과 웹 서버에 대한 이해

다음의 그림을 통해 톰캣을 이해하고 웹서버와의 차이점들을 살펴봅시다.

우리가 흔히 볼 수 있는 아파치는 웹 서버의 일종입니다.

 

정적 자원을 요청할 경우

 

정적 자원이 요청될 경우 웹서버(아파치)는 해당하는 자료를 찾아서 웹 브라우저에 응답합니다.

 

정적자원이 아닌 ~.jsp파일 또는 java code가 적혀져 있는 자원을 요청하는 경우

1. 만약 웹 서버에 ~.jsp파일이나 java code가 적혀져 있는 자원의 요청이 들어온 경우

웹 서버는 해당 파일이해하지 못하기 때문에 제어권을 톰캣에 넘겨 처리하도록 합니다.

 

2. 톰캣은 해당 파일을 자바 파일 모두를 컴파일 하고, 컴파일된 데이터를 ~.html파일이란 파일에 덮어씌웁니다.

 

 

3. 톰켓은 아파치에게 ~.html 파일을 넘겨주고 웹서버(아파치)는 웹 브라우저에게 해당하는 ~.html파일을 응답합니다.

 

 

톰켓의 역할

웹 서버가 이해하지 못하는 자바 파일들을 컴파일하고 html문서로도 만들어줍니다.

정리

웹 서버(아파치) = 웹 서버는 요청된 정적 파일들을 응답합니다.

톰켓 = 웹 서버가 이해하지 못하는 ~.jsp파일 또는 java code로 된 파일들을 컴파일해서 html파일로 번역해서 웹 서버에게 넘겨줍니다.

📒 Reference(참고자료)


 

[무료] 스프링부트 개념정리(이론) - 인프런 | 강의

스프링부트를 공부하며 헷갈리는 개념이 많았던 분 스프링부트에 대해 공부하고 싶었던 모든 분, - 강의 소개 | 인프런...

www.inflearn.com

 

profile

제이제이

@아사비치즈스틱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!