áá±á¬ááºáááºá¡áá¯á¶ážáá»á¬ážááá·áºá¡ááºá¹áá«áááºááŸá¬ áá¯ááºááᯠáá»áŸá±á¬á·áá»áááºááŸáá·áº á¡á¬áá¯á¶á á°ážá áá¯ááºááŸá¯ááŒá¯áá¯ááºááẠááá±á¬áá¬ážá ááá¯á·ááŒá±á¬áá·áº áá¬áá¬áá²á·ááœááºááŒá°áá¬á¡á¬áž áááºáá±á¬ááºááŸá¯áá áºáá¯á¡ááŒá Ạáá áºáá«áá áºáᶠ(FaaS) áá¯áá±á«áºáááºá
áááá¯ááºážááŒá±á¬ááºážá¡áá FaaS ááᯠAWS Lambda ááŒáá·áº áááºážááŸááºážááá·áº ááááá¯á¶áž cloud áááºáá±á¬ááºááŸá¯áá±ážáá°ááŸá¬ Amazon ááŒá áºááŒá®áž ááá¯á·ááŒá±á¬áá·áº áá¬áááºááŒá áºáááºá á¡ááŒá¬ážáá±á¬ cloud áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážááááºáž á¡áá¬ážáá° áááºáá±á¬ááºááŸá¯áá±ážáááº-
- Google á០Cloud Functions
- Microsoft á០Azure Functions
á€áá¯áá¹ááá®áá»á¬ážá¡á¬ážáá¯á¶ážááẠáá¬áá¬áá²á·ááœááºááŒá°áá¬á áá áºá á¡ááá¯á¡áá»á±á¬ááºá áá±ážáá»á²á·ááŒááºážááŸáá·áº áááºá¡ááŸááºááááºá¡áá¯á¶ážááŒá¯ááá·áºá¡áá¬á¡ááœááºáᬠáá±ážáá±á¬ááºááŒáá±á¬áºáááºáž áááºážááá¯á·ááẠáá¯á¶ážá áœá²áá°áá»á¬ážááᯠáááºážááá¯á·ááá°ááá¯ááºáá¯ááºáá¯ááºá¡ááŒá ẠááááºááŸá±á¬ááºáá¬ážááŒáááºá ááá¯á·áá±á¬áºá áá¬áá¬áá²á·ááœááºááŒá°áá¬á¡ááœáẠá¡ááá²á·ááŸáá·áº open source á¡ááŒá¬ážááœá±ážáá»ááºá áá¬áá»á¬áž ááŸááá«áááºá ááŸááºáá¬ážááá¯ááºáááº-
- ááááºáá±á¬ááºáž
Apache OpenWhisk IBM á០incubator ááœááºáá®ááœááºáá²á·áááºá Spring Cloud áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž AWS Lambdaá Azure Functions ááŸáá·áº OpenWhisk á¡ááœáẠáá»ááºááŸá¬á á¬á¡ááŒá áºáááºáž á¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬ ááŒáœááºááá±á¬ Spring Framework áá±áá áá áºá áá áºá áááºáá áºááá¯ááºážá¡áá±ááŒáá·áºáááá±á¬áá»áẠFn Oracle ááŸáá¶á·ááá¯ážáá±ážáááºá
áááºážááá¯á·á¡á¬ážáá¯á¶ážááẠcloud áá»á¬ážááŸáá·áº áá¯á¶ážááááºážá ááºááŒá®ážá ááá¯ááá¯áááºááŸá¬ áááºážááá¯á·ááᯠááá·áºááá¯ááºááá¯ááºá á¡áá»á¬ážááá¯áẠááá¯á·ááá¯áẠáá¯áá¹ááááááŸáá·áº Exoscale á¡áá«á¡ááẠáááºááá·áº cloud ááœááºáááᯠááá·áºááœááºážááá¯ááºáááºá
Fn ááá±á¬áá»áẠáááºááá¯á¡áá¯ááºáá¯ááºáá²á
Fn ááẠDocker ááᯠá¡ááŒá±áá¶áá¬ážááŒá®áž á¡ááá á¡á áááºá¡ááá¯ááºáž ááŸá áºáᯠáá«áááºáááº-
- CLI áááá¯ááááºááẠFn á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á ááá¹ááá±á«ááºážá á¯á¶ááᯠá á®áá¶ááá·áºááœá²áááºááŸáá·áº Fn áá¬áá¬ááŸáá·áº á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážááŒá¯ááẠáá®ááá¯ááºážáá¯ááºáá¬ážáááºá
- Fn áá¬áá¬ááá¯ááºááá¯ááºá Docker ááœááºááááºáá¬ááœáẠáá¯ááºááá¯ážáá¬ážáá±á¬ áá¯á¶ááŸááºá¡ááá®áá±ážááŸááºážáá áºáá¯ááŒá áºáááºá
Fn ááœáẠá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá®ážááŒá¬áž ááœááºááááºáá¬áá»á¬ážááœááºáááºáž áá¯ááºáá±á¬ááºáá±ážáá¬ážááŒá®ážá á¥ááá¬á¡á¬ážááŒáá·áº áááá¯ááááºážáááºážáá¬áá¬á áá¬ážáá»á¬ážá áœá¬ááᯠáááºáá¶á·ááá¯ážáá±ážááá¯ááºáá±á¬ áá®ážááŒá¬ážááœááºááááºáá¬áá»á¬ážááœááºáááºáž áá¯ááºáá±á¬ááºáá«áááºá
Function arguments áá»á¬ážááᯠstandard input (STDIN) ááá¯á· ááŒááºááœá¬ážáááºá ááááºáá»á¬ážááᯠstandard output (STDOUT) ááá¯á· á á¬áá±ážáá«áááºá á¡ááŒááºážá¡áá¯á¶áá»á¬áž ááá¯á·ááá¯áẠááŒááºáá±ážááá·áºáááºááá¯ážáá»á¬ážááẠááá¯ážááŸááºážáá±á¬áááºááá¯ážáá»á¬ážááá¯ááºáá«á (á¥ááᬠJSON á¡áá¬ááá¹áá¯áá áºáá¯áá²á·ááá¯á·) Fn ááá¯ááºááá¯ááºá Function Development Kit (FDK) áá¯á¶á á¶ááŒáá·áº áá¶á·ááá¯ážáá±ážáá¬ážááá·áº abstraction á¡ááœáŸá¬ááᯠá¡áá¯á¶ážááŒá¯á áááºážááá¯á·ááᯠááŒá±á¬ááºážáá²ááá¯ááºáááºá
á¡áááºááŒá±á á±áááºá¡ááœáẠFaaS á áá»ááºááŒáá·áºáá±á¬áá¬áá¬á áá¬ážáá»á¬ážááŸáá·áº áááºážááá¯á·ááá¬ážááŸááºážáá»á¬ážá á¬áááºáž (Goá Javaá Python á áááºááŒáá·áº) áá¬ážááŸááºážá¡áá»áá¯ážáá»áá¯ážááœáẠFaaS ááŒáá·áºáá»ááºááŸá¯ááᯠááœááºáá°áá»á±á¬ááœá±á·á á±ááẠáááºáááºáá¬ážáá±á¬ ááá°áá¬á¡á á¯á¶áá»á¬ážááᯠáááºážááŸááºážáá¬ážáá«áááºá
FaaS áááºáá®ážááŒááºážááẠá€áá¯á¶ááŒááºážááᯠááá¯ááºáá¬ááŒááºážááŒáá·áº ááœááºáá°áááº-
- Fn CLI ááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážáá»ááŒááºáž- Fn á¡ááœáẠá¡ááá®áá±ážááŸááºážááœá²á·á ááºážáá¯á¶ááá¯ááºááᯠááœá±ážáá»ááºáá¬ážáá±á¬ áá¯á¶á á¶áá±á«áºá¡ááŒá±áá¶á áááºáá®ážáá¬ážáááºá
- áá»áœááºá¯ááºááá¯á·ááẠCLI Fn ááá¯á¡áá¯á¶ážááŒá¯á áá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºáá»ááºááᯠáááºáá¶áá¯ááºááŒááºáááº- ááœááºááááºáá¬áá¯á¶á¡á¬áž á¡áá»áá¯á·áá±á¬ááá¯ááŸá±á¬ááºáá¯á¶áá áºáá¯ááœáẠáá¬ážááŸáááŒá®ážáá±á¬áẠá€áá¯á¶ááááºááŸáááŸá¯ááŸáá·áºáá±áá¬áá»áá¬ážááŸá¯á¡ááŒá±á¬ááºáž áá¬áá¬á¡á¬áž á¡áááá±ážááŒá®ážáá±á¬ááºá
áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠFn ááá¯á·áá±ážááá¯á·ááŒááºážááááá¬á
áá¬áá¬áá²á·áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá ááºááœááºážááá·áºááœááºážááŒááºážááŸáá·áº á ááºážáááºááŒááºážá
ááŒááºááœááºážá ááºááœáẠFn ááá¯á áááºááá·áºááœááºážááŒáá«á áá¯á·á ááááŠážá áœá¬ Docker ááᯠFn á០ááá¯á¡ááºáááᯠááá·áºááœááºážáá¬ážáááºá áá»áœááºá¯ááºááá¯á·ááẠDebian/Ubuntu ááœáẠááŸááá±áááºáᯠáá°ááá«áááºá
$ sudo apt-get update
$ sudo apt-get install docker.io
ááá¯á·ááá¯áẠááá·áºá áá áºá¡á á¡áá¯ááºáááºáá±áá»á¬/Docker áááºáá±á¬ááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯áá«á ááá¯á·áá±á¬áẠFn CLI ááᯠááá·áºááœááºážááẠááẠááá¯ááºááá¯ááºááœá¬ážááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá curl ááá¯á¡áá¯á¶ážááŒá¯ááŒááºáž
$ curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh
Homebrew ááá·áºááœááºážáá¬ážááŒááºážááŒáá·áº OSX ááœááºááŸááá«áá áááºááẠá¡ááŒá¬ážáááºážáááºážááŒáá·áº ááœá¬ážááá¯ááºáá«áááºá
$ 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
á¡ááŒá±áᶠconfiguration ááá¯ááºá¡áá»áá¯á·ááŒáá·áº áá»áœááºá¯ááºááá¯á·á Fn áá¯ááºáá±á¬ááºáá»ááºááᯠááá¯ááá¯ááœá¶á·ááŒáá¯ážááá¯ážáááºá
á±áááºá á¡áá
áºáááºáá®ážáá¬ážáá±á¬ áááºážááœáŸááºá¡ááœááºážááœááºá áááºááẠáááºááœá±ážáá»ááºáá¬ážáá±á¬ áá¬áá¬á
áá¬áž ááá¯á·ááá¯áẠruntime á
á¶ááŸá¯ááºážáá»á¬ážá¡ááá¯ááºáž ááá·áºá¡ááºááºáá®áá±ážááŸááºážááᯠáááºáá®ážááá¯ááºáááº-
# ÐаÑалПг Ñ 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.java
Fn ááẠáááŠáž ááá±á¬áá»ááºááœá²á·á
ááºážáá¯á¶ááᯠáááºáá®ážáᬠááá¯ááºáá
áºáá¯ááᯠáááºáá®ážáááºá 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 ááœááºááááºáá¬áá áºáá¯ááŒá áºáá±á¬ááŒá±á¬áá·áº á áááºááŒá®ážáá±á¬ááºá áááºážááẠDocker ááŸááºáá¯á¶áááºááŒááºážá០áá¯á¶ááááºááá¯áá°ááœá¬ážáá«áááºá
$ 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
function ááᯠconfigure áá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯ááá·áºáááºááŸá directory áá²ááŸá¬á ááá¯á·ááŒá±á¬áá·áº áŠážá
áœá¬ áá»áœááºá¯ááºááá¯á·á áááºážááœáŸááºááá¯á· ááœá¬ážáááºááá¯á¡ááºáááºá 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
command output ááŸáááºááœá±á·ááŒááºááá¯ááºáááºá¡ááá¯ááºážá Docker container image á¡áá áºáááºáá»áœááºá¯ááºááá¯á·ááá¯ááºáá±á¬ááºáá»ááºáá« á ááºáááºá áá¯ááºáá±á¬ááºáá»ááºááᯠáá±á«áºááẠá¡áááºááá·áºááŒá áºááŒá®á áááºážááᯠáá¯ááºáá±á¬ááºááẠáááºážáááºážááŸá áºáá¯ááŸááááºá
- Fn command ááᯠá¡áá¯á¶ážááŒá¯
invoke
- ááŸáááá·áº ááá¯ááºááá¯ááºáá±á«áºááá¯áá«áááºá
http
áá±á«áºááá¯á invoke
Fn ááŸáá
áºááá·áº áááºážááẠá
ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠHTTP ááŸáá
áºááá·áº á¡áá¯ááºáá¯ááºáááºááᯠááá¯ážááŸááºážá
áœá¬ á¡áá¯áá°áᬠá¡ááŒááºá
ááºážáááºááŸá¯á¡ááœáẠá¡áááºááŒá±áááº-
$ fn invoke fnexo hellonode # вÑзÑваеЌ ÑÑМкÑÐžÑ hellonode пÑÐžÐ»ÐŸÐ¶ÐµÐœÐžÑ fnexo
{"message":"Hello World"}
áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯ááᯠááá¯ááºááá¯ááºáá±á«áºááá¯áááºá¡ááœááºá áááºááẠURL á¡ááŒáá·áºá¡á á¯á¶ááᯠáááááºááá¯á¡ááºáááº-
$ curl http://localhost:8080/t/fnexo/hellonode-trigger
{"message":"Hello World"}
Fn áá¬áá¬ááẠport 8080 ááœáẠáááºážááá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá±á¬áºáá¯ááºáá±ážááŒá®áž áá¯ááºáá±á¬ááºáá»áẠURL ááẠáá¯á¶á
á¶ááŸáá·áº ááá¯ááºáá®áá±áá¯á¶áá±á«áºáááºá t/app/function
áá«áá±ááá·áº áá¯á¶ážáááá¯ááºáá«áá°ážá HTTP ááŸáááá·áºá áá¯ááºáá±á¬ááºáá»ááºáá
áºáá¯ááᯠááá¯ááºááá¯ááºááá±á«áºáá±á¬áºáááºáž áááºážáá¡áááºá¡á áá¯ááºáá±á¬ááºáá»ááºáá±á«áºááá¯ááŸá¯á¡á¬áž âá
áááºáááºâ áá¯áá±á«áºááá·áº ááá
áºáá«áá
áºáá¯ááŸáá
áºááá·áºá 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 # ÑÐŸÐ²Ð¿Ð°ÐŽÐ°ÐµÑ Ñ ÐžÐŒÐµÐœÐµÐŒ ÑÑМкÑОО
ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáá±á¬ááºáá»ááºáá±ážááá¯á·ááŸá¯ááᯠáááºáá¶áá¯ááºáá±á¬ááºááŒá®áž á¡á áá»áá¯ážá¡áá áºáá áºáá¯á០áááºážááᯠáá±á«áºáááº-
$ fn deploy --app fnexo hellonode --local
$ curl http://localhost:8080/t/fnexo/hellonode
{"message":"Hello World"}
á¡á¬ážáá¯á¶áž á¡áá¯ááºááŒá áºáá±áá«ááŒá®á á¡ááá¯ááºážá¡áá¬á¡ááŒáá·áº á ááºážáááºááŸá¯áá»á¬ážáá®ááá¯á· ááœá±á·áá»á¬ážááŒá®áž áá»áœááºá¯ááºááá¯á·á FaaS ááᯠáá¬áá¬áá±á«áºááœáẠáá¯ááºáá±ááẠá¡áá»áááºáááºááŒá®á
áááºáááá¯ááºááá¯ááºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááœáẠáá¬áá¬áá²á·áá¯ááºáá±á¬ááºááŸá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠááá·áºááœááºážááŒááºážá
Exoscale CLI ááᯠá¡áá¯á¶ážááŒá¯á virtual machine áá
áºáá¯ááᯠá¡ááŒááºáááºáááºááŒáá«á
áá¯á·á ááááºááŸááºááá±ážáá«á á¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
$ 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
ááá¯á·áá±á¬áẠáááºááẠvirtual machine ááá¯á· ssh áá¯ááºááŒá®áž á¡áá±ážááááºáž 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.643
Fn ááẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááºáá¶ááẠá¡áááºááá·áºááŒá
áºáá±áá«ááŒá®á áá
áºááŸááºáá¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡áá±ážááááºážáá¬áá¬ááá¯á· ááœáŸá²ááŒá±á¬ááºážáááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áááá·áºááᯠá¡áá¯á¶ážááŒá¯áá«áááºá deploy
á¡áá¶ááᯠáá»ááºááŸááºáá¬ážááŒááºážááŒáá·áº ááŒááºááœááºážááœááºáá»á°áá¬á០--local
.
ááá¯á·á¡ááŒááºá Fn ááẠááá·áºá¡á¬áž Fn áá¬áá¬ááŸáá·áº Docker ááŸááºáá¯á¶áááºááŒááºážááááºáá±áá¬ááᯠáááºááŸááºááẠááá¯á¡ááºáááºá á€ááœá±ážáá»ááºá
áá¬áá»á¬ážááᯠáááºáááºážáá»áẠááááºážááŸááºáá»á¬ážááŸáá
áºááá·áº áááºááŸááºááá¯ááºáááºá FN_API_URL
О FN_REGISTRY
á¡áá®ážáá®ážá ááŒáá·áºáá»ááºááŸá¯á¡ááœáẠááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶áá»á¬ážááᯠáááºáá®ážááŒááºážááŸáá·áº á
á®áá¶ááá·áºááœá²ááŒááºážááá¯á·ááᯠááœááºáá°á
áœá¬á
á®áá¶ááá·áºááœá²ááẠááá¯ááá¯á¡áááºááŒá±áá±á¬áááºážáááºážááá¯áááºáž áá±ážáá«áááºá
Fn áá±á«áá¬áá¡áá ááŒáá·áºáá»ááºááŒááºážá¡ááœáẠááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶ááᯠáá±á«áºáááºá context
. á¡á±á¬ááºáá« command ááẠá¡ááŒá±á¬ááºážá¡áá¬ááᯠáááºáá®ážáááá·áºáááº-
$ 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 áá¯ááºáá±á¬ááºáá»ááºáá±ážááá¯á·ááŸá¯ááẠááœá±ážáá»ááºáá¬ážáá±á¬ DockerHub á¡áá±á¬áá·áºááᯠá¡áá¯á¶ážááŒá¯á Docker áá¯á¶áá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºáááá·áºááẠ(áá»áœááºá¯ááºáááá
á¹á
ááŸá¬ - 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"}
Fn-Based Serverless Computing ááœáẠFunction Lifecycle
áááºáááá¯ááºááá¯ááºá áœááºážáááºááŒáá·áº serverless computing áá¡á¬ážáá¬áá»ááºáá»á¬áž
áá¬áá¬áá²á·ááœááºááŒá°áá¬ááẠááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬áž ááá¯á·ááá¯áẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááá·áº á¡ááºááá®áá±ážááŸááºážá áá®ážááŒá¬ážá¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá»ááºááŒááºá áœá¬á¡áá±á¬ááºá¡áááºáá±á¬áºáááºá¡ááœáẠá¡áááºááŒá±áá±á¬ááŒá±ááŸááºážáá»ááºááŒá áºáááºá
áááºážááẠáááºááŸááºáá¬ážáá±á¬ á¡áá¯á¶ážááŒá¯ááŸá¯ááá á¹á ááŸáá·áº ááá¬áá¡áá±á«áºáá°áááºá ááŒáá·áºáá¬ážáá±á¬áá¯ááºáá»á ááááºáá»á¬ážááŸáá·áº á¡áá¬áááºááœáẠááŒá±á¬ááºážááœááºááŒááºááœááºááŒá áºá á±ááá¯ááºááá·áº ááœá±ážáá»ááºáá±á¬ááºážáá»áá°áᶠáá±á¬á·ááºáá»ááŒááºážá¡ááœáẠáá»áŸáá¯á·ááŸááºáá¯ááºáá»á ááááºáá»á¬ážááŒá±á¬áá·áº ááŒá áºáá±á·ááŸááááºá
Multi-cloud ááŸáá·áº hybrid cloud architectures áá»á¬ážááẠserverless computing ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááá·áº á¡ááŒá±á¡áá±ááœáẠá¡ááœááºááá° ááœá±á·ááŸáááá¯ááºáá±á¬ááŒá±á¬áá·áº á€á¡ááŒá±á¡áá±ááœáẠááŒá¯á¶ááœá±á·áááá¯ááºáá±á¬áºáááºáž áá±á¬áºááá¯ááááºáá°áá«ááá»á¬ážááŒá±á¬áá·áº áááŒá áºááá¯ááºáá«á
Fn ááẠá¡áá¯á¶ážááŒá¯áá¡ááœááºááœááºáá°ááŒá®áž áá°áá®áá±á¬ FaaS áá»ááºááŸá¬ááŒááºáá®ážáá«ážááᯠáá¶á·ááá¯ážáá±ážááá¯ááºáá«áááºá áááºážááẠáá±á¬ááºážáá»áá°ááá±á¬á·ááºáá»ááŒááºážááᯠáááºááŸá¬ážááŒá®áž ááŒááºááœááºážá ááá¯á·ááá¯áẠáááºááŸá áºáááºáᬠá¡áááºááŒá±áá±á¬ cloud ááŒá±ááŸááºážáá»ááºáá±ážáá°á ááá·áºááœááºážááá¯ááºáááºá áááá¯ááááºážáááºážáá¬áá¬á áá¬ážááᯠááœá±ážáá»ááºáá¬ááœááºáááºáž ááœááºáááºááŸá¯ááŸááá«áááºá
á€áá±á¬ááºážáá«ážááẠFn áá¡ááŒá±áá¶áá»á¬ážááá¯áᬠá¡áá»á¯á¶ážáááºáá±á¬áºáááºáž áááºáááá¯ááºááá¯áẠruntime áááºáá®ážááŒááºážááẠá¡áá±á¬áºáá±ážááá¯ážááŸááºážááŒá®áž á¡áá¯á¶ážá á¯á¶áááºáá±á¬ááºáá¯á¶á¡á¬áž Fn load balancer ááá¯á¡áá¯á¶ážááŒá¯á ááá¯á·ááá¯áẠáá¬ááœááºáááºá¡ááœáẠproxy áá±á¬ááºááœááºááœáẠFn ááᯠáá¬ážááŒááºážááŒáá·áº ááá¯ááá¯áá»ááºááŒáá·áºá áœá¬á¡áá¯á¶ážáá»ááá¯ááºáááºá
source: www.habr.com