์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ์‹œํ—˜ ๋‚ด์šฉ ์ •๋ฆฌ

์„œ๋ฒ„ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„ ์ถœ์ œ ์ˆœ์„œ

ํ•œ์ค„ tip! ๊ทธ๋ƒฅ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ˆœ์„œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ๊ธฐ

  1. ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ
  2. ๊ณตํ†ต๋ชจ๋“ˆ ๊ตฌํ˜„ํ•˜๊ธฐ
  3. ์„œ๋ฒ„ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„ํ•˜๊ธฐ
  4. ๋ฐฐ์น˜ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„ํ•˜๊ธฐ

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

  • ์›น ์„œ๋ฒ„: ์›น ์ƒ์˜ ์ •์  ์ฝ˜ํ…์ธ  ์ฒ˜๋ฆฌ. HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต ์ฒ˜๋ฆฌ
  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(WAS): ๋™์  ์ฝ˜ํ…์ธ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„
  • ํŒŒ์ผ ์„œ๋ฒ„: ํŒŒ์ผ ์„œ๋น™

๋ชจ๋“ˆ์„ ๊ฐœ๋ฐœํ–ˆ์„ ๋•Œ ์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„

๋ชจ๋“ˆ๊ฐœ๋ฐœ = ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๊ตฌํ˜„

1) ์‘์ง‘๋„(๊ฐ•ํ• ์ˆ˜๋ก ์ข‹์Œ)

๊ธฐ์ˆœ๊ต์ ˆ์‹œ๋…ผ์šฐ
์•ž๊ธ€์ž์™ธ์šฐ๋Š”๋ฒ•: [๊ธฐ]์”จ๊ฐ€ [์ˆœ][๊ต]=์ข…๊ต์ ์ฃฝ์Œ ํ•˜์…จ๋Š”๋ฐ [์ ˆ]๋Œ€ [์‹œ]๋„ (ํ•˜์ง€๋งˆ์„ธ์š”)[๋…ผ]๋…ธ[์šฐ]

๊ธฐ๋Šฅ์  โ†’ ์ˆœ์ฐจ์  โ†’ ๊ตํ™˜์  โ†’ ์ ˆ์ฐจ์  โ†’ ์‹œ๊ฐ„์  โ†’ ๋…ผ๋ฆฌ์  โ†’ ์šฐ์—ฐ์ 

์ž์ฃผ ํ‹€๋ฆฌ๋Š”โ€ฆ ์ˆœ์ฐจ์  vs ์ ˆ์ฐจ์ !?

  • ์ˆœ์ฐจ์  ์‘์ง‘๋„: ๋ชจ๋“ˆ์˜ ์ถœ๋ ฅ(๋ฆฌํ„ด๊ฐ’)์ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด๊ฐ (ํ›จ์”ฌ ์ข‹์Œ!!)
    def readFile(fileName):
       # ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ž„
       return data
    
    def processData(data):
       # ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•จ
       return processedData
    
    def writeFile(fileName, data):
       # ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์”€
       pass
    
    data = readFile("input.txt")
    processedData = processData(data)
    writeFile("output.txt", processedData)
    
  • ์ ˆ์ฐจ์  ์‘์ง‘๋„: ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์ด ํŠน์ • ์ˆœ์„œ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ
    def initializeSystem():
       # ์‹œ์Šคํ…œ ์ดˆ๊ธฐํ™”
       pass
    
    def startService():
       # ์„œ๋น„์Šค ์‹œ์ž‘
       pass
    
    def shutdownService():
       # ์„œ๋น„์Šค ์ข…๋ฃŒ
       pass
    

2) ๊ฒฐํ•ฉ๋„(๊ฐ•ํ• ์ˆ˜๋ก ์•ˆ์ข‹์Œ)

๋ชจ๋“ˆ๊ฐ„์— ๊ฒฐํ•ฉ๋˜๋ฉด ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ๊ฐ•ํ•ด์ง€๋ฉด ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ต๊ณ  ์˜ค๋ฅ˜ ์ฐพ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋‚ด์šฉ โ†’ ๊ณตํ†ต โ†’ ์™ธ๋ถ€ โ†’ ์ œ์–ด โ†’ ์Šคํƒฌํ”„ โ†’ ์ž๋ฃŒ

๋‚ด๊ณต์™ธ์ œ์Šค์ž
์•ž๊ธ€์ž์™ธ์šฐ๋Š”๋ฒ•: ([๋‚ด][๊ณต]์ด ์ข‹์€ [์™ธ][์ œ]ํ’ˆ (์“ฐ)[์Šค][์ž] ^^..)


๊ณตํ†ต๋ชจ๋“ˆ ๊ตฌํ˜„ ์ ˆ์ฐจ

DTO/VO โ†’ SQL โ†’ DAO โ†’ Service โ†’ Controller โ†’ View

  • DTO/VO: Data Transfer Object, Value Object(read-only)
    • ์ •์˜: ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ์ €์žฅ์„ ์œ„ํ•œ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ์˜ ์ „์†ก์ด๋‚˜ ์ €์žฅ์„ ์œ„ํ•œ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
  • SQL: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ์„ ์œ„ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ์„œ๋ฒ„๋‚˜ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ RDBMS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
    ์ ‘๊ทผ ๋ฐฉ๋ฒ•์„ ์„ค๊ณ„ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

  • DAO: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

    ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    Data Access Object์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค.

  • ์„œ๋น„์Šค: DAO๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ›„์— DTO/VO๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Šต๋‹ˆ๋‹ค.

    ์„œ๋น„์Šค ๊ณ„์ธต์—์„œ๋Š” DAO๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋กœ๋ถ€ํ„ฐ Data Transfer Object๋‚˜ Value Object๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ปจํŠธ๋กค๋Ÿฌ: View์™€ ์„œ๋น„์Šค์˜ ์ค‘๊ฐ„ ๋‹จ๊ณ„์˜ ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. (HTTP ์š”์ฒญ/์‘๋‹ต ๋“ฑ)

    ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฉ”์ธ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ์™€ ์„œ๋น„์Šค ์‚ฌ์ด์˜ ์ค‘๊ฐ„ ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ์ปจํŠธ๋กค๋Ÿฌ์ž…๋‹ˆ๋‹ค.

  • ๋ทฐ: ์‚ฌ์šฉ์ž(๊ณ ๊ฐ)์—๊ฒŒ ๋ณด์ด๋Š” ํ™”๋ฉด์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

    HTML, JavaScript ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋ทฐ์ž…๋‹ˆ๋‹ค.

TIP: ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ๊ธฐ์–ตํ•˜์‹œ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

  1. ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•  ๊ฐ์ฒด๋ฅผ ๋จผ์ € ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค(DTO/VO)
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ์„ ์œ„ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค(SQL)
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค(DAO)
  4. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค(Service)
  5. ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค(Controller)
  6. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค(View)

์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง„ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๊ฐœ๋…์ธ
Fan-In Fan-Out์— ๊ด€ํ•œ ๋‚ด์šฉ์€
๋‹ค์Œ ์‹œ๊ฐ„์— ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.