Fn ಅನ್ನು ಆಧರಿಸಿ ನಮ್ಮದೇ ಆದ ಸರ್ವರ್‌ಲೆಸ್ ಅನ್ನು ನಿರ್ಮಿಸುವುದು

Fn ಅನ್ನು ಆಧರಿಸಿ ನಮ್ಮದೇ ಆದ ಸರ್ವರ್‌ಲೆಸ್ ಅನ್ನು ನಿರ್ಮಿಸುವುದು

ಸರ್ವರ್‌ಲೆಸ್ ಕಂಪ್ಯೂಟಿಂಗ್ ಕ್ಲೌಡ್ ಕಂಪ್ಯೂಟಿಂಗ್‌ನಲ್ಲಿನ ಪ್ರಮುಖ ಪ್ರವೃತ್ತಿಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ಮೂಲಭೂತ ಕಾರ್ಯಾಚರಣೆಯ ತತ್ವವೆಂದರೆ ಮೂಲಸೌಕರ್ಯವು DevOps ನ ಕಾಳಜಿಯಲ್ಲ, ಆದರೆ ಸೇವಾ ಪೂರೈಕೆದಾರರದ್ದು. ಸಂಪನ್ಮೂಲ ಸ್ಕೇಲಿಂಗ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೋಡ್‌ಗೆ ಸರಿಹೊಂದಿಸುತ್ತದೆ ಮತ್ತು ಹೆಚ್ಚಿನ ಬದಲಾವಣೆಯ ದರವನ್ನು ಹೊಂದಿರುತ್ತದೆ.

ಮತ್ತೊಂದು ಸಾಮಾನ್ಯ ಲಕ್ಷಣವೆಂದರೆ ಕೋಡ್ ಅನ್ನು ಕಡಿಮೆಗೊಳಿಸುವ ಮತ್ತು ಕೇಂದ್ರೀಕರಿಸುವ ಪ್ರವೃತ್ತಿ, ಅದಕ್ಕಾಗಿಯೇ ಸರ್ವರ್‌ಲೆಸ್ ಕಂಪ್ಯೂಟಿಂಗ್ ಅನ್ನು ಕೆಲವೊಮ್ಮೆ ಸೇವೆಯಾಗಿ ಕಾರ್ಯ (FaaS) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.

ಐತಿಹಾಸಿಕವಾಗಿ, AWS ಲ್ಯಾಂಬ್ಡಾದೊಂದಿಗೆ FaaS ಅನ್ನು ಒದಗಿಸುವ ಮೊದಲ ಕ್ಲೌಡ್ ಪೂರೈಕೆದಾರ ಅಮೆಜಾನ್, ಆದ್ದರಿಂದ ಹೆಸರು. ಇತರ ಕ್ಲೌಡ್ ಸೇವಾ ಪೂರೈಕೆದಾರರು ಸಹ ಇದೇ ರೀತಿಯ ಸೇವೆಗಳನ್ನು ನೀಡುತ್ತಾರೆ:

  • Google ನಿಂದ ಮೇಘ ಕಾರ್ಯಗಳು
  • ಮೈಕ್ರೋಸಾಫ್ಟ್ನಿಂದ ಅಜುರೆ ಕಾರ್ಯಗಳು

ಈ ಎಲ್ಲಾ ಕಂಪನಿಗಳು ಸರ್ವರ್‌ಲೆಸ್ ಕಂಪ್ಯೂಟಿಂಗ್, ಸ್ವಯಂ-ಸ್ಕೇಲಿಂಗ್ ಅನ್ನು ಒದಗಿಸುತ್ತವೆ ಮತ್ತು ನೀವು ನಿಜವಾಗಿ ಬಳಸುವುದಕ್ಕೆ ಮಾತ್ರ ಪಾವತಿಸುತ್ತವೆ, ಆದರೆ ಅವರು ಗ್ರಾಹಕರನ್ನು ತಮ್ಮ ಸ್ವಾಮ್ಯದ ಉತ್ಪನ್ನಕ್ಕೆ ಲಾಕ್ ಮಾಡುತ್ತಾರೆ. ಆದಾಗ್ಯೂ, ಸರ್ವರ್‌ಲೆಸ್ ಕಂಪ್ಯೂಟಿಂಗ್‌ಗೆ ಉಚಿತ ಮತ್ತು ಮುಕ್ತ ಮೂಲ ಪರ್ಯಾಯಗಳಿವೆ. ಇದು ಗಮನಿಸಬೇಕಾದ ಸಂಗತಿ:

ಇವೆಲ್ಲವೂ ಮೋಡಗಳಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಸ್ವತಂತ್ರವಾಗಿವೆ, ಅಂದರೆ, ಅವುಗಳನ್ನು ನಿಮ್ಮ ಸ್ವಂತ, ಸಾರ್ವಜನಿಕ ಅಥವಾ ಖಾಸಗಿ ಸೇರಿದಂತೆ ಯಾವುದೇ ಮೋಡದಲ್ಲಿ ಸ್ಥಾಪಿಸಬಹುದು ಮತ್ತು ಸಹಜವಾಗಿ ಎಕ್ಸೋಸ್ಕೇಲ್‌ನಲ್ಲಿ ಸ್ಥಾಪಿಸಬಹುದು.

Fn ಯೋಜನೆಯು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ

Fn ಸಂಪೂರ್ಣವಾಗಿ ಡಾಕರ್ ಅನ್ನು ಆಧರಿಸಿದೆ, ಇದು ಎರಡು ಮುಖ್ಯ ಅಂಶಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:

  • CLI ಪ್ರೋಗ್ರಾಂ Fn ಮೂಲಸೌಕರ್ಯದ ಎಲ್ಲಾ ಅಂಶಗಳನ್ನು ನಿರ್ವಹಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು Fn ಸರ್ವರ್‌ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುತ್ತದೆ,
  • Fn ಸರ್ವರ್ ಸ್ವತಃ ಡಾಕರ್ ಕಂಟೇನರ್‌ನಲ್ಲಿ ಪ್ಯಾಕ್ ಮಾಡಲಾದ ನಿಯಮಿತ ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆ.

Fn ನಲ್ಲಿ ನಿಯೋಜಿಸಲಾದ ಕಾರ್ಯಗಳನ್ನು ಪ್ರತ್ಯೇಕ ಕಂಟೇನರ್‌ಗಳಲ್ಲಿ ಸಹ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಇದು ನಿಮಗೆ ಬಹಳಷ್ಟು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳನ್ನು ಬೆಂಬಲಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಉದಾಹರಣೆಗೆ... Clojure!

ಫಂಕ್ಷನ್ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್‌ಗೆ (STDIN) ರವಾನಿಸಲಾಗುತ್ತದೆ, ಫಲಿತಾಂಶಗಳನ್ನು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್‌ಗೆ (STDOUT) ಬರೆಯಲಾಗುತ್ತದೆ. ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳು ಅಥವಾ ರಿಟರ್ನ್ ಮೌಲ್ಯಗಳು ಸರಳ ಮೌಲ್ಯಗಳಾಗಿರದಿದ್ದರೆ (ಉದಾಹರಣೆಗೆ JSON ಆಬ್ಜೆಕ್ಟ್), ಅವುಗಳನ್ನು ಫಂಕ್ಷನ್ ಡೆವಲಪ್‌ಮೆಂಟ್ ಕಿಟ್ (ಎಫ್‌ಡಿಕೆ) ರೂಪದಲ್ಲಿ ಎಫ್‌ಎನ್ ಒದಗಿಸಿದ ಅಮೂರ್ತ ಪದರವನ್ನು ಬಳಸಿಕೊಂಡು ಪರಿವರ್ತಿಸಬಹುದು.

ಅನುಕೂಲಕ್ಕಾಗಿ, ವಿವಿಧ ಭಾಷೆಗಳು ಮತ್ತು ಅವುಗಳ ಆವೃತ್ತಿಗಳ (ಗೋ, ಜಾವಾದ ವಿವಿಧ ಆವೃತ್ತಿಗಳು, ಪೈಥಾನ್, ಇತ್ಯಾದಿ) ವ್ಯಾಪಕವಾದ ಪಟ್ಟಿಯಲ್ಲಿ FaaS ಅನ್ನು ನಿಯೋಜಿಸಲು ಅನುಕೂಲವಾಗುವಂತೆ ಅಂತರ್ನಿರ್ಮಿತ ಟೆಂಪ್ಲೇಟ್‌ಗಳನ್ನು ನೀಡಲಾಗುತ್ತದೆ.

ಈ ರೇಖಾಚಿತ್ರವನ್ನು ಅನುಸರಿಸುವ ಮೂಲಕ FaaS ಅನ್ನು ರಚಿಸುವುದು ಸುಲಭ:

  • Fn CLI ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕಾರ್ಯವನ್ನು ನಿಯೋಜಿಸಲಾಗುತ್ತಿದೆ: ಆಯ್ಕೆಮಾಡಿದ ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ಆಧರಿಸಿ Fn ಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ ಅನ್ನು ರಚಿಸಲಾಗಿದೆ.
  • ನಾವು ನಮ್ಮದೇ ಆದ ಕಾರ್ಯವನ್ನು ಮತ್ತೆ CLI Fn ಅನ್ನು ಬಳಸುತ್ತೇವೆ: ಕಂಟೇನರ್ ಚಿತ್ರವನ್ನು ನಿರ್ದಿಷ್ಟ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ, ಅದರ ನಂತರ ಈ ಚಿತ್ರದ ಅಸ್ತಿತ್ವ ಮತ್ತು ನಿಯೋಜನೆಯ ಬಗ್ಗೆ ಸರ್ವರ್‌ಗೆ ಸೂಚಿಸಲಾಗುತ್ತದೆ.

Fn ಅನ್ನು ಆಧರಿಸಿ ನಮ್ಮದೇ ಆದ ಸರ್ವರ್‌ಲೆಸ್ ಅನ್ನು ನಿರ್ಮಿಸುವುದು
Fn ಗೆ ಕಾರ್ಯಗಳನ್ನು ತಲುಪಿಸುವ ತತ್ವ

ಸರ್ವರ್‌ಲೆಸ್ ಕಾರ್ಯಗಳ ಸ್ಥಳೀಯ ಸ್ಥಾಪನೆ ಮತ್ತು ಪರೀಕ್ಷೆ

ಸ್ಥಳೀಯ ಗಣಕದಲ್ಲಿ Fn ಅನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಾರಂಭಿಸೋಣ. ಮೊದಲಿಗೆ, Fn ಗೆ ಅಗತ್ಯವಿರುವಂತೆ ಡಾಕರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗಿದೆ. ನಾವು ಡೆಬಿಯನ್/ಉಬುಂಟುನಲ್ಲಿದ್ದೇವೆ ಎಂದು ಊಹಿಸಿಕೊಳ್ಳಿ:

$ sudo apt-get update
$ sudo apt-get install docker.io

ಅಥವಾ ನಿಮ್ಮ ಸಿಸ್ಟಮ್ ಪ್ರಕಾರ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್/ಡಾಕರ್ ಬಿಲ್ಡ್ ಅನ್ನು ಬಳಸಿ. ನಂತರ ನೀವು Fn CLI ಅನ್ನು ಸ್ಥಾಪಿಸಲು ನೇರವಾಗಿ ಹೋಗಬಹುದು. ಉದಾಹರಣೆಗೆ, ಕರ್ಲ್ ಬಳಸಿ:

$ curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh

ನೀವು ಹೋಮ್‌ಬ್ರೂ ಸ್ಥಾಪಿಸಿದ 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 ಬಳಸಿಕೊಂಡು ನಮ್ಮ ಕಾರ್ಯವನ್ನು ಆರಂಭದಲ್ಲಿ ನಿಯೋಜಿಸಲು ಸಿದ್ಧರಿದ್ದೇವೆ. ಸರಳತೆಗಾಗಿ, ನಾವು ನೋಡ್‌ನಂತಹ ಅಂತರ್ನಿರ್ಮಿತ ಉಡಾವಣಾ ಪರಿಸರವನ್ನು ಬಳಸುತ್ತೇವೆ:

$ 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.java

Fn ಆರಂಭಿಕ ಯೋಜನೆಯ ರಚನೆಯನ್ನು ರಚಿಸುತ್ತದೆ, ಫೈಲ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ func.yaml, Fn ಗಾಗಿ ಅಗತ್ಯ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಮತ್ತು ನೀವು ಆಯ್ಕೆ ಮಾಡಿದ ಭಾಷೆಯಲ್ಲಿ ಕೋಡ್‌ಗಾಗಿ ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ.

ನೋಡ್ ರನ್ಟೈಮ್ನ ಸಂದರ್ಭದಲ್ಲಿ, ಇದರರ್ಥ:

$ 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 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 ನಲ್ಲಿ, ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಸಂಬಂಧಿತ ಕಾರ್ಯಗಳಿಗಾಗಿ ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕು.

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

ಕಮಾಂಡ್ ಔಟ್‌ಪುಟ್‌ನಿಂದ ನೀವು ನೋಡುವಂತೆ, ನಮ್ಮ ಕಾರ್ಯವನ್ನು ಒಳಗೊಂಡಿರುವ ಹೊಸ ಡಾಕರ್ ಕಂಟೇನರ್ ಚಿತ್ರವನ್ನು ರಚಿಸಲಾಗಿದೆ. ಕಾರ್ಯವು ಕರೆಯಲು ಸಿದ್ಧವಾಗಿದೆ ಮತ್ತು ಅದನ್ನು ಮಾಡಲು ನಮಗೆ ಎರಡು ಮಾರ್ಗಗಳಿವೆ:

  • Fn ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ 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 ಸರ್ವರ್ ಪೋರ್ಟ್ 8080 ನಲ್ಲಿ ಅದರ ಕಾರ್ಯಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ ಮತ್ತು ಕಾರ್ಯ URL ಮಾದರಿಗೆ ಹೊಂದಿಕೆಯಾಗುವಂತೆ ಕಾಣುತ್ತದೆ t/app/function, ಆದರೆ ಸಂಪೂರ್ಣವಾಗಿ ಅಲ್ಲ. HTTP ಮೂಲಕ, ಒಂದು ಕಾರ್ಯವನ್ನು ನೇರವಾಗಿ ಕರೆಯಲಾಗುವುದಿಲ್ಲ, ಆದರೆ ಕರೆಯಲ್ಪಡುವ ಪ್ರಚೋದಕ ಮೂಲಕ, ಅದರ ಹೆಸರಿನ ಪ್ರಕಾರ, ಕಾರ್ಯದ ಕರೆಯನ್ನು "ಪ್ರಾರಂಭಿಸುತ್ತದೆ". ಪ್ರಚೋದಕಗಳನ್ನು ರಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ `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 ಅನ್ನು ಬಳಸಿಕೊಂಡು ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು ತ್ವರಿತವಾಗಿ ಸ್ಥಾಪಿಸೋಣ. ನೀವು ಅದನ್ನು ಇನ್ನೂ ಹೊಂದಿಸದಿದ್ದರೆ, ನೀವು ಬಳಸಬಹುದು ನಮ್ಮ ತ್ವರಿತ ಪ್ರಾರಂಭ ಮಾರ್ಗದರ್ಶಿ. ಇದು ನಿಮ್ಮ ಉತ್ಪಾದಕತೆಯನ್ನು ಇನ್ನಷ್ಟು ಹೆಚ್ಚಿಸುವ ತಂಪಾದ ಸಾಧನವಾಗಿದೆ. ಭದ್ರತಾ ಗುಂಪಿನಲ್ಲಿ ಪೋರ್ಟ್ 8080 ಅನ್ನು ತೆರೆಯಲು ನೀವು ನಿಯಮವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗಿದೆ ಎಂಬುದನ್ನು ಮರೆಯಬೇಡಿ! ಕೆಳಗಿನ ಆಜ್ಞೆಗಳು ಕ್ಲೀನ್ ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತವೆ, ನಮ್ಮ ಕಾರ್ಯಗಳನ್ನು ಹೋಸ್ಟ್ ಮಾಡಲು ಸಿದ್ಧವಾಗಿದೆ:

$ 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 ಮಾಡಬಹುದು ಮತ್ತು ರಿಮೋಟ್ 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)

ನಂತರ ಸ್ಥಳೀಯ ಗಣಕದಲ್ಲಿ ಈಗಾಗಲೇ ಮಾಡಿದ ರೀತಿಯಲ್ಲಿಯೇ ಡಾಕರ್ ಮತ್ತು ಎಫ್ಎನ್ ಸರ್ವರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ, ಸರ್ವರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ:

$ 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_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 ವೈಶಿಷ್ಟ್ಯದ ವಿತರಣೆಯು ಆಯ್ದ ಡಾಕರ್‌ಹಬ್ ಖಾತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಡಾಕರ್ ಚಿತ್ರಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ (ನನ್ನ ಸಂದರ್ಭದಲ್ಲಿ - 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 ಅನ್ನು ಆಧರಿಸಿ ನಮ್ಮದೇ ಆದ ಸರ್ವರ್‌ಲೆಸ್ ಅನ್ನು ನಿರ್ಮಿಸುವುದು
Fn-ಆಧಾರಿತ ಸರ್ವರ್‌ಲೆಸ್ ಕಂಪ್ಯೂಟಿಂಗ್‌ನಲ್ಲಿ ಫಂಕ್ಷನ್ ಲೈಫ್‌ಸೈಕಲ್

ನಿಮ್ಮ ಸ್ವಂತ ಸಾಮರ್ಥ್ಯದಲ್ಲಿ ಸರ್ವರ್‌ಲೆಸ್ ಕಂಪ್ಯೂಟಿಂಗ್‌ನ ಪ್ರಯೋಜನಗಳು

ಸರ್ವರ್‌ಲೆಸ್ ಕಂಪ್ಯೂಟಿಂಗ್ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಅಥವಾ ಮೈಕ್ರೋಸರ್ವಿಸ್‌ಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುವ ಅಪ್ಲಿಕೇಶನ್‌ನ ಸ್ವತಂತ್ರ ಭಾಗಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುಕೂಲಕರ ಪರಿಹಾರವಾಗಿದೆ.

ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಆಯ್ಕೆಮಾಡಿದ ಮಾರಾಟಗಾರನಿಗೆ ಲಾಕ್ ಮಾಡುವ ಗುಪ್ತ ವೆಚ್ಚದ ಕಾರಣದಿಂದಾಗಿ, ನಿರ್ದಿಷ್ಟ ಬಳಕೆಯ ಪ್ರಕರಣ ಮತ್ತು ಪರಿಮಾಣವನ್ನು ಅವಲಂಬಿಸಿ, ಭವಿಷ್ಯದಲ್ಲಿ ಹೆಚ್ಚಿನ ವೆಚ್ಚಗಳು ಮತ್ತು ಕಡಿಮೆ ನಮ್ಯತೆಗೆ ಕಾರಣವಾಗಬಹುದು.

ಈ ಸಂದರ್ಭದಲ್ಲಿ ಮಲ್ಟಿ-ಕ್ಲೌಡ್ ಮತ್ತು ಹೈಬ್ರಿಡ್ ಕ್ಲೌಡ್ ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳು ಸಹ ಬಳಲುತ್ತವೆ, ಏಕೆಂದರೆ ನೀವು ಸರ್ವರ್‌ಲೆಸ್ ಕಂಪ್ಯೂಟಿಂಗ್ ಅನ್ನು ಬಳಸಲು ಬಯಸುವ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ ನಿಮ್ಮನ್ನು ಸುಲಭವಾಗಿ ಕಂಡುಕೊಳ್ಳಬಹುದು, ಆದರೆ ಕಾರ್ಪೊರೇಟ್ ನೀತಿಗಳಿಂದ ಅದು ಸಾಧ್ಯವಾಗದಿರಬಹುದು.

Fn ಅನ್ನು ಬಳಸಲು ತುಂಬಾ ಸುಲಭ ಮತ್ತು ಕಡಿಮೆ ಓವರ್ಹೆಡ್ನೊಂದಿಗೆ ಬಹುತೇಕ ಅದೇ FaaS ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸಬಹುದು. ಇದು ಯಾವುದೇ ಮಾರಾಟಗಾರರ ಲಾಕ್-ಇನ್ ಅನ್ನು ನಿವಾರಿಸುತ್ತದೆ ಮತ್ತು ಸ್ಥಳೀಯವಾಗಿ ಅಥವಾ ನಿಮ್ಮ ಆಯ್ಕೆಯ ಯಾವುದೇ ಅನುಕೂಲಕರ ಕ್ಲೌಡ್ ಪರಿಹಾರ ಪೂರೈಕೆದಾರರಲ್ಲಿ ಸ್ಥಾಪಿಸಬಹುದು. ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿಕೊಳ್ಳುವ ಸ್ವಾತಂತ್ರ್ಯವೂ ಇದೆ.

ಈ ಲೇಖನವು Fn ನ ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿದೆ, ಆದರೆ ನಿಮ್ಮ ಸ್ವಂತ ರನ್ಟೈಮ್ ಅನ್ನು ರಚಿಸುವುದು ತುಂಬಾ ಸರಳವಾಗಿದೆ, ಮತ್ತು ಒಟ್ಟಾರೆ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು Fn ಲೋಡ್ ಬ್ಯಾಲೆನ್ಸರ್ ಬಳಸಿ ಅಥವಾ ರಕ್ಷಣೆಗಾಗಿ Fn ಅನ್ನು ಪ್ರಾಕ್ಸಿ ಹಿಂದೆ ಇರಿಸುವ ಮೂಲಕ ಹೆಚ್ಚು ವ್ಯಾಪಕವಾಗಿ ನಿಯೋಜಿಸಬಹುದು.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ