๋ณธ ๊ธฐ๊ณ ๋ฌธ์€ ์˜คํ”ˆ์†Œ์Šค ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์ธ Apache OpenWhisk ๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค. ๋จผ์ € ์„œ๋ฒ„๋ฆฌ์Šค์™€ OpenWhisk ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ณ  OpenWhisk ์ด ์–ด๋–ป๊ฒŒ ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณธ๋‹ค. ๊ทธ ๋‹ค์Œ OpenWhisk ์˜ ๊ตฌ์ฒด์ ์ธ ๋™์ž‘๋ฐฉ์‹์„ ํ†ตํ•ด ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ถ„์„ํ•˜๊ณ , ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์„ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ตœ์ ํ™”ํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณธ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜คํ”ˆ์†Œ์Šค ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์œผ๋กœ Apache OpenWhisk ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐœ์ „ํ–ˆ๋Š”์ง€, ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ๋Š”๊ฐ€ ํ™•์ธํ•œ๋‹ค.

  1. Apache OpenWhisk – ์†Œ๊ฐœ ๋ฐ ์•„ํ‚คํ…์ณ
  2. Apache OpenWhisk – ์‹คํ–‰ ๊ณผ์ •
  3. Apache OpenWhisk – ๋” ์•Œ์•„๋ณด๊ธฐ

IBM Cloud ์—์„œ์˜ OpenWhisk

๋กœ์ปฌ์ด๋‚˜ ํด๋ผ์šฐ๋“œ์—์„œ OpenWhisk ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต๊ฑฐ๋‚˜ ๊ท€์ฐฎ๋‹ค๋ฉด IBM Cloud ์—์„œ OpenWhisk ๋ฅผ FaaS ๋กœ ์ œ๊ณต๋˜๋Š” IBM Cloud Functions ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” IBM Cloud ์ œํ’ˆ์€ โ€œ์ˆ˜์ •๋ณธ์„ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค (We do not fork)โ€ ์ •์ฑ…์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์˜คํ”ˆ์†Œ์Šค Apache OpenWhisk ์™€ ๋™์ผํ•œ ํ™˜๊ฒฝ์œผ๋กœ IBM Cloud ์—์„œ OpenWhisk ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

openwhisk_ibmcloud_functions.png

<๊ทธ๋ฆผ> IBM Cloud Functions ์˜ OpenWhisk ๊ฐœ๋ฐœ UX

์‹คํ–‰ํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณฑํ•œ ๋‹จ์œ„์ธ GBs (Gigabyte * seconds) ๋กœ ๊ณผ๊ธˆ๋œ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์ „๋ ฅ๋Ÿ‰์— ์‹œ๊ฐ„์„ ๊ณฑํ•ด ์ „๊ธฐ์š”๊ธˆ์„ ์‚ฐ์ •ํ•˜๋Š” KWh ์™€ ๋น„์Šทํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. <๊ทธ๋ฆผ> ์›” 400,000 GBs ๊ฐ€ ๋งค์›” ๋ฌด๋ฃŒ๋กœ ์ œ๊ณต๋˜๋‹ˆ ๊ฐ„๋‹จํ•œ API ๋Š” ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

openwhisk_functions_price.png

<๊ทธ๋ฆผ> IBM Cloud Functions ์˜ ๊ณผ๊ธˆ๊ตฌ์กฐ. ์‹คํ–‰์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„, ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ, ์‹คํ–‰ ๊ฐœ์ˆ˜์— ๋น„๋ก€ํ•œ๋‹ค.

IBM Cloud Functions ์—์„œ ์šด์˜๋˜๋Š” OpenWhisk ์˜ ๊ธฐ๋ณธ ์•„ํ‚คํ…์ฒ˜๋Š” ์˜คํ”ˆ์†Œ์Šค์™€ ๋™์ผํ•˜๋‹ค. CouchDB ์™€ ํ˜ธํ™˜๋˜๋Š” DBaaS (Database as a Service) ์ธ Cloudant ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•œ UI, ELK ๋ฅผ ํ†ตํ•œ ๋กœ๊ทธ ๊ด€๋ฆฌ, API gateway ๋“ฑ์ด OpenWhisk ์˜ ๋ถ€๊ฐ€ ์„œ๋น„์Šค๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฅด๋‹ค.

openwhisk_monitoring.png

<๊ทธ๋ฆผ> IBM Cloud Functions ์—์„œ ์ œ๊ณต๋˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ํ™”๋ฉด

FaaS ๋กœ API ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ API ์˜ ์ง์ ‘ ๋…ธ์ถœ๋กœ ์ธํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋‚˜ ์ธ์ฆ ๋“ฑ์„ ์‹ ๊ฒฝ์“ฐ๋ฉด ๊ฐ„๋‹จํžˆ ์„œ๋ฒ„๋ฆฌ์Šค๋กœ ๋งŒ๋“ค๋ ค๋˜ API ์˜ ๊ด€๋ฆฌ ๋ฌธ์ œ๊ฐ€ ๋” ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค. IBM Cloud ์—์„œ๋Š” OpenWhisk ์— API gateway ์„œ๋น„์Šค์ธ API Connect ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด ์ ‘๊ทผ ์ œ์–ด, ์ ‘์†๋Ÿ‰ ์กฐ์ ˆ, ํŒŒ๋ผ๋ฉ”ํ„ฐ ์กฐ์ ˆ, GET/PUT ๋“ฑ์˜ RESTful API ๊ตฌ์„ฑ ๋“ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ API ๋Š” ์ž๋™์œผ๋กœOpenAPI (Swagger) ํ˜•ํƒœ๋กœ ๊ณต์œ  ๊ฐ€๋Šฅํ•ด API ์ƒํƒœ๊ณ„ ๊ตฌ์ถ•์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

openwhisk_apiconnect.png

<๊ทธ๋ฆผ> API Connect ๋กœ OpenWhisk ์•ก์…˜์„ ์ •์˜ํ•œ๋‹ค.

openwhisk_openapi.png

<๊ทธ๋ฆผ> API Portal ์— OpenAPI ํ˜•์‹์œผ๋กœ ๊ณต๊ฐœ๋œ OpenWhisk ์•ก์…˜

ํ•œ๊ตญ IBM ๊ฐœ๋ฐœ์ž ํฌํƒˆ์ธ developerWorks Korea ์—๋Š” Github ์— ๊ณต๊ฐœํ•œ ์‹ค์ œ ์˜ˆ์ œ ์ฝ”๋“œ๋กœ ์ตœ์‹  ๊ธฐ์ˆ ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•˜๋Š” โ€œ์—ฌ์ • (Journey)โ€ ๋“ค์ด ์ œ๊ณต๋˜๊ณ  ์žˆ๋Š”๋ฐ, (https://developer.ibm.com/kr/journey/) ๊ทธ ์ค‘ โ€œAPI๋กœ ๊ธฐ์—… ๋ฐ์ดํ„ฐ ์•ˆ์ „ํ•˜๊ฒŒ ๋…ธ์ถœ์‹œํ‚ค๊ธฐโ€ ์—ฌ์ •์€ ๊ฐ€์ƒ ๋ฌผ๋ฅ˜ํšŒ์‚ฌ์ธ Acme Freight ์—์„œ ERP ๋ฌผ๋ฅ˜ ์†”๋ฃจ์…˜์„ ์‰ฝ๊ฒŒ LoopBack ์„ ์‚ฌ์šฉํ•˜๊ณ  OpenWhisk ๋กœ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” ์˜ˆ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. GitHub.com ๊ณ„์ •๊ณผ IBM Cloud (https://bluemix.net) ๊ณ„์ •๋งŒ ์žˆ์œผ๋ฉด ํด๋ฆญ ํ•œ๋ฒˆ๋งŒ์œผ๋กœ Git ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜๊ณ  ์•ฑ์„ ๋งŒ๋“ค๋ฉฐ OpenWhisk ์•ก์…˜๊นŒ์ง€ ์ž๋™์œผ๋กœ ๋“ฑ๋ก๋˜๋‹ˆ, ์‰ฝ๊ฒŒ OpenWhisk ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‘์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

OpenWhisk ํ™•์žฅ ๋ฐ ์—ฐ๋™

์ผ๋ถ€ API ๋งŒ ์ œ๊ณตํ•˜๋Š” ๋ฒค๋” ์„œ๋น„์Šค์™€ ๋‹ฌ๋ฆฌ Apache OpenWhisk ๋Š” ์†Œ์Šค๊ฐ€ ๋ชจ๋‘ ๊ณต๊ฐœ๋˜์–ด ์žˆ์–ด ์™ธ๋ถ€ ํˆด์ด๋‚˜ ์„œ๋น„์Šค์™€ ์—ฐ๋™์ด ๊ฐ„๋‹จํ•˜๋‹ค. ์—ญ์‹œ ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” Visual Studio Code ๋‚˜ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” Jupyter Nodebooks ์—์„œ๋„ OpenWhisk ๊ฐ€ ์ง€์›๋˜๋ฉฐ, IoT ๋‚˜ ์ธ์ง€ ์„œ๋น„์Šค ํ”„๋กœํ† ํƒ€์ดํ•‘์— ์‰ฝ๊ฒŒ ์“ฐ์ด๋Š” Node-RED ์—์„œ๋„ OpenWhisk ๋…ธ๋“œ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

openwhisk_mscode.png

<๊ทธ๋ฆผ> Visual Studio Code ์— OpenWhisk ํ™•์žฅ์„ ์„ค์น˜ํ•œ ๋ชจ์Šต

https://github.com/apache/incubator-openwhisk-vscode
์˜ˆ๋ฅผ ๋“ค์–ด Node-RED ์— ์˜จ๋„, ์Šต๋„ ์„ผ์„œ๋ฅผ IoT ๋กœ ์—ฐ๋™ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ, Node-RED ๊ฐ€ Node.js ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— SciPy ๋“ฑ์˜ Python ๊ธฐ๋ฐ˜ ๊ณ ๊ธ‰ ๋ฐ์ดํ„ฐ ๋ถ„์„ ํŒจํ‚ค์ง€๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ Python ๋ถ„์„ ์ฝ”๋“œ๋ฅผ OpenWhisk ๋กœ ์ž‘์„ฑํ•˜์—ฌ Node-RED ์˜ ๋…ธ๋“œ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋น„์šฉ์ด๋‚˜ ์šด์˜ ๋ถ€๋‹ด ์—†์ด Node-RED ์—์„œ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋‹ค์ค‘ ์–ธ์–ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

openwhisk_nodered.png

<๊ทธ๋ฆผ> Node-RED ์— OpenWhisk ์•ก์…˜์„ ์—ฐ๊ฒฐํ•œ ์˜ˆ์ œ

IBM Cloud ์—์„œ OpenWhisk ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, API Connect ์„œ๋น„์Šค ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ๋ฒค๋” ๋ฝ์ธ(lock-in)์ด ๊ฑฑ์ •๋œ๋‹ค๋ฉด ์˜คํ”ˆ์†Œ์Šค API Gateway ์ธ Kong ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. Kong ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ OpenWhisk ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ API ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
https://getkong.org/plugins/openwhisk/

openwhisk_kong.png

<๊ทธ๋ฆผ> Kong API Gateway ๊ตฌ์„ฑ๋„

Apache OpenWhisk ์ƒํƒœ๊ณ„

์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์€ ์†Œ์Šค๊ฐ€ ๊ณต๊ฐœ๋˜๋ฉด์„œ ๋ชจ์ด๊ฒŒ ๋˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์˜ ๊ธฐ์—ฌ๋กœ ํ˜•์„ฑ๋˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ๋•๋ถ„์ด๋‹ค. LAMP ๋กœ ๋ถˆ๋ฆฌ๋Š” 2000๋…„๋Œ€ Linux, Apache, MySQL, PHP ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„๋ฆฌ ํผ์ง€๋ฉด์„œ SourceForge, Github.com ๋“ฑ์—์„œ ๋งŽ์€ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋“ค์ด ์ƒ๊ฒจ๋‚ฌ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ๊พธ์ค€ํžˆ ์ด๋Œ ์ˆ˜ ์žˆ๋Š” ์ „์—… ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŽ์ง€ ์•Š์€ ์ƒํ™ฉ์—์„œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ์™„์„ฑ๋„์™€ ์ง€์†์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ๋Š” ์˜คํ”ˆ์†Œ์Šค์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ํฐ ์š”์ธ์ด ๋˜์—ˆ๋‹ค.

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

Apache OpenWhisk ์ƒํƒœ๊ณ„

์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์ด ์ฐจ์„ธ๋Œ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์œผ๋กœ ์ฃผ๋ชฉ๋ฐ›์œผ๋ฉด์„œ ๊ธฐ์—…๋“ค๋„ ์˜คํ”ˆ์†Œ์Šค ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์„ ๋ฌผ์ƒ‰ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํผ๋ธ”๋ฆญ/ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋Š” IBM ์ด ์ฃผ๋„์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ๋„ ์•„ํŒŒ์น˜ ํ”„๋กœ์ ํŠธ ๋“ฑ๋ก์„ ํ†ตํ•ด ์ค‘๋ฆฝ์„ฑ์„ ํ–ฅํ•˜๋Š” Apache OpenWhisk ๋Š” ์˜คํ”ˆ์†Œ์Šค ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์„ ๊ณ ๋ คํ•˜๋Š” ๊ธฐ์—…์—๊ฒŒ ์ข‹์€ ์„ ํƒ์ด ๋œ๋‹ค.
Adobe ๋Š” OpenWhisk ์— API Gateway ๊ตฌํ˜„์„ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ OpenWhisk ํŒŒํŠธ๋„ˆ๊ฐ€ ๋˜์—ˆ๊ณ , ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ์œ„ํ•ด Mesos ์ง€์›๋„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค. RedHat ๋„ Apache OpenWhisk ์— ์ฐธ์—ฌํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์—ฌ ์ž์‚ฌ์˜ OpenShift ์—์„œ FaaS ํ”Œ๋žซํผ์œผ๋กœ OpenWhisk ๋ฅผ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค. ๊ตญ๋‚ด์—์„œ๋Š” NHN ์„ ๋น„๋กฏํ•˜์—ฌ ์—ฌ๋Ÿฌ IT ๋ฐ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ์—…๋“ค์ด OpenWhisk ํ™œ์šฉ ๋ฐ ๊ธฐ์—ฌ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ์žˆ๋‹ค.
์ด๋ฏธ OpenWhisk ์˜ ์•ก์…˜์€ ๋„์ปค ์ปจ๋„ค์ด๋„ˆ๋กœ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์ง€๋งŒ, ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์— ๋Œ€ํ•œ ๊ด€์‹ฌ๋„ ๋†’์•„์ง€๋Š” ์ถ”์„ธ์ด๋‹ค. OpenWhisk ์—์„œ๋Š” ๋„์ปค ์ปดํฌ์ฆˆ (Docker Compose) ์ง€์œˆ์ด ์ถ”๊ฐ€๋˜์—ˆ๊ณ , Kubernates ์ง€์›๋„ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ํ˜„์žฌ ์ž‘์—…์ค‘์ด๋‹ค.

Apache OpenWhisk ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๊ธฐ

OpenWhisk ํ™ˆํŽ˜์ด์ง€ (http://openwhisk.incubator.apache.org/) ์™€ Medium ๋ธ”๋กœ๊ทธ์—์„œ (https://medium.com/openwhisk) OpenWhisk ์— ๊ด€ํ•œ ์„ค๋ช…๊ณผ ๊ธ€์„ ์ฝ์–ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ผ›์†๊นŒ์ง€ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด Github (https://github.com/apache/incubator-openwhisk)์—์„œ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ๋ณด๊ณ , ํ•œ ๋ฒˆ ์ง์ ‘ ์šด์˜ํ•ด๋ณด์ž. ์ด๋ฏธ ๊ฐœ๋ฐœ ๋žฉํƒ‘์— ๋„์ปค๊ฐ€ ์ค€๋น„๋˜์–ด ์žˆ๋‹ค๋ฉด ํ•„์ž๊ฐ€ ์ž‘์„ฑํ•œ โ€œOpenWhisk ๊ฐœ๋ฐœํ™˜๊ฒฝ Docker ๋กœ ๊ตฌ์„ฑํ•˜๊ธฐโ€ (https://developer.ibm.com/kr/cloud/bluemix/openwhisk/2017/07/09/apache-openwhisk-docker-inception/) ๊ธ€์„ ์ฐธ๊ณ ํ•˜๋ฉด Docker container ๋กœ ๊นจ๋—ํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋จผ์ € Slack ์ฑ„๋„์—์„œ (https://openwhisk.incubator.apache.org/slack.html) ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค๊ณผ ๋…ผ์˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹ค๋ฅธ Github ์— ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ ๊ฐœ์„ ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด Github ์—์„œ ์ด์Šˆ๋ฅผ ๋งŒ๋“ค์–ด ์˜ฌ๋ฆฌ๊ณ , ๋‚ด๊ฐ€ ๋งŒ๋“  ์ˆ˜์ •์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๋ ค๋ฉด ํฌํฌํ•ด์„œ ์ˆ˜์ •ํ•œ ๋’ค PR ์„ ์˜ฌ๋ฆฌ๋ฉด ๋œ๋‹ค.


๋ณธ ๊ธ€์€ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์›จ์–ด 390ํ˜ธ์— ๊ธฐ๊ณ ๋œ ๊ธ€์ž…๋‹ˆ๋‹ค.

ํ† ๋ก  ์ฐธ๊ฐ€

์ด๋ฉ”์ผ์€ ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ์ž…๋ ฅ์ฐฝ์€ * ๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.