๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ›„๊ธฐ๐Ÿ”ฅ/ํšŒ๊ณ ๋ก

Spring Boot ๋กœ๋”ฉ ์‹œ๊ฐ„ ๋ฐ ๋นŒ๋“œ ์‹œ๊ฐ„ ๋‹จ์ถ•ํ•˜๊ธฐ

by dkswnkk 2025. 4. 16.

๊ฐœ์š”

ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“ˆ ์ˆ˜์™€ ์ฝ”๋“œ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๋กœ์ปฌ์—์„œ Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์™„์ „ํžˆ ๊ตฌ๋™ํ•˜๋Š” ๋ฐ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ์ง€์†์ ์œผ๋กœ ๊ธธ์–ด์กŒ๋‹ค. ์ด๋กœ ์ธํ•ด ๋กœ์ปฌ์—์„œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ ๊ตฌ๋™ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ถˆํ•„์š”ํ•œ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚ฌ๊ณ , ๋นŒ๋“œ ์‹œ๊ฐ„๋„ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ CI ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๊ธธ์–ด์ ธ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์ด ๊ณ„์† ์ €ํ•˜๋˜์—ˆ๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๋”ฉ ์‹œ๊ฐ„๊ณผ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๊ณ  ์ ์šฉํ•ด ๋ณด์•˜๋‹ค.(Spring Boot v3.2.7, Gradle v8.5 ์‚ฌ์šฉ ์ค‘)

1. ๋ถˆํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ ์Šค์บ” ๋ฒ”์œ„ ์ถ•์†Œ ๋ฐ ์ง€์—ฐ ์ดˆ๊ธฐํ™”(lazy initialization) ์„ค์ •

   ์ ์šฉ ์ดํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๋”ฉ ์‹œ๊ฐ„ 47% ๋‹จ์ถ•

  • Mac(M4 Pro): 53์ดˆ → 22์ดˆ
  • Windows(ASUS gu603): 90์ดˆ → 48์ดˆ

2. Gradle ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ(parallel execution) ๋ฐ ๋นŒ๋“œ ์บ์‹œ(build cache) ํ™œ์šฉ

   ์ ์šฉ ์ดํ›„ ๋นŒ๋“œ ์‹œ๊ฐ„ 91% ๋‹จ์ถ•

  • ์ „์ฒด ๋นŒ๋“œ ๊ธฐ์ค€: 3๋ถ„ 16์ดˆ → 17์ดˆ

 

 

1. ์ง€์—ฐ ์ดˆ๊ธฐํ™”(lazy initialization) ์„ค์ •

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

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ spring.main.lazy-initialization=true ์„ค์ •์„ ์ ์šฉํ•˜๋ฉด, ๋ชจ๋“  ๋นˆ์˜ ์ƒ์„ฑ์„ ํ•œ ๋ฒˆ์— ์‹ค์ œ ์‚ฌ์šฉ ์‹œ์ ๊นŒ์ง€ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 

https://www.baeldung.com/spring-boot-lazy-initialization

์ฆ‰์‹œ ์ดˆ๊ธฐํ™” ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ ์ง€์—ฐ ์ดˆ๊ธฐํ™” ๋ฐฉ์‹์—์„œ๋Š” ๋ถˆํ•„์š”ํ•œ ๋นˆ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๋”ฉ ์‹œ ํ•„์š”ํ•œ ํด๋ž˜์Šค์™€ ๋นˆ์˜ ์ˆ˜๊ฐ€ ๋Œ€ํญ ๊ฐ์†Œํ•˜์—ฌ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ๋‹จ์ถ•๋  ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ œ๋กœ ํ”„๋กœ์ ํŠธ์—์„œ Java Flight Recorder(JFR)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ง€์—ฐ ์ดˆ๊ธฐํ™” ์ ์šฉ ์ „ํ›„๋กœ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํšŸ์ˆ˜๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ค„์–ด๋“ค์—ˆ๋Š”์ง€ ๋น„๊ตํ•ด ๋ณด์•˜๋‹ค. 

-XX:StartFlightRecording=duration=60s,filename=boot.jfr,settings=profile

JFR์€ VM options์— ์œ„ ์˜ต์…˜์„ ์ฃผ๊ณ  ์‹คํ–‰ํ•˜๋ฉด ์ˆ˜์ง‘์ด ๊ฐ€๋Šฅํ•˜๊ณ , IntelliJ๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ๋ณ„๋„๋กœ JMC๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ ๋„ JFR์„ IntelliJ์—์„œ ์—ด์–ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

Profiler ๊ฒฐ๊ณผ

์ง€์—ฐ ๋กœ๋”ฉ ์ ์šฉ ์ „: 5,290ํšŒ
์ง€์—ฐ ๋กœ๋”ฉ ์ ์šฉ ํ›„: 2,202ํšŒ

์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํšŸ์ˆ˜๊ฐ€ ์ ˆ๋ฐ˜ ์ด์ƒ ๊ฐ์†Œํ–ˆ๋‹ค.

 

์ ์šฉ ์ „: ๋กœ๋”ฉ ์‹œ๊ฐ„ 53์ดˆ
์ ์šฉ ํ›„: ๋กœ๋”ฉ ์‹œ๊ฐ„ 22์ดˆ

๊ทธ๋ฆฌ๊ณ  ์ด์— ๋”ฐ๋ผ ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜๋Š” ์‹œ๊ฐ„๋„ ์ ˆ๋ฐ˜ ์ด์ƒ์ด ์ค„์–ด๋“ค์—ˆ๋‹ค.

 

์„ฑ๋Šฅ์ด ์ข‹์€๋ฐ ์™œ ๊ธฐ๋ณธ ์„ค์ •์ด ์•„๋‹๊นŒ?

์ง€์—ฐ ์ดˆ๊ธฐํ™”๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋ถ€ํŠธ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ๋นจ๋ผ์ง„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ๋„ ์Šคํ”„๋ง์˜ ๊ธฐ๋ณธ ์„ค์ •์€ ์™œ ์ฆ‰์‹œ ์ดˆ๊ธฐํ™”์ผ๊นŒ?

https://spring.io/blog/2019/03/14/lazy-initialization-in-spring-boot-2-2

์ง€์—ฐ ์ดˆ๊ธฐํ™”๊ฐ€ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ ์„ฑ๋Šฅ์ ์œผ๋กœ ๋›ฐ์–ด๋‚œ๋ฐ๋„ ๊ธฐ๋ณธ ์„ค์ •์ด ์•„๋‹Œ ์ด์œ ๋Š” ์ˆœํ™˜ ์ฐธ์กฐ, ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์˜ค๋ฅ˜ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ์ฆ‰์‹œ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๋“ฑ ์ž ์žฌ์  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋กœ์ปฌ์—์„œ ๋„์šธ ๋•Œ๋งŒ ์„ ํƒ์ ์œผ๋กœ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๊ฒŒ ์„ฑ๋Šฅ์˜ ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋œ๋‹ค.

๋งŒ์•ฝ ๋ชจ๋“  ๋นˆ์„ ์ง€์—ฐ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ถ€๋‹ด์Šค๋Ÿฝ๊ฑฐ๋‚˜, ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ๋„ ์ ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด @Lazy๋ฅผ ์‚ฌ์šฉํ•ด ์„ ํƒ์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ณ  ํ•˜๋‚˜์”ฉ ์ ์šฉํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

 

 

2. Gradle ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ(parallel execution) ๋ฐ  ๋นŒ๋“œ ์บ์‹œ(build cache)

Gradle์˜ ๋นŒ๋“œ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋ฌธ์„œ๋Š” Gradle Performance ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค. ์„ฑ๋Šฅ๊ฐœ์„  ์™ธ์—๋„ ๋ชจ๋“  ์†์„ฑ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด Gradle Properties๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

์„ฑ๋Šฅ ๊ฐœ์„ ๊ณผ ๊ด€๋ จ๋œ ์ฃผ์š” ์†์„ฑ์€ ์•„๋ž˜ ์„ธ ๊ฐ€์ง€์ด๋‹ค.

1. org.gradle.daemon=true

Gradle ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด JVM์„ ๋งค๋ฒˆ ์ƒˆ๋กœ ๋„์šฐ๋Š” ๋Œ€์‹  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ํ•ญ์ƒ ์‹คํ–‰๋˜๋Š” ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. JVM ์ดˆ๊ธฐํ™” ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ ์‹œ์ž‘์ด ํ›จ์”ฌ ๋นจ๋ผ์ง„๋‹ค. ๋‹ค๋งŒ Gradle v3.0๋ถ€ํ„ฐ๋Š” default๊ฐ€ true์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ์•„๋งˆ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค.

2. org.gradle.caching=true

์ด์ „ ๋นŒ๋“œ์—์„œ ์ƒ์„ฑ๋œ task ๊ฒฐ๊ณผ(์ปดํŒŒ์ผ ๊ฒฐ๊ณผ, ๋ฆฌ์†Œ์Šค ์ฒ˜๋ฆฌ ๋“ฑ)๋ฅผ ์ €์žฅํ•ด ๋‘์—ˆ๋‹ค๊ฐ€, ๋‹ค์Œ ๋นŒ๋“œ ์‹œ ์ž…๋ ฅ๊ฐ’์ด ๋™์ผํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฒฐ๊ณผ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ํŠนํžˆ ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ๊ณผ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์—์„œ ๊ณตํ†ต ๋ชจ๋“ˆ์ด ์ž์ฃผ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์— ํฐ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ ๋กœ ./gradlew clean์„ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ์บ์‹œ๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ  ์œ ์ง€๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ„๋„๋กœ ์บ์‹œ๋ฅผ ์ง€์šฐ์ง€ ์•Š๋Š” ํ•œ clean ํ›„ build๋ฅผ ์ˆ˜ํ–‰ํ•˜๋”๋ผ๋„ ์บ์‹œ๋Š” ์ ์šฉ๋œ๋‹ค. ์บ์‹œ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด Gradle์˜ ์บ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ง์ ‘ ์‚ญ์ œํ•˜๋ฉด ๋œ๋‹ค. (~/.gradle/)

3. org.gradle.parallel=true

์„œ๋กœ ์˜์กดํ•˜์ง€ ์•Š๋Š” task๋“ค์„ ๋™์‹œ์— ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋นŒ๋“œ ์†๋„๋ฅผ ๋†’์ธ๋‹ค. ์ด๋•Œ '์˜์กด๊ด€๊ณ„์— ๋”ฐ๋ฅธ ์ˆœ์„œ๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๋‚˜?' ์‹ถ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์˜์กด ๊ด€๊ณ„์— ๋”ฐ๋ฅธ ์‹คํ–‰ ์ˆœ์„œ๋Š” ๋”ฐ๋กœ ์ •์˜ํ•ด์ฃผ์ง€ ์•Š๋”๋ผ๋„ ๋ณด์žฅ๋œ๋‹ค. Gradle์€ ๋นŒ๋“œ ์‹คํ–‰ ์ „์— ํƒœ์Šคํฌ ๊ฐ„ ์˜์กด ๊ด€๊ณ„ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ์ด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํƒœ์Šคํฌ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

https://docs.gradle.org/current/userguide/build_lifecycle.html#:~:text=As%20a%20build%20author%2C%20you,order%20dictated%20by%20these%20dependencies

๋”ฐ๋ผ์„œ ์˜์กด์„ฑ์ด ์žˆ๋Š” ํƒœ์Šคํฌ๋Š” ๋ฐ˜๋“œ์‹œ ์„ ํ–‰ ํƒœ์Šคํฌ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ์‹คํ–‰๋˜๋ฉฐ, ์˜์กด์„ฑ์ด ์—†๋Š” ํƒœ์Šคํฌ๋Š” ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋œ๋‹ค.

์ ์šฉ๋ฐฉ๋ฒ•์€ project root์— gradle.properties๋ฅผ ๋งŒ๋“ค๊ณ  ์†์„ฑ์„ ํ—ˆ์šฉํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

# gradle.properties
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.caching=true

 

์ ์šฉ ํ›„ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋ฌธ์ œ

ํ•ด๋‹น ์„ค์ •๋“ค์„ ์ ์šฉํ•œ ์ดํ›„ ๋นŒ๋“œ ์ค‘ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์•„๋ž˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋ณธ์ธ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ JVM ํž™ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ฉ”ํƒ€์ŠคํŽ˜์ด์Šค ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m

 

Profiler ๊ฒฐ๊ณผ

./gradlew build --scan ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ–ˆ๋‹ค.

์•„๋ฌด ์„ค์ •๋„ ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ

๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ ์ด 26๊ฐœ์˜ ํ”„๋กœ์ ํŠธ์—์„œ 363๊ฐœ์˜ ํƒœ์Šคํฌ๊ฐ€ ์‹คํ–‰๋˜์—ˆ๊ณ , ์ „์ฒด ๋นŒ๋“œ ์‹œ๊ฐ„์€ 3๋ถ„ 16์ดˆ๊ฐ€ ์†Œ์š”๋˜์—ˆ๋‹ค.

 

caching๋งŒ ์ ์šฉํ–ˆ์„ ๋•Œ

org.gradle.caching=true ์˜ต์…˜์„ ์ ์šฉํ•œ ๊ฒฝ์šฐ, ๋™์ผํ•˜๊ฒŒ 363๊ฐœ์˜ ํƒœ์Šคํฌ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์ง€๋งŒ ์ด ์ค‘ 70๊ฐœ์˜ ํƒœ์Šคํฌ๊ฐ€ ์บ์‹œ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค. ๋•๋ถ„์— ์•ฝ 1๋ถ„ 37์ดˆ๋ฅผ ์ ˆ์•ฝํ•˜์—ฌ ์ „์ฒด ๋นŒ๋“œ ์‹œ๊ฐ„์€ 1๋ถ„ 35์ดˆ๋กœ ๋‹จ์ถ•๋˜์—ˆ๋‹ค.

 

caching + parallel ์ ์šฉํ–ˆ์„ ๋•Œ

org.gradle.parallel=true ์˜ต์…˜๊นŒ์ง€ ์ถ”๊ฐ€ ์ ์šฉํ•œ ๊ฒฐ๊ณผ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ํšจ๊ณผ์ ์œผ๋กœ ์ด๋ค„์ง„ ๊ฒƒ์„ ํƒ€์ž„๋ผ์ธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ „์ฒด ๋นŒ๋“œ ์‹œ๊ฐ„์€ ๋‹จ 17์ดˆ๋กœ ์„ฑ๋Šฅ์ด ํš๊ธฐ์ ์œผ๋กœ ๊ฐœ์„ ๋˜์—ˆ๋‹ค.

์œ„ ์†์„ฑ๋“ค์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๋กœ์ปฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ CI๋‹จ๊ณ„์—์„œ๋„ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ๋Œ€ํญ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

์ •๋ฆฌ

์ด๋ฒˆ ์ตœ์ ํ™” ์ž‘์—…์„ ํ†ตํ•ด Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กœ๋”ฉ ์‹œ๊ฐ„์€ ์ตœ๋Œ€ 47%, ๋นŒ๋“œ ์‹œ๊ฐ„์€ ์ตœ๋Œ€ 91%๊นŒ์ง€ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํŠนํžˆ ์ง€์—ฐ ์ดˆ๊ธฐํ™”์™€ Gradle์˜ ์บ์‹œ ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์„ค์ •์€ ์ ์šฉ ๋ฐฉ๋ฒ•์ด ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ๋ˆˆ์— ๋„๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ œ๊ณตํ•˜๊ธฐ์— ๋‚˜์ฒ˜๋Ÿผ ๋‚ญ๋น„๋˜๋Š” ์‹œ๊ฐ„ ์˜ค๋ฒ„ํ—ค๋“œ์— ๋Œ€ํ•ด ๊ฐœ์„  ๊ณ ๋ฏผ์„ ํ•œ๋‹ค๋ฉด ํ•œ ๋ฒˆ์ฏค ์ ์šฉํ•ด ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

๋Œ“๊ธ€