Kubernetes์— Spring Boot ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ๋ฐฐํฌํ•˜๊ธฐ  

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์— Java Spring Boot ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ

Last updated

Spring Boot๋Š” ์ƒ์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น ๋ฅด๊ฒŒ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋…์ ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ ํŒจํ„ด์€ Polyglot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ Spring Boot ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

By Anthony Amanse, John Zaccone, Animesh Singh

Overview

Java ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ๋‚ด์—์„œ Java EE์™€ ๊ฐ™์€ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ˜์‹ ์ ์ธ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Spring ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Java ์ƒํƒœ๊ณ„์—์„œ ์ด๋ฏธ ํ™•๋ฆฝ๋œ ์กด์žฌ์ด๋ฉฐ, ํ˜„์žฌ Spring Boot๋Š” Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ๋งŽ์€ ๊ด€์‹ฌ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Spring Boot๋Š” Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ์•„์ฃผ ๋…์ ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ ์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์˜ -jar ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ค๊ฑฐ๋‚˜ ์ข€๋” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์ธ WAR ๋ฐฐํฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” Stand-alone ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ์— String Boot๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ธฐ์กด์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์— WAR ํŒŒ์ผ๋กœ ๋ฐฐ์น˜ํ•˜๊ฑฐ๋‚˜ ๋‚ด์žฅ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋กœ “๋šฑ๋šฑํ•œ” JAR ํŒŒ์ผ๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“  Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ž˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Spring Cloud์™€ ๊ฐ™์€ ๋„ค์ดํ‹ฐ๋ธŒ Spring ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ํƒ์ƒ‰, ๋“ฑ๋ก, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Polyglot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ธก๋ฉด์—์„œ๋Š” ์–ด๋–ค ๊ฒƒ์ด ํ•„์š”ํ• ๊นŒ์š”? polyglot ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด, Kubernetes์™€ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ๋ชฉ์ ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ ํŒจํ„ด์—์„œ๋Š”, “Office Space” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. – ๋ช‡๋ช‡ ๋ถ„๋“ค์€ ์•„์‹œ๊ฒ ์ง€๋งŒ ‘Office Space’ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์˜ํ™” Office Space์˜ ๋“ฑ์žฅ์ธ๋ฌผ์ธ Michael Bolton์˜ ์•„์ด๋””์–ด์—์„œ ์‹œ์ž‘๋์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ์™„๋ฃŒํ•˜๋ฉด, Spring Boot ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ํฌํ•จํ•˜๋Š” polyglot ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Flow

  1. Python์œผ๋กœ ์ž‘์„ฑ๋œ ํŠธ๋žœ์ ์…˜ ์ƒ์„ฑ ์„œ๋น„์Šค๋Š” ํŠธ๋žœ์ ์…˜์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•˜๊ณ  ์ด๋ฅผ ์ด์ž ๊ณ„์‚ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค.
  2. ์ด์ž ๊ณ„์‚ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ด์ž๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ด๋ฅผ MySQL ๋ฐ์ดํƒ€๋ฒ ์ด์Šค๋กœ ์ด๋™์‹œ์ผœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•จ๊ป˜ ๋ฐฐ์น˜ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ Bluemix์™€ ๊ฐ™์€ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ด์ž ๊ณ„์‚ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๊ธˆ์•ก์ด ์‚ฌ์šฉ์ž์˜ ๊ณ„์ขŒ์— ์ž…๊ธˆ๋˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์•Œ๋ฆผ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  4. ์•Œ๋ฆผ ์„œ๋น„์Šค๋Š” OpenWhisk ์•ก์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฉ”์ผ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. Slack์— ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋„๋ก OpenWhisk ์•ก์…˜์ด ํ˜ธ์ถœ๋˜๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค..
  5. ๋ถ€๊ฐ€์ ์œผ๋กœ, Slack์— ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ OpenWhisk ์•ก์…˜์ด ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ์‚ฌ์šฉ์ž๋Š” Node.js ๊ธฐ๋ฐ˜์˜ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ๊ณ„์ขŒ์˜ ์ž”์•ก์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Components

Kubernetes Cluster

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

Spring Boot

๋…๋ฆฝ ์‹คํ–‰ํ˜•(stand-alone), ์ƒ์šฉํ™” ๋ ˆ๋ฒจ์˜, Spring ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

IBM Cloud Functions

ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚œ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์ด๋ฉฐ, ์˜จ๋””๋งจ๋“œ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. (FaaS - Function as a service๋กœ๋„ ๋ถˆ๋ฆผ)

IBM Cloud DevOps Toolchain Service

๊ฐœ๋ฐœ, ๋ฐฐํฌ ๋ฐ ์šด์˜ ์ž‘์—…์„ ์ง€์›ํ•˜๋Š” ๋„๊ตฌ ํ†ตํ•ฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

Technologies

ํด๋ผ์šฐ๋“œ

์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ปดํ“จํŒ… ๋ฐ IT ๋ฆฌ์†Œ์Šค์— ์—‘์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค

์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜

์ปจํ…Œ์ด๋„ˆํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ, ์Šค์ผ€์ผ๋ง ๋ฐ ๊ด€๋ฆฌ์˜ ์ž๋™ํ™”.

Containers

์•ฑ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ€์ƒ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ์ฒด.

DevOps

๊ฐœ๋ฐœ, IT, ์šด์˜ ๋ถ€์„œ ๊ฐ„์˜ ํ˜‘์—…๊ณผ ์˜์‚ฌ ์†Œํ†ต์„ ๊ฐ•์กฐํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ๋ฐฉ๋ฒ•๋ก ๊ณผ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐฐํฌ์˜ ์ž๋™ํ™”

Java

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์•ˆ์ „ํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด.

Microservices

ํด๋ผ์šฐ๋“œ ๋‚ด ์ตœ์‹  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์˜ ๊ตฌ์„ฑ์š”์†Œ ์ œ๊ณต์„ ์œ„ํ•ด ๊ฒฝ๋Ÿ‰ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ์„ธ๋ถ„ํ™”๋œ ์•ฝ๊ฒฐํ•ฉ ์„œ๋น„์Šค๋“ค์˜ ์ง‘ํ•ฉ.

Serverless Computing

์ด๋ฒคํŠธ์— ๋Œ€์‘ํ•ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ์ด๋ฒคํŠธ-์•ก์…˜ ํ”Œ๋žซํผ(FaaS, Function as a service๋กœ๋„ ๋ถˆ๋ฆผ)์ž…๋‹ˆ๋‹ค.

Related Blogs

๊ท€ํ•˜๊ฐ€ ์ž…๋ ฅํ•œ ์‡ผํŠธ์ฝ”๋“œ ๊ฒ€์ƒ‰์กฐ๊ฑด์— ๋งค์น˜๋˜๋Š” ํฌ์ŠคํŒ…์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Related Links

Developer journey: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— MicroProfile ๊ธฐ๋ฐ˜์˜ Java ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌ์ถ•ํ•˜๊ธฐ

์—ฌ๋Ÿฌ๋ถ„์ด ์ด๋ฏธ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ธฐ์ˆ ๊ณผ ๊ฒฝํ—˜์„ ํ† ๋Œ€๋กœ MicroProfile๊ณผ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ Java 8 ๊ธฐ๋ฐ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ IBM Bluemix ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.(์˜๋ฌธ)

IBM Bluemix ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค๊ฐ€ Docker์™€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ฐ•๋ ฅํ•œ ํˆด๊ณผ ์ง๊ด€์ ์ธ UX, ๋‚ด์žฅ๋œ ๋ณด์•ˆ ๋ฐ ์•„์ด์†”๋ ˆ์ด์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.