์•ˆ๋…•ํ•˜์„ธ์š”.

๋ณธ Post์—์„œ๋Š” IBM Bluemix DevOps Service์˜ Automated Build & Deploy Application์„ ์ƒ์„ฑํ•˜๊ณ  Slack์„ ์ด์šฉํ•ด ์‹ค์‹œ๊ฐ„ ์ƒํ™ฉ์— ๋Œ€ํ•œ Alert์„ ๋ฐ›๋Š” Toolchain creation hands-on ์„ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ณธ Post๋Š” CloudFoundry ๊ธฐ๋ฐ˜์˜ DevOps App์„ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑ ํ•œ ๋’ค, Toolchain ์ƒ์„ฑ์„ ํ†ตํ•ด WebIDE์™€ GitHub repository ์—ฐ๋™ ๋งˆ์ง€๋ง‰์œผ๋กœ Slack๊ณผ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์•Œ๋ฆผ์„ ๋ฐ›๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๊ธฐ์ดˆ ๋‚ด์šฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ Post๋ฅผ ์ดํ•ดํ•˜์‹œ๋ฉด ํ–ฅ ํ›„ 3rd party์•ฑ์„ ์‰ฝ๊ฒŒ Addํ•˜์—ฌ ๊ฐ„ํŽธํ•œ DevOpsํ™˜๊ฒฝ์„ ์ด์šฉํ•˜์‹œ๋Š”๋ฐ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณธ Post ๋‹ค์Œ ๊ณผ์ •์œผ๋กœ Bluemix Infra ๋ฐ ์‚ฌ์šฉํ•˜์‹œ๋Š” vendor์˜ Infra๋กœ Deployํ•˜๋Š” ๋‚ด์šฉ์„ ํ•™์Šตํ•˜์‹œ๋ฉด ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜์‹œ๋˜ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์‘์šฉํ•œ IBM Bluemix DevOps๋ฅผHub Application์œผ๋กœ์จ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ด์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

1. Bluemix.net์— login ํ•œ ๋’ค Create Application์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

 

2. ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ CloudFoundry๋ฅผ ์„ ํƒํ•˜์‹  ๋’ค ๊ธฐํ˜ธ์— ๋งž๋Š” App์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (Node.js ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Liberty for Java, ASP.NET, Ruby, Go, PHP, Python, Tomcat ๋“ฑ)

 

3. ์ด๋ฆ„์„ ์„ค์ •ํ•˜์‹œ๊ฒŒ ๋˜๋ฉด ์ž๋™ ๋„๋ฉ”์ธ์„ ๋ถ€์—ฌ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

4. ์•ฑ์„ ์ƒ์„ฑํ•˜์‹œ๊ฒŒ ๋˜๋ฉด ์ˆ˜๋ถ„ ๋‚ด์— App์ด running ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

5. ํ™”๋ฉด ์šฐ์ธก ์ƒ๋‹จ์˜ View๋ฅผ ํด๋ฆญํ•˜์‹œ๋ฉด ๊ธฐ๋ณธ Hello World ํ™”๋ฉด์ด ์„ธํŒ…๋˜์–ด ์žˆ์Œ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

6. Overview ํƒญ์„ ์„ ํƒํ•˜์‹œ๋ฉด ์ƒ์„ฑํ•˜์‹  App์— ๋Œ€ํ•œ ์ •๋ณด ๋ฐ ๊ธˆ์•ก, Log๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์œผ๋ฉฐ Continuous Delivery๋ž€์˜ Enable์„ ์„ ํƒํ•˜์‹œ๋ฉด ๋ณธ ํฌ์ŠคํŠธ์˜ ๋ชฉ์ ์ธ Toolchain ์„ค์ • ๋ฐ ์ฝ”๋“œ ์ €์žฅ์†Œ์ธ Git๊ณผ ์—ฐ๋™ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

7. Create a Toolchain์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

 

8. Enable-Create Toolchain from Template์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

 

9. Simple Cloud Foundry toolchain์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

 

10. ๊ธฐ๋ณธ์œผ๋กœ GitHub์™€ Eclipse Orion Web IDE, Delivery Pipeline์ด ์ƒ์„ฑ๋˜๋ฉฐ GitHub๋ฅผ ํด๋ฆญํ•˜์‹œ๋ฉด ์ƒˆ๋กœ์šด Git repository๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด์— ๋ณด์œ ํ•œ repository๋ฅผ Cloneํ•˜์—ฌ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

11. Git repository๋ฅผ ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ๊ฒฝ๊ณ  Alert์ด ํ‘œ๊ธฐ๋ฉ๋‹ˆ๋‹ค. Reconfigure์„ ํ†ตํ•ด repository๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

12. Git์„ ์—ฐ๋™ํ•˜์‹ค ๊ฒฝ์šฐ THINK๋ž€์— Issues ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” Module์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์ƒ์„ฑํ•˜์‹  ๋ถ€๋ถ„์ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์‹ค ์ˆ˜ ์žˆ๋Š” Web IDEàWeb IDE์—์„œ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œ๋ฐ›๋Š” GitHub repository ์„ค์ •àrepository์˜ ์ฝ”๋“œ๋ฅผ Build & Deployํ•  ์ˆ˜ ์žˆ๋Š” Pipeline๊นŒ์ง€ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ข€ ๋” ๋‚˜์•„๊ฐ€ ๊ฐ ์ƒํƒœ์— ๋Œ€ํ•œ ๋ฉ”์„ธ์ง€๋ฅผ ์ „๋‹ฌ ๋ฐ›๊ณ  ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” Slack์„ ์—ฐ๊ฒฐํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์ธก ์ƒ๋‹จ์— Add a Tool์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

 

13. Tool์— ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ App๋“ค์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IBM App๋ฟ๋งŒ ์•„๋‹ˆ๋ผ 3rd party App๋“ค๋„ ์—ฐ๋™ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ–ฅ ํ›„ ์ง€์†์ ์œผ๋กœApp์ด ์ถ”๊ฐ€ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

 

14. Slack์„ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด 1. Slack Account 2. Slack API token์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์ธก ์ƒ๋‹จ (i) ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์‹œ๋ฉด Slack ํ™ˆํŽ˜์ด์ง€๋กœ ์ด๋™, Account ์ƒ์„ฑ๊ณผ API token์„ ์ƒ์„ฑํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ€์—ฌ๋ฐ›์€ token์„ ์ž…๋ ฅํ•˜๊ณ , Slack์—์„œ ์‚ฌ์šฉํ•  ์ฑ„๋„(Channel)์˜ ์ด๋ฆ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

15. Slack์ด CULTURE๋ž€์— ์˜ค๋ฅ˜์—†์ด ์ƒ์„ฑ๋จ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

16. Slack์„ ํด๋ฆญํ•˜์‹œ๋ฉด ์ƒ์„ฑ์‹œ ์„ค์ •ํ•˜์‹  ์ฑ„๋„(Channel) ์ด๋ฆ„ ํ•˜์— ์ฑ„๋„์ด ์ƒ์„ฑ๋จ ๋ฐ ๊ตฌ์„ฑ๋˜์—ˆ์Œ์ด ๊ณต์ง€๋œ ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

17. ์ด์–ด์„œ ๋‹ค์Œ์œผ๋กœ Web IDE๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ˆ˜์ •๋œ ์ฝ”๋“œ๊ฐ€ ์ž๋™์œผ๋กœ Build&Deploy๋จ์„ ์‹ค์Šตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ Toolchain ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ€, Eclipse Orion WebIDE๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ Sample file์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Sample file์„ ๋‹ค์šด๋ฐ›์œผ๋Ÿฌ ๋‹ค์Œ ๊ทธ๋ฆผ์„ ์ฐธ๊ณ ํ•ด Get Started ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

18. ๋นจ๊ฐ„ ๋„ค๋ชจ๋ฐ•์Šค์— ํ‘œ๊ธฐ๋œ๋Œ€๋กœ STARTER CODE๋ฅผ ๋‹ค์šด๋ฐ›์Šต๋‹ˆ๋‹ค. Zip ํ˜•ํƒœ๋กœ ๋‹ค์šด๋ฐ›์•„์ง€๋ฉฐ ๋”ฐ๋กœ ์••์ถ•์„ ํ•ด์ œํ•˜์‹ค ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

 

19. ๋‹ค์‹œ Eclipse Orion WebIDE๋กœ ๋Œ์•„์™€ ๋‹ค์šด๋ฐ›์€ STARTER CODE๋ฅผ Importํ•ฉ๋‹ˆ๋‹ค. File-Import-File or Zip Archive๋ฅผ ์„ ํƒํ•ด ๋‹ค์šด๋ฐ›์€ ZipํŒŒ์ผ์„ Importํ•ฉ๋‹ˆ๋‹ค.

 

20. ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด Sample ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ Public-Index.html์„ ์„ ํƒํ•˜์‹œ๋ฉด ์œ„์—์„œ ๋ณด์…จ๋˜ ๊ธฐ๋ณธ Appํ™”๋ฉด์˜ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

21. ์•„์ง Importํ•œ ZipํŒŒ์ผ์€ ์ด์ „์— ์„ค์ •ํ•˜์‹  Git repository์— ์—…๋กœ๋“œ ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋น„์–ด์žˆ์„ repository์— ์ฝ”๋“œ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด File-Save๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ ๊ทธ๋ฆผ์˜ Git์œผ๋กœ Push ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๋งˆ๋ฆ„๋ชจ ์•„์ด์ฝ˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

 

22. ์˜ค๋ฅธ์ชฝ ํ™”๋ฉด์—์„œ ์ง„ํ•œ ํŒŒ๋ž‘์œผ๋กœ ์ฒดํฌ๊ฐ€ ๋˜์–ด ์žˆ๋Š” ๋ถ€๋ถ„์ด ๋ณ€ํ™”๊ฐ€ ์žˆ๋˜ ๋ถ€๋ถ„(์ฆ‰, ์•„๋ฌด๋Ÿฐ ํŒŒ์ผ์ด ์—†๋˜ WebIDE์—์„œ ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ Importํ–ˆ์Šต๋‹ˆ๋‹ค.)์ด๋ฉฐ ์ƒ๋‹จ์˜ ํŒŒ์ผ์„ Import ํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์„ธ์ง€์™€ ํ•จ๊ป˜ ์˜ค๋ฅธ์ชฝ ์œ„์˜ Commit ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ Git์œผ๋กœ Pushํ•  ์ค€๋น„๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

 

23. Commit์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์™ผ์ชฝ Outgoing ๋ž€์— Commitํ•œ ๊ฒƒ์— ๋Œ€ํ•ด Pushํ•  ์ˆ˜ ์žˆ๋„๋ก list up์ด ๋˜๋ฉฐ, Push-Push All ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ์จ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ๋ฐ ์ฝ”๋“œ๋“ค์€ GitHub์— ๊ธฐ์กด์— ์„ค์ •ํ•œ repository๋กœ push๋ฉ๋‹ˆ๋‹ค.

 

24. ์ถ”๊ฐ€์ ์œผ๋กœ Push๋œ ์ด๋ ฅ์€ History๋ž€ ๊ธฐ๋ก์ด ๋‚จ๊ธฐ ๋•Œ๋ฌธ์— tracking์„ ํ•˜๊ธฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

25. Toolchain ํ™”๋ฉด์—์„œ GitHub๋ฅผ ํด๋ฆญํ•˜์‹œ๋ฉด ์ด์ „์— ๋น„์–ด์žˆ๋˜ repository์— ํŒŒ์ผ๋“ค์ด ์—…๋กœ๋“œ ๋จ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Public์˜ htmlํŒŒ์ผ ์ฝ”๋“œ๊นŒ์ง€๋„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

26. ์ด์ œ ๋‹ค์‹œ ๋Œ์•„์™€ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  Automated Build&Deploy๋จ์„ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Eclipse Orion WebIDE๋กœ ๋Œ์•„์™€ Public-index.html ํŒŒ์ผ์„ ํด๋ฆญํ•˜๊ณ  ๊ธฐ์กด์— ์žˆ๋˜ Hello Word! ๋ฌธ๊ตฌ๋ฅผ ์œ„์™€ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

27. ๋˜‘๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ Save-Commit(with message)-Push์˜ ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ธฐ์กด์˜ ์ฝ”๋“œ์™€ ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ๋ฅผ ํ•œ๋ฒˆ์— ๋ณด์—ฌ์ฃผ๋ฉฐ ๋‹ค์‹œํ•œ๋ฒˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์šฉ์ดํ•จ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

28. GitHub repository์—์„œ ๋ณ€๊ฒฝ๋œ ๋ฌธ๊ตฌ๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ๊ฐ€ ์ž๋™์ ์œผ๋กœ Build&Deploy๋จ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Toolchain ํ™”๋ฉด์—์„œ Delivery Pipeline์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

 

29. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ๋“ฏ์ด, ์ˆœ์ฐจ์ ์œผ๋กœ BuildàDeploy ๊ณผ์ •์„ ๊ฑฐ์ณ Stage Passed๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

30. ๊ณผ์ •์ด ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ View App์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด์— ์—ด์–ด๋‘์…จ๋˜ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ(F5)ํ•˜์—ฌ ๋ฌธ๊ตฌ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์Œ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

31. ์ด ๋ชจ๋“  ๊ณผ์ • ๊ณผ์ •์„ Slack์—์„œ ์•Œ๋ฆผ์„ ๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•ธ๋“œํฐ์—์„œ ๋˜ํ•œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด App์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜, ์–ธ์ œ Build ๋ฐ Deploy๊ฐ€ ๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ƒํƒœ ํ™•์ธ์„ ์‰ฝ๊ฒŒ ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.