Gina namu mara amfani bisa Fn

Gina namu mara amfani bisa Fn

Kwamfuta mara amfani yana daya daga cikin fitattun abubuwan da ke faruwa a cikin Cloud Computing. Asalin ƙa'idar aiki shine cewa abubuwan more rayuwa ba damuwar DevOps bane, amma na mai bada sabis. Sikelin albarkatun yana daidaitawa ta atomatik zuwa lodi kuma yana da babban adadin canji.

Wani fasalin gama gari shine yanayin rage girman da lambar mayar da hankali, wanda shine dalilin da yasa ake kiran ƙididdiga marasa sabar wani lokaci aiki azaman sabis (FaaS).

A tarihi, mai ba da girgije na farko don bayar da FaaS tare da AWS Lambda shine Amazon, saboda haka sunan. Sauran masu ba da sabis na girgije kuma suna ba da irin waɗannan:

  • Ayyukan Cloud daga Google
  • Ayyukan Azure daga Microsoft

Duk waɗannan kamfanoni suna ba da ƙididdiga marasa uwar garke, ƙididdigewa ta atomatik, kuma kawai suna biyan abin da kuke amfani da su kawai, amma suna kulle abokan ciniki cikin samfuran mallakar su. Koyaya, akwai hanyoyin kyauta da buɗaɗɗen madadin kwamfuta mara sabar. Yana da kyau a lura:

  • dandamali Apache OpenWhisk, ci gaba a cikin incubator ta IBM,
  • Ayyukan Cloud na bazara, a matsayin wani ɓangare na ingantaccen tsarin yanayin yanayin bazara, wanda kuma za'a iya amfani dashi azaman facade don AWS Lambda, Ayyukan Azure da OpenWhisk,
  • Aikin Fn, wanda Oracle ke goyan bayan.

Dukkanin su gaba daya masu zaman kansu ne daga gizagizai, wato, ana iya shigar da su a cikin kowane gajimare, gami da naku, na jama'a ko na sirri, kuma ba shakka a cikin Exoscale.

Yadda aikin Fn ke aiki

Fn gaba daya dogara ne akan Docker, ya ƙunshi manyan abubuwa guda biyu:

  • Shirin CLI wanda aka ƙera don sarrafa duk abubuwan kayan aikin Fn, kuma yana hulɗa tare da uwar garken Fn,
  • Sabar Fn kanta aikace-aikace ne na yau da kullun da aka tattara a cikin akwati Docker.

Hakanan ana aiwatar da ayyukan da aka tura a cikin Fn a cikin kwantena daban-daban, wanda ke ba ku damar tallafawa yawancin yarukan shirye-shirye, misali ... Clojure!

An wuce gardamar ayyuka zuwa daidaitattun shigarwar (STDIN), ana rubuta sakamako zuwa daidaitaccen fitarwa (STDOUT). Idan gardama ko ƙimar dawo da ƙima ba sauƙi ba ne (kamar abu JSON), ana iya canza su ta amfani da Layer abstraction wanda Fn kanta ta samar a cikin nau'in Kit ɗin Haɓaka Aiki (FDK).

Don saukakawa, ana ba da samfuran samfuran da aka gina don sauƙaƙe jigilar FaaS a cikin jerin harsuna daban-daban da nau'ikan su (Tafi, nau'ikan Java, Python, da sauransu).

Ƙirƙirar FaaS yana da sauƙi ta bin wannan zane:

  • Aiwatar da aikin ta amfani da Fn CLI: an ƙirƙiri fayil ɗin daidaitawar aikace-aikacen Fn bisa ga samfurin da aka zaɓa.
  • Muna fitar da namu aikin, sake amfani da CLI Fn: an sanya hoton akwati a cikin wani ma'ajiya, bayan haka an sanar da uwar garken game da wanzuwar wannan hoton da sanya shi.

Gina namu mara amfani bisa Fn
Ka'idar isar da ayyuka zuwa Fn

Shigarwa na gida da gwajin ayyuka marasa sabar

Bari mu fara saka Fn akan injin gida. Da farko, an shigar da Docker, kamar yadda Fn ya buƙata. Zaton muna kan Debian/Ubuntu:

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

Ko yi amfani da ginin sarrafa fakiti/Docker bisa ga tsarin ku. Sannan zaku iya zuwa kai tsaye don shigar da Fn CLI. Alal misali, amfani da curl:

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

Idan kuna kan OSX tare da shigar Homebrew, zaku iya zuwa wata hanyar:

$ 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

Yanzu muna shirye don fara tura aikinmu ta amfani da CLI. Don sauƙi, za mu yi amfani da ginanniyar yanayin ƙaddamarwa, kamar Node:

$ fn init --runtime node --trigger http hellonode

Creating function at: /hellonode
Function boilerplate generated.
func.yaml created.

Za a ƙirƙiri sabon kundin adireshi hellonode don ƙara haɓaka aikin Fn ɗin mu tare da wasu fayilolin sanyi na asali. A cikin sabon kundin adireshi, zaku iya ƙirƙirar aikace-aikacen ku ta bin ka'idodin harshen da kuka zaɓa ko lokacin aiki:

# Каталог с 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 yana ƙirƙirar tsarin aikin farko, yana ƙirƙirar fayil func.yaml, yana ƙunshe da saitunan da ake buƙata don Fn, kuma yana saita samfuri don lambar a cikin yaren da kuka zaɓa.

A cikin yanayin lokacin aikin Node, wannan yana nufin:

$ 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}
})

Yanzu za mu gwada aikin mu cikin sauri don ganin yadda komai ke aiki.

Da farko, za mu fara uwar garken Fn. Kamar yadda aka riga aka ambata, uwar garken Fn akwati ne na Docker, don haka, bayan farawa, zai je ya ɗauki hoton daga rajistar 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

Don gudanar da aikinmu, dole ne a “buɗe shi”. Wannan yana bukata имя приложения: A cikin Fn, duk aikace-aikacen dole ne a bayyana su azaman wuraren suna don ayyuka masu alaƙa.

Fn CLI zai bincika fayil ɗin func.yaml a cikin kundin adireshi na yanzu wanda za a yi amfani da shi don daidaita aikin. Don haka da farko kuna buƙatar zuwa kundin adireshi 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

Kamar yadda kuke gani daga fitowar umarni, an ƙirƙiri sabon hoton akwati na Docker mai ɗauke da aikinmu. Aikin yana shirye don a kira shi, kuma muna da hanyoyi guda biyu don yin shi:

  • amfani da umurnin Fn invoke
  • kira kai tsaye via http

Kira invoke ta hanyar Fn kawai yana kwaikwayon aiki ta hanyar HTTP don gwaje-gwaje, wanda ya dace don gwaji mai sauri:

$ fn invoke fnexo hellonode      # вызываем функцию hellonode приложения fnexo

{"message":"Hello World"}

Domin kiran aiki kai tsaye, kuna buƙatar sanin cikakken URL:

$ curl http://localhost:8080/t/fnexo/hellonode-trigger

{"message":"Hello World"}

Sabar Fn tana fallasa ayyukanta akan tashar jiragen ruwa 8080 kuma URL ɗin yana bayyana ya dace da tsarin t/app/function, amma ba gaba daya ba. Ta hanyar HTTP, ba a kiran aiki kai tsaye, amma ta hanyar abin da ake kira jawo, wanda, bisa ga sunansa, "fara" kiran aikin. An bayyana abubuwan da ke haifar da tashin hankali a ciki `func.yml aikin:

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 триггера

Za mu iya canza sunan faɗakarwa don dacewa da sunan aikin, wannan zai sauƙaƙa komai:

triggers:
- name: hellonode-trigger
  type: http
  source: /hellonode    # совпадает с именем функции

Sa'an nan kuma mu sake gudanar da isar da aikin kuma mu kira shi daga sabon faɗakarwa:

$ fn deploy --app fnexo hellonode --local
$ curl http://localhost:8080/t/fnexo/hellonode

{"message":"Hello World"}

Komai yana aiki! Lokaci ya yi da za a ci gaba zuwa cikakken gwaje-gwaje da buga FaaS ɗin mu akan sabar!

Shigar da ayyukan ayyuka mara sabar akan kayan aikin ku

Bari mu hanzarta shigar da injin kama-da-wane ta amfani da Exoscale CLI. Idan baku saita shi ba tukuna, zaku iya amfani jagoran mu mai saurin farawa. Wannan kayan aiki ne mai sanyi wanda zai ƙara haɓaka aikin ku har ma da ƙari. Kar ku manta cewa kuna buƙatar saita doka don buɗe tashar jiragen ruwa 8080 a cikin Ƙungiyar Tsaro! Umurnai masu zuwa za su ƙaddamar da na'ura mai tsabta mai tsabta, a shirye don ɗaukar ayyukanmu:

$ 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

Sannan zaku iya ssh cikin injin kama-da-wane kuma shigar da sabar Fn mai nisa:

$ 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)

Sannan shigar da Docker da uwar garken Fn kamar yadda aka riga aka yi akan injin gida, fara sabar:

$ 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 yana shirye don karɓar ayyuka! Don canja wurin ayyuka da aka yi niyya zuwa uwar garken nesa, za mu yi amfani da umarnin deploy daga kwamfutar gida ta hanyar cire tuta --local.

Bugu da kari, Fn yana buƙatar ka saka wurin sabar Fn da rajistar Docker. Ana iya saita waɗannan zaɓuɓɓuka ta hanyar masu canjin yanayi FN_API_URL и FN_REGISTRY bi da bi, amma kuma yana ba da hanyar da ta fi dacewa don sauƙin sarrafa ƙirƙira da sarrafa saiti don turawa.

A cikin sharuɗɗan Fn, ana kiran tsarin ƙaddamarwa context. Umarni mai zuwa zai haifar da mahallin:

$ fn create context exoscale --provider default --api-url http://185.19.30.175:8080 --registry nfrankel

Kuna iya duba abubuwan da ke akwai kamar haka:

$ fn list contexts

CURRENT NAME      PROVIDER      API URL                      REGISTRY
    default       default       http://localhost:8080/
    exoscale      default       http://185.19.30.175:8080    nfrankel

Kuma canza zuwa mahallin da aka ƙirƙira kawai kamar haka:

 $ fn use context exoscale

 Now using context: exoscale

Daga nan gaba, isar da fasalin Fn zai sauke hotunan Docker ta amfani da zaɓaɓɓen asusun DockerHub (a cikin akwati na - nfrankel), sannan kuma sanar da uwar garken nesa (a cikin wannan misali - http://185.19.30.175:8080) game da wuri da sigar sabon hoton da ke ɗauke da aikinku.

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

A ƙarshe:

$ curl http://185.19.30.175:8080/t/fnexo/hellonode

{"message":"Hello World"}

Gina namu mara amfani bisa Fn
Aikin Rayuwar Aiki a cikin Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙaddamarwa ne

Amfanin na'ura mai kwakwalwa mara sabar a kan iyawar ku

Ƙididdigar ƙididdiga mara izini shine mafita mai dacewa don aiwatar da sassauƙa masu zaman kansu cikin sauri na aikace-aikacen da ke hulɗa tare da ƙarin hadaddun aikace-aikace ko ƙananan sabis.

Wannan shi ne sau da yawa saboda ƙimar ɓoye na kullewa ga mai siyar da aka zaɓa, wanda, dangane da ƙayyadaddun yanayin amfani da ƙarar, zai iya haifar da farashi mai girma da kuma rage sassauci a nan gaba.

Multi-girgije da matasan gine-ginen girgije suma suna shan wahala a wannan yanayin, saboda zaka iya samun kanka cikin sauƙi a cikin yanayin da kake son amfani da kwamfuta mara amfani, amma saboda manufofin kamfanoni bazai yiwu ba.

Fn yana da sauƙin amfani kuma yana iya samar da kusan FaaS iri ɗaya, tare da ƙaramin sama. Yana kawar da duk wani kulle-kulle mai siyarwa kuma ana iya shigar dashi cikin gida ko a cikin kowane mai samar da mafita ga girgije mai dacewa da zaɓinku. Akwai kuma 'yanci wajen zabar yaren shirye-shirye.

Wannan labarin ya ƙunshi ainihin abubuwan Fn kawai, amma ƙirƙirar lokacin aikin ku abu ne mai sauƙi, kuma ana iya tura gine-ginen gabaɗaya ta amfani da ma'aunin nauyin Fn, ko ta sanya Fn a bayan wakili don kariya.

source: www.habr.com

Add a comment