Server (๊ฐœ๋…)

์ด๋ฏผ๊ฒฝยท2024๋…„ 3์›” 21์ผ

Server

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

๐Ÿ–ฅ ์›น ์„œ๋น„์Šค

HTML, CSS, JS == ์›นํŽ˜์ด์ง€

์„œ๋ฒ„ ์ข…๋ฅ˜

โ–ซ ์ •์  ์„œ๋น„์Šค ์„œ๋ฒ„ โ–ท ์›น์„œ๋ฒ„(์•„ํŒŒ์น˜ ์„œ๋ฒ„, ์—”์ง„์—‘์Šค NGINX)

โ–ซ ๋™์  ์„œ๋น„์Šค ์„œ๋ฒ„ โ–ท WAS(Web Application Server) or ์„œ๋ธ”๋ฆฟ์ปจํ…Œ์ด๋„ˆ

โ“ Servlet

: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํŽ˜์ด์ง€(=์›น ์„œ๋น„์Šค)๋ฅผ ์ž๋ฐ”์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ๋กœ ํ‘œํ˜„ํ•˜๋Š”(๋งŒ๋“œ๋Š”) ๊ฒƒ Servlet!

๐Ÿ“– ํŠน์ง•

โ–ซ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•ด ๋™์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปดํฌ๋„ŒํŠธ.
โ–ทํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋Œ€ํ•œ ์„œ๋ฒ„ ์‘๋‹ต ์‹œ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ํ™”๋ฉด(์ •์ )์ด ์•„๋‹Œ ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ ๋งˆ๋‹ค ์•Œ๋งž์€ ํ™”๋ฉด์„ ๋งŒ๋“ค์–ด(๋™์ ) ์‘๋‹ตํ•จ.

๐Ÿ“– Servlet ๋™์ž‘ ๋ฐฉ์‹

  1. ์‚ฌ์šฉ์ž(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ URL(Uniform Resource Locator)์„ ํด๋ฆญํ•˜๋ฉด HTTP Request(์š”์ฒญ)๋ฅผ Servlet Container๋กœ ์ „์†ก
  2. Http Request๋ฅผ ์ „์†ก ๋ฐ›์€ Servlet Container๋Š” ์•„๋ž˜ ๋‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
    HttpServletRequest(์š”์ฒญ ๊ด€๋ จ ๋‚ด์šฉ์ด ์ €์žฅ๋œ ๊ฐ์ฒด),
    HttpServletResponse(์‘๋‹ต ๊ด€๋ จ ๋‚ด์šฉ์ด ์ €์žฅ๋œ ๊ฐ์ฒด)
  3. DD (๋ฐฐํฌ์„œ์ˆ ์ž, Deployment Descriptor) = web.xml์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ URL์„ ๋ถ„์„ํ•˜์—ฌ ์–ด๋–ค ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค์— ์š”์ฒญ ๋‚ด์šฉ์„ ์ „๋‹ฌํ• ์ง€ ์ฐพ์Œ
  4. ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์—์„œ init() ๋ฉ”์†Œ๋“œ๋ฅผ ๋จผ์ € ํ˜ธ์ถœํ•œ ํ›„ service() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ „์†ก ๋ฐ›์€ ๋ฐฉ์‹์ธ GET, POST ์—ฌ๋ถ€์— ๋”ฐ๋ผ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ(doXXX()) ๋ฅผ ํ˜ธ์ถœํ•จ.
  5. doGet() / doPost() ๋ฉ”์†Œ๋“œ๋Š” ๋™์  ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑ ํ›„ HttpServletResponse๊ฐ์ฒด์— ์‘๋‹ต์„ ๋ณด๋ƒ„
  6. ์‘๋‹ต ์ข…๋ฃŒ ์‹œ HttpServletRequest, HttpServletResponse ๊ฐ์ฒด ์†Œ๋ฉธ

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ฐฉ๋ฒ•์—๋Š” Get / Post ๋ฐฉ์‹์ด ์žˆ๋‹ค!

๐Ÿ“ค GET๋ฐฉ์‹

:(๋ฐ์ดํ„ฐ๋ฅผ) ๊ฐ€์ ธ์˜ค๋‹ค, ์–ป์–ด์˜ค๋‹ค

โ–ซ URL์— ๋ณ€์ˆ˜(๋ฐ์ดํ„ฐ)๋ฅผ ํฌํ•จ์‹œ์ผœ ์š”์ฒญ
๋ณด์•ˆ ์œ ์ง€๋ฅผ ์•ˆ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ์ธ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” get๋ฐฉ์‹์œผ๋กœ ํ•˜๋ฉด ๋ถ€์ ํ•ฉ..!
why? ์ฃผ์†Œ์ฐฝ์— ์‚ฌ์šฉ์ž์˜ ๊ฐ’์ด ๋‹ค ๋…ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์—! ๋ณด์•ˆ์—๋Š” ์ทจ์•ฝํ•˜๋‹ค ๐Ÿ˜ฅ ๊ทธ๋ž˜์„œ ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ == ํŽ˜์ด์ง€ ์ด๋™)


โ–ซ ๐Ÿ‘€ ๋งŒ์•ฝ ์ด์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” HTTP Header์— ํฌํ•จํ•˜์—ฌ ์ „์†กํ•˜๋ฉด,
GET๋ฐฉ์‹์—์„œ ๋ฐ”๋””๋Š” ๋ณดํ†ต ๋นˆ ์ƒํƒœ๋กœ ์ „์†ก ๋˜๋ฉฐ ํ—ค๋”์˜ ๋‚ด์šฉ ์ค‘ Body์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” Content-typeํ—ค๋”ํ•„๋“œ๋„ ๋“ค์–ด๊ฐ€์ง€ ์•Š์Œ


โ–ซ ์ „์†กํ•˜๋Š” ๊ธธ์ด ์ œํ•œ(๋ณด๋‚ด๋Š” ๊ธธ์ด๊ฐ€ ๋„ˆ๋ฌด ๊ธธ๋ฉด ์ดˆ๊ณผ๋ฐ์ดํ„ฐ๋Š” ์ ˆ๋‹จ๋จ)


โ–ซ ์บ์‹ฑ ๊ฐ€๋Šฅ (ex. ์ฆ๊ฒจ์ฐพ๊ธฐ, ๋ถ๋งˆํฌ)
(ํ•œ๋ฒˆ ์ ‘๊ทผ ํ›„, ๋˜ ์š”์ฒญํ•  ์‹œ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ์‹œ์ผœ ๋†“๋Š” ๊ฒƒ)


๐Ÿ™‹โ€โ™€๏ธ ์—ฌ๊ธฐ์„œ ์ž ๊น?
url+/+?+๋ณ€์ˆ˜๋ช… +๋ณ€์ˆ˜๋ช…+ ๋ณ€์ˆ˜๊ฐ’ ์—์„œ ?๋’ค์— ๋ถ™๋Š” ๊ฒƒ์„ queryString๋ผ๊ณ  ํ•œ๋‹ค.

๐Ÿ“ค POST๋ฐฉ์‹

: (๋ฐ์ดํ„ฐ๋ฅผ) ๋ถ™์ด๋‹ค

โ–ซ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ œ์ถœํ•˜์—ฌ ์ถ”๊ฐ€ ๋˜๋Š” ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์ธ๋ฐ,์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ๋•Œ ์ค‘์š”ํ•œ ๋‚ด์šฉ๋“ค์„ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹!(๋กœ๊ทธ์ธ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค! ์ค‘์š”์ •๋ณด๋“ค)


โ–ซ URL์— ๋ณ€์ˆ˜(๋ฐ์ดํ„ฐ)๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ HTTP Body์— ํฌํ•จํ•˜์—ฌ ์ „์†ก


โ–ซ ํ—ค๋”ํ•„๋“œ ์ค‘ Body์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” Content-Type์ด๋ผ๋Š” ํ—ค๋”ํ•„๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ 
์–ด๋–ค ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ์ง€ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•จ


โ–ซ ์ „์†กํ•˜๋Š” ๊ธธ์ด ์ œํ•œ์ด ์—†์Œ.
โ–ท Body์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๊ธธ์ด์— ์ œํ•œ์ด ์—†์ง€๋งŒ, ์ตœ๋Œ€ ์š”์ฒญ์„ ๋ฐ›๋Š” ์‹œ๊ฐ„(Time Out)์ด ์กด์žฌํ•ด์„œ ํŽ˜์ด์ง€ ์š”์ฒญ, ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„ ์กด์žฌ


โ–ซ ์บ์‹ฑํ•  ์ˆ˜ ์—†์Œ.
โ–ท URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฆ๊ฒจ์ฐพ๊ธฐ๋‚˜ ์บ์‹ฑ ๋ถˆ๊ฐ€๋Šฅ(์ค‘์š”์ •๋ณด๋“ค์ด๊ธฐ ๋•Œ๋ฌธ!)
ํ•˜์ง€๋งŒ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง(๋ฌธ์ž์—ด)๋ฐ์ดํ„ฐ, ๋ผ๋””์˜ค ๋ฒ„ํŠผ, ํ…์ŠคํŠธ ๋ฐ•์Šค์™€ ๊ฐ™์€ ๊ฐ์ฒด๋“ค์˜ ๊ฐ’๋„ ์ „์†ก ๊ฐ€๋Šฅ


๐Ÿ‘ฉโ€๐Ÿ’ป post๋ฐฉ์‹์€ jsonํƒ€์ž…์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ๋‹ค (ex { "name1":"value1" "name2": "value2"... } โ–ท MAP๊ณผ ๋น„์Šทํ•œ ํ˜•ํƒœ)


โ“ WAS

: ์›น์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์˜ค๋Š” ๋™์ ์ธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋ฒ„ (๋™์ ์„œ๋น„์Šค ์„œ๋ฒ„์ด์ง€๋งŒ ์ •์ ์„œ๋น„์Šค๋„ ํ•จ๊ป˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ == ์•„ํŒŒ์น˜ํ†ฐ์บฃ) (==> Tomcat ์„œ๋น„์Šค)


์•„ํŒŒ์น˜ ํ†ฐ์บฃ ์‚ฌ์šฉ ์ „ ๋‹ค์šด๋กœ๋“œ ๋ฐฉ๋ฒ•!
[[ http://tomcat.apache.org/ ]]

โ“ ์•„ํŒŒ์น˜ ํ†ฐ์บฃ (Apache Tomcat)

Java๋กœ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด JSP(Java Server Page)๋‚˜ ์„œ๋ธ”๋ฆฟ (Servlet)์„ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„๊ฐ€ ๊ตฌ์ถ•์ด ๋˜์–ด ์žˆ์–ดํ•˜๋Š”๋ฐ ์ด๋•Œ, ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„๊ฐ€ ์•„ํŒŒ์น˜ ํ†ฐ์บฃ์ด๋‹ค.
๐Ÿช„์ฆ‰! Tomcat์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์ •์  ํŽ˜์ด์ง€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ ์•„ํŒŒ์น˜์˜ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์™€ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ๋งํ•œ๋‹ค.

๐Ÿ‘ฉโ€๐Ÿ’ปํ•œ๋ˆˆ์— ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ์ •๋ฆฌ ํ•˜์ž๋ฉด!

โ“Tomcat

: ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์˜ ๋Œ€ํ‘œ์ ์ธ ์„œ๋น„์Šค๋กœ ์„œ๋ธ”๋ฆฟ์ด ์ž‘๋™ํ•˜๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ด์ฃผ๋Š” ์„œ๋น„์Šค๋กœ ๋™์ ์ธ ์„œ๋น„์Šค๋ฅผ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค. (== WAS, ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ)

โ“WAS

: ์›น์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ๋™์ ์ธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋ฒ„๋กœ ์ปจํ…Œ์ด๋„ˆ์™€ ์›น์„œ๋ฒ„๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.
WAS๋Š” ์ด์šฉ์‹œ ๋™์ , ์ •์  ์„œ๋น„์Šค ๋ชจ๋‘!! ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

profile
ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€