Koormustestimine kui CI-teenus arendajatele

Koormustestimine kui CI-teenus arendajatele

Üks probleemidest, millega tarkvarade arendajad sageli silmitsi seisavad, on inseneride - arendajate, testijate ja infrastruktuuri administraatorite - oskuste kopeerimine peaaegu igas meeskonnas. See kehtib ka kallite inseneride kohta, kes on spetsialiseerunud koormustestimisele.

Kuna nad ei saa tegeleda oma otseste kohustustega ja kasutada oma ainulaadset kogemust koormustestimise protsessi ĂŒlesehitamiseks, metodoloogia valimiseks, optimaalseid mÔÔdikute vÀÀrtusi seadmiseks ning koormuse profiilidega vastavuses automaatkatseid kirjutades, peavad insenerid sageli nullist ĂŒles seadma test infrastuktuuri, seadistama koormuse tööriistu, integreerima neid CI-sĂŒsteemidesse, seadistama jĂ€lgimise ja aruannete avaldamise.

MĂ”ningaid organisatsioonilisi probleemide lahendusi testimises, mida rakendame Positive Technologies'is, leiate teises artiklis. Selles artiklis rÀÀgin koormustestide integreerimise vĂ”imalusest CI-torustikku, kasutades kontseptsiooni "koormustestimine teenusena" (load testing as a service). Te peate, kuidas ja milliseid koormuse allikaid docker-pilte saab CI-torustikus kasutada; kuidas integreerida koormuse allikad oma CI-projektiga ehitusmalli kaudu; kuidas nĂ€eb vĂ€lja demo-pipeline koormustestide kĂ€ivitamiseks ja tulemuste avaldamiseks. Artikkel vĂ”ib olla kasulik tarkvaratestijate ja CI automatiseerijate jaoks, kes on mĂ”elnud oma koormussĂŒsteemi arhitektuuri ĂŒle.

Kontseptsiooni olemus

Kontseptsioon "koormustestimine teenusena" tĂ€hendab vĂ”imalust integreerida koormustööriistu Apache JMeter, Yandex.Tank ja enda raamistikud igasugusesse pideva integratsiooni sĂŒsteemi. Demona on GitLab CI, kuid esitatud pĂ”himĂ”tted kehtivad kĂ”ikide CI-sĂŒsteemide puhul.

"Koormustestimine teenusena" on tsentraliseeritud teenus koormustestimise lĂ€biviimiseks. Koormustestid kĂ€ivitatakse eraldi agentide basseinides, tulemuste avaldamine toimub automaatselt GitLab Pagesis, Influx DB-s ja Grafanas vĂ”i testide aruandluse sĂŒsteemides (TestRail, ReportPortal jne). Automatiseerimine ja skaleerimine rakendatakse vĂ”imalikult lihtsalt - lihtsalt GitLab CI projekti sisestades ja parametriseerides tavapĂ€rast gitlab-ci.yml malli.

KĂ€e eelis seisneb selles, et kogu CI-infrastruktuur, koormuse agente, koormusallika dokkeripildid, testimise ja aruandluse torud — toetab keskne automatiseerimise osakond (DevOps-insenerid), samas kui koormustestimise insenerid saavad keskenduda oma jĂ”upingutustele testide arendamisele ja nende tulemuste analĂŒĂŒsimisele, mitte tegeleda infrastruktuuri kĂŒsimustega.

Lihtsuse huvides eeldame, et sihtotstarbeline testitav rakendus vĂ”i server on eelnevalt ĂŒles seatud ja konfigureeritud (selleks vĂ”ivad olla kasutatud automatiseeritud skriptid Pythonis, SaltStackis, Ansible'is jne). Sel juhul mahub kogu koormustestimise kontseptsioon teenusena kolme etapi: valmistamine, testimine, aruannete avaldamine. Üksikasjad on toodud skeemil (kĂ”ik pildid on klikitavad):

Koormustestimine kui CI-teenus arendajatele

Peamised mÔisted ja mÀÀratlemised koormustestimises

Koormustestimise lĂ€biviimisel pĂŒĂŒame jĂ€rgida standardite ja metoodika ISTQB, kasutame vastavaid termineid ja soovitatud mÔÔdikuid. Toome lĂŒhikese loetelu peamistest mĂ”istetest ja mÀÀratlemistest koormustestimises.

Koormuse agent (load agent) — virtuaalne masin, millel kĂ€ivitatakse rakendus — koormuse allikas (Apache JMeter, Yandex.Tank vĂ”i kohandatud koormuse moodul).

Testimise eesmĂ€rk (target) — server vĂ”i rakendus, mis on serveris installitud ja millele koormust rakendatakse.

Testimise stsenaarium (test case) — parametreeritud sammude kogum: kasutajate toimingud ja oodatavad reaktsioonid nendele toimingutele, fikseeritud vĂ”rgu pĂ€ringutega ja vastustega sĂ”ltuvalt mÀÀratud parameetritest.

Koormuse profiil vĂ”i plaan (profile) — ISTQB metoodika (p. 4.2.4, lk 43) koormuse profiilid mÀÀratlevad konkreetse testi jaoks kriitiliselt olulised mÔÔdikud ja koormuse parameetrite muutmise vĂ”imalused testi kĂ€igus. Profiilide nĂ€iteid nĂ€ete joonisel.

Koormustestimine kui CI-teenus arendajatele

Test (test) — stsenaarium, millel on eelnevalt mÀÀratletud parameetrite kogum.

Testimisplaan (test-plan) — testide ja koormuse profiili kogum.

Testimisjooks (testrun) — ĂŒhe testi kĂ€ivitamise ĂŒks iteratsioon tĂ€ielikult tĂ€idetud koormuse stsenaariumiga ja saadud aruandega.

VĂ”rgu pĂ€ring (request) — HTTP-pĂ€ring, mis saadetakse agente eesmĂ€rgile.

VĂ”rgu vastus (response) — HTTP-vastus, mis saadetakse sihtpunktist agendile.
HTTP vastuse kood (HTTP responses status) — standardne vastuse kood rakenduste serverilt.
Tehing (transaction) — tĂ€iskĂ€ik "pĂ€ring — vastus". Tehing loetakse algusest, kui pĂ€ringu (request) saatmine algab, kuni vastuse (response) vastuvĂ”tmise lĂ”puni.

Tehingu staatus (transactions status) — kas Ă”nnestus edukalt lĂ”petada "pĂ€ring – vastus" tsĂŒkkel. Kui selles tsĂŒklis oli mingisugune viga, siis kogu tehing loetakse ebaĂ”nnestunuks.

Latentsusaeg (latency) — aeg pĂ€ringu (request) saatmise lĂ”pust kuni vastuse (response) vastuvĂ”tmise alguseni.

MÔÔdikud (metrics) — omadused, mida mÀÀratletakse koormustestimise kĂ€igus koormatava teenuse ja koormusagendi protsessis.

Peamised mÔÔdikud koormuse parameetrite mÔÔtmiseks

MĂ”ned kĂ”ige levinumad ja soovitatavad meetodid ISTQB (lk 36, 52) mÔÔdikud on esitatud allolevas tabelis. Sarnased mÔÔdikud agendi ja sihtpunkti jaoks on esitatud ĂŒhel real.

Koormusagendi mÔÔdikud
Testitava sihtsĂŒsteemi vĂ”i rakenduse mÔÔdikud koormuse all

Kogus  vCPU ja mÀlu RAM,
Ketas — koormusagendi "rauda" omadused
CPU, MĂ€lu, ketta kasutus — protsessori, mĂ€lu ja ketta koormuse dĂŒnaamika testimise kĂ€igus. Tavaliselt mÔÔdetakse protsentides maksimaalselt kĂ€ttesaadavatest vÀÀrtustest
maksimaalselt kÀttesaadavad vÀÀrtused
VÔrguliiklus

(koormusagendil) — vĂ”rgu liidese lĂ€bilaskevĂ”ime serveris,
kus koormusagent on installitud.
Tavaliselt mÔÔdetakse baitides sekundis (bps)
(sihtpunktil) — vĂ”rgu liidese lĂ€bilaskevĂ”ime
(koormusagendil) — vĂ”rgu liidese lĂ€bilaskevĂ”imesihtserveris. Tavaliselt mÔÔdetakse baitides sekundis (bps)
Virtuaalsed kasutajad

— virtuaalsete kasutajate arv,kes viivad ellu koormusstsenaariume ja
simuleerivad reaalseid kasutaja tegevusi
Virtuaalsete kasutajate staatus
, LĂ€bimine/EbaĂ”nnestumine/Kokku — edukate jaebaĂ”nnestunud virtuaalsete kasutajate staatuste arv
koormusstsenaariumide jaoks ning nende koguarv.
Tavaliselt eeldatakse, et kÔik kasutajad suudavad tÀita

kĂ”iki oma ĂŒlesandeid, mis on toodud koormuse profiilis.
Iga viga tÀhendaks, et ka reaalne kasutaja ei saaks
oma ĂŒlesannet sĂŒsteemis lahendada.
PĂ€ringud sekundis (minuuti)

— vĂ”rgu pĂ€ringute arv sekundis (vĂ”i minutis).Oluline omadus koormusagendi jaoks: kui palju ta suudab genereerida pĂ€ringuid.

Oluline omadus koormusagendi puhul: kui palju ta saab pÀringuid genereerida.
Tegelikult on see rakendusse virtuaalsete kasutajate pöördumise simuleerimine.
Responses per second (minute)
— vĂ”rgureaktsioonide arv sekundis (vĂ”i minutis).

Sihtteenuse oluline omadus: kui palju Ônnestus
genereerida ja saata vastuseid pÀringutele
koormuse agendi poolt.

HTTP responses status— erinevate vastusekoodide arvu
rakenduse serverilt, mida koormuse agent sai.
NÀiteks, 200 OK tÀhistab eduka pöördumise
ja 404 — et ressurssi ei leitud.

Latency (vastuse aeg) — aeg pĂ€ringu saatmise lĂ”pust
vastuse vastuvÔtu alguseni.
Tavaliselt mÔÔdetakse millisekundites (ms).

Transaction response time— ĂŒhe tĂ€ieliku tehingu aeg,
tsĂŒkli "pĂ€ring — vastus" lĂ”petamine.
See on aeg pÀringu saatmise algusest
vastuse vastuvÔtu lÔpetamiseni.

Tehingu aega vÔib mÔÔta mitmel viisil: arvesse vÔetakse minimaalne,
maksimaalne, keskmine ja nÀiteks 90. percentiil.
Minimaalsed ja maksimaalsed nĂ€idud on sĂŒsteemi jĂ”udluse ÀÀrmuslikud
seisundid.
Kaupa 90. percentiil kasutatakse kÔige sagedamini,
sest see nÀitab enamiku kasutajate,
kes töötavad mugavalt sĂŒsteemi jĂ”udluse piiril.
Transactions per second (minute)

— tĂ€ielike tehingute arv sekundis (minutis), st kui palju rakendus suutis vastu vĂ”tta ja
töödelda pÀringuid ning anda vastuseid.
Tegelikult on see sĂŒsteemi lĂ€bilaskevĂ”ime.
Transactions status
, Passed / Failed / Total — edukate, ebaĂ”nnestunud ja kogutehingute arvu.

Reaalsete kasutajate jaoks tĂ€hendab ebaĂ”nnestunud tehing tegelikult sĂŒsteemi töövĂ”imetust koormuse all.
Koormustestimise pÔhimÔtteline skeem

Koormustestimise pÔhimÔtteline skeem on vÀga lihtne ja koosneb kolmest pÔhietapist, millest olen juba rÀÀkinud:
Prepare — Test — Report
, st testimise eesmÀrkide ettevalmistamine ja parameetrite seadmine koormusallikatele, seejÀrel koormustestide teostamine ja lÔpuks testimise aruande koostamine ja avaldamine.

MĂ€rkus skeemi kohta:

QA.Tester — koormustestimise ekspert, Target — sihtrakendus, mille kĂ€itumist koormuse all tuleb teada.Klassifitseerija objektide, etappide ja sammude jaoks skeemil.

Koormustestimine kui CI-teenus arendajatele

Etapid ja sammud

  • Mis toimub?
  • Klassifitseerijate erinevad osad

Etapp 1

Etapp 2
Etapp 3
Sisend
VĂ€ljund

Prepare: testimise ettevalmistamise etapp

LoadParameters
Ülesanne ja initsialiseerimine
kasutaja poolt
koormuse parameetrid,
mÔÔdikute valimine ja
testiplaani ettevalmistamine
(koormuse profiil)
Kohandatud parameetrid
koormuse agendi initsialiseerimiseks
Testiplaan
Testimise eesmÀrk

VM
Pilves kasutuselevÔtt
virtuaalse masina
nÔutud spetsifikatsioonidega
VM-i parameetrid koormuse agendi jaoks
Automatiseerimise skriptid
VM-i loomiseks
Seadistatud VM pilves
Env

OoperisĂŒsteemi seadistamine ja keskkonna ettevalmistamine
koormuse agendi tööks
Keskkonna parameetrid
koormuse agendi jaoks
keskkonna seadistamine
Valmistatud keskkond:
Automatiseerimise skriptid
OoperisĂŒsteem, teenused ja rakendused,
milleks on vajalik
LoadAgents
Koormusagendi installimine, seadistamine ja parameetriseerimine.
Valmistatud keskkond:

VÔi allalaadimine Docker-pildist
ette seadistatud koormuse allikaga
Docker-pilt koormuse allikast
(YT, JM vÔi isekirjutatud raamistik)
Seadistusparameetrid
Seadistatud ja töövalmis
koormuse agent
Test: koormustestide sooritamise etapp. Allikateks on koormuse agendid, mis on juurutatud eraldatud agentide basseinidesse GitLab CI jaoks
Valmistatud keskkond:
Koormuse agendi kÀivitamine
valitud testiplaani

ja koormuse parameetritega

Laadi
Kohandatud parameetrid
initsialiseerimiseks
Teostamise logid
koormustestide
SĂŒsteemi logid
Valmistatud keskkond:
Testiplaan
Testimise eesmÀrk
MÔÔdikute dĂŒnaamika
sihtmÀrgi ja koormuse agendi
RunAgents
Ageneti tÀitmine

koormustestide stsenaariumitega
koormuse profiliga
Koormuse agendi interaktsioon
vastavalt
testimise eesmÀrgiga
Logid
Toored logid
Testiplaan
Testimise eesmÀrk

koormustestimise protsessis:
logikirjed koormuse agendi tegevustest,
katse sihtmÀrgi olek
ja VM, millel agent töötab
MÔÔdikud
Toored mÔÔdikud testimise kÀigus

MÔÔdikute dĂŒnaamika
sihtmÀrgi ja koormuse agendi
RunAgents

MÔÔdikute dĂŒnaamika
sihtmÀrgi ja koormuse agendi

Aruanne: testiaruande ettevalmistamise etapp
Generator

Kogutud töötlemine

koormussĂŒsteemi ja
seire sĂŒsteem toored
mÔÔdikud ja logid
Aruande koostamine
inimese loetavas formaadis,
vĂ”imalikult analĂŒĂŒsielementidega
MÔÔdikute dĂŒnaamika
sihtmÀrgi ja koormuse agendi
Töödeldud toored logid
MÔÔdikute dĂŒnaamika
sihtmÀrgi ja koormuse agendi
RunAgents
vormingus, mis sobib
vÀlistele salvestuslahendustele
Statistiline koormusaruanne,
mis sobib inimese analĂŒĂŒsimiseks
Publish
Aruande avaldamine
koormustestimise kohta

vÀlises teenuses
Koormustestimise aruande avaldamine
vÀlises teenuses
tulemus.
teenuses
Töödeldud "toor"
logid formaadis, mis sobib
vÀliseksportimiseks
salvestuskohtadesse
Salvestatud vÀlises
salvestuskojas aruanne
koormusest, sobivad
inimese analĂŒĂŒsiks

Koormusallikate ĂŒhendamine CI-mallis

Liigume praktilise osa juurde. Soovin nÀidata, kuidas oleme mÔnedes projektides ettevÔttes Positive Technologies rakendanud koormustestimise kontseptsiooni teenusena.

Esmalt lÔid meie DevOps-insenerid GitLab CI-s eraldiseisva agentide hulga koormustestide kÀivitamiseks. Et mitte segada neid mallides teistega, nÀiteks kogumallide, hulga tÔttu, lisasime nendele agentidele sildid, tags: load. VÔib kasutada kÔiki muid arusaadavaid silte. Need mÀÀratakse registreerimise ajal GitLab CI Runners.

Kuidas teada vajalikku "rauda"? Koormusagentide omadused — piisav vCPU, RAM ja Disk — vĂ”ivad olla arvutatud lĂ€htudes sellest, et agendi peal peavad olema kĂ€ivitatud Docker, Python (Yandex.Tank jaoks), GitLab CI agent ja Java (Apache JMeteri jaoks). JMeteri Java jaoks soovitatakse kasutada vĂ€hemalt 512 MB RAM-i ja maksimaalselt 80% saadaval olevast mĂ€lust..

Seega, lÀhtudes meie kogemusest, soovitame kasutada koormusagentide jaoks vÀhemalt: 4 vCPU, 4 GB RAM, 60 GB SSD. VÔrgukaardi lÀbilaskevÔime mÀÀratakse koormusprofiili nÔuete alusel.

Meil kasutatakse peamiselt kahte koormusallikat — Apache JMeter ja Yandex.Tank docker-pildid.

Yandex.Tank on Yandexi avatud lĂ€htekoodiga tööriist koormustestimise lĂ€biviimiseks. Selle modulaarses arhitektuuris on kĂ”rge jĂ”udlusega asĂŒnkroonne hit-based HTTP-pĂ€ringute genereerija Phantom. Tankil on sisseehitatud testitava serveri ressursside jĂ€lgimine SSH-protokolli kaudu, see suudab automaatselt lĂ”petada testi mÀÀratud tingimuste tĂ€itmisel, oskab tulemusi kuvada nii konsoolis kui ka graafikutena ning sellele saab ĂŒhendada oma mooduleid funktsionaalsuse laiendamiseks. Muide, kasutasime Tanki, kui see polnud veel ainult peavool. Artiklis "Yandex.Tank ja koormustestimise automatiseerimine" saab lugeda ajalugu, kuidas 2013. aastal viisime lĂ€bi selle abiga koormustestimise PT Application Firewall ĂŒhe meie ettevĂ”tte toote.

Apache JMeter — avatud lĂ€htekoodiga koormustestimise tööriist Apache'ilt. Seda saab kasutada nii staatiliste kui dĂŒnaamiliste veebirakenduste testimiseks. JMeter toetab suurt hulka protokolle ja suhtlemismehhanisme rakendustega: HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET jne), SOAP / REST veebiteenused, FTP, TCP, LDAP, SMTP(S), POP3(S) ja IMAP(S), andmebaase JDBC kaudu, suudab kĂ€ivitada shell-kĂ€ske ja töötada Java-objektidega. JMeteril on IDE testiplaanide loomiseks, silumiseks ja tĂ€itmiseks. Samuti on olemas CLI tööks mis tahes Java-ĂŒhilduvas operatsioonisĂŒsteemis (Linux, Windows, Mac OS X). Tööriist suudab dĂŒnaamiliselt genereerida HTML-aruande testimise kohta.

Kasutusmugavuse tagamiseks meie ettevĂ”ttes ja selleks, et testijad saaksid ise keskkonda muuta ja lisada, oleme loonud koormuse allikate Docker-piltide kogumise GitLab CI-s, avaldades need sisemises docker-repositooriumis Artifactory. Nii on nende integreerimine koormustestimise torustikes kiirem ja lihtsam. Kuidas teha docker push registrisse lĂ€bi GitLab CI — vaadake juhendis.

Meie baas Docker-fail Yandex.Tank jaoks on jÀrgmine:

Dockerfile 
1 | FROM direvius/yandex-tank
2 | ENTRYPOINT [""]

Ja Apache JMeteri jaoks on see:

Dockerfile 
1 | FROM vmarrazzo/jmeter
2 | ENTRYPOINT [""]

Kuidas meie pideva integreerimise sĂŒsteem töötab, saate lugeda artiklist «Arendustegevuse automatiseerimine: kuidas me Positive Technologies'is rakendasime DevOpsi ideid».

Mall ja torustik

NÀidis mall koormustestide lÀbiviimiseks on saadaval projektis demo-load. Failis readme -failis .gitlab-ci.ymlleiate juhise mallist kasutamiseks. Otseses mallis (failis

) on mĂ€rkuseid selle kohta, mille eest vastutab samm. Mall on vĂ€ga lihtne ja demonstreerib kolme etappi koormustestimisest, nagu on kirjeldatud ĂŒlaltoodud skeemis: ettevalmistamine, testimine ja aruande avaldamine. Selle eest vastutavad: stages.

  1. Prepare, Test ja Report Etapp Prepare
  2. Prepare, Test ja Report tuleb kasutada testimise eesmĂ€rkide eelnevaks seadistamiseks vĂ”i nende kĂ€ttesaadavuse kontrollimiseks. Koormuse allikate keskkonda seadistama ei pea, need on eelnevalt loodud Docker-piltidena ja vĂ€ljastatud docker registrisse: piisab, kui mÀÀrata vajalik versioon etapis Test. Kuid neid saab ka uuesti ehitada ja luua oma modifitseeritud pildid. kasutatakse koormusallika mÀÀramiseks, testide kĂ€ivitamiseks ja testimise artefaktide salvestamiseks. Saate valida mistahes koormusallika: Yandex.Tank, Apache JMeter, oma vĂ”i kĂ”ik koos. Ebavajalike allikate vĂ€ljalĂŒlitamiseks piisab, kui kommenteerida vĂ”i eemaldada töökoht. Koormusallikate sisenemiskohad:

    MĂ€rkus: kokkupaneku konfiguratsiooni mall on mĂ”eldud CI-sĂŒsteemiga suhtlemise seadistamiseks ja ei eelda testiloogika sisaldamist. Testide jaoks mÀÀratakse sisenemiskoht, kus asub juhtimisbash-skript. Testide kĂ€ivitamise viis, aruannete koostamine ja testitsenaariumid peavad olema QA-inseneride poolt ellu viidud. Demopreemia puhul kasutatakse mĂ”lema koormusallika puhul kui kĂ”ige lihtsamat testi Yandexi eeslehe pĂ€ringut. Skriptid ja testiparameetrid asuvad kataloogis ./tests.

  3. Etapis Aruanne on vaja kirjeldada testimistulemuste avaldamise viise, mis on saadud Test etapil, vĂ€listele salvestuskohtadele, nĂ€iteks GitLab Pages'ile vĂ”i spetsiaalsetele aruandlussĂŒsteemidele. GitLab Pages'i puhul on vajalik, et testide lĂ”ppedes oleks kataloog ./public mitte tĂŒhi ja sisaldaks vĂ€hemalt faili index.html. GitLab Pages teenuse toimimise nĂŒansse saab lugeda linki pidi.

    NĂ€ited, kuidas andmeid eksportida:

    Avaldamise seadistamise juhised:

Demopreemia korral koosnevad koormustestide torujuhtmed kahest koormusallikast (ĂŒht neist saab vĂ€lja lĂŒlitada) jĂ€rgmistest:

Koormustestimine kui CI-teenus arendajatele

Apache JMeter suudab ise genereerida HTML-aruande, seega on mÔttekas seda GitLab Pages'is tavapÀraste vahendite abil salvestada. Nii nÀeb vÀlja Apache JMeter aruanne:

Koormustestimine kui CI-teenus arendajatele

Demopreemia puhul Yandex.Tank jaoks nÀete ainult vale tekstiaruannet GitLab Pages'i jaotis. Testimise kÀigus suudab Tank salvestada tulemusi InfluxDB andmebaasi ja sealt edasi saab neid nÀiteks kuvada Grafanas (seadistamine toimub failis ./tests/example-yandextank-test.yml). Nii nÀeb Tanki aruanne Grafanas vÀlja:

Koormustestimine kui CI-teenus arendajatele

Elulookirjeldus

Artiklis rÀÀgin ma kontseptsioonist "koormustestimine teenusena" (load testing as a service). Peamine idee on kasutada eelseadistatud koormusagentide basseinide infrastruktuuri, koormusallikate Docker-pilte, aruandesĂŒsteeme ning neid ĂŒhendavat pipelines'i GitLab CI-s, mis pĂ”hineb lihtsal mallil .gitlab-ci.yml (nĂ€ide linki pidi). KĂ”ike seda toetab vĂ€ike automatiseerimise inseneride meeskond ning seda kopeeritakse toote meeskondade nĂ”udmisel. Loodan, et see aitab teil sarnase skeemi ettevalmistamisel ja rakendamisel teie ettevĂ”ttes. AitĂ€h tĂ€helepanu eest!

P. S. Soovin vÀga tÀnada oma kolleege, Sergei Kurbanovi ja Nikolai Yusevi, tehnilise abi eest kontseptsiooni rakendamisel load testing as a service meie ettevÔttes.

Autor: Timur Gilmullin — tehnoloogia ja arendusprotsesside osakonna asejuht (DevOps) ettevĂ”ttes Positive Technologies

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster