์ž๋ฐ” ๊ถŒ์žฅ์‚ฌํ•ญ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋ฉด์„œ๋„ ๊นŒ๋‹ค๋กœ์›Œ์กŒ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๊ฐ€ DevOps ๋ฐฉ์‹์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๋‹จ๊ณ„๋ณ„ ์ ˆ์ฐจ๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ์ ˆ๋Œ€๋กœ ์™„์ „ํ•œ ๋ชฉ๋ก์ด ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ œ์‹œํ•˜๋Š” ์•„์ด๋””์–ด์˜ ๋Œ€๋ถ€๋ถ„์€ ๊ถŒ์žฅ์‚ฌํ•ญ์— ๋Œ€ํ•˜์—ฌ ๋” ํญ๋„“์€ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•˜๋Š” DORA DevOps ์—ฐ๊ตฌ ๋ฐ ํ‰๊ฐ€ ์—ฐ๊ตฌ์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ๊ธฐํƒ€ ์ถœ์ฒ˜๋กœ๋Š” ๋‹ˆ์ฝœ ํฌ์Šค๊ทธ๋ Œ ๋ฐ•์‚ฌ, ์ œ์ฆˆ ํ—˜๋ธ”, ์ง„ ํ‚ด์˜ Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations๊ณผ ํƒ€์ดํ„ฐ์Šค ์œˆํ„ฐ์Šค, ํ†ฐ ๋งจ์Šˆ๋ ‰, ํ•˜์ด๋Ÿผ ๋ผ์ดํŠธ๊ฐ€ ํ๋ ˆ์ดํŠธํ•œ Software Engineering at Google์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋ฅผ ์ฝ๊ธฐ ์ „์— ์ž๋ฐ” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์„ ๋จผ์ € ์ฝ์–ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์กฐ์ง๋งˆ๋‹ค ๋‹ˆ์ฆˆ๋Š” ๊ณ ์œ ํ•˜์ง€๋งŒ ๋‹ค์Œ ๊ธฐ์ˆ  ์Šคํƒ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ˜ํ”Œ ๊ธฐ์ˆ  ์Šคํƒ 1 ์ƒ˜ํ”Œ ๊ธฐ์ˆ  ์Šคํƒ 2
  • ์†Œ์Šค ์ฝ”๋“œ์šฉ Cloud Source Repositories, GitHub ๋˜๋Š” Bitbucket
  • ์•„ํ‹ฐํŒฉํŠธ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ Whitesource RenovateBot
  • ๋‹จ์œ„/์ œ์ถœ ์ „ ํ…Œ์ŠคํŠธ์šฉ Cloud Build
  • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์šฉ Cloud Build
  • ๋ฐฐํฌ์šฉ Cloud Deploy
  • ์†Œ์Šค ์ฝ”๋“œ์šฉ GitHub
  • ์•„ํ‹ฐํŒฉํŠธ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ GitHub Dependabot
  • ์ œ์ถœ ์ „ ํ…Œ์ŠคํŠธ์šฉ GitHub ์ž‘์—…
  • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์šฉ GitHub ์ž‘์—…
  • ๋ฐฐํฌ์šฉ GitHub ์ž‘์—…

์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ์š”์†Œ๋กœ ๋นŒ๋“œ๋œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ’ˆ์งˆ ๋ฐ ์ฃผ๊ธฐ ์‹œ๊ฐ„์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ตœ์‹  ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ ์ œ์–ด

์—ฐ๊ตฌ (17ํŽ˜์ด์ง€, 14ํŽ˜์ด์ง€, 31ํŽ˜์ด์ง€, 60ํŽ˜์ด์ง€)์— ๋”ฐ๋ฅด๋ฉด ์†Œ์Šค ์ฝ”๋“œ์šฉ ๋ฒ„์ „ ์ œ์–ด๋Š” ์ž๋™ํ™” ๋ฐ ํ…Œ์ŠคํŠธ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ํ’ˆ์งˆ ํ–ฅ์ƒ์„ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ด์ ์„ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค.

GitHub, Gitlab, Bitbucket๋„ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ

ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋ฒ• ๋Œ€๋ถ€๋ถ„์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งค์šฐ ์ค‘์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ๊ถŒ์žฅ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ SRE Book์˜ ์•ˆ์ •์„ฑ ํ…Œ์ŠคํŠธ(Testing for Reliability) ์žฅ๊ณผ Google ํ…Œ์ŠคํŠธ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ž๋ฐ” ๊ฐœ๋ฐœ์ž์˜ ์ฃผ๋œ ๊ด€์‹ฌ์‚ฌ๋Š” ์ž๋™ํ™”๋œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. JUnit, Spring ํ…Œ์ŠคํŠธ, Apache Maven Surefire, Gradle ์ž๋ฐ” ํ…Œ์ŠคํŠธ๋Š” ์ž๋ฐ” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์œ ์šฉํ•œ ๋ฆฌ์†Œ์Šค์ž…๋‹ˆ๋‹ค.

์ง€์†์  ํ†ตํ•ฉ/๋ฐฐํฌ ์ž๋™ํ™”

์ง€์†์  ํ†ตํ•ฉ ๋ฐ ๋ฐฐํฌ ์ž๋™ํ™”๋Š” ์ตœ์‹  DevOps ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ œ์ž‘, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ

  • Cloud Build [๋น ๋ฅธ ์‹œ์ž‘] [Java ๊ด€๋ จ] [๋ฐฐํฌ] [ํŠธ๋ฆฌ๊ฑฐ] ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์— ์‰ฝ๊ฒŒ ๋งž์ถค์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๋ฃŒ (120 ๋นŒ๋“œ ๋ถ„ / ์ผ) ๋˜๋Š” ์ €๋น„์šฉ์˜ ๊ฐ„ํŽธํ•œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Tekton์€ ์‹œ์Šคํ…œ์— ๋งž๊ฒŒ Cloud Build ์•„์ด๋””์–ด๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
  • Spinnaker๋Š” ์˜คํ”ˆ์†Œ์Šค, ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ ์ง€์†์  ๋ฐฐํฌ ํ”Œ๋žซํผ์œผ๋กœ, ์†Œํ”„ํŠธ์›จ์–ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ™•์‹ ์„ ๊ฐ€์ง€๊ณ  ์‹ ์†ํ•˜๊ฒŒ ์ถœ์‹œํ•˜๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ์ถœ์‹œํ•˜๊ณ  ๋กค๋ฐฑํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • GitHub์˜ ์ž‘์—…์€ ํ…Œ์ŠคํŠธ๋ฅผ ์„ค์ •ํ•˜๊ณ  GitHub์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์„œ๋“œ ํŒŒํ‹ฐ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.
  • Gitlab, Circle CI, Travis CI ๋“ฑ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Google ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ์„ ํ˜ธ๋˜๋Š” ๋ฐฉ๋ฒ•์€ Cloud ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŽ˜์ด์ง€์˜ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Java์˜ ๊ฒฝ์šฐ Libraries-BOM์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ์•„ํ‹ฐํŒฉํŠธ์˜ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฒด ๋ฒ„์ „์˜ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋ฉด ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ์„ ํƒ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ค์ด์•„๋ชฌ๋“œ ์ข…์† ํ•ญ๋ชฉ ๋ฌธ์ œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณ„์† ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜์—ฌ ์—…๋ฐ์ดํŠธ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์€ ์ด ํŽ˜์ด์ง€์— ํ•ญ์ƒ ๋‚˜์—ด๋˜์–ด ์žˆ๊ฑฐ๋‚˜ Maven-Central์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ตœ์‹  ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ข…์† ํ•ญ๋ชฉ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€

์•…์˜์  ํ–‰์œ„์ž๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋ ค๋ฉด ์ข…์† ํ•ญ๋ชฉ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋„์›€์ด ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ œ3์ž ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•˜๋ฉด ์ข…์† ํ•ญ๋ชฉ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ž๋™ ํ…Œ์ŠคํŠธ์™€ ์ง€์†์  ํ†ตํ•ฉ/์ง€์†์  ๋ฐฐํฌ๋ฅผ ๊ฒฐํ•ฉํ•˜๋ฉด ํ๋ฆ„์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค.

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

์ง€์›๋˜๋Š” ์ž๋ฐ” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ(JRE) ์‚ฌ์šฉ

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

์—ฌ๋Ÿฌ JDK ๋ฒ„์ „์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ SDKMAN!์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ JDK ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ (Google Kubernetes Engine, Cloud Run, GKE ํด๋Ÿฌ์Šคํ„ฐ)

RenovateBot ๋˜๋Š” DependaBot์—์„œ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ด‡์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ JRE ๋ฐ JDK์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. JDK์™€ JRE๋ฅผ ๋™์ผํ•œ ๋ฒ„์ „์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Dockerfile์„ ์ˆ˜๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ JRE๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

Compute Engine ์‚ฌ์šฉ

์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

App Engine ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ

์ž๋ฐ” 8๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

App Engine ํ‘œ์ค€

์ž๋ฐ” 8์—์„œ ์ž๋ฐ” 11๋กœ App Engine ์•ฑ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ž๋ฐ” ๊ฐœ๋ฐœ ํ‚คํŠธ์˜ LTS ๋ฒ„์ „ ์‚ฌ์šฉ

JDK๋Š” ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์–ธ์–ด ๊ธฐ๋Šฅ์€ ํŠน์ • JDK์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์žฅ๊ธฐ์  ์ง€์›(LTS)์„ ํ†ตํ•ด ์‚ฌ์šฉ๋Ÿ‰์„ JDK์— ๊ณ ์ •ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•˜๋ฉด ๋‹ค์Œ LTS ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ณ ์ •๋œ ์ฃผ LTS ์ถœ์‹œ ๋ฒ„์ „์˜ ์ตœ์‹  ๋ถ€ ์ถœ์‹œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” JDK ๋ฐ JRE๋ฅผ ๋™๊ธฐํ™” ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(์˜ˆ: JDK๊ฐ€ ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ) ์ดํ›„ JDK๋กœ ์ปดํŒŒ์ผํ•˜๊ณ  ์ด์ „ JRE์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Maven์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

์ฝ”๋”ฉํ•  ์–ธ์–ด ์ˆ˜์ค€๊ณผ ๋Œ€์ƒ JRE๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. pom.xml ํŒŒ์ผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค(์ž๋ฐ” 8์˜ ๊ฒฝ์šฐ). xml <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target>

์ž๋ฐ” 11๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>

Gradle์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ž๋ฐ” 8์šฉ build.gradle ํŒŒ์ผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

compileJava {
  sourceCompatibility = 1.8
  targetCompatibility = 1.8
}

๋˜๋Š” ์ž๋ฐ” 11์˜ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

compileJava {
  sourceCompatibility = 11
  targetCompatibility = 11
}

์ฐธ๊ณ ๋กœ ์ž๋ฐ” 8 ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ์ž๋ฐ” 8 ์ดํ›„์— ์‚ญ์ œ๋œ 1. ํ”„๋ฆฌํ”ฝ์Šค(์ž๋ฐ” 7์˜ ๊ฒฝ์šฐ 1.7, ์ž๋ฐ” 8์˜ ๊ฒฝ์šฐ 1.8)๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.