๐ŸŒˆ [Section2] 17. Spring Framework ๊ธฐ๋ณธ 2

ํ˜„์ฃผยท2022๋…„ 10์›” 12์ผ
0

bootcamp

๋ชฉ๋ก ๋ณด๊ธฐ
36/71

๐Ÿ“• ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ!

  • ์•„ํ‚คํ…์ฒ˜
  • Spring Framewokr ๋ชจ๋“ˆ ๊ตฌ์„ฑ
  • Spring Boot

โœ๏ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ (System Architecture)

  • ์–ด๋–ค ์‹œ์Šคํ…œ์˜ ์ „์ฒด์ ์ธ ๊ตฌ์„ฑ์„ ํฐ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ
    ( ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ชจ๋‘ ํฌํ•จ )

โœ๏ธ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜

  • ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ตฌ์„ฑ์„ ํฐ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ
    ( ํ•˜๋“œ์›จ์–ด ์ œ์™ธํ•œ ์ปดํ“จํ„ฐ ๋‚ด ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ )
    Ex. Java ํ”Œ๋žซํผ ์•„ํ‚คํ…์ฒ˜ (์•„๋ž˜ )

[์ฐธ๊ณ ] https://mingrammer.com/translation-10-common-software-architectural-patterns-in-a-nutshell/

โœ๏ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ณ

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด๊ณผ ๊ธฐ์ˆ ์„ ์„ค๋ช…

    โœ”๏ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

    • ์†Œํ”„ํŠธ์›จ์–ด ์ข…๋ฅ˜์˜ ํ•˜๋‚˜
    • ์ข๊ฒŒ๋Š” ๋ฐ์Šคํฌํƒ‘์ด๋‚˜ ์Šค๋งˆํŠธํฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธ
    • ๋„“๊ฒŒ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜๋ฏธ

โœ” ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜ (N-ํ‹ฐ์–ด)

API ๊ณ„์ธต (API Layer)

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๋Š” ๊ณ„์ธต
    ( ๋ณดํ†ต ํ‘œํ˜„ ๊ณ„์ธต(Presentation Layer)์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ์ง€๋งŒ, REST API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ API ๊ณ„์ธต์ด๋ผ๋Š” ํ‘œํ˜„์ด ๋” ์ ์ ˆ )

์„œ๋น„์Šค ๊ณ„์ธต (Service Layer)

  • API ๊ณ„์ธต์—์„œ ์ „๋‹ฌ ๋ฐ›์€ ์š”์ฒญ์„ ์—…๋ฌด ๋„๋ฉ”์ธ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ๋น„์ฆˆ๋‹ˆ์Šค์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณ„์ธต

  • ๋„๋ฉ”์ธ ์ง€์‹๋“ค์„ ์„œ๋น„์Šค ๊ณ„์ธต์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผํ•จ
    ( ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ )

    โœ”๏ธ ๋„๋ฉ”์ธ ์ง€์‹ (Domain Knowledge)
    ํŠน์ •, ์ „๋ฌธํ™”๋œ ๋ถ„์•ผ์˜ ์ง€์‹

๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต (Data Access Layer)

  • ๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต์—์„œ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ณ„์ธต

โœ๏ธ Spring Framework ๋ชจ๋“ˆ ์•„ํ‚คํ…์ฒ˜


[์ฐธ๊ณ ] https://docs.spring.io/spring-framework/docs/5.0.0.M5/spring-framework-reference/html/overview.html

โœ”๏ธ ๋ชจ๋“ˆ(Module)

  • ์ง€์›๋˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋“ค์„ ๋ชฉ์ ์— ๋งž๊ฒŒ ๊ทธ๋ฃนํ™” ํ•˜์—ฌ ๋ฌถ์–ด ๋†“์€ ๊ฒƒ
  • ๋ชจ๋“ˆ๋“ค์€ Java์˜ ํŒจํ‚ค์ง€ ๋‹จ์œ„๋กœ ๋ฌถ์—ฌ์žˆ๊ณ , ์ด ํŒจํ‚ค์ง€ ์•ˆ์—๋Š” ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋“ค์ด ํฌํ•จ
  • ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ

โœ๏ธ Spring Boot

  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” Spring Project ์ค‘ ํ•˜๋‚˜

  • Spring Framework์˜ ์„ค์ • ๋ณต์žก ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ฒจ๋‚œ Spring Project ์ค‘ ํ•˜๋‚˜

โœ” Spring Boot ์‚ฌ์šฉ ์ด์œ  (์žฅ์ )

  • XML ๊ธฐ๋ฐ˜์˜ ๋ณต์žกํ•œ ์„ค๊ณ„ ๋ฐฉ์‹ ์ง€์–‘
    โžœ ๋ณต์žกํ•œ ์„ค์ •์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•จ

  • ์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ž๋™ ๊ด€๋ฆฌ
    ( ์ด ์ „์—๋Š” ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„, ๋ฒ„์ „์„ ์ผ์ผ์ด ์ถ”๊ฐ€ํ–ˆ์—ˆ์Œ )
    โžœ Spring Boot์˜ starter ๋ชจ๋“ˆ ๊ตฌ์„ฑ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•ด์•ผํ•˜๋Š” ๋ถˆํŽธํ•จ ์‚ฌ๋ผ์ง

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์˜ ์ž๋™ ๊ตฌ์„ฑ
    โžœ ์Šคํƒ€ํ„ฐ(Starter) ๋ชจ๋“ˆ์„ ํ†ตํ•ด ์„ค์น˜๋˜๋Š” ์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ค์ •์„ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑ
    ( ์• ๋„ˆํ…Œ์ด์…˜๋งŒ ์ฝ”๋“œ์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋จ )
    โžœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์„ค์ •์„ ์ง์ ‘ํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ์ตœ์†Œํ™”

  • ํ”„๋กœ๋•์…˜๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†์‰ฌ์šด ๋นŒ๋“œ
    โžœ ๊ฐœ๋ฐœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ์†์‰ฝ๊ฒŒ ๋นŒ๋“œํ•˜์—ฌ ์ง์ ‘ ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์„ War ํŒŒ์ผ ํ˜•ํƒœ๋กœ WAS(Web Application Server)์— ์˜ฌ๋ฆด ํ•„์š”๊ฐ€ ์—†์Œ

    โœ”๏ธ Java ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹
    โžœ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌํ˜„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ WAR(Web application ARchive) ํŒŒ์ผ ํ˜•ํƒœ๋กœ ๋นŒ๋“œํ•œ ํ›„์— WAS(Java์—์„œ๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค)๋ผ๋Š” ์„œ๋ฒ„์— ๋ฐฐํฌํ•ด์„œ ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰


    โœ”๏ธ WAS(Web Application Server)

    • ๊ตฌํ˜„๋œ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•ด์„œ ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฌผ์„ ์‹ค์ œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์‹คํ–‰๋˜๊ฒŒ ํ•ด์ฃผ๋Š” ์„œ๋ฒ„
    • Java์—์„œ๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ ๋„ ๋ถ€๋ฆ„
  • ๋‚ด์žฅ๋œ WAS๋ฅผ ํ†ตํ•œ ์†์‰ฌ์šด ๋ฐฐํฌ
    โžœ Spring Boot์€ Apache Tomcat์ด๋ผ๋Š” WAS๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์–ด, ๋ณ„๋„์˜ WAS๋ฅผ ๊ตฌ์ถ•ํ•  ํ•„์š” X
    โžœ Spring Boot์„ ํ†ตํ•ด ๋นŒ๋“œ๋œ jar ํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ java -jar <jar ํŒŒ์ผ๋ช…>.jar ๋ช…๋ น์–ด ํ•œ ์ค„๋งŒ ์ž…๋ ฅ ํ•ด์ฃผ๋ฉด ์„œ๋น„์Šค ๊ฐ€๋Šฅํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ์Œ

โœ๏ธ Spring Boot์˜ ํ•ต์‹ฌ ์ปจ์…‰

Spring ๊ตฌ์„ฑ์€ Spring์—๊ฒŒ ๋งก๊ฒจ๋ฒ„๋ฆฌ๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•˜์ž !!!!!


๐ŸŒˆ ๋Š๋‚€์ 

๊ทธ๋ž˜๋„ ์˜ค๋Š˜์€ ์–ด์ œ์˜ ์—ฐ์žฅ์„ !
์–ด์ œ๋ณด๋‹ค๋Š” ํ™•์‹คํžˆ ๋จธ๋ฆฌ์— ๋” ๋“ค์–ด์™”๋‹ค!

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