Dhisida server-la'aan noo gaar ah oo ku salaysan Fn
Kombuyuutar aan server lahayn waa mid ka mid ah isbeddellada ugu caansan ee xisaabinta daruuraha. Mabda'a hawlgalka aasaasiga ah ayaa ah in kaabayaasha aysan ahayn welwelka DevOps, laakiin bixiyaha adeegga. Qeexida kheyraadka si toos ah ayey ula qabsataa rarka waxayna leedahay isbedel sare.
Muuqaal kale oo caan ah ayaa ah u janjeera in la yareeyo oo diiradda la saaro, taas oo ah sababta xisaabinta server-la'aanta mararka qaarkood loogu yeero adeeg ahaan (FaaS).
Taariikh ahaan, bixiyaha daruuriga ah ee ugu horreeya ee bixiya FaaS AWS Lambda wuxuu ahaa Amazon, markaa magaca. Bixiyeyaasha kale ee adeegga daruuriga ah ayaa sidoo kale bixiya kuwa la mid ah:
Dhammaantood waxay si buuxda uga madaxbannaan yihiin daruuraha, taas oo ah, waxaa lagu rakibi karaa daruur kasta, oo ay ku jiraan kuwaaga, mid guud ama mid gaar ah, iyo dabcan Exoscale.
Sida mashruuca Fn u shaqeeyo
Fn waxay si buuxda ugu saleysan tahay Docker, waxay ka kooban tahay laba qaybood oo waaweyn:
Barnaamijka CLI waxaa loogu talagalay in lagu maareeyo dhammaan dhinacyada kaabayaasha Fn, oo uu la falgalo server-ka Fn,
Hawlaha la geeyey Fn waxaa sidoo kale lagu fuliyaa weelal kala duwan, taas oo kuu ogolaaneysa inaad taageerto luuqado badan oo barnaamijyo ah, tusaale ahaan ... Clojure!
Doodaha shaqada waxaa loo gudbiyaa gelinta caadiga ah (STDIN), natiijooyinka waxaa loo qoraa wax soo saarka caadiga ah (STDOUT). Haddii dooda ama qiimayaasha soo celinta aysan ahayn qiimayaal fudud (sida shayga JSON), waxaa lagu beddeli karaa iyadoo la adeegsanayo lakabka la taaban karo ee ay bixiso Fn lafteeda qaab ah Qalabka Horumarinta Function (FDK).
Si ay ugu habboonaato, habab ku dhex dhisan oo qaabaysan ayaa la bixiyaa si ay u fududeeyaan geynta FaaS liis ballaaran oo luuqado kala duwan ah iyo noocyadooda (Go, noocyo kala duwan oo Java ah, Python, iwm.).
Sameynta FaaS way fududahay adiga oo raacaya jaantuskan:
Gelitaanka shaqada iyadoo la adeegsanayo Fn CLI: faylka qaabeynta arjiga ee Fn ayaa la sameeyay iyadoo lagu saleynayo qaabka la doortay.
Waxaan soo saareynaa shaqadayada, mar labaad annaga oo adeegsanayna CLI Fn: sawirka weelka waxaa la dhigayaa meel kayd ah, ka dib serverka waxaa la ogeysiiyaa jiritaanka iyo meelaynta sawirkan.
Aynu bilowno ku rakibida Fn mashiinka deegaanka. Marka hore, Docker waxaa lagu rakibay sida uu rabo Fn. Haddii aan u maleynayo inaan joogno Debian/Ubuntu:
Waxaan hadda diyaar u nahay inaan marka hore geyno shaqadayada anagoo adeegsanayna CLI. Si ay u fududaato, waxaan u isticmaali doonaa bey'ad ku dhex dhisan, sida Node:
$ fn init --runtime node --trigger http hellonode
Creating function at: /hellonode
Function boilerplate generated.
func.yaml created.
Hagaha cusub ayaa la abuuri doonaa hellonode si aan u sii horumarino shaqadayada Fn oo leh qaar ka mid ah faylasha qaabeynta aasaasiga ah. Gudaha hagaha cusub ee la sameeyay, waxaad samayn kartaa codsigaaga adoo raacaya heerarka luuqadaada aad dooratay ama wakhtiga 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
Xaaladda Runtime Node, tani waxay ka dhigan tahay:
$ 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}
})
Hadda waxaan si dhakhso ah u tijaabin doonaa shaqadayada gudaha si aan u aragno sida wax walba u shaqeeyaan.
Marka hore, waxaan bilaabi doonaa server-ka Fn. Sidii aan horayba u soo sheegnay, server-ka Fn waa weel Docker ah, sidaa darteed, bilawga ka dib, way tagi doontaa oo sawirka ka qaadan doontaa diiwaanka 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
Si aan hawsheenna u socodsiino, waa in "lala baxaa". Tani waxay u baahan tahay имя приложенияGudaha Fn, dhammaan codsiyada waa in lagu qeexaa meelo magacyo ah oo loogu talagalay hawlaha la xiriira.
Fn CLI waxay raadin doontaa faylka func.yaml tusaha hadda jira ee loo isticmaali doono in lagu habeeyo shaqada. Markaa marka hore waxaad u baahan tahay inaad tagto hagahayaga 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
Sida aad ka arki karto soo-saarka amarka, sawirka weelka cusub ee Docker ayaa la sameeyay oo ka kooban shaqadeena. Hawshu waxay diyaar u tahay in loogu yeedho, waxaana leenahay laba siyaabood oo loo sameeyo:
adoo isticmaalaya amarka Fn invoke
si toos ah uga waca http
Wac invoke iyada oo loo marayo Fn waxay si fudud ugu dayanaysaa shaqada HTTP ee imtixaannada, taas oo ku habboon tijaabinta degdegga ah:
Wax walba way shaqaynayaan! Waa waqtigii loo gudbi lahaa tijaabooyinka buuxa oo aan ku daabacno FaaS serverka!
Ku rakibida adeegyada shaqo la'aanta ee kaabayaashaaga
Aynu si degdeg ah u rakibno mishiin dalwaddii annagoo adeegsanayna Exoscale CLI. Haddii aadan weli dejin, waad isticmaali kartaa Hagaha bilowga degdega ah. Tani waa qalab qabow oo kordhin doona wax soo saarkaaga xitaa in ka badan. Ha iloobin inaad u baahan tahay inaad dejiso qaanuun si aad u furto dekedda 8080 ee Kooxda Amniga! Amarradan soo socda ayaa soo saari doona mashiinka farsamada gacanta oo nadiif ah, oo diyaar u ah inuu martigeliyo hawlahayaga:
Markaa waxaad ku shubi kartaa mashiinka farsamada oo aad ku rakibi kartaa server-ka fog ee 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)
Kadibna ku rakib Docker iyo server-ka Fn si la mid ah sidii hore loogu sameeyay mashiinka maxalliga ah, billow serverka:
Fn wuxuu diyaar u yahay inuu helo hawlo Ku wareejinta bartilmaameedka ah ee shaqooyinka loo diro server fog, waxaan isticmaali doonaa amarka deploy ka kombuyuutarka maxaliga ah adigoo ka saaraya calanka --local.
Intaa waxaa dheer, Fn waxay kaaga baahan tahay inaad qeexdo goobta Fn server iyo diiwaanka Docker. Ikhtiyaaradan waxa lagu dejin karaa doorsoomayaasha deegaanka FN_API_URL и FN_REGISTRY siday u kala horreeyaan, laakiin sidoo kale waxay bixisaa hab ku habboon oo si fudud loogu maareeyo abuurista iyo maaraynta qaabaynta hawlgelinta.
Marka la eego shuruudaha Fn, qaabaynta meelaynta ayaa loo yaqaan context. Amarka soo socda ayaa abuuri doona macnaha guud:
Waxaad arki kartaa xaaladaha la heli karo sida tan:
$ fn list contexts
CURRENT NAME PROVIDER API URL REGISTRY
default default http://localhost:8080/
exoscale default http://185.19.30.175:8080 nfrankel
U beddelo macnaha guud ee hadda uun loo abuuray:
$ fn use context exoscale
Now using context: exoscale
Laga bilaabo halkan, gudbinta muujinta Fn waxay soo dejisan doontaa sawirada Docker iyadoo la adeegsanayo koontada DockerHub ee la doortay (xaaladkayga - nfrankel), ka dibna ogeysii serverka fog (tusaale ahaan - http://185.19.30.175:8080) ku saabsan goobta iyo nooca sawirkii ugu dambeeyay ee ka kooban shaqadaada.
$ 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 .
Shaqada Nolol-maalmeedka ee Ku-saleysan Fn-Serverless Computing
Faa'iidooyinka xisaabinta server-la'aanta ah ee awooddaada
Xisaabinta server-la'aanta ah waa xal ku habboon in si degdeg ah loo hirgeliyo qaybo madaxbannaan oo arjiga ah oo la falgala codsiyada kakan ama adeeg-yaraha.
Tani waxay badanaa sabab u tahay kharashka qarsoon ee lagu xirayo iibiyaha la doortay, taas oo ku xidhan kiiska isticmaalka gaarka ah iyo mugga, waxay keeni kartaa kharashyo badan iyo dabacsanaanta hoos u dhaca mustaqbalka.
Dhaqdhaqaaqyada daruuriga ah ee badan iyo isku-dhafka ah ayaa sidoo kale ku dhibtoonaya kiiskan, sababtoo ah waxaad si sahlan u heli kartaa naftaada xaalad aad jeceshahay inaad isticmaasho xisaabinta server-ka, laakiin sababtoo ah siyaasadaha shirkadaha waxaa laga yaabaa inaysan suurtagal ahayn.
Fn aad bay u fududahay in la isticmaalo oo waxa ay bixin kartaa ku dhawaad isla FaaS interface, oo leh wax yar oo ka sarreeya. Waxay meesha ka saaraysaa quful kasta oo iibiye ah waxaana lagu rakibi karaa gudaha ama bixiyaha xalalka daruuraha ee ku habboon ee aad dooratay. Waxa kale oo jirta xorriyadda doorashada luuqadda barnaamijka.
Maqaalkani waxa uu daboolayaa oo kaliya aasaaska Fn, laakiin abuurista wakhtigaaga run-gudbinta aad ayey u fududahay, guud ahaan qaab dhismeedka waxaa loo geyn karaa si ballaaran iyadoo la adeegsanayo isku-dheellitirka culeyska Fn, ama adigoo Fn gadaasha wakiil ka ah ilaalinta.