์•ˆ๋…•ํ•˜์„ธ์š”? ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ง€๋‚œ ๋ฒˆ Node.js ๋Ÿฐํƒ€์ž„์—์„œ Redis ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์ด์–ด Java Runtime์ธ Liberty Profile Runtime์—์„œ Redis์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ๊ธ€์—์„œ ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์ด ์žˆ์œผ๋ฏ€๋กœ Bluemix์—์„œ Redis ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด ๋ณด์ž #1 โ€“ Node.js๋ฅผ ๋จผ์ € ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Redis Cloud๋ฅผ ์ด์šฉํ•œ Redis ์•ฑ ์ƒ์„ฑ

์•ž์„œ Redis Cloud๋ฅผ ์ด์šฉํ•˜์—ฌ Node.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ–ˆ์—ˆ๋‹ค๋ฉด, ์ด๋ฒˆ์—๋Š” WebSphere Liberty Profile์„ ์ด์šฉํ•œ Java Redis Client๋ฅผ ์ด์šฉํ•ด ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์ง€๋‚œ Node.js์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Bluemix GUI๋ฅผ ์ด์šฉํ•˜๋ฉด ์ƒ์„ฑํ•œ Runtime์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ๋ฅผ ์†Œ์Šค ์ฝ”๋“œ๋กœ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ด์šฉํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Java Runtime App ์ƒ์„ฑ

Bluemix Catalog์˜ Cloud Foundry ์•ฑ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋ฉด Bluemix์—์„œ ์ง€์›ํ•˜๋Š” ๋‹ค์–‘ํ•œ Runtime์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cfapp_nodejs

๊ทธ ์ค‘ Liberty for Java๋ฅผ ์„ ํƒํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด Java Runtime์„ ์ด์šฉํ•˜์—ฌ ์ด๋ฆ„์ด ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์ ์ ˆํžˆ ์ž…๋ ฅ ํ›„ ์•ฑ์„ ์ƒ์„ฑ ํ•ฉ๋‹ˆ๋‹ค.


Redis Cloud ์„œ๋น„์Šค ๋ฐ”์ธ๋“œ

์ •์ƒ์ ์œผ๋กœ ์•ฑ์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค๋ฉด ์ด์ œ๋Š” Redis Cloud ์„œ๋น„์Šค๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์— ์ƒ์„ฑํ•ด ๋†“์•˜๋˜ Redis Cloud ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์—ฐ๊ฒฐ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๊ณ 



๊ธฐ์กด ํ•ญ๋ชฉ ์—ฐ๊ฒฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด, ํ˜„์žฌ ์ž‘์—… ๊ณต๊ฐ„์— ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ์„œ๋น„์Šค๋“ค ์ค‘ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์„œ๋น„์Šค ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ ๋˜์—ˆ๋‹ค๋ฉด ์•ฑ์„ ๋‹ค์‹œ ์Šคํ…Œ์ด์ง€ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.



์ •์ƒ์ ์œผ๋กœ Redis Cloud ์„œ๋น„์Šค๊ฐ€ ์—ฐ๊ฒฐ ๋˜์—ˆ๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Liberty ์šฉ ์˜ˆ์ œ ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ ๋ฐ Local ์‹คํ–‰ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

Bluemix์—์„œ๋Š” ์•ž์„œ ์ƒ์„ฑํ•œ Node.js ์•ฑ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Liberty Profile์— ๋Œ€ํ•œ ์˜ˆ์ œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹œ๋ณด๋“œ๋กœ ์ง„์ž…ํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ ํ›„ local ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ Redis๋ฅผ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑ ํ›„ ์ด๋ฅผ ๋‹ค์‹œ Bluemix๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Œ€์‹œ๋ณด๋“œ์˜ ์™ผํŽธ์—๋Š” ์„ ํƒํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ๋ฉ”๋‰ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—์„œ ์‹œ์ž‘ํ•˜๊ธฐ ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜๋ฉด ํ•ด๋‹น ์•ฑ์— ๋Œ€ํ•œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋งํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ˜น์‹œ ๋‹ค์šด๋กœ๋“œ ๋งํฌ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด CF CLI๋ฅผ ์ด์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ GUID๋ฅผ ํ™•์ธ ํ›„ ์•„๋ž˜ ๋งํฌ๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์—ด๋ฉด ์˜ˆ์ œ ์ฝ”๋“œ๊ฐ€ ๋‹ค์šด๋กœ๋“œ ๋ฉ๋‹ˆ๋‹ค.

https://console.ng.bluemix.net/rest/apps/{GUID}/starter-download

์ฐธ๊ณ ๋กœ Region(์ง€์—ญ)์ด ๋ฏธ๊ตญ ๋‚จ๋ถ€๊ฐ€ ์•„๋‹Œ ์˜๊ตญ์ด๋‚˜ ํ˜ธ์ฃผ์ธ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ URL์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

[์˜๊ตญ] https://console.eu-gb.bluemix.net/rest/apps/{GUID}/starter-download
[ํ˜ธ์ฃผ] https://console.au-syd.bluemix.net/rest/apps/{GUID}/starter-download

์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ–ˆ๋‹ค๋ฉด, ์›๊ฒฉ์ด ์•„๋‹Œ Local ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜๋˜์–ด์•ผ ํ•  ํ•ญ๋ชฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

JDK์˜ ๊ฒฝ์šฐ๋Š” Maven ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ฒ„์ ผ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. (๋ณดํ†ต์€ JDK 1.7), Eclipse๋Š” Java ์†Œ์Šค ์ฝ”๋“œ ํŽธ์ง‘์šฉ์œผ๋กœ์„œ ๋‹ค๋ฅธ Java Source Code ํŽธ์ง‘๊ธฐ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ํ•ญ๋ชฉ์ด ์ž˜ ์„ค์น˜๋˜์—ˆ๋‹ค๋Š” ๊ฐ€์ • ์•„๋ž˜ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์••์ถ•ํ•ด์ œ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ์†Œ์Šค ํŒŒ์ผ ์ค‘ manifest.yml ํŒŒ์ผ์ด ์žˆ๋Š”๋ฐ, ์ด ํŒŒ์ผ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ณธ ์ •๋ณด์™€ ์•ž์„œ ์ƒ์„ฑํ–ˆ๋˜ Redis ์„œ๋น„์Šค๊ฐ€ ์ •์˜ ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด์ œ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“ˆ ์„ค์น˜๋ฅผ ์œ„ํ•ด ๋ช…๋ น์ฐฝ์„ ์—ด์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ pom.xml ํŒŒ์ผ์ด ์žˆ๋Š” ๊ณณ์œผ๋กœ ์ด๋™ ํ›„ mvn clean install ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์•ž์„œ ๋งํ–ˆ๋˜ maven์ด ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด ๊ธฐ์กด buildํ•œ ์ •๋ณด๋ฅผ ์‚ญ์ œ ํ›„ ํ•„์š”ํ•œ ๋ชจ๋“ˆ ๋ฐ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ณ„๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด target ํด๋”์— pom.xml์— ์ •์˜๋œ JavaHelloWorldApp.war ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ์•ฑ์— ์—ฐ๊ฒฐ๋œ Redis ์„œ๋น„์Šค ์‹ ์ž„ ์ •๋ณด๋ฅผ ํ™•์ธ ํ•˜๊ธฐ ์œ„ํ•ด VCAP_SERVICES ์ •๋ณด๋ฅผ ํ™•์ธ ํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. Cloud Foundry ์•ฑ์€ ์•ฑ์— ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ VCAP_SERVICES๋ผ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋Š” CF CLI์˜ cf env {appname} ๋ช…๋ น์œผ๋กœ ํ™•์ธ ํ•˜๊ฑฐ๋‚˜ Bluemix ๋Œ€์‹œ๋ณด๋“œ์˜ Runtime ๋ฉ”๋‰ด์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํƒญ์„ ํ†ตํ•ด ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ด ๊ฐ’์„ VCAP_SERVICES๋ผ๋Š” ์ด๋ฆ„์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ €์žฅ ๋ช…๋ น ์‹คํ–‰ ์‹œ ๊ทธ ๊ฐ’์— ๊ฐœํ–‰ ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ „์ฒด ์ž…๋ ฅ์ด ์•ˆ๋˜๋ฏ€๋กœ Bluemix GUI์—์„œ ๋ณต์‚ฌํ–ˆ๋˜ VCAP_SERVICES ๋ฐ์ดํ„ฐ์—์„œ ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ Node.js ์˜ˆ์ œ์—์„œ๋Š” ์ด๋Ÿฐ ๋ถˆํŽธํ•จ์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” vcap-local.js ๋ฅผ ์ด์šฉํ–ˆ๋Š”๋ฐ, vcap-local.json์ด๋ผ๋Š” ํŒŒ์ผ์— VCAP_SERVICES์˜ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐœ๋ฐœํ™˜๊ฒฝ์— ๋งž์ถฐ ์„ค์ •ํ•˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜๋‹ˆ Node.js runtime์„ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ณด๋‹ค ๊ฐ„ํŽธํ•˜๊ฒŒ VCAP_SERVICES ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Linux/MacOS

export VCAP_SERVICES=$(node vcap-local.js)

  • Windows

FOR /F "delims=" %i IN ('node vcap-local.js') DO set VCAP_SERVICES=%i

VCAP_SERVICES ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, ์ด์ œ mvn liberty:run-server๋ฅผ ์‹คํ–‰ํ•˜์—ฌ local์—์„œ Cloud Foundry ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธ ํ•ฉ๋‹ˆ๋‹ค.


Redis Client ๋ชจ๋“ˆ ์„ค์น˜ ๋ฐ Redis Client Manager ํด๋ž˜์Šค ์ž‘์„ฑ

Java์šฉ Redis Client๋Š” ๋‹ค์–‘ํ•œ client๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค๋งŒ, ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์ค‘ ํ•˜๋‚˜์ธ lettuce๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“ˆ์˜ ์„ค์น˜๋ฅผ ์œ„ํ•ด pom.xml ํŒŒ์ผ์˜ dependencies ์ •๋ณด์— lettuce ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ , ๊ธฐ๋ณธ ์˜ˆ์ œ์—์„œ๋Š” JSON ํ˜•์‹์œผ๋กœ ๋˜์–ด์žˆ๋Š” VCAP_SERVICES๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. JSON ์ •๋ณด๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“ˆ๋กœ Google GSON์„ ์ด์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด pom.xml์— ์•„๋ž˜์™€ ๊ฐ™์ด GSON ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

pom.xml์— ๋ชจ๋“ˆ ์ •๋ณด๋ฅผ ๋‹ค ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด mvn install ๋ช…๋ น์„ ํ˜ธ์ถœํ•˜์—ฌ ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ๋ชจ๋“ˆ์˜ ์„ค์น˜๊ฐ€ ๋‹ค ๋˜์—ˆ๋‹ค๋ฉด ์ด์ œ src/java/main/wasdev/sample/redis ํด๋” ์•„๋ž˜์— Java ํด๋ž˜์Šค๋กœ RedisClientMgr.java ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

RedisClientMgr ํด๋ž˜์„œ๋Š” VCAPS_SERVICES ์ •๋ณด๋ฅผ ์ฝ์–ด RedisCloud์˜ credential ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ lettuce ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•œ Redis connection์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Java Class ์ž‘์„ฑ ์‹œ ์ผ๋ฐ˜์ ์ธ Text Editor๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ƒ๊ด€ ์—†๊ธดํ•˜์ง€๋งŒ ๋˜๋„๋ก์ด๋ฉด Java Code Syntax Highlight ๊ธฐ๋Šฅ์ด๊ณผ ํ•จ๊ป˜ Class Validation ๊ธฐ๋Šฅ์ด ์žˆ๋Š” Java Project ์ „์šฉ ๋„๊ตฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

  • Eclipse IDE์—์„œ wasdev.sample.redis ํŒจํ‚ค์ง€ ์ƒ์„ฑ

  • RedisClientMgr ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑ

RedisClientMgr ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • RedisClient๋ฅผ static ํ˜•์‹์œผ๋กœ ํ•˜๋‚˜ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ๋Š” initClient()


  • initClient()๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ๋˜๋ฉฐ JSON ํ˜•์‹์˜ VCAP_SERVICES ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌ ํ›„ RedisClient๋ฅผ ์ƒ์„ฑํ•˜๋Š” createClient()


  • ๋งˆ์ง€๋ง‰์œผ๋กœ ์ƒ์„ฑ๋œ createClient๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” getConnection()


  • RedisClientMgr.java ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ตฌํ˜„์€ GitHub์—๋„ ๊ณต์œ ๋˜์–ด ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ  ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    Redis Client ํ˜ธ์ถœ ์˜ˆ์ œ ์ž‘์„ฑ

    ์ด์ œ ๋งŒ๋“ค์–ด ๋†“์€ RedisClientMgr๋ฅผ ์ด์šฉํ•˜์—ฌ HTTP Servlet์œผ๋กœ Redis HSET, HGET ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ˆ์ œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๋จผ์ € HSET์„ ์œ„ํ•œ HSetServlet์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ์„ฑ ํ•ฉ๋‹ˆ๋‹ค.

    doGet ๋ฉ”์†Œ๋“œ์— HSET ๋ช…๋ น ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‘ ๊ฐœ์˜ parameter๋ฅผ ์–ป๊ณ  HSET ๋ช…๋ น์— ๋Œ€์‘๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  HSET๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ HGET์„ ์œ„ํ•œ HGetServlet์„ ์ƒ์„ฑ ํ•ฉ๋‹ˆ๋‹ค.

    ์ด์ œ mvn install๊ณผ mvn liberty:run-server๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ ํ•ฉ๋‹ˆ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ , ๋‹ค์Œ ๋ช…๋ น์„ ์ด์šฉํ•˜์—ฌ HGET/HSET์„ ํ…Œ์ŠคํŠธ ํ•ฉ๋‹ˆ๋‹ค.

    • HSET ํ…Œ์ŠคํŠธ

    curl http://localhost:9080/JavaHelloWorldApp/HSetServlet?field=hello&value=world
    

    ์ฒ˜์Œ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ created๋ผ๋Š” ์‘๋‹ต์ด, ๋™์ผํ•œ field๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ updated๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

    • HGET ํ…Œ์ŠคํŠธ

    curl http://localhost:9080/JavaHelloWorldApp/HGetServlet?field=hello
    

    ํ˜ธ์ถœ ์„ฑ๊ณต ์‹œ ๋งˆ์ง€๋ง‰์— ์ž…๋ ฅ๋œ value๊ฐ’์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ ๋กœ HSET, HGET ๋ช…๋ น์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์•„๋ž˜ Redis ํ™ˆํŽ˜์ด์ง€์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์›๊ฒฉ์—์„œ ํ™•์ธ

    ์ด์ œ Local์—์„œ ํ…Œ์ŠคํŠธ ํ–ˆ๋˜ ์ด ์ •๋ณด๋ฅผ Bluemix์— cf push ๋ช…๋ น์„ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐฐํฌ๊ฐ€ ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด ์ด๋ฒˆ์—” ๋ฐฐํฌ๊ฐ€๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ URL์„ ์ด์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด ๋ด…๋‹ˆ๋‹ค.

    • HSET ํ…Œ์ŠคํŠธ

    curl http://hello-redis-nodejs.mybluemix.net/HSetServlet?field=hello&value=world
    

    • HGET ํ…Œ์ŠคํŠธ

    curl http://hello-redis-nodejs.mybluemix.net/HGetServlet?field=hello
    

    ๋ณธ ํฌ์ŠคํŒ…์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ์ฝ”๋“œ๋Š” ๋‹ค์Œ GitHub์— ์—…๋ฐ์ดํŠธ ๋˜์–ด ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ  ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    ์ฐธ๊ณ