Su'ega o uta API ma sē akerise

Su'ega o uta API ma sē akerise

Su'ega o uta API ma sē akerise: Folasaga

Masalo na e i ai muamua i lenei tulaga: e te tusia le code e fai ai se mea, o se pito mo se faʻataʻitaʻiga. E te suʻeina lou faʻaiʻuga e faʻaaoga ai le Postman poʻo le Insomnia, ma e lelei mea uma. E te pasi atu le fa'ai'uga i le tagata e fa'atupuina, ona fa'aaogaina lea o le API ma fa'apipi'i le talosaga. Ae, e le manuia le API pe a faʻaogaina e tagata faʻaoga le app.

E mafai ona avea lenei mea ma se tulaga ita tele e i ai, ae le o le tau mo se pisinisi. O le mafuaaga lea e faia ai e le au atina'e polokalame ni su'ega eseese i luga o polokalama faakomepiuta ina ia mautinoa latou te fa'atinoina e pei ona fa'amoemoeina. APIs e leai se eseesega. A'o le'i fa'apipi'iina, e tatau ona e faia a itiiti ifo i su'ega fa'atinoga ma su'ega saogalemu.

E mafai ona fa'avasega su'ega fa'atinoga i su'ega fa'atinoga ma su'ega uta. O su'ega fa'atino o mea ia e masani ona e fa'aogaina ai le Falemeli po'o le Insomnia. Latou te faʻamautinoa o loʻo galue lau API e pei ona e faʻamoemoeina. O suʻega uta, i le isi itu, e sili atu ona popole i le faʻaogaina o lau API i le faʻaogaina moni o le lalolagi ma le uta maualuga, ma o le mea lena e uiga i lenei tusiga. Se'i o tatou va'ava'ai atili i su'ega uta.

O le a le API Load Testing?

O le su'ega o uta API o se ituaiga o su'ega e fa'aoga e le au atina'e e fa'ata'ita'i ai le uta masani ma le maualuga o uta i pito. O lenei ituaiga su'ega e mafai ai e le au atia'e ona iloilo le fa'atinoga o le API i le lalolagi a'o le'i fa'atinoina. E fesoasoani latou te iloa ai le maualuga o le gafatia o le faʻaogaina o se faiga, bottlenecks pe a iai, ma le faʻaleagaina o faʻatinoga. O su'ega uta API e masani lava ona faia e ala i le fa'atupuina o tagata fa'aoga fa'apitoa ona fa'aaogaina lea e fa'ata'ita'i ai galuega a le API fa'atasi. 

Ole su'ega ole uta ole API e fua ai fua fa'atatau e pei ole taimi tali, tagata fa'aoga fa'atasi, fua fa'atatau, fa'aogaina o puna'oa, Mean Time Between Failure(MTBF), Mean Time To Failure(MTTF), ma isi. O nei metotia uma e mafai ona faʻaogaina e iloa ai le lelei o le API.

Ituaiga o Su'ega Uta

E tele ituaiga o su'ega uta, ta'itasi ma ona tulaga fa'aoga. Seʻi o tatou vaavaai i nisi o na mea.

Su'ega uta: Ole faiga fa'avae lea ole su'ega uta. E fa'aaogaina e iloilo ai le fa'atinoga o se faiga (i le tulaga lea, o se API) i lalo o le uta masani ma le uta maualuga fa'amoemoeina.

Su'ega Fa'atiga: E fa'aaogaina e iloilo ai le fa'atinoga o se faiga i lalo o se uta mamafa tele. O le sini o lenei su'ega o le va'ai pe toe fa'afo'isia se faiga pe a mae'a fa'aletonu, ma le umi e fai ai. O le uta e masani lava ona faʻatupu lemu i luga seia oʻo ina sili atu le gafatia o le faiga.

Su'ega Spike: E fai lava si pei o le su'ega fa'amamafa, se'i vagana ua fa'afuase'i ona fa'apipi'i le uta mamafa, e fa'afeagai ma le fa'agasolo malie i luga. O lenei ituaiga o suʻega e faʻaalia ai le mea e tupu pe a tupu faʻafuaseʻi le aofaʻi o lau aofaʻi o tagata faʻaoga poʻo tagata asiasi, pe a iai se osofaʻiga a le DDOS i lau masini.

Su'e Su'ega: O lenei su'ega e le pei o isi o lo'o i luga. E tu'u lau faiga i lalo ole 80%(po'o se mea) o le uta masani ma tu'u pea mo se vaitaimi umi, fai mai 12 i le 14 itula. Ole ituaiga su'ega lea e iloa ai le fa'atuatuaina ole faiga ile taimi.

Uta Su'ega Au API i le sē akerise

E maua e le au atina'e le tele o filifiliga mo le su'eina o uta o latou API. O nisi meafaigaluega su'ega uta masani o Gatling, JMeter, ma Locust. O le a tatou taulaʻi atu i le sē akerise i lenei tusiga.

Locust o se python-based open source load testing tool e faʻaaogaina e kamupani maualuga e pei o Google, Microsoft, ma Riot Games e suʻe ai a latou API. I lenei tusiga, o le a matou faʻaalia pe faʻafefea ona utaina se suʻega API. 

Mo lenei aʻoaʻoga, o le a ou fatuina se API faigofie ma Flask. E mafai ona e mulimuli faʻatasi ma aʻu pe naʻo le fatuina o lau API ma Node, poʻo le a lava le faʻavae e te faʻalelei ai.

manaoga

Python 3

Seti & Faʻapipiʻi

Muamua, e te manaʻomia le faʻatulagaina o se siosiomaga faʻapitoa i luga o lau PC ina ia e le faʻalavelaveina lau siosiomaga Python lalolagi. Ina ia faia lena mea, fa'atonu tulafono nei. Manatua o nei poloaiga e faʻaoga i se Windows terminal.

$ mkdir poloketi

$ cd /d ala\to\poloketi

$ python -m venv venv

$ venv\Scripts\activate

 

Muamua, matou faia se fuafuaga fa'atonuga. Ona matou suia lea o le matou lisi o loʻo iai nei i fuafuaga. Ona matou faia lea ma faʻagaoioia se siosiomaga faʻapitoa mo Python i totonu o lena lisi. 

O lenei, o le a tatou agai atu i le faʻapipiʻiina Flask(o le a matou faʻaaogaina e fatu ai faʻaiʻuga e faʻataʻitaʻiina uta) ma Locust lava ia. 

 

Ina ia faʻapipiʻi Flask, tamoe. Ia mautinoa o oe i totonu o le fuafuaga lea na e fatuina ai se siosiomaga faʻapitoa.

$ pip fa'apipi'i fagu

 

Ina ia fa'apipi'i le sē akerise, tamo'e

$ pip fa'apipi'i sē akerise

 

A mae'a lena, fa'apipi'i tulafono nei. Ia mautinoa o loʻo e i totonu o lau fuafuaga directory pe ae faia lenei mea.

$ kopi nul __init__.py

$ mkdir app

$ kopi nul app\app.py

$ kopi nul app\__init__.py

 

O tulafono nei e fatuina ai ni faila o le a matou faʻaogaina e fai ai a matou faʻaiʻuga e faʻaaoga ai Flask. E mafai foi ona e fatuina nei faila e faʻaaoga ai lau suʻesuʻega faila i le ala. Ae o le a le mea malie i lena mea? A uma ona e faia lena mea, kopi le code lalo i totonu app.py

mai fagu faaulufale mai Flask, jsonify, talosaga

app = Flask(__name__)

taavale_fa'ata'ita'iga = [

  { 'brand': 'Tesla', 'model': 'Model S' }

]

 

vaalele_models = [

  { 'brand': 'Boeing', 'model': '747' }

]

 

@app.route('/taavale')

def get_cars():

  toe fa'afo'i le jsonify(car_models)

@app.route('/vaalele')

def get_vaalele():

  toe faafoi jsonify(vaalele_models)

afai __igoa__ == '__main__':

    app.run(debug=True)  

 

O loʻo i luga le faʻailoga o loʻo i ai se metotia maua_taavale fa'aaoga e maua ai se lisi o ituaiga ta'avale ma a latou fa'ata'ita'iga, ma maua_vaalele fa'aaoga e maua ai se lisi o ituaiga va'alele ma a latou fa'ata'ita'iga. Mo matou e utaina le suʻega lenei pito, matou te manaʻomia le taʻavale app.py. Ina ia faia lena mea, fai le poloaiga i lalo.

$ python ala\to\app.py

O le taimi lava e te tamoe ai, e tatau ona e vaʻai i se mea e pei o lenei:

Su'ega Uta API 1

Afai e te kopiina le URL mai le laina ma faʻaoga taavale or vaalele a maeʻa le /, e tatau ona e vaʻai i faʻamatalaga iina. Ae ui i lea, o la matou sini o le suʻeina lea o le pito i le sē akerise, ae le o le suʻega. Ia tatou faia la lena mea. Fa'asolo le fa'atonuga lea i le a'a o lau fuafuaga tusitaiala.

 

$ kopi nul locust_test.py

 

Ole mea lea e fai ai se faila 'locust_test.py' ile a'a o lau fuafuaga fa'atonuga. A uma ona e faia lena mea, tatala le faila ma faapipii i lalo code. O le a matou faamatalaina i se taimi lata mai.

 

taimi faaulufale mai

mai sē akerise faaulufale mai HttpUser, galuega, va

 

vasega UserBehaviour(HttpUser):

    faatalitali_taimi = va (5, 10)

 

    @galuega

    def get_cars(self):

        self.client.get('/cars')

    

    @galuega

    def get_planes(self):

        self.client.get('/vaalele')

 

Ole fa'ata'ita'iga fa'avae lea ole fa'aogaina ole Locust e fa'atauina ai se su'ega API. Muamua, matou te faia se vasega Amioga Fa'aoga, lea e mafai ona tuʻuina atu soʻo se igoa talafeagai ae tatau ona faʻalautele HttpUser. HttpUser o le vasega o lo'o fa'atonuina le fa'atinoina o le tele o tagata fa'aoga virtual e fa'atino galuega matou te fa'amaoti mai i totonu Amioga Fa'aoga vasega. 

O se galuega e faʻamaonia e ala i le teuteuina o se metotia i le @galuega tagata teuteu. E iai foi le tatou galuega e ta'ua va () e mafai ai ona matou faʻamaonia le tele o sekone e faʻatali ai aʻo leʻi faia le isi galuega. E mafai ona e vaʻai na matou tuʻuina atu se vaega o le 5 i le 10 sekone mo lena i la matou code. 

Ina ia faʻatautaia le code, ia mautinoa o loʻo e i ai pea i lau siosiomaga faʻapitoa. Afai o le mea na e faia o loʻo faʻaaogaina e le 'auʻaunaga o loʻo tautuaina le API, tatala se laina fou, sui lau lisi i lau fuafuaga directory, ma fa'agaoioi le si'osi'omaga fa'amanino na e faia. E mafai ona e mauaina le faʻatonuga mo le faʻagaoioia o se siosiomaga faʻapitoa i luga. Ia, ulufale i lalo le poloaiga i lau laina.

 

$ sē akerise -f locust_test.py

 

Oe tatau ona vaʻaia se mea faʻapea:

Su'ega Uta API 2

Ona o le faaletonu, o locust's web interface e maua ile http://localhost/8089. Afai e te asiasi i le upega tafaʻilagi, e tatau ona e vaʻai i se atinaʻe pei o lenei:

Su'ega Uta API 3

Mai le atinaʻe, e mafai ona matou faʻamaonia le numera o tagata faʻaoga, fua faʻatatau (tagata faʻaoga i le sekone), ma le Host. E mafai ona e mauaina le tuatusi o lau talimalo e ala i le siakiina o le laina o loʻo taʻavale ai le server. I la matou tulaga, o loʻo i le taulaga 5000. A e kiliki i luga Amata fa'afefe, o le a tu'uina atu ia te oe le fa'aoga i lalo.

Su'ega Uta API 4

O lo'o fa'aali atu ia te oe metotia aoga eseese e pei o le numera o talosaga ua le manuia, taimi masani mo se talosaga, le taimi aupito maualalo mo se talosaga, talosaga ile sekone, ma isi. O le taimi lava e te faamalieina ai i mea e te vaʻaia, e mafai ona e kiliki i luga o le taofi faʻamau. 


E ese mai le sitatisika tab, e iai se siata laupepa e faʻaalia atili ai faʻamatalaga i foliga o se kalafi, pei o le ata i lalo.

O loo i ai se aofa'i talosaga ile kalafa lona lua, kalafi taimi tali, ma numera o tagata fa'aoga kalafi, ua taupulepule uma i le taimi. I le faʻaaogaina o kalafi, e mafai ona e fuafuaina pe toafia tagata faʻaoga e talia mo se taimi faʻatulagaina tali, pe mafai foi ona e mataʻituina au siata mo se taimi tali faifaipea e ui lava i le faʻateleina o tagata faʻaoga, ma isi faʻamatalaga faapena. Afai e te manaʻo e faʻasoa atu nei mea fua faʻatatau ma se isi, e mafai ona e sii maia se lipoti mai le Tikiake faʻamatalaga tab.

E fa'ai'u...

O le su'eina o uta o lau API o se gaioiga taua i lau fa'agasologa o le atina'e, o lea ia mautinoa o lo'o tu'ufa'atasia i lau taamilosaga mamanu. I le auala, e mafai foi ona e faia isi ituaiga o suʻega faʻataʻitaʻiga e ala i le fesuiaʻiina o tau mo le numera o tagata faʻaoga ma fua faʻatatau. 

Afai e te manaʻo e fai se suʻega spike, faʻamaonia se tau tele (fai mai 2000) mo le numera o tagata faʻaoga, ona tutusa lea o le tau mo lau fua faʻatatau (500 mo se faʻataʻitaʻiga). O lona uiga i totonu o le 4 sekone, e mafai ona e faia uma 2000 tagata fa'aoga ma fa'aogaina au fa'ai'uga. Ole su'ega fa'amamafa o le a tutusa, ae fa'atasi ai ma se tau maualalo tele mo fua ole fua. Ina ia iloa mea uma e mafai ona e faia, siaki le Locust pepa aloaia