๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

Tomcat์˜ ๊ตฌ์กฐ, ํ๋ฆ„ ๋ฐ ์šฉ์–ด ๊ฐ„๋‹จ ์ •๋ฆฌ ๋ณธ๋ฌธ

Web (back-end)

Tomcat์˜ ๊ตฌ์กฐ, ํ๋ฆ„ ๋ฐ ์šฉ์–ด ๊ฐ„๋‹จ ์ •๋ฆฌ

9taetae9 2023. 12. 29. 23:05
728x90

server:tomcat(thread pool ๋‚ด thread๋“ค)-service(connector(http1.1,http2, AJP ..))-Engine:catalina(n๊ฐœ์˜ host๋“ค)-host(m๊ฐœ์˜ context(ex) spring project) - context(k๊ฐœ์˜ servlet๋“ค)

 

ํฌํŠธ๋ฒˆํ˜ธ๋กœ ๋™์ผ ip ๋‚ด ๋‹ค์–‘ํ•œ ์„œ๋ฒ„๋ฅผ ๊ตฌ๋ณ„(email, file, web server ๋“ฑ)

*๋””ํดํŠธ๋กœ web server์˜ ํฌํŠธ๋ฒˆํ˜ธ๋Š” 80์ด๊ธฐ๋•Œ๋ฌธ์— 80ํฌํŠธ ์‚ฌ์šฉ์‹œ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ

ex)

http://www.springstudy.co.kr/study/list

host : www.springstudy.co.kr  

context(/study) => ํ”„๋กœ์ ํŠธ 

servlet(/list) => controller์™€ ๋น„์Šทํ•œ ๊ฐœ๋… (์„œ๋ฒ„ ๋‚ด ์ž‘์€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ)

 

servlet : "Server"์™€ "Applet"์˜ ํ•ฉ์„ฑ์–ด. 

applet : ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํ•˜๋‚˜๋กœ์„œ ์ „์šฉ ์œ„์ ฏ ์—”์ง„์ด๋‚˜ ๋” ํฐ ํ”„๋กœ๊ทธ๋žจ ๋ฒ”์œ„ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ํŠน์ •ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ

 

์„œ๋ธ”๋ฆฟ์€ ์„œ๋ฒ„ ์ธก์—์„œ ์‹คํ–‰๋˜์–ด ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๋Š” ์ž‘์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ

 

ํ˜ธ์ถœ ์Šคํƒ(ํ˜ธ์ถœ ์ˆœ์„œ : ์•„๋ž˜์„œ ๋ถ€ํ„ฐ ์œ„)

์›น ์„œ๋ฒ„๊ฐ€ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •

 

ํ”„๋กœ์ ํŠธ๋ฅผ ์„œ๋ฒ„๋กœ ์‹คํ–‰ ํ•œ ๋’ค์˜ ํ˜ธ์ถœ ์Šคํƒ 

1. Thread ์‹คํ–‰: ThreadPoolExecutor$Worker.run()๊ณผ TaskThread$WrappingRunnable.run()์€ ์„œ๋ฒ„๊ฐ€ ์ƒˆ๋กœ์šด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘
2. ์†Œ์ผ“ ์ฒ˜๋ฆฌ: NioEndpoint$SocketProcessor.doRun()์€ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“์„ ํ†ตํ•ด ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ
3. HTTP ์š”์ฒญ ์ฒ˜๋ฆฌ: Http11Processor.service()๋Š” HTTP ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ
4. ์š”์ฒญ ํŒŒ์ดํ”„๋ผ์ธ ์ง„์ž…: StandardEngineValve.invoke()๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์˜ '๋ฐธ๋ธŒ'๋ฅผ ํ†ตํ•ด ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๋‹จ๊ณ„๋กœ ์ง„์ž…
5. ํ•„ํ„ฐ ์ฒ˜๋ฆฌ: ApplicationFilterChain.doFilter()๋Š” ์š”์ฒญ์ด ์„œ๋ธ”๋ฆฟ์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ํ•„ํ„ฐ๋ฅผ ํ†ต๊ณผํ•˜๋ฉฐ, ๋ณด์•ˆ ๊ฒ€์‚ฌ, ๋กœ๊น…, ์š”์ฒญ ๋ณ€ํ™˜ ๋“ฑ์„ ์ˆ˜ํ–‰
6. ์„œ๋ธ”๋ฆฟ ์ฒ˜๋ฆฌ: DispatcherServlet.service()๋Š” DispatcherServlet์ด ์š”์ฒญ์„ ๋ฐ›์•„ ์ ์ ˆํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ผ์šฐํŒ…
7. ์ปจํŠธ๋กค๋Ÿฌ ๋งคํ•‘ ๋ฐ ํ˜ธ์ถœ: RequestMappingHandlerAdapter.invokeHandlerMethod()๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ ์ ˆํ•œ ์ปจํŠธ๋กค๋Ÿฌ ๋ฉ”์†Œ๋“œ๋ฅผ ์ฐพ๊ณ  ํ˜ธ์ถœ
8. ์„œ๋ธ”๋ฆฟ ํ•ธ๋“ค๋Ÿฌ ์‹คํ–‰: ServletInvocableHandlerMethod.invokeForRequest()๊ฐ€ ์‹ค์ œ ๋กœ์ง์ด ๋‹ด๊ธด ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰
9. ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜: ์ฒ˜๋ฆฌ๋œ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ์ƒ์„ฑ๋˜์–ด ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ˜ํ™˜

 

 

 

์ฐธ๊ณ  ๋งํฌ :

https://kbss27.github.io/2017/11/16/tomcatarchitecture/

 

tomcat architecture

tomcat architecture Nov 16, 2017 --> <!-- <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5195321438101134" data-ad-slot="4897566804" data-ad-format="auto"> (adsbygoogle = window.adsbygoogle || []).push({}); --> tomcat์˜ ๊ตฌ์กฐ๋ฅผ

kbss27.github.io

https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EC%84%9C%EB%B8%94%EB%A6%BF

 

์ž๋ฐ” ์„œ๋ธ”๋ฆฟ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ์„œ๋ธ”๋ฆฟ์€ ์—ฌ๊ธฐ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋œป์— ๋Œ€ํ•ด์„œ๋Š” ์„œ๋ธ”๋ › ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค. JSP ํŒŒ์ผ์˜ ์ˆ˜๋ช…. ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ(Java Servlet)์€ ์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›นํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ

ko.wikipedia.org

 

728x90

'Web (back-end)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์›น ํŽ˜์ด์ง€ ๋กœ๋“œ ๊ณผ์ • / Process of Loading a Web Page  (0) 2024.01.10