
เปเบกเปเบเบซเบเบถเปเบเปเบเบเปเบฒเบญเปเบฝเบเบเบตเปเปเบเบเปเบเบฑเปเบเบเบตเปเบชเบธเบเปเบเบเบญเบกเบเบดเบงเปเบเบตเปเบเบฑเบ. เบซเบผเบฑเบเบเบฒเบเบเบทเปเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบกเปเบเบงเปเบฒเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเปเปเปเบกเปเบเบเบงเบฒเบกเบเบฑเบเบงเบปเบเบเบญเบ DevOps, เปเบเปเบเบญเบเบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบ. เบเบฒเบเบเบฐเบซเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฑเบเบเบฒเบเปเบซเบผเบเปเบฅเบฐเบกเบตเบญเบฑเบเบเบฒเบเบฒเบเบเปเบฝเบเปเบเบเบชเบนเบ.
เบฅเบฑเบเบชเบฐเบเบฐเบเบปเปเบงเปเบเบญเบตเบเบญเบฑเบเบซเบเบถเปเบเปเบกเปเบเปเบเบงเปเบเปเบกเบเบตเปเบเบฐเบซเบผเบธเบเบซเบเปเบญเบเบฅเบปเบเปเบฅเบฐเบฅเบฐเบซเบฑเบเปเบเบเบฑเบช, เบเบฑเปเบเปเบกเปเบเปเบซเบเบเบปเบเบเบตเปเบเบญเบกเบเบดเบงเปเบเบตเปเปเบเบตเบเปเบงเบตเบเบฒเบเบเบฑเปเบเปเบญเบตเปเบเบงเปเบฒเบซเบเปเบฒเบเบตเปเปเบเบฑเบเบเปเบฅเบดเบเบฒเบ (FaaS).
เปเบเบเบฐเบซเบงเบฑเบเบชเบฒเบ, เบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเบเบฑเบเบเปเบฒเบญเบดเบเบเบตเปเบชเบฐเปเบซเบเบต FaaS เบเบฑเบ AWS Lambda เปเบกเปเบ Amazon, เบเบฑเปเบเบเบฑเปเบเบเบทเป. เบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบ cloud เบญเบทเปเบเปเบเบฑเบเบชเบฐเปเบซเบเบตเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ:
- เบเบฑเบเบเบฑเบเบเบฅเบฒเบงเบเบฒเบ Google
- เบเบฑเบเบเบฑเบ Azure เบเบฒเบ Microsoft
เบเปเบฅเบดเบชเบฑเบเบเบฑเบเบซเบกเบปเบเปเบซเบผเบปเปเบฒเบเบตเปเบชเบฐเบซเบเบญเบเบเบญเบกเบเบดเบงเปเบเบตเป serverless, auto-scaling, เปเบฅเบฐเบเบฝเบเปเบเปเบเปเบฒเบเบเปเบฒเบชเบดเปเบเบเบตเปเบเปเบฒเบเปเบเปเปเบเปเป, เปเบเปเบเบงเบเปเบเบปเบฒเบฅเบฑเบญเบเบฅเบนเบเบเปเบฒเปเบเบปเปเบฒเปเบเปเบเบเบฐเบฅเบดเบเบเบฐเบเบฑเบเบเบตเปเปเบเบฑเบเปเบเบปเปเบฒเบเบญเบเบเบญเบเบเบงเบเปเบเบปเบฒ. เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบกเบตเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเปเปเปเบชเบเบเปเบฒเปเบฅเบฐเปเบซเบผเปเบเปเบเบตเบเบชเปเบฒเบฅเบฑเบเบเบญเบกเบเบดเบงเปเบเบตเปเบเบตเปเบเปเปเบกเบตเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบกเบฑเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบญเบ:
- เปเบงเบเบต , เบเบฑเบเบเบฐเบเบฒเปเบ incubator เปเบเบ IBM,
- , เปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบฅเบฐเบเบปเบเบเบดเปเบงเบ Spring Framework เบเบตเปเบญเบธเบเบปเบกเบชเบปเบกเบเบนเบ, เปเบเบดเปเบเบเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบฑเบ facade เบชเปเบฒเบฅเบฑเบ AWS Lambda, Azure Functions เปเบฅเบฐ OpenWhisk,
- , เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบเบ Oracle.
เบเบงเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเปเบเบฑเบเปเบญเบเบฐเบฅเบฒเบเบขเปเบฒเบเบชเบปเบกเบเบนเบเบเบญเบเปเบกเบ, เบเบฑเปเบเปเบกเปเบ, เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบดเบเบเบฑเปเบเบขเบนเปเปเบเปเบกเบเปเบเบเปเปเบเบฒเบก, เบฅเบงเบกเบเบฑเบเบเบญเบเบเปเบฒเบเปเบญเบ, เบชเบฒเบเบฒเบฅเบฐเบเบฐเบซเบผเบทเปเบญเบเบฐเบเบปเบ, เปเบฅเบฐเปเบเปเบเบญเบเปเบ Exoscale.
เปเบเบเบเบฒเบ Fn เปเบฎเบฑเบเบงเบฝเบเปเบเบงเปเบ
Fn เปเบกเปเบเบญเบตเบเปเบชเป Docker เบขเปเบฒเบเบชเบปเบกเบเบนเบ, เบเบฐเบเบญเบเบเปเบงเบเบชเบญเบเบญเบปเบเบเบฐเบเบญเบเบเบปเปเบเบเป:
- เปเบเบเบเบฒเบ CLI เบเบทเบเบญเบญเบเปเบเบเบกเบฒเปเบเบทเปเบญเบเบฑเบเบเบฒเบเบเบธเบเบเปเบฒเบเบเบญเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบ Fn, เปเบฅเบฐเบเบปเบงเบเบฑเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Fn,
- เปเบเบตเบเปเบงเบต Fn เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเปเบเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบปเบเบเบฐเบเบดเบเบตเปเบเบฑเบเบเบธเบขเบนเปเปเบ Docker container.
เบเบฑเบเบเบฑเบเบเบตเปเปเบเปเปเบ Fn เบเบฑเบเบเบทเบเบเบฐเบเบดเบเบฑเบเบขเบนเปเปเบเบเบฑเบเปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบเบดเปเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเบซเบผเบฒเบ, เบเบปเบงเบขเปเบฒเบ ... Clojure!
เบญเบฒเบเบดเบงเปเบกเบฑเบเบเบฑเบเบเบฑเบเบเบทเบเบชเบปเปเบเบเปเบฒเบเปเบเบปเปเบฒเบกเบฒเบเบเบฐเบเบฒเบ (STDIN), เบเบปเบเปเบเปเบฎเบฑเบเบเบทเบเบเบฝเบเปเบเบฑเบเบเบปเบเบเบฐเบฅเบดเบเบกเบฒเบเบเบฐเบเบฒเบ (STDOUT). เบเปเบฒเบเบฒเบเปเบเปเบเบฝเบเบซเบผเบทเบเปเบฒเบเบฑเบเบเบทเบเบเปเปเปเบกเปเบเบเปเบฒเบเปเบฒเบเบเบฒเบ (เปเบเบฑเปเบเบงเบฑเบเบเบธ JSON), เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบทเบเปเบเบเปเบเบเปเบเปเบเบฑเปเบ abstraction เบชเบฐเบซเบเบญเบเปเบซเปเปเบเบ Fn เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเปเบเบฎเบนเบเปเบเบเบเบญเบ Function Development Kit (FDK).
เปเบเบทเปเบญเบเบงเบฒเบกเบชเบฐเบเบงเบ, เบเบธเบเปเบกเปเปเบเบเปเบเบเบปเบงเปเบกเปเบเปเบเปเบเบทเบเบชเบฐเปเบซเบเบตเปเบเบทเปเบญเบญเปเบฒเบเบงเบเบเบงเบฒเบกเบชเบฐเบเบงเบเปเบเบเบฒเบเบเปเบฒเปเบเป FaaS เปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบขเปเบฒเบเบเบงเปเบฒเบเบเบงเบฒเบเบเบญเบเบเบฒเบชเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฐเบชเบฐเบเบฑเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ (Go, เบชเบฐเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบญเบ Java, Python, เปเบฅเบฐเบญเบทเปเบเป).
เบเบฒเบเบชเปเบฒเบ FaaS เปเบกเปเบเบเปเบฒเบเปเบเบเบเบฐเบเบดเบเบฑเบเบเบฒเบกเปเบเบเบงเบฒเบเบเบตเป:
- เบเบฒเบเบเบณเปเบเปเบเบฑเบเบเบฑเบเปเบเบเปเบเป Fn CLI: เปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบชเบณเบฅเบฑเบ Fn เปเบกเปเบเบชเปเบฒเบเบเบถเปเบเปเบเบเบญเบตเบเปเบชเปเปเบกเปเปเบเบเบเบตเปเปเบฅเบทเบญเบ.
- เบเบงเบเปเบฎเบปเบฒเบกเปเบงเบเบซเบเปเบฒเบเบตเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบญเบ, เบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเปเบเบเปเบเป CLI Fn: เบฎเบนเบเบเบฒเบเบเบฑเบเบเบธเบเบทเบเบเบฑเบเปเบชเปเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบตเปเปเบเปเบเบญเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบกเบตเบขเบนเปเปเบฅเบฐเบเบฒเบเบเบฑเบเบงเบฒเบเบเบญเบเบฎเบนเบเบเบฒเบเบเบตเป.

เบซเบผเบฑเบเบเบฒเบเบเบญเบเบเบฒเบเบชเบปเปเบเบกเบญเบเบซเบเปเบฒเบเบตเปเปเบซเป Fn
เบเบฒเบเบเบดเบเบเบฑเปเบเปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบเบเปเบญเบเบเบดเปเบเบเบญเบเบซเบเปเบฒเบเบตเป serverless
เปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบฒเบเบเบดเบเบเบฑเปเบ Fn เปเบเปเบเบทเปเบญเบเบเปเบญเบเบเบดเปเบ. เบเปเบญเบเบญเบทเปเบเปเบปเบ, เบเบงเบเปเบฎเบปเบฒเบเบดเบเบเบฑเปเบ Docker, เบเบฒเบกเบเบตเป Fn เบฎเบฝเบเบฎเปเบญเบ. เบเบตเปเบชเบปเบกเบกเบธเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบขเบนเปเปเบ Debian/Ubuntu:
$ sudo apt-get update
$ sudo apt-get install docker.ioเบซเบผเบทเปเบเปเบเบปเบงเบเบฑเบเบเบฒเบเบเบธเบ / Docker build เบเบฒเบกเบฅเบฐเบเบปเบเบเบญเบเปเบเบปเปเบฒ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบเบเบเบปเบเบเบฑเบเบเบฒเบเบเบดเบเบเบฑเปเบ Fn CLI. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบเปเบฒเปเบเป curl:
$ curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | shเบเปเบฒเบเปเบฒเบเบขเบนเปเปเบ OSX เบเบตเปเบกเบต Homebrew เบเบดเบเบเบฑเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบญเบทเปเบ:
$ brew install fn
==> Downloading https://homebrew.bintray.com/bottles/fn-0.5.8.high_sierra.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/b1/b1767fb00e2e69fd9da73427d0926b1d1d0003622f7ddc0dd3a899b2894781ff?__gda__=exp=1538038849~hmac=c702c9335e7785fcbacad1f29afa61244d02f2eebb
######################################################################## 100.0%
==> Pouring fn-0.5.8.high_sierra.bottle.tar.gz
/usr/local/Cellar/fn/0.5.8: 5 files, 16.7MBเบเบฝเบงเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบกเปเบฅเปเบงเบเบตเปเบเบฐเบเบณเปเบเปเปเปเบฒเบเบตเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบทเปเบญเบเบเบปเปเบเปเบเบเปเบเป CLI. เปเบเบทเปเบญเบเบงเบฒเบกเบเปเบฒเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเปเบเบตเบเบเบปเบงเปเบเบเบปเบง, เปเบเบฑเปเบ: Node:
$ fn init --runtime node --trigger http hellonode
Creating function at: /hellonode
Function boilerplate generated.
func.yaml created.เปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบซเบกเปเบเบฐเบเบทเบเบชเปเบฒเบเบเบทเปเบ hellonode เปเบเบทเปเบญเบเบฑเบเบเบฐเบเบฒเบเบฑเบเบเบฑเบ Fn เบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฒเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบทเปเบเบเบฒเบ. เบเบฒเบเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบชเปเบฒเบเปเบซเบกเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบญเบเบเปเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบกเบฒเบเบเบฐเบเบฒเบเบเบญเบเบเบฒเบชเบฒเบซเบผเบทเปเบงเบฅเบฒเปเบฅเปเบเบเบตเปเบเปเบฒเบเปเบฅเบทเบญเบ:
# ะะฐัะฐะปะพะณ ั node ะฒัะณะปัะดะธั ัะฐะบ:
hellonode
โโโ func.js
โโโ func.yaml
โโโ package.json
# ะกะฒะตะถะตัััะฐะฝะพะฒะปะตะฝะฝะพะต ะพะบััะถะตะฝะธะต Java11 ัะฐะบะพะต:
hellojava11
โโโ func.yaml
โโโ pom.xml
โโโ src
โโโ main
โ โโโ java
โ โโโ com
โ โโโ example
โ โโโ fn
โ โโโ HelloFunction.java
โโโ test
โโโ java
โโโ com
โโโ example
โโโ fn
โโโ HelloFunctionTest.javaFn เบชเปเบฒเบเปเบเบเบชเปเบฒเบเปเบเบเบเบฒเบเปเบเบทเปเบญเบเบเบปเปเบ, เบชเปเบฒเบเปเบเบฅเป func.yaml, เบเบฐเบเบญเบเบเปเบงเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบ Fn, เปเบฅเบฐเบเปเบฒเบเบปเบเปเบกเปเปเบเบเบชเปเบฒเบฅเบฑเบเบฅเบฐเบซเบฑเบเปเบเบเบฒเบชเบฒเบเบตเปเบเปเบฒเบเปเบฅเบทเบญเบ.
เปเบเบเปเบฅเบฐเบเบตเบเบญเบ Node runtime, เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ:
$ cat hellonode/func.js
const fdk=require('@fnproject/fdk');
fdk.handle(function(input){
let name = 'World';
if (input.name) {
name = input.name;
}
return {'message': 'Hello ' + name}
})เบเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบปเบเบชเบญเบเบเบฑเบเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบเบขเปเบฒเบเปเบงเบงเบฒเปเบเบทเปเบญเปเบเบดเปเบเบงเปเบฒเบเบธเบเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเบงเปเบ.
เบเปเบฒเบญเบดเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบฅเบตเปเบกเบเบปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Fn. เบเบฑเปเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเปเบฅเปเบง, เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Fn เปเบกเปเบ Docker container, เบเบฑเปเบเบเบฑเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ, เบกเบฑเบเบเบฐเปเบเปเบฅเบฐเปเบญเบปเบฒเบฎเบนเบเบเบฒเบเบเบฒเบ Docker registry.
$ fn start -d # ะทะฐะฟััะบะฐะตะผ ะปะพะบะฐะปัะฝัะน ัะตัะฒะตั ะฒ ัะพะฝะต
Unable to find image 'fnproject/fnserver:latest' locally
latest: Pulling from fnproject/fnserver
ff3a5c916c92: Pull complete
1a649ea86bca: Pull complete
ce35f4d5f86a: Pull complete
...
Status: Downloaded newer image for fnproject/fnserver:latest
668ce9ac0ed8d7cd59da49228bda62464e01bff2c0c60079542d24ac6070f8e5เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบเบตเปเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบกเบฑเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบ "เบกเปเบงเบเบญเบญเบ". เบเบตเปเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบต ะธะผั ะฟัะธะปะพะถะตะฝะธั: เปเบ Fn, เบเบธเบเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเบญเบเบเบทเบเบฅเบฐเบเบธเปเบเบฑเบ namespaces เบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฑเบเบเบตเปเบเปเบฝเบงเบเปเบญเบ.
Fn CLI เบเบฐเบเบญเบเบซเบฒเปเบเบฅเป func.yaml เปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฐเบเบธเบเบฑเบเบเบตเปเบเบฐเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเปเบฒเบซเบเบปเบเบเปเบฒเบเบฑเบเบเบฑเบ. เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบญเบดเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ hellonode.
$ cd hellonode
$ fn deploy --app fnexo --local # ะฒัะบะฐััะฒะฐะตะผ ััะฝะบัะธั ะปะพะบะฐะปัะฝะพ, ะธะผั ะฟัะธะปะพะถะตะฝะธั - fnexo.
# ะฟะฐัะฐะผะตัั local ะฝะต ะทะฐะปะธะฒะฐะตั ะพะฑัะฐะท ะฒ ัะดะฐะปะตะฝะฝัะน ัะตะตััั,
# ะทะฐะฟััะบะฐั ะตะณะพ ะฝะฐะฟััะผัั
Deploying hellonode to app: fnexo
Bumped to version 0.0.2
Building image nfrankel/hellonode:0.0.3 .
Updating function hellonode using image nfrankel/hellonode:0.0.3...
Successfully created app: fnexo
Successfully created function: hellonode with nfrankel/hellonode:0.0.3
Successfully created trigger: hellonode-triggerเบเบฑเปเบเบเบตเปเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบเบฒเบเบเบปเบเบเบฐเบฅเบดเบเบเปเบฒเบชเบฑเปเบ, เบฎเบนเบเบเบฒเบเบเบฑเบเบเบธ Docker เปเบซเบกเปเปเบกเปเบเบเบทเบเบชเปเบฒเบเบเบถเปเบเบเบตเปเบกเบตเบซเบเปเบฒเบเบตเปเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบเบฑเบเบเบฑเบเปเบกเปเบเบเปเบญเบกเบเบตเปเบเบฐเบเบทเบเปเบญเบตเปเบ, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบกเบตเบชเบญเบเบงเบดเบเบตเบเบตเปเบเบฐเปเบฎเบฑเบเบกเบฑเบ:
- เปเบเปเบเปเบฒเบชเบฑเปเบ Fn
invoke - เปเบเปเบเบเบเบปเบเบเปเบฒเบ
http
เบเปเบฒเบเบฒเบ invoke เบเปเบฒเบ Fn เบกเบฑเบเบเบฝเบเปเบเป emulates เปเบฎเบฑเบเบงเบฝเบเบเปเบฒเบ HTTP เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบชเบญเบ, เปเบเบดเปเบเบชเบฐเบเบงเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเปเบง:
$ fn invoke fnexo hellonode # ะฒัะทัะฒะฐะตะผ ััะฝะบัะธั hellonode ะฟัะธะปะพะถะตะฝะธั fnexo
{"message":"Hello World"}เปเบเบทเปเบญเปเบเบซเบฒเบซเบเปเบฒเบเบตเปเปเบเบเบเบปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฎเบนเป URL เปเบเบฑเบก:
$ curl http://localhost:8080/t/fnexo/hellonode-trigger
{"message":"Hello World"}เปเบเบตเบเปเบงเบต Fn เปเบเบตเบเปเบเบตเบเบเบฑเบเบเบฑเบเบเบญเบเบกเบฑเบเบขเบนเปเปเบเบเบญเบ 8080 เปเบฅเบฐ URL เบเบฑเบเบเบฑเบเบเบฐเบเบปเบเบงเปเบฒเบเบปเบเบเบฑเบเบฎเบนเบเปเบเบ t/app/function, เปเบเปเบเปเปเบชเบปเบกเบเบนเบ. เบเปเบฒเบ HTTP, เบเบฑเบเบเบฑเบเบเปเปเบเบทเบเปเบญเบตเปเบเปเบเบเบเบปเบ, เปเบเปเบเปเบฒเบเบญเบฑเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒ trigger, เปเบเบดเปเบ, เบญเบตเบเบเบฒเบกเบเบทเปเบเบญเบเบกเบฑเบ, "เปเบฅเบตเปเบกเบเบปเปเบ" เปเบเบซเบฒเบซเบเปเบฒเบเบตเป. Triggers เบเบทเบเบเปเบฒเบเบปเบเปเบงเปเปเบ `func.yml เปเบเบเบเบฒเบ:
schema_version: 20180708
name: hellonode
version: 0.0.3
runtime: node
entrypoint: node func.js
format: json
triggers:
- name: hellonode-trigger
type: http
source: /hellonode-trigger # URL ััะธะณะณะตัะฐเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเปเบฝเบเบเบทเปเบเบปเบงเบเบฐเบเบธเปเบเปเบซเปเบเบปเบเบเบฑเบเบเบทเปเบเบฑเบเบเบฑเบ, เบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเปเบฒเบเบเบฒเบ:
triggers:
- name: hellonode-trigger
type: http
source: /hellonode # ัะพะฒะฟะฐะดะฐะตั ั ะธะผะตะฝะตะผ ััะฝะบัะธะธเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเบฑเบเบชเบปเปเบเบเบฑเบเบเบฑเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเปเบฅเบฐเปเบเบซเบฒเบกเบฑเบเบเบฒเบ trigger เปเบซเบกเป:
$ fn deploy --app fnexo hellonode --local
$ curl http://localhost:8080/t/fnexo/hellonode
{"message":"Hello World"}เบเบธเบเบขเปเบฒเบเบเบณเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบ! เบกเบฑเบเปเบเบดเบเปเบงเบฅเบฒเปเบฅเปเบงเบเบตเปเบเบฐเบเปเบฒเบงเปเบเบชเบนเปเบเบฒเบเบเบปเบเบฅเบญเบเปเบเบฑเบกเบฎเบนเบเปเบเบ เปเบฅเบฐเปเบเบตเบเปเบเป FaaS เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบตเบเปเบงเบต!
เบเบฒเบเบเบดเบเบเบฑเปเบเบเปเบฅเบดเบเบฒเบเบเบฑเบเบเบฑเบเปเบเบตเบเปเบงเบตเปเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบญเบเบเปเบฒเบเปเบญเบ
เบเปเปเบซเปเบเบดเบเบเบฑเปเบเปเบเบทเปเบญเบ virtual เบขเปเบฒเบเปเบงเบงเบฒเปเบเบเปเบเป Exoscale CLI. เบเปเบฒเบเปเบฒเบเบเบฑเบเบเปเปเปเบเปเบเบฑเปเบเบกเบฑเบเปเบเบทเปเบญ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป . เบเบตเปเปเบกเปเบเปเบเบทเปเบญเบเบกเบทเบเบตเปเปเบขเบฑเบเบเบตเปเบเบฐเปเบเบตเปเบกเบเบปเบเบเบฐเบฅเบดเบเบเบญเบเบเปเบฒเบเบซเบผเบฒเบเบเบถเปเบ. เบขเปเบฒเบฅเบทเบกเบงเปเบฒเปเบเบปเปเบฒเบเปเบญเบเบเบฑเปเบเบเปเบฒเบเบปเบเบฅเบฐเบเบฝเบเปเบเบทเปเบญเปเบเบตเบเบเบญเบ 8080 เปเบเบเบธเปเบกเบเบงเบฒเบกเบเบญเบเปเบ! เบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบตเปเบเบฐเปเบเบตเบเบเบปเบงเปเบเบทเปเบญเบ virtual เบเบตเปเบชเบฐเบญเบฒเบ, เบเปเบญเบกเบเบตเปเบเบฐเปเบเบฑเบเปเบเบปเปเบฒเบเบฒเบเบซเบเปเบฒเบเบตเปเบเบญเบเบเบงเบเปเบฎเบปเบฒ:
$ exo firewall create fn-securitygroup
$ exo firewall add fn-securitygroup ssh --my-ip
$ exo firewall add fn-securitygroup -p tcp -P 8080-8080 -c 0.0.0.0/0
$ exo vm create fn-server -s fn-securitygroupเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบ ssh เปเบเบปเปเบฒเปเบเปเบเปเบเบทเปเบญเบ virtual เปเบฅเบฐเบเบดเบเบเบฑเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Fn เบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ:
$ exo ssh fn-server
The authenticity of host '185.19.30.175 (185.19.30.175)' can't be established.
ECDSA key fingerprint is SHA256:uaCKRYeX4cvim+Gr8StdPvIQ7eQgPuOKdnj5WI3gI9Q.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '185.19.30.175' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-20-generic x86_64)เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบดเบเบเบฑเปเบ Docker เปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Fn เปเบเบเบฒเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบตเปเปเบเปเปเบฎเบฑเบเปเบฅเปเบงเปเบเปเบเบทเปเบญเบเบเปเบญเบเบเบดเปเบ, เปเบฅเบตเปเบกเบเบปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ:
$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo systemctl start docker
$ curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh
$ sudo fn start
...
______
/ ____/___
/ /_ / __
/ __/ / / / /
/_/ /_/ /_/
v0.3.643Fn เบเปเบญเบกเบฎเบฑเบเบเบฑเบเบเบฑเบ! เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบญเบเบซเบเปเบฒเบเบตเปเปเบเบปเปเบฒเบซเบกเบฒเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบเปเบฒเบชเบฑเปเบ deploy เบเบฒเบเบเบญเบกเบเบดเบงเปเบเบตเบเปเบญเบเบเบดเปเบเปเบเบเบเบฒเบเบฅเบฐเปเบงเบฑเปเบเบเบธเบ --local.
เบเบญเบเบเบฒเบเบเบฑเปเบ, Fn เบฎเบฝเบเบฎเปเบญเบเปเบซเปเบเปเบฒเบเบฅเบฐเบเบธเบชเบฐเบเบฒเบเบเบตเปเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Fn เปเบฅเบฐเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบ Docker. เบเบฒเบเปเบฅเบทเบญเบเปเบซเบผเบปเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก FN_API_URL ะธ FN_REGISTRY เบเบฒเบกเบฅเปเบฒเบเบฑเบ, เปเบเปเบเบฑเบเบชเบฐเปเบซเบเบตเบงเบดเบเบตเบเบฒเบเบเบตเปเบชเบฐเบเบงเบเบเบงเปเบฒเปเบเบเบฒเบเบเบธเปเบกเบเบญเบเบเบฒเบเบชเปเบฒเบเปเบฅเบฐเบเบฒเบเบเบธเปเบกเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบ.
เปเบเปเบเบทเปเบญเบเปเบ Fn, เบเบฒเบเบเบฑเปเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเปเบกเปเบเปเบญเบตเปเบเบงเปเบฒ context. เบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบตเปเบเบฐเบชเปเบฒเบเบเปเบฅเบดเบเบปเบ:
$ fn create context exoscale --provider default --api-url http://185.19.30.175:8080 --registry nfrankelเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบชเบฐเบเบฒเบเบเบฒเบเบเบตเปเบกเบตเบขเบนเปเปเบเบฑเปเบเบเบตเป:
$ fn list contexts
CURRENT NAME PROVIDER API URL REGISTRY
default default http://localhost:8080/
exoscale default http://185.19.30.175:8080 nfrankel
เปเบฅเบฐเบชเบฐเบซเบผเบฑเบเบเบฑเบเบชเบฐเบเบฒเบเบเบฒเบเบเบตเปเบซเบฒเบเปเปเบชเปเบฒเบเปเบเบเบเบตเป:
$ fn use context exoscale
Now using context: exoscaleเบเบฒเบเบเบตเป, เบเบฒเบเบเบฑเบเบชเบปเปเบเบเบธเบเบชเบปเบกเบเบฑเบ Fn เบเบฐเบเบฒเบงเปเบซเบฅเบเบฎเบนเบเบเบฒเบ Docker เปเบเบเปเบเปเบเบฑเบเบเบต DockerHub เบเบตเปเปเบฅเบทเบญเบ (เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเปเบญเบ - nfrankel), เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเปเบเปเบซเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ (เปเบเบเบปเบงเบขเปเบฒเบเบเบตเป - http://185.19.30.175:8080) เบเปเบฝเบงเบเบฑเบเบชเบฐเบเบฒเบเบเบตเปเปเบฅเบฐเบชเบฐเบเบฑเบเบเบญเบเบฎเบนเบเบเบฒเบเบซเบฅเปเบฒเบชเบธเบเบเบตเปเบกเบตเบซเบเปเบฒเบเบตเปเบเบญเบเบเปเบฒเบ.
$ fn deploy --app fnexo . # ะฒัะฟะพะปะฝัะตััั ะฝะฐ ะปะพะบะฐะปัะฝะพะน ะผะฐัะธะฝะต ะธะท ะบะฐัะฐะปะพะณะฐ hellonode
Deploying function at: /.
Deploying hellonode to app: fnexo
Bumped to version 0.0.5
Building image nfrankel/hellonode:0.0.5 .เบชเบธเบเบเปเบฒเบ:
$ curl http://185.19.30.175:8080/t/fnexo/hellonode
{"message":"Hello World"}
Function Lifecycle เปเบ Fn-Based Serverless Computing
เบเปเปเปเบเปเบเบฝเบเบเบญเบเบเบญเบกเบเบดเบงเปเบเบตเป serverless เบขเบนเปเปเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบญเบเบเปเบฒเบเปเบญเบ
เบเบญเบกเบเบดเบงเปเบเบตเบเบตเปเบเปเปเบกเบตเปเบเบตเบเปเบงเบตเปเบกเปเบเปเบเบฑเบเบเบฒเบเปเบเปเปเบเบเบตเปเบชเบฐเบเบงเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบชเปเบงเบเบเบตเปเปเบเบฑเบเปเบญเบเบฐเบฅเบฒเบเบขเปเบฒเบเปเบงเบงเบฒเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบตเปเบเบปเบงเบเบฑเบเบเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ เบซเบผเบทเบเปเบฅเบดเบเบฒเบเบเบธเบฅเบฐเบเบฒเบเบเบตเปเบชเบฑเบเบชเบปเบเบซเบผเบฒเบ.
เบเบตเปเบกเบฑเบเบเบฐเปเบเบฑเบเบเปเบญเบเบเปเบฒเปเบเปเบเปเบฒเบเบเบตเปเปเบเบทเปเบญเบเปเบงเปเบเบญเบเบเบฒเบเบฅเบฑเบญเบเบขเบนเปเปเบเบเบนเปเบเบฒเบเบเบตเปเปเบฅเบทเบญเบ, เปเบเบดเปเบ, เบญเบตเบเบเบฒเบกเบเปเบฅเบฐเบเบตเบเบฒเบเบเปเบฒเปเบเปเบชเบฐเปเบเบฒเบฐเปเบฅเบฐเบเบฐเบฅเบดเบกเบฒเบ, เบชเบฒเบกเบฒเบเบเปเบฒเปเบเบชเบนเปเบเปเบฒเปเบเปเบเปเบฒเบเบเบตเปเบชเบนเบเบเบถเปเบเปเบฅเบฐเบซเบผเบธเบเบเปเบญเบเบเบงเบฒเบกเบเบทเบเบซเบเบธเปเบเปเบเบญเบฐเบเบฒเบเบปเบ.
เบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบฑเบเบซเบผเบฒเบเบเบฅเบฒเบงเปเบฅเบฐเบเบฐเบชเบปเบกเบเบฑเบเบเบปเบเบเบธเบเปเบเบเปเบฅเบฐเบเบตเบเบตเป, เปเบเบฒเบฐเบงเปเบฒเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบเบปเบงเปเบญเบเปเบเปเบเปเบฒเบเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเปเบเบปเปเบฒเบขเบฒเบเปเบเปเบเบญเบกเบเบดเบงเปเบเบตเปเบเบตเปเบเปเปเบกเบตเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เปเบเปเปเบเบทเปเบญเบเบเบฒเบเบเบฐเปเบเบเบฒเบเบเบญเบเบเปเบฅเบดเบชเบฑเบเบกเบฑเบเบญเบฒเบเบเบฐเปเบเบฑเบเปเบเบเปเปเปเบเป.
Fn เปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบตเปเบเบฐเปเบเปเปเบฅเบฐเบชเบฒเบกเบฒเบเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเปเบเบญเบ FaaS เปเบเบทเบญเบเบเบฝเบงเบเบฑเบ, เบกเบตเบเปเบฒเปเบเปเบเปเบฒเบเบเบฝเบเปเบฅเบฑเบเบเปเบญเบ. เบกเบฑเบเบเปเบฒเบเบฑเบเบเบฒเบเบฅเบฑเบญเบเบเบญเบเบเบนเปเบเบฒเบเปเบเปเปเบฅเบฐเบชเบฒเบกเบฒเบเบเบดเบเบเบฑเปเบเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบเบซเบผเบทเปเบเบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเปเบเปเปเบเปเบกเบเบเบตเปเบชเบฐเบเบงเบเบชเบฐเบเบฒเบเบเบตเปเบเปเบฒเบเปเบฅเบทเบญเบ. เบเบญเบเบเบฑเปเบเบเบฑเบเบกเบตเบญเบดเบเบชเบฐเบฅเบฐเปเบเบเบฒเบเปเบฅเบทเบญเบเบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบผเปเบเบผเบก.
เบเบปเบเบเบงเบฒเบกเบเบตเปเบเบงเบกเปเบญเบปเบฒเบเบฝเบเปเบเปเบเบทเปเบเบเบฒเบเบเบญเบ Fn, เปเบเปเบเบฒเบเบชเปเบฒเบ runtime เบเบญเบเบเปเบฒเบเปเบญเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบฒเบ, เปเบฅเบฐเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเบฒเบเปเบเบเบฅเบงเบกเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเบขเปเบฒเบเบเบงเปเบฒเบเบเบงเบฒเบเบซเบผเบฒเบเปเบเบเปเบเป Fn load balancer, เบซเบผเบทเปเบเบเบเบฒเบเบงเบฒเบ Fn เบขเบนเปเบซเบฅเบฑเบ proxy เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเปเบญเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com
