์„œ๋ฒ„๋ฆฌ์Šค API ์ฒ˜๋ฆฌ๊ธฐ ๋นŒ๋“œํ•˜๊ธฐ  

API ํ˜ธ์ถœ์— ๋Œ€์‘ํ•˜๋Š” ์˜คํ† ์Šค์ผ€์ผ ์•ก์…˜ ์ƒ์„ฑํ•˜๊ธฐ

Last updated

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


‘์ฝ”๋“œ ๋ณด๊ธฐ’ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด GitHub์—์„œ ํ•œ๊ธ€ README ํŒŒ์ผ์„, ‘๋™์˜์ƒ ๋ฐ๋ชจ ๋ณด๊ธฐ’ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด Youtube์—์„œ ํ•œ๊ธ€์ž๋ง‰์„ ์„ ํƒํ•˜์—ฌ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

By Daniel Krook

Overview

์ด ๊ณผ์ •์€ HTTP REST API ํ˜ธ์ถœ์— ๋Œ€์‘ํ•˜์—ฌ ์ž๋™์œผ๋กœ ํ™•์žฅ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์„œ๋ฒ„๋ฆฌ์Šค, ์ด๋ฒคํŠธ ์ค‘์‹ฌ ์•„ํ‚คํ…์ฒ˜์˜ ํž˜์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. API ์—”๋“œ ํฌ์ธํŠธ๊ฐ€ ํ˜ธ์ถœ ๋˜๊ธฐ ์ „๊นŒ์ง€ ์†Œ๋น„๋˜๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๊ฐ€ ํ˜ธ์ถœ ๋  ๋•Œ ํ˜„์žฌ ๋ถ€ํ•˜์™€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋„๋ก ํ”„๋กœ๋น„์ €๋‹๋ฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ๋Š” MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ  ์ฝ๋Š” ๋„ค ๊ฐ€์ง€ OpenWhisk ์•ก์…˜(JavaScript๋กœ ์ž‘์„ฑ)์„ ๋ณด์—ฌ ์ฃผ๋ฉฐ ์•ก์…˜์ด ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ ์„œ๋น„์Šค์™€ ํ•จ๊ป˜ ๋™์ž‘ํ•˜๊ณ  HTTP ์š”์ฒญ์— ์‘๋‹ตํ•˜์—ฌ ๋กœ์ง์„ ์‹คํ–‰ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์•ก์…˜์€ HTTP POST ์š”์ฒญ์— ๋Œ€ํ•ด ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ œ๊ณต๋œ ๊ณ ์–‘์ด ์ด๋ฆ„๊ณผ ์ƒ‰๊น” ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์•ก์…˜์€ PUT ์š”์ฒญ์— ๋งคํ•‘๋˜์–ด ๊ธฐ์กด ๊ณ ์–‘์ด์— ๋Œ€ํ•œ ํ•„๋“œ๋ฅผ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ์•ก์…˜์€ ์ฃผ์–ด์ง„ ๊ณ ์–‘์ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” GET ์š”์ฒญ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ ์•ก์…˜์€ ์ฃผ์–ด์ง„ ๊ณ ์–‘์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

Bluemix์˜ Node.js ๋Ÿฐํƒ€์ž„์€ NPM ๋ชจ๋“ˆ์˜ ๋‚ด์žฅ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ๋ชจ์—์„œ๋Š” MySQL ํด๋ผ์ด์–ธํŠธ์™€ ๊ฐ™์€ ์ถ”๊ฐ€์ ์ธ Node.js ์ข…์†์„ฑ์ด ๊ณ ๋„์˜ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ZIPํŒŒ์ผ๋กœ ํŒจํ‚ค์ง€ํ™”๋˜๋Š” ์ปค์Šคํ…€ ์•ก์…˜์— ๋Œ€ํ•ด ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

Flow

  1. API ํด๋ผ์ด์–ธํŠธ๊ฐ€ REST API์— HTTP POST ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค..
  2. API ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ์š”์ฒญ์„ ๋ฐ›์•„ OpenWhisk ์ž‘์—…์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค..
  3. OpenWhisk ์•ก์…˜์€ ์š”์ฒญ๋œ body parameter๋ฅผ ์ถ”์ถœํ•˜๊ณ  NPM MySQL ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SQL INSERT๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ณ ์–‘์ด ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  5. ๊ณ ์–‘์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ๊ฐฑ์‹ ํ•˜๊ณ , ์‚ญ์ œํ•˜๋Š” GET, PUT ๋ฐ DELETE ์š”์ฒญ์— ๋Œ€ํ•œ ํ๋ฆ„์ด ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.

Components

IBM Cloud Functions

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

Compose for MySQL

๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋Š” ๊ด€๊ณ„ํ˜• ์˜คํ”ˆ์†Œ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค

Technologies

API Management

API๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ํ•ด๋‹นAPI์— ๋Œ€ํ•œ ๋ฌธ์„œํ™”, ์ ‘์† ํ†ต์ œ ๋ฐ ํ†ต๊ณ„ ์ถ”์ ์ด ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ์˜ API ์ œ๊ณต์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

Serverless Computing

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

Related Blogs

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

Related Links

์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ณ๊ฐ€ ๊ฐ€์ง„ ๋งค๋ ฅ์ด ๋ฌด์—‡์ผ๊นŒ์š”?(์˜๋ฌธ)

์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋Š” ์˜ฌํ•ด ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋Š” ํŠธ๋ Œ๋“œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ๋น„์šฉ ์ธก๋ฉด์—์„œ ๋งค์šฐ ๋งค๋ ฅ์ ์ธ ์†”๋ฃจ์…˜์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ์ˆ ์ ์ธ ๊ธฐ๋Šฅ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ์š”์†Œ๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์˜คํ”ˆ์†Œ์Šค, ์ด๋ฒคํŠธ ์ค‘์‹ฌ, ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์„ ๊ฐ–์ถ˜ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์•„ํ‚คํ…์ณ(์˜๋ฌธ)

์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋กœ ๊ตฌํ˜„๋œ ์ƒˆ๋กœ์šด ํด๋ผ์šฐ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ ๊ฐœ๋ฐœ์ž๋Š” ์ž์‹ ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š”๊ฒƒ์—๋Š” ๋” ์ง‘์ค‘ํ•˜๊ณ  ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌ๋Š” ์ข€ ๋œ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. IBM์ด ์‹œ์ž‘ํ•œ OpenWhisk ํ”„๋กœ์ ํŠธ๋Š” ํด๋ผ์šฐ๋“œ ๊ณ ์œ ์˜ ์ด๋ฒคํŠธ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.