๋ฐฑ์—”๋“œ

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ๊ด€๊ณ„

Onluvo 2025. 3. 28. 13:28

ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ๊ด€๊ณ„

 ๐Ÿชฝ ํด๋ผ์ด์–ธํŠธ (Client)

  • ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ์ปดํ“จํ„ฐ
  • ์˜ˆ์‹œ: ์›น ๋ธŒ๋ผ์šฐ์ €(ํฌ๋กฌ, ์—ฃ์ง€ ๋“ฑ), ๋ชจ๋ฐ”์ผ ์•ฑ ๋“ฑ
  • ์—ญํ• 
    • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ž…๋ ฅ๋ฐ›์•„ ์„œ๋ฒ„์— ์ „์†ก
    • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์•„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์คŒ
    • UI(์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ๋‹ด๋‹น

๐Ÿชฝ ์„œ๋ฒ„ (Server)

  • ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ์ปดํ“จํ„ฐ
  • ์˜ˆ์‹œ: ์›น ์„œ๋ฒ„(Apache, Nginx), ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(Spring Boot), ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„(MySQL, PostgreSQL)
  • ์—ญํ• 
    • ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌ
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌ
    • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰
    • ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์„ ๋ฐ˜ํ™˜

ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹  ํ๋ฆ„

1๏ธโƒฃ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ

  • "ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ ํด๋ฆญ"
  • → ํด๋ผ์ด์–ธํŠธ๊ฐ€ **ํšŒ์›์ •๋ณด(์ด๋ฆ„, ์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ)**๋ฅผ ์„œ๋ฒ„์— ๋ณด๋ƒ„ (HTTP ์š”์ฒญ)

2๏ธโƒฃ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์ฒ˜๋ฆฌ ํ›„ ์‘๋‹ต

  • ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐ›์•„ ํšŒ์›์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)์— ์ €์žฅ
  • ์ €์žฅ์ด ์„ฑ๊ณตํ•˜๋ฉด "ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ" ๋ฉ”์‹œ์ง€๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜

3๏ธโƒฃ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‘๋‹ต์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌ

  • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ "ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ" ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด
  • ํด๋ผ์ด์–ธํŠธ๋Š” "๋ฉ”์ธ ํ™”๋ฉด์œผ๋กœ ์ด๋™"

(์˜ˆ์‹œ)

์›น์‚ฌ์ดํŠธ ํšŒ์›๊ฐ€์ž… (๋„ค์ด๋ฒ„, ๊ตฌ๊ธ€ ๋“ฑ)

๐Ÿ–ฅ๏ธ 1) ํด๋ผ์ด์–ธํŠธ (์‚ฌ์šฉ์ž ์›น ๋ธŒ๋ผ์šฐ์ €)

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋„ค์ด๋ฒ„ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€์—์„œ ์ด๋ฆ„, ์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ ํ›„ "ํšŒ์›๊ฐ€์ž…" ๋ฒ„ํŠผ์„ ํด๋ฆญ

๐Ÿ“ก 2) ์„œ๋ฒ„ (๋„ค์ด๋ฒ„์˜ ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ)

  • ํด๋ผ์ด์–ธํŠธ์˜ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)์— ์ €์žฅ
  • ์ž…๋ ฅ๋œ ์ด๋ฉ”์ผ์ด ๊ธฐ์กด ํšŒ์›๊ณผ ์ค‘๋ณต๋˜๋Š”์ง€ ํ™•์ธ
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅ

โœ… 3) ์‘๋‹ต (ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†ก)

  • ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต → "๊ฐ€์ž…์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!" ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™
  • ํšŒ์›๊ฐ€์ž… ์‹คํŒจ → "์ด๋ฉ”์ผ์ด ์ค‘๋ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋ฉ”์ผ์„ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”."

๐Ÿชฝ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ์™€ ๋ฐฑ์—”๋“œ์˜ ์—ญํ• 

ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ๋Š” ํด๋ผ์ด์–ธํŠธ(์‚ฌ์šฉ์ž ์ธก)๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ ,

์„œ๋ฒ„(๋ฐฑ์—”๋“œ ์ธก)๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ ์‘๋‹ต์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ค‘๊ฐ„ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋กœ์ง ์‹คํ–‰, DB ์—ฐ๋™, ๋ณด์•ˆ ๊ด€๋ฆฌ ๋“ฑ์„ ๋‹ด๋‹น
Spring Boot ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฑ์—”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, API๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.

 

๋ฐฑ์—”๋“œ๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™ํ•˜๋Š” ์—ญํ• 

 ๐Ÿ’ง์š”์ฒญ ์ฒ˜๋ฆฌ (Request Handling)

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ๊ฒ€์ฆ ๋ฐ ์ฒ˜๋ฆฌ
  • ์˜ˆ: "ํšŒ์›๊ฐ€์ž… ์š”์ฒญ์ด ์™”์„ ๋•Œ, ์ด๋ฉ”์ผ ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ"

๐Ÿ’ง๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ (DB Interaction)

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ (CRUD)
  • ์˜ˆ: "์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์›๊ฐ€์ž…ํ•˜๋ฉด DB์— ํšŒ์›์ •๋ณด ์ €์žฅ"

๐Ÿ’ง๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ˆ˜ํ–‰

  • ํ•„์š”ํ•œ ๊ณ„์‚ฐ, ์ฒ˜๋ฆฌ ๋กœ์ง ์ˆ˜ํ–‰
  • ์˜ˆ: "๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ €์žฅ"

๐Ÿ’ง์‘๋‹ต ๋ฐ˜ํ™˜ (Response Handling)

  • ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ
  • ์˜ˆ: "ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต"

๐Ÿ’ง๋ณด์•ˆ ๊ด€๋ฆฌ

  • ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ (๋กœ๊ทธ์ธ, JWT ํ† ํฐ, OAuth)
  • ์˜ˆ: "๋กœ๊ทธ์ธ ์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž๋Š”์ง€ ๊ฒ€์ฆํ•˜๊ณ  ํ† ํฐ ๋ฐœ๊ธ‰"