Serverless ๋Š” BaaS(Backend as a Service), FaaS(Function as a Service) ๋กœ ํฌ๊ฒŒ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

BaaS ๋Š” ๋ช…์นญ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด Backend ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. Firebase๊ฐ€ ๋Œ€ํ‘œ์ ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์†Œ์…œ ์„œ๋น„์Šค ์—ฐ๋™, ํŒŒ์ผ์‹œ์Šคํ…œ, Auth ๋“ฑ์„ ์ œ๊ณตํ•ด์ค€๋‹ค.

 

FaaS๋Š” ์ฝ”๋“œ๋ฅผ function ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด event ๊ธฐ์ค€์œผ๋กœ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. FaaS์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๊ฐ€ stateless ๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

function์„ container์— ์‹ค์–ด์„œ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ˆ˜ํ–‰์ด ๋๋‚˜๋ฉด ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.ย  AWS lambda, Apache openwhisk๊ฐ€ ๋Œ€ํ‘œ์ ์ด๋‹ค.

 

IBM cloud functions ๋Š” Apache openwhisk ๊ธฐ๋ฐ˜์ด๋‹ค. (IBM ์€ openwhisk๋ฅผ Apache ์žฌ๋‹จ์„ ํ†ตํ•ดย  opensource project ๋กœ ๊ณต๊ฐœํ•˜๊ณ  ์ „์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž๋“ค๊ณผ ํ•จ๊ป˜ ๋ฐœ์ „ ์‹œํ‚ค๊ณ  ์žˆ๋‹ค)

 

Openwhisk ๋Š”ย  serveless FaaS platform์ด๋‹ค. (aws ์˜ lambda๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค)

์„œ๋ฒ„๊ฐ€ ์—†๋‹ค๋Š” ์˜๋ฏธ๋Š” ์‹ค์ œ๋กœ ์„œ๋ฒ„๊ฐ€ ์—†๋‹ค๋Š”๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ์„œ๋ฒ„์— ๋Œ€ํ•œ ๊ณ ๋ ค๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์˜๋ฏธ ์ด๋‹ค.

๊ฐ€์ƒ๋จธ์‹ ์ด๋‚˜ ๋ฒ ์–ด๋ฉ”ํƒˆ ์ฒ˜๋Ÿผ ์„œ๋ฒ„๋‚˜ ๋„คํŠธ์›Œํฌ, ์Šคํ† ๋ฆฌ์ง€ ๋“ฑ ์ธํ”„๋ผ๋ฅผ ์„œ๋น„์Šค๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด IaaS (Infrastructure as a Service),

์›น ์„œ๋น„์Šค๋ฅผ ์ฝ”๋“œ๋งŒ ์˜ฌ๋ฆฌ๋ฉด ํ”Œ๋žซํผ์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด PaaS (Platform as a Service) ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์„œ๋ฒ„๋ฆฌ์Šค๋Š” FaaS (Function as a service) ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•œ๋‹ค.

์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œย  ์ฝ”๋“œ๊ฐ€ ํ•จ์ˆ˜ ๋‹จ์œ„๋กœ ์‹คํ–‰๋œ๋‹ค. ๋˜ํ•œ function์ด ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉด ๋น„์šฉ์ด ์—†๋‹ค.

์„œ๋น„์Šค์˜ ํ˜•ํƒœ์— ๋”ฐ๋ผ ๋งค์šฐ ์ €๋ ดํ•˜๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์œ ์ง€ ํ•  ์ˆ˜ ์žˆ๋Š” ํฐ ์žฅ์ ์ด๋‹ค.

 

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” openwhisk๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค.

Openwhisk๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  Action, Trigger, Rule, Sequence, Package ๋ผ๋Š”๊ฒƒ์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

ํŠธ๋ฆฌ๊ฑฐ (Triggers)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์žฅ์น˜, ์›น ๋“ฑ์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐ๋ผ๊ณ  ํ•œ๋‹ค.

 

์•ก์…˜ (Actions)

์•ก์…˜์€ ์ง€์›๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋‹จ์ผ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„๋œ ์ฝ”๋“œ๋กœ, ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‹คํ–‰๋˜์–ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๋ฃฐ (Rules)

๋ฃฐ์€ ํŠธ๋ฆฌ๊ฑฐ์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ ๋Œ€ํ•ด ์–ด๋–ค ์•ก์…˜์ด ์‹คํ–‰๋ ์ง€ ์ •์˜ํ•œ๋‹ค.

 

์‹œํ€ธ์Šค (Sequences)

์•ก์…˜์„ ์—ฐ๊ฒฐํ•˜๋Š” ์กฐํ•ฉ์„ ๋งŒ๋“ค์–ด ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์‹œํ€ธ์Šค๋ผ๊ณ  ํ•œ๋‹ค.

 

ํŒจํ‚ค์ง€ (Packages)

ํŠธ๋ฆฌ๊ฑฐ์™€ ์•ก์…˜์„ ๋ชจ์•„ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋กœ ๊ณต๊ฐœํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒจํ‚ค์ง€๋กœ ์ •์˜๋œ ์™ธ๋ถ€ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ง์ ‘ ๋งŒ๋“  ํŒจํ‚ค์ง€๋ฅผ ์™ธ๋ถ€์— ๊ณต๊ฐœํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

[์ถœ์ฒ˜: Apache OpenWhisk โ€“ ์†Œ๊ฐœ ๋ฐ ์•„ํ‚คํ…์ณ]

 

์•„๋ž˜ ๊ธ€์„ ์ฝ์–ด ๋ณธ๋‹ค๋ฉด ์ „๋ฐ˜์ ์ธ severless architecture์— ๋Œ€ํ•ด ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜์–ด ์›๋ณธ๊ณผ ํ•œ๊ธ€ ๋ฒˆ์—ญ๋ณธ์ด ์žˆ๋‹ค. ํŽธํ•œ ๋ฒ„์ „์œผ๋กœ ์ฝ์–ด ๋ณด์ž.

์›๋ณธ: https://martinfowler.com/articles/serverless.html

๋ฒˆ์—ญ๋ณธ : https://blog.aliencube.org/ko/2016/06/23/serverless-architectures/

ํ† ๋ก  ์ฐธ๊ฐ€

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