[๊ฐ€์•ผํƒœ์ž์˜ Spring Boot ๊ต์‹ค] ๋ ˆ๊ฑฐ์‹œ Spring MVC vs Spring Boot, ๊ทธ๋ฆฌ๊ณ  ํด๋ผ์šฐ๋“œ ์ด์•ผ๊ธฐ

in #kr โ€ข yesterday

๐ŸŒ ๊ฐ€์•ผํƒœ์ž์˜ Spring Boot ๊ต์‹ค: ๋ ˆ๊ฑฐ์‹œ Spring MVC vs Spring Boot, ๊ทธ๋ฆฌ๊ณ  ํด๋ผ์šฐ๋“œ ์ด์•ผ๊ธฐ

9EF1D508-F692-425A-836B-05AA4D69CE3C.png

์•ˆ๋…•ํ•˜์„ธ์š”! ๊ฐ€์•ผํƒœ์ž @talkit ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜Š

์ง€๋‚œ ๊ธ€๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” MacOS ํ™˜๊ฒฝ์—์„œ ์šฐ์—ฌ๊ณก์ ˆ ๋์— Java 1.8 ์—”์ง„์„ ์–น๊ณ , STS4 ์„ค์น˜์— ์ด์–ด ๊ฐ๊ฒฉ์˜ ์Šคํ”„๋ง ๋ถ€ํŠธ(Spring Boot) Hello World ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค! ๋งค๋ฒˆ ์ต์ˆ™ํ•œ ์œˆ๋„์šฐ ํ™˜๊ฒฝ์—์„œ๋งŒ ๊ฐœ๋ฐœ ์„ค์ •์„ ํ•˜๋‹ค๊ฐ€, ๋งฅ๋ถ ํ„ฐ๋ฏธ๋„์„ ๋‘๋“ค๊ธฐ๋ฉฐ ์‹ค์Šตํ•ด ๋ณด๋‹ˆ ์‚ฌ์†Œํ•œ ์—๋Ÿฌ๋ฅผ ์žก๋Š” ๊ฒƒ๋„ ์•„์ฃผ ์ƒ‰๋‹ค๋ฅด๊ณ  ์žฌ๋ฏธ์žˆ๋„ค์š”. ^^

๋‹จ์ˆœํžˆ ํ™”๋ฉด์— ๊ธ€์ž ํ•˜๋‚˜๋ฅผ ๋„์šฐ๋Š” HelloWorld ๋‹จ๊ณ„๋ฅผ ๋„˜์–ด์„œ๋‹ˆ, ์ด์ œ ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ง„์งœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™, ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ๋“ฑ)์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์–ด์ง€๋”๊ตฐ์š”. ๊ทธ๋ž˜์„œ ๋ณธ๊ฒฉ์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑ์— ์•ž์„œ, ๋จธ๋ฆฟ์†์„ ๋งด๋Œ๋˜ ๋ช‡ ๊ฐ€์ง€ ๊ทผ๋ณธ์ ์ธ ๊ถ๊ธˆ์ฆ๋“ค์„ ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

  1. ์ „ํ†ต์ ์ธ Spring MVC์™€ ์ˆœ์ˆ˜ Spring Boot ์„ค์ •์€ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ฌด์—‡์ด ๋‹ค๋ฅธ๊ฐ€? (๊ทธ ๋งŽ๋˜ XML๋“ค์€ ๋‹ค ์–ด๋””๋กœ ๊ฐ”๋‚˜?)
  2. ์‚ฌ๋žŒ๋“ค์€ ์™œ ์œ ๋… Spring Boot๋ฅผ ๋‘๊ณ  'ํด๋ผ์šฐ๋“œ ์นœํ™”์ (Cloud-Friendly)'์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๊ฐ€?
  3. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ธฐ์กด Spring MVC๋Š” ๋„์ปค(Docker)๋‚˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(Kubernetes) ๊ฐ™์€ ํ˜„๋Œ€์ ์ธ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์œผ๋กœ ์ „ํ™˜์ด ๋ถˆ๊ฐ€๋Šฅํ•œ๊ฐ€?

์˜ค๋Š˜์€ ๋ณธ๊ฒฉ์ ์ธ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „, ์ด ๊ถ๊ธˆ์ฆ๋“ค์„ ์•„์ฃผ ๋ช…์พŒํ•˜๊ณ  ์‰ฝ๊ฒŒ ํ’€์–ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!


1. Spring MVC vs Spring Boot ์„ค์ •์˜ ์ฐจ์ด: "์„ค์ • ์ง€์˜ฅ์˜ ํ•ด๋ฐฉ"

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

applicationContext.xml, spring-mvc.xml, context-datasource.xml ๋“ฑ ๊ฑฐ๋Œ€ํ•˜๊ณ  ๋ณต์žกํ•œ XML ํŒŒ์ผ๋“ค์„ ๋งค๋ฒˆ ๋ณต์‚ฌํ•ด ์™€์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜ ํ’€(DBCP)์„ ์…‹ํŒ…ํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ ์Šค์บ” ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด์•ผ ํ–ˆ์ฃ . ์˜คํƒ€๋ผ๋„ ํ•˜๋‚˜ ๋‚˜๋ฉด ์ปดํŒŒ์ผ ์‹œ์ ์—” ์•Œ ์ˆ˜๋„ ์—†๊ณ  ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ๋ฟœ์–ด๋‚ด๊ธฐ ์ผ์‘ค์˜€์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Spring Boot๋Š” ์ด ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์™„์ „ํžˆ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค. ๋ถ€ํŠธ์—๋Š” ์Šคํ”„๋ง ๊ด€๋ จ ์„ค์ •์„ ์œ„ํ•œ XML ํŒŒ์ผ์ด ๋‹จ ํ•˜๋‚˜๋„ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค!

์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” "์„ค์ •๋ณด๋‹ค๋Š” ๊ด€๋ก€(Convention over Configuration)"๋ฅผ ๋‚ด์„ธ์›๋‹ˆ๋‹ค.

  • ์ž๋™ ์„ค์ •(Auto Configuration): spring-boot-starter-web ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ˆœ๊ฐ„, ๋ถ€ํŠธ๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ "์•„, ์ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์›น ์„œ๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š”๊ตฌ๋‚˜!" ํ•˜๊ณ  ๋‚ด์žฅ ํ†ฐ์บฃ ์„œ๋ฒ„, JSON ๋ณ€ํ™˜๊ธฐ, ๋ฌธ์ž ํ•„ํ„ฐ ๋“ฑ์„ ์•Œ์•„์„œ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์…‹ํŒ…ํ•ด ์ค๋‹ˆ๋‹ค.
  • ํ”„๋กœํผํ‹ฐ ์ค‘์‹ฌ ์ œ์–ด: ๊ณผ๊ฑฐ ๋ณต์žกํ–ˆ๋˜ ๋ฐ์ดํ„ฐ์†Œ์Šค(DB ์ ‘์†) ์„ค์ •์€ ์ด์ œ application.properties ํŒŒ์ผ์— ๋”ฑ ์„ธ ์ค„, ๋“œ๋ผ์ด๋ฒ„ ์ด๋ฆ„๊ณผ URL, ๊ณ„์ • ์ •๋ณด๋งŒ ์ ์–ด์ฃผ๋ฉด ๋๋‚ฉ๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋Š” ์ธํ”„๋ผ ์„ค์ •์— ํž˜์„ ๋บ„ ํ•„์š” ์—†์ด ์˜ค์ง ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(Controller - Service - DTO - Mapper)์—๋งŒ 100% ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์ด์ฃ .

2. Spring Boot๋Š” ์™œ 'ํด๋ผ์šฐ๋“œ ์นœํ™”์ '์ผ๊นŒ?

์ตœ๊ทผ ์‹ค๋ฌด ๋ฐฑ์—”๋“œ ์ธํ”„๋ผ์˜ ๋Œ€์„ธ๋Š” AWS ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํด๋ผ์šฐ๋“œ ์„ธ์ƒ์—์„œ ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋…๋ณด์ ์ธ ์œ„์น˜๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ์š”?

โ‘  ๋‚ด์žฅ WAS๋ฅผ ํ’ˆ์€ '๋…๋ฆฝ ์‹คํ–‰ํ˜• JAR' (์ด์‹์„ฑ)

๋ ˆ๊ฑฐ์‹œ Spring MVC๋Š” ๋นŒ๋“œํ•˜๋ฉด WAR ํŒŒ์ผ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ํ˜ผ์ž์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๊ณ , ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋งˆ๋‹ค ์™ธ๋ถ€ ์›น ์„œ๋ฒ„(Tomcat)๋ฅผ ๋”ฐ๋กœ ์„ค์น˜ํ•˜๊ณ  ์„ค์ •์„ ๋งž์ถ˜ ๋’ค์— ๊ทธ ์•ˆ์— '์ฃผ์ž…(Deploy)'ํ•ด์•ผ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค.
๋ฐ˜๋ฉด, Spring Boot๋Š” ์›น ์„œ๋ฒ„(Tomcat)๋ฅผ ์ž๋ฐ” ํŒจํ‚ค์ง€ ๋‚ด๋ถ€์— ์•„์˜ˆ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œํ•˜๋ฉด ์›น ์„œ๋ฒ„๊ฐ€ ํฌํ•จ๋œ ๋‹จ ํ•˜๋‚˜์˜ JAR ํŒŒ์ผ์ด ํˆญ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์— ์ž๋ฐ”๋งŒ ๊น”๋ ค ์žˆ๋‹ค๋ฉด java -jar app.jar ๋ช…๋ น์–ด ํ•œ ์ค„๋กœ ์ฆ‰์‹œ ์–ด๋””์„œ๋“  ๋˜‘๊ฐ™์ด ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค. ์ธํ”„๋ผ ์˜์กด์„ฑ์ด ์‚ฌ๋ผ์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

โ‘ก ์••๋„์ ์ธ ๊ตฌ๋™ ์†๋„์™€ ๊ฐ€๋ฒผ์›€ (์˜คํ† ์Šค์ผ€์ผ๋ง ์ตœ์ ํ™”)

ํด๋ผ์šฐ๋“œ์˜ ํ•ต์‹ฌ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ชฐ๋ฆด ๋•Œ ์„œ๋ฒ„๋ฅผ ์ˆœ์‹๊ฐ„์— ์ˆ˜์‹ญ ๋Œ€๋กœ ๋Š˜๋ฆฌ๋Š” ์˜คํ† ์Šค์ผ€์ผ๋ง(Auto Scaling)์ž…๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์€ ํ†ฐ์บฃ์„ ์ผœ๊ณ  WAR ์••์ถ•์„ ํ’€๊ณ  ๋น„๋Œ€ํ•œ XML์„ ์ฝ๋А๋ผ ์„œ๋ฒ„๊ฐ€ ์ค€๋น„๋˜๋Š” ๋ฐ ์ˆ˜์‹ญ ์ดˆ์—์„œ ์ˆ˜๋ถ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋ถˆํ•„์š”ํ•œ ์ธํ”„๋ผ ๊ตฌ์กฐ๋ฅผ ๊ฑท์–ด๋‚ด๊ณ  ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ฆ‰์‹œ ๊ธฐ๋™ํ•˜๋ฏ€๋กœ ๊ตฌ๋™ ์†๋„๊ฐ€ ๊ทน๋„๋กœ ๋น ๋ฆ…๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ๊ฐ€ ๋ช…๋ นํ•˜๋Š” ์ฆ‰์‹œ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›์•„๋‚ผ ์ค€๋น„๋ฅผ ๋งˆ์นฉ๋‹ˆ๋‹ค.

โ‘ข ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ(Actuator) ๊ธฐ๋ณธ ๋‚ด์žฅ

์ˆ˜๋งŽ์€ ์„œ๋ฒ„๊ฐ€ ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ์„œ๋ฒ„ ์ƒํƒœ ๊ฐ์‹œ๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” Actuator ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ, DB ์ปค๋„ฅ์…˜ ํ’€ ์ƒํƒœ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์ฐฝ๊ตฌ๋ฅผ ์ฝ”๋”ฉ ํ•œ ์ค„ ์—†์ด ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•ด ์ค๋‹ˆ๋‹ค.


3. ๊ทธ๋Ÿผ Spring MVC๋Š” ๋„์ปค๋‚˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋‚˜์š”?

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋ง์”€๋“œ๋ฆฌ๋ฉด, ๋‹น์—ฐํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ๊ผญ ์Šคํ”„๋ง ๋ถ€ํŠธ๋งŒ ์จ์•ผ ๋„์ปค/์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋„์ปค(Docker)์™€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(Kubernetes) ์ž…์žฅ์—์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ๋‹ด๊ธด ํ”„๋กœ๊ทธ๋žจ์ด ์˜›๋‚  ์Šคํ”„๋ง์ธ์ง€ ์ตœ์‹  ์Šคํ”„๋ง ๋ถ€ํŠธ์ธ์ง€ ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ ๊ทœ๊ฒฉ๋งŒ ๋งž์ถ”๋ฉด ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด๋“  ๋‹ค ๋‹ด์•„์„œ ๊ตด๋ ค์ค๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ˆ˜๋งŽ์€ ๊ธฐ์—…๋“ค์ด ๊ธฐ์กด์— ์šด์˜ํ•˜๋˜ ๊ฑฐ๋Œ€ํ•œ ๋ ˆ๊ฑฐ์‹œ Spring MVC ์‹œ์Šคํ…œ์„ ๊ทธ๋Œ€๋กœ ๋„์ปค ์ด๋ฏธ์ง€๋กœ ํŒจํ‚ค์ง•ํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์œผ๋กœ ์ด์ฃผ(Migration)์‹œ์ผœ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋งŒ, ์žฅ์ ์„ ํ™œ์šฉํ•˜๋Š” ํšจ์œจ์„ฑ์˜ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • Spring MVC๋ฅผ ๋„์ปค์— ์˜ฌ๋ฆด ๋•Œ: ๋„์ปค ์ด๋ฏธ์ง€ ์•ˆ์— ์šฐ๋ถ„ํˆฌ OS๋ฅผ ๊น”๊ณ , ์™ธ๋ถ€ ํ†ฐ์บฃ ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์งœ๊ณ , ๊ฑฐ๊ธฐ์— WAR ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด ๋„ฃ์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋„์ปคํŒŒ์ผ(Dockerfile)์ด ๋ณต์žกํ•ด์ง€๊ณ  ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ๋ฌด๊ฑฐ์›Œ์ง‘๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ณต์ œํ•˜๊ฑฐ๋‚˜ ์ž๊ฐ€ ์น˜์œ (Heal)๋ฅผ ํ•  ๋•Œ๋„ ๊ตฌ๋™ ์†๋„๊ฐ€ ๋А๋ ค ๊ตผ๋œจ๊ฒŒ ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค.
  • Spring Boot๋ฅผ ๋„์ปค์— ์˜ฌ๋ฆด ๋•Œ: ์ˆœ์ˆ˜ํ•œ ์ž๋ฐ” ํ™˜๊ฒฝ ์ด๋ฏธ์ง€์— JAR ํŒŒ์ผ ํ•˜๋‚˜๋งŒ ๋ณต์‚ฌํ•ด ๋„ฃ์œผ๋ฉด ๋๋‚ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ๊ฐ€๋ณ๊ณ , ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ํ—ฌ์Šค ์ฒดํฌ(Liveness/Readiness Probe)์™€ ๋ถ€ํŠธ์˜ Actuator ๊ธฐ๋Šฅ์ด ์ฐฐ๋–ก์ฒ˜๋Ÿผ ์—ฐ๋™๋˜์–ด ์‹œ์Šคํ…œ ์ž๊ฐ€ ์น˜์œ  ๋Šฅ๋ ฅ์ด ๊ทน๋Œ€ํ™”๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, "๋„์ปค์™€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” Spring MVC๋ผ๋Š” ์˜›๋‚  ์ž๋™์ฐจ๋„ ํŠธ๋ ˆ์ผ๋Ÿฌ์— ์‹ค์–ด์„œ ์–ผ๋งˆ๋“ ์ง€ ์›€์ง์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ, ์ฒ˜์Œ๋ถ€ํ„ฐ ์ปจํ…Œ์ด๋„ˆ ๋น„ํ–‰๊ธฐ์— ์™ ๋“ค์–ด๊ฐ€๋„๋ก ๊ทœ๊ฒฉํ™”๋˜์–ด ์„ค๊ณ„๋œ Spring Boot๋ฅผ ํƒœ์› ์„ ๋•Œ ํ›จ์”ฌ ๋” ๊ฐ€๋ณ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋‚ ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค"๊ณ  ์ดํ•ดํ•˜์‹œ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค!


๐Ÿ ๊ฐ€์•ผํƒœ์ž์˜ ์š”์•ฝ ๋ฐ ์˜ˆ๊ณ 

๊ฒฐ๊ณผ์ ์œผ๋กœ, ๊ธฐ์กด์˜ ๋ณต์žกํ•œ ์ธํ”„๋ผ ํ™˜๊ฒฝ์„ ๋‹ค๋ฃจ์–ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ด ๊ฐ„๊ฒฐํ•จ๊ณผ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ(Cloud Native)์ ์ธ ํŠน์„ฑ์— ๊ฐํƒ„ํ•  ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์˜ ์ž๋™์ฐจ ์กฐ๋ฆฝ ๋‹จ๊ณ„ ๊ฐ™์€ ์„ค์ •์„ ๋’ค์—์„œ ๋ถ€ํŠธ๊ฐ€ ๋‹ค ์•Œ์•„์„œ ํ•ด์ฃผ๋‹ˆ๊นŒ์š”.

๊ถ๊ธˆ์ฆ์ด ์‹œ์›ํ•˜๊ฒŒ ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋‹ˆ, ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์ง„์งœ ์‹ค๋ฌด ์•„ํ‚คํ…์ฒ˜์˜ ๋ผˆ๋Œ€๋ฅผ ์„ธ์›Œ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!
์šฐ๋ฆฌ๊ฐ€ ์„ค์น˜ํ•œ ์ž๋ฐ” 1.8 ํ™˜๊ฒฝ์— ๋”ฑ ๋งž์ถฐ์„œ Controller - Service - DTO - Mapper - MyBatis - DB๊นŒ์ง€ ์ด์–ด์ง€๋Š” ํ‘œ์ค€ 5๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜์˜ ํŒจํ‚ค์ง€๋ฅผ ์ชผ๊ฐœ๊ณ  ์‹ค์ œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฑ„์›Œ ์ปดํŒŒ์ผํ•˜๋Š” ์‹ค์ „ ๊ณผ์ •์œผ๋กœ ์ฐพ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ์„ค์ •์„ ์ง„ํ–‰ํ•˜์‹œ๋ฉด์„œ ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ์˜๊ฒฌ์ด ์žˆ์œผ์‹œ๋ฉด ์–ธ์ œ๋“  ๋Œ“๊ธ€๋กœ ํŽธํ•˜๊ฒŒ ์†Œํ†ตํ•ด ์ฃผ์„ธ์š”. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! bananas ๐ŸŒ

Posted using SteemX

Sort: ย 

๊ฐ€์•ผํƒœ์ž๋‹˜ ๋งŒ๋“œ์‹œ๋Š” ํ”„๋กœ๊ทธ๋žจ ์จ๋ณด๊ณ  ์‹ถ๋„ค์š” ใ…Ž

Posted using SteemX

[booming-kr-auto]
๋ณดํŒ… ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ™Œ

  • ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•œ ๋Œ“๊ธ€: @talkit/spring-boot-spring-mvc-vs-spring-boot--e1cyi2
  • ์—ฌ๋Ÿฌ๋ถ„์ด ๋ณดํŒ…ํ•œ ์ˆ˜์น˜: 51.00% / rshares=148,983,812,155
  • @support-kr์ด ์—ฌ๋Ÿฌ๋ถ„์˜ ๋Œ“๊ธ€์— ๋“œ๋ฆฌ๋Š” ๋ณดํŒ…: ์ด 446,047.60SP ์ค‘ 13.33%
    IMG_9947.jpeg
  • ์—ฌ๋Ÿฌ๋ถ„์˜ ์ž„๋Œ€์™€ ๋ณดํŒ…์ด kr ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ™œ์„ฑํ™” ํ•˜๋Š”๋ฐ ํฐ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.04
TRX 0.33
JST 0.093
BTC 64352.38
ETH 1813.56
USDT 1.00
SBD 0.39