์•ˆ๋…•ํ•˜์„ธ์š”? ์ด๋ฒˆ ๊ธ€์€ Bluemix๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ํด๋ผ์šฐ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋””์ž์ธํ•˜๊ณ  ๋งŒ๋“ค์–ด ๊ฐ€๋Š” ๊ณผ์ •์„ ๋‚ด์šฉ์œผ๋กœ ์—ฐ์žฌ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ง„ํ–‰๋˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ฐธ๊ณ  ๋ถ€ํƒ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.


  1. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ ์ดํ•ด
  2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ƒ ๋ฐ ์š”๊ฑด ์ •์˜
  3. ์š”๊ฑด์— ๋Œ€ํ•œ Usecase ๋ฐ Wireframe ์ž‘์„ฑ
  4. ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ ์„ค๊ณ„
  5. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ํ™˜๊ฒฝ ์ค€๋น„
  6. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค€๋น„
  7. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ํƒ€์ž… ์ž‘์„ฑ Part1
  8. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ํƒ€์ž… ์ž‘์„ฑ Part2
  9. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ํƒ€์ž… ์ž‘์„ฑ Part3
  10. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ DevOps ํ™˜๊ฒฝ ๊ตฌ์„ฑ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค€๋น„

์ง€๋‚œ ๊ธ€์—์„œ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์ธ IBM Bluemix์— Cloud Foundry ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ•„์š”ํ•œ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Bluemix ์นดํƒˆ๋กœ๊ทธ์—์„œ Template ํ˜•ํƒœ๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ์œผ๋กœ ๋ฐฐํฌ๋œ code๋ฅผ Bluemix Dashboard์—์„œ download ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ์ฝ”๋“œ๋Š” ์ˆ˜์ • ํ›„ ๋‹ค์‹œ Bluemix ํ™˜๊ฒฝ์— ๋ฐฐํฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก Local ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ค€๋น„ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ

Bluemix์—์„œ Catalog๋ฅผ ํ†ตํ•ด Cloud Foundry ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๋ฉด ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ์ข…์˜ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ์ด๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„๊ณผ ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค ์ •๋ณด๋„ manifest ์ •๋ณด๊ฐ€ ๋ฐ˜์˜๋œ ํ˜•ํƒœ๋กœ ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ๋Œ€์‹œ ๋ณด๋“œ ํ™•์ธ

Bluemix์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Œ€์‹œ ๋ณด๋“œ๋ฅผ ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ, ๋Ÿฐํƒ€์ž„, ์—ฐ๊ฒฐ ๋“ฑ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์™ผํŽธ์— ์‹œ์ž‘ํ•˜๊ธฐ๋ผ๋Š” ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ์—๋Š” ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ CLI (Command Line Interface, ๋ช…๋ นํ–‰ ์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ

ํ™”๋ฉด์— ๋ณด์ด๋Š” ์Šคํƒ€ํ„ฐ ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ํ…œํ”Œ๋ฆฟํ˜•ํƒœ๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, ๋งŒ์•ฝ ํ‘œ์ค€ ์œ ํ˜•์œผ๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋Š” ์‹œ์ž‘ํ•˜๊ธฐ ํ™”๋ฉด์ด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ๋Š” ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ๊ฐ ์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ ์••์ถ• ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ›„ ์ ๋‹นํ•œ ์œ„์น˜์— ํŒŒ์ผ์„ ํ’€์–ด ๋†“์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋„๊ตฌ ์„ค์น˜

๋ช…๋ นํ–‰ ์ธํ„ฐํŽ˜์ด์Šค ๋„๊ตฌ(CLI) ์„ค์น˜

CLI๋Š” dir์ด๋‚˜ ls์™€ ๊ฐ™์€ shell ๋ช…๋ น์„ ๊ธฐ๋ฐ˜์œผ๋กœ Cloud ํ™˜๊ฒฝ์— ์ ‘์†ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘, ์ค‘์ง€, ๋กœ๊ทธ ํ™•์ธ๊ณผ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ๊ณผ, ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๋ณ€๊ฒฝ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Cloud ํ™˜๊ฒฝ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต ํ•ฉ๋‹ˆ๋‹ค.

Bluemix CLI๋Š” Bluexix Cloud ์‚ฌ์šฉ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๋ช…๋ นํ–‰ ๊ธฐ๋ฐ˜์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค CF Application์ด๋ฏ€๋กœ cf CLI๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ด๋ฅผ ์ด์šฉ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ CF ์•ฑ ์ด์™ธ ๋‹ค๋ฅธ Bluemix ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ†ตํ•ฉ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด Bluemix CLI๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ Bluemix CLI๋Š”

  • MacOSX
  • Windows 64bit
  • Linux 64bit

์„ธ ๊ฐ€์ง€๋ฅผ ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Bluemix CLI ๋‹ค์šด๋กœ๋“œ์™€ ์‚ฌ์šฉ ์ •๋ณด๋Š” ๋‹ค์Œ URL์„ ์ฐธ๊ณ  ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Bluemix CLI๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด bluemix -v ๋˜๋Š” bx -v ๋ช…๋ น์œผ๋กœ ์„ค์น˜๋œ version ์ •๋ณด๋ฅผ ํ™•์ธ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. bx๋Š” bluemix๋ฅผ ์ค„์—ฌ์„œ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” alias ์ž…๋‹ˆ๋‹ค.

$ bluemix -v
bluemix version 0.5.4+ae22935-2017-05-18T06:24:28+00:00
$ bx -v
bx version 0.5.4+ae22935-2017-05-18T06:24:28+00:00

Node.js Runtime ์„ค์น˜

Node.js๋Š” ์•„๋ž˜ Node.js ํ™ˆํŽ˜์ด์ง€์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ Bluemix์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Node.js์˜ ์ตœ์‹  ๋ฒ„์ ผ์ด 6.10.2์ด๋ผ 6.10.2๋ฅผ ์„ค์น˜ํ•˜๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค๋งŒ, ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ธ 6.10.3์ด๋ผ ํ•ด๋„ ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ๊ฐ™์€ ๋งˆ์ด๋„ˆํ•œ ๋ถ€๋ถ„์ด๋ฏ€๋กœ ์ถฉ๋ถ„ํžˆ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ 6.10.2๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ฐธ๊ณ  ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค

์ฐธ๊ณ ๋กœ, Bluemix์˜ Node.js ๋ฒ„์ ผ ์ •๋ณด๋Š” https://console.ng.bluemix.net/docs/runtimes/nodejs/updates.html#latest_updates ๋ฅผ ์ฐธ๊ณ  ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Node.js Runtime ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ นํ–‰์—์„œ ์„ค์น˜๋œ Node.js ์ •๋ณด๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ node -v
v6.10.2
$ npm -v
v4.6.1

Bluemix ์„œ๋น„์Šค ์‹ ์ž„ ์ •๋ณด ์ €์žฅ

Bluemix CF ์•ฑ์€ Runtime๊ณผ Service๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Runtime์— ์—ฐ๊ฒฐ๋œ Service๋Š” ๋ณ„๋„๋กœ ๊ตฌ์„ฑ๋œ ์„œ๋ฒ„์—์„œ Bluemix ์„œ๋น„์Šค๋กœ ์ œ๊ณต๋˜๋Š” ์ผ์ข…์˜ SaaS (Software as a Service) ํ˜•์‹์ธ๋ฐ, Bluemix ํ”Œ๋žซํผ์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ด๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก VCAP_SERVICES ๋ผ๋Š” ์ด๋ฆ„์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค๋Š” Redis Cloud์™€ Cloudant NoSQL DB์ž…๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Œ€์‹œ ๋ณด๋“œ์˜ ๋Ÿฐํƒ€์ž„ ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Ÿฐํƒ€์ž„ ์ •๋ณด์™€ ํ•จ๊ป˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ •๋ณด๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VCAP_SERVICES์˜ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์‹ ์ž„ ์ •๋ณด๋ฅผ JSON ํŒŒ์ผ ํ˜•ํƒœ๋กœ ๋‹ค์šด๋กœ๋“œ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ JSON ํŒŒ์ผ์„ ๊ฐ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ์ฝ”๋“œ ํด๋”์— vcap-local.json ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ณต์‚ฌํ•ด ๋†“์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋“ˆ ์„ค์น˜

Node.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ฏ€๋กœ ๋ช…๋ น์ฐฝ์„ ์ด์šฉํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ~/smv/smv-ui-app์— ์žˆ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋‹ด๊ธด ๊ณณ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

$ cd ~/smv/smv-ui-app

๋‹ค์Œ ๋ช…๋ น์œผ๋กœ node runtime์— ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

$ npm install

Node.js ๋ชจ๋“ˆ ์„ค์น˜ ์ค‘ Platform ์˜์กด์„ฑ์ด ์žˆ์–ด source code compile์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. node-gyp๋ผ๋Š” build tool์ด ์‹คํ–‰๋˜๋Š”๋ฐ, Mac OSX์˜ ๊ฒฝ์šฐ Xcode, Windows์˜ Visual Studio์™€ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ์„ค์น˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ํŒŒ์ผ:

  • Unix ํ™˜๊ฒฝ:
    • python (v2.7 ์ถ”์ฒœ, v3.x.x ์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค )
    • make
    • GCC์™€ ๊ฐ™์€ ์ ์ ˆํ•œ C/C++ ์ปดํŒŒ์ผ๋Ÿฌ ํˆด์ฒด์ธ
  • Mac OS X ํ™˜๊ฒฝ:
    • python (v2.7 ์ถ”์ฒœ, v3.x.x ์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค) (Mac OS X์—๋Š” ๊ธฐ๋ณธ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.)
    • Xcode
      • Xcode ๋ฉ”๋‰ด ์ค‘ Xcode -> Preferences -> Downloads ๋ฅผ ํ†ตํ•ด Command Line Tools๋„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ์ด ๋‹จ๊ณ„์—์„œ gcc์™€ make๋ฅผ ํฌํ•จํ•œ ๊ด€๋ จ ํˆด์ฒด์ธ์ด ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.
  • Windows ํ™˜๊ฒฝ:

    • ์˜ต์…˜ 1: ๊ด€๋ฆฌ์ž ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•œ PowerShell์ด๋‚˜ CMD.exe ์—์„œ Microsoft๊ฐ€ ์ œ๊ณตํ•˜๋Š” windows-build-tools๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•„์š”๋กœ ํ•˜๋Š” ๋ชจ๋“  ๋„๊ตฌ ์„ค์น˜์™€ ์„ค์ •์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
      • npm install --global --production windows-build-tools๋ฅผ ์‹คํ–‰
    • ์˜ต์…˜ 2: ์ˆ˜๋™ ์„ค์น˜ ๋ฐ ์„ค์ •:

      • Visual C++ ๋นŒ๋“œ ํ™˜๊ฒฝ:
      • ์˜ต์…˜ 1: Default Install ์˜ต์…˜์„ ์ด์šฉํ•œ Visual C++ Build Tools ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

      • ์˜ต์…˜ 2: Visual Studio 2015 ์„ค์น˜ (๋˜๋Š” ๊ธฐ์กด์— ์„ค์น˜๋œ ๋‚ด์šฉ ๋ณ€๊ฒฝ), ์„ค์น˜ ํ•˜๋Š” ๋™์•ˆ์— Common Tools for Visual C++ ์„ ํƒ. Community ๋ฐ Express for Desktop ์—๋””์…˜์—์„œ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

        [Windows Vista / 7]์˜ ๊ฒฝ์šฐ .NET Framework 4.5.1 ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

      • Python 2.7 (v3.x.x ์€ ์ง€์›ํ•˜์ง€ ์•Š์Œ)์„ ์„ค์น˜ํ•˜๊ณ , npm config set python python2.7๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. (๋˜๋Š” ์•„๋ž˜ Python ๋ฒ„์ ผ๊ณผ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์•ˆ๋‚ด ์ฐธ๊ณ ํ•˜์„ธ์š”)

      • cmd์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. npm config set msvs_version 2015

    ๋งŒ์•ฝ ์œ„์˜ ๋ช…๋ น์ด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, Microsoft's Node.js Guidelines for Windows๋ฅผ ๋ฐฉ๋ฌธํ•ด ์ถ”๊ฐ€ ํŒ์„ ํ™•์ธํ•ด ๋ณด์„ธ์š”.

๋งŒ์•ฝ, Python์˜ ์—ฌ๋Ÿฌ ๋ฒ„์ ผ์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด, node-gyp์ด ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” version์„ '–python` ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

$ node-gyp --python /path/to/python2.7

node-gyp์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://github.com/nodejs/node-gyp๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋กœ์ปฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰

์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ node app.js

๋˜๋Š”

$ npm start

์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ฉ”์‹œ์ง€์— ์ถœ๋ ฅ๋œ http://localhost:3000๋กœ ์ ‘๊ทผํ•˜๋ฉด Bluemix ๋ฐฐํฌ ์‹œ ๋ณด์•˜๋˜ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋‹ค๋ฅธ Application๋„ ์‹คํ–‰ ํ•ด ๋ณผ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์ด ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ์ƒํ™ฉ์ด์–ด์•ผ ํ•˜๋ฏ€๋กœ ์•ž์„œ ์‹คํ–‰ ํ–ˆ๋˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋™์‹œ์— ์‹คํ–‰ ๋  ์ˆ˜ ์žˆ๋„๋ก ์ค€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ host์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ hostname์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ๋กœ ํ–ˆ๋˜ ์„œ๋น„์Šค๋“ค์„ localhost์˜ port ๋ฒˆํ˜ธ๋กœ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค ์•ฑ์˜ ์‹คํ–‰ ์‹œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ PORT์— ์ง€์ •ํ•  ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๊ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•œ Base URL ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Cloud Foundry ์•ฑ์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•œ ๊ฐ€๋ณ€ ์„ค์ • ์ •๋ณด๋ฅผ ๋‘˜ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ •๋ณด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฆ„ ํ‚ค ๋กœ์ปฌ ์›๊ฒฉ
์ž„์‹œ ์ถœ์ž… ์นด๋“œ ์„œ๋น„์Šค SMV_BADGE_BASE_URL http://localhost:6001 https://smv-badge.mybluemix.net
์‚ฌ์šฉ์ž ์ธ์ฆ ์„œ๋น„์Šค SMV_USERAUTH_BASE_URL http://localhost:6002 https://smv-userauth.mybluemix.net
์‚ฌ์šฉ์ž ์ •๋ณด ์„œ๋น„์Šค SMV_USERINFO_BASE_URL http://localhost:6003 https://smv-userinfo.mybluemix.net
๋ฐฉ๋ฌธ ์ •๋ณด ์„œ๋น„์Šค SMV_VISIT_BASE_URL http://localhost:6004 https://smv-visit.mybluemix.net

์ข€ ๋” ์šฐ์•„ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๊ธด ํ•˜์ง€๋งŒ ๊ทธ ๋ถ€๋ถ„์€ API ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜์ค‘์— ๊ธฐํšŒ๊ฐ€ ์žˆ์„ ๋•Œ ๋ณ„๋„๋กœ ์ด์•ผ๊ธฐ ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„ ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์‹คํ–‰์„ ์œ„ํ•œ shell script๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

smv-ui-app์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

export PORT=3000
export SMV_BADGE_BASE_URL=http://localhost:6001
export SMV_USERAUTH_BASE_URL=http://localhost:6002
export SMV_USERINFO_BASE_URL=http://localhost:6003
export SMV_VISIT_BASE_URL=http://localhost:6004
npm start

Windows batch ํŒŒ์ผ์˜ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

set PORT=3000
set SMV_BADGE_BASE_URL=http://localhost:6001
set SMV_USERAUTH_BASE_URL=http://localhost:6002
set SMV_USERINFO_BASE_URL=http://localhost:6003
set SMV_VISIT_BASE_URL=http://localhost:6004
npm start

์„œ๋น„์Šค ์•ฑ์šฉ ์Šคํฌ๋ฆฝํŠธ๋Š” Linux๋‚˜ MacOS์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

export PORT=6001
export VCAP_SERVICES=$(node vcap-local.js)
npm start

Windows batch ํŒŒ์ผ์˜ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์•ž์„œ smv-ui-app๊ณผ ๋‹ค๋ฅธ์ ์€ VCAP_SERVICES๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. smv-ui-app์˜ app.js์—๋Š” local ํ™˜๊ฒฝ์ธ ๊ฒฝ์šฐ vcap-local.json ํŒŒ์ผ์„ ์ฝ์–ด Cloudant ์„œ๋น„์Šค ์ ‘๊ทผ ์ •๋ณด๋ฅผ ์–ป๋Š” ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, smv-ui-app์™ธ ๋‹ค๋ฅธ ์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹จ์ง€ Node.js Runtime์—์„œ ์ƒ์„ฑํ•œ ๊ฒƒ์œผ๋กœ VCAP_SERVICES ์ •๋ณด๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” ๋ถ€๋ถ„์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด๋ฅผ ๋กœ๋”ฉํ•˜์—ฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ VCAP_SERVICES ๋กœ ๋“ฑ๋กํ•˜๋Š” ๋‚ด์šฉ์„ ์ถ”๊ฐ€ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด vcap-local.js๋ผ๋Š” ํŒŒ์ผ๋„ ์ถ”๊ฐ€๋กœ ์ž‘์„ฑํ•ด ์ค๋‹ˆ๋‹ค.

var fs = require('fs'),
    jsonData = fs.readFileSync("vcap-local.json", "utf-8"),
    vcapServices = JSON.parse(jsonData);

console.log(JSON.stringify(vcapServices));

smv-ui-app์— ์‚ฌ์šฉ๋œ ์ถ”๊ฐ€๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ์•ž์„œ VCAP_SERVICES๋ฅผ ์„ค์ •ํ–ˆ๋˜ Bluemix ๋Œ€์‹œ ๋ณด๋“œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜-๋Ÿฐํƒ€์ž„-ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ•ญ๋ชฉ์— ๋“ค์–ด๊ฐ€ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žฌ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

Source Code Editor ์„ค์น˜

์‚ฌ์‹ค Source Code ํŽธ์ง‘๊ธฐ๋Š” ๊ฐœ๋ฐœ์ž ์ž์‹ ์ด ๊ฐ€์ง„ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค‘ ๊ฐ€์žฅ ํŽธํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ํŽธ์ง‘ํ•˜๊ณ ์ž ํ•˜๋Š” ๋‚ด์šฉ์„ ๋ณด๋‹ค ์ˆ˜์›”ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ ์ˆ˜์ •ํ•  ๋•Œ ๋ฉ”๋ชจ์žฅ์„ ์‚ฌ์šฉํ•ด๋„ ์ƒ๊ด€ ์—†์ง€๋งŒ, ์ƒ์‚ฐ์„ฑ์ด ๋„ˆ๋ฌด ๋–จ์–ด์ง€๋‹ˆ๊นŒ์š”.

  1. ์†Œ์Šค ์ฝ”๋“œ ์–ธ์–ด ์ž๋™ ๊ฐ์ง€
  2. ๋ฌธ๋ฒ• ๊ฐ•์กฐ
  3. ์ฝ”๋“œ ์ž๋™ ์™„์„ฑ
  4. ๊ด„ํ˜ธ ๋˜๋Š” ํƒœ๊ทธ ๊ฐ•์กฐ/์ด๋™
  5. ์„ ์–ธ & ํ•จ์ˆ˜ ์ด๋™
  6. ๊ฒ€์ƒ‰
  7. ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ
  8. SCM ํ†ตํ•ฉ
  9. ์™ธ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ง€์›

Node.js Runtime์šฉ CF App์€ ๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„ ์–ธ์–ด๋กœ JavaScript๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , Manifest Project๋Š” YAML์„ ํ˜•์‹์œผ๋กœ ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ํŽธ์ง‘๊ธฐ (IDE)๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค๊ณผ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๋˜๋„๋ก Platform ๋…๋ฆฝ์ ์ธ ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” IDE์ด๋‹ˆ ์ฐธ๊ณ  ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด๋ฆ„ ํ”Œ๋žซํผ ๋ผ์ด์„ผ์Šค ํ™ˆํŽ˜์ด์ง€
Sublime Text Windows, OSX, Ubuntu Proprietary software https://www.sublimetext.com/
ATOM Windows, OSX, Redhat, Ubuntu MIT https://atom.io/
Microsoft Visual Studio Code Windows, OSX, Linux MIT https://code.visualstudio.com
Eclipse IDE Windows, OSX, Linux EPL https://eclipse.org/ide/

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


  1. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ ์ดํ•ด
  2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ƒ ๋ฐ ์š”๊ฑด ์ •์˜
  3. ์š”๊ฑด์— ๋Œ€ํ•œ Usecase ๋ฐ Wireframe ์ž‘์„ฑ
  4. ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ ์„ค๊ณ„
  5. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ํ™˜๊ฒฝ ์ค€๋น„
  6. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค€๋น„
  7. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ํƒ€์ž… ์ž‘์„ฑ Part1
  8. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ํƒ€์ž… ์ž‘์„ฑ Part2
  9. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ํƒ€์ž… ์ž‘์„ฑ Part3
  10. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ DevOps ํ™˜๊ฒฝ ๊ตฌ์„ฑ

์ฐธ๊ณ