V Oleme rÀÀkinud teile uutest funktsioonidest, mis ilmusid jaanuari vÀrskenduses Update 4 Veeam Backup & Replication 9.5 (VBR), kus me teadlikult ei maininud magnetlintidega varukoopiaid. Sel teemal tasub kirjutada eraldi artikkel, sest uusi funktsioone oli tÔeliselt palju.
â QA poisid, kirjutate artikli?
â Miks mitte!

Lintdraivid XXI sajandil
Andmete salvestamine magnetlintidele (kassettidele, âlintideleâ, nagu me R&D-s neid kutsume) ei piirdu vaid minevikus olnud ZX-Spectrum arvutiga, mille jaoks ĂŒks mĂ€ng laadis operatiivmĂ€lu 48 kB-st mitu minutit. KahekĂŒmne viie aastaga on kassettide kiirus ja maht kasvanud 6-7 korda. See ei ole tĂ€iesti korrektne vĂ”rdlus, ja vastavalt standard ei suuda sammu pidada. Siiski, tĂ€napĂ€eva tehnoloogiad vĂ”imaldavad ĂŒhe kasseti kilomeetrisele lindile salvestada 12 terabaiti andmeid (kuni 30 terabaiti kompressioonireĆŸiimis), seega 160-dollariline salvestusseade jĂ€tab konkurendid kaugele maha, kui arvestada suurte andmemahtude pikaajalise sĂ€ilitamise kulusid, kaadritest ja lugemisseadmest investeerimist. Sellistele lintidele salvestatud andmed sĂ€ilivad usaldusvÀÀrselt 15â30 aastat.
Vaatan teise nurga alt. Viimasel ajal on saavutanud uue taseme. Nad vĂ”ivad oodata oma aega suure ettevĂ”tte infrastruktuuris nĂ€dalate ja kuude kaupa, ning kui ilmneb uus nullpĂ€evahaav, saavad nad hĂ€vitada (mitte ilma inimeseta, sest mĂ€ngus on suured rahad) mitte ainult kĂ”ik andmed, vaid ka kĂ”ik varukoopiad, mis on vaid kĂ€eulatuses. Siin on , kui ettevĂ”te pidi maksma lunavaras. Nii-öelda Ă”hustiku tĂŒhjendamine, st fĂŒĂŒsiliselt infrastruktuurist eraldatud varukoopiad on saanud sisuliselt ainukeseks usaldusvÀÀrseks pÀÀstmiseks sellistes olukordades. Magnetlint siin on ĂŒks ajale vastu pidavaid lahendusi.

Kuid ainult spetsifikatsioon ja tehnilised uuendused juhtivatelt tootjatelt (IBM, HPE, Oracle, Dell) ei piisa andmete usaldusvÀÀrseks kaitsmiseks, vajalik on ka hea tarkvara. Meil on Veeamis terve meeskond, kes tegeleb lintide varukoopiate loomisega, umbes 10 inimest analĂŒĂŒsib, planeerib, uurib, arendab ja testib igapĂ€evaselt. Selle töö tulemusi olete vĂ”inud nĂ€ha varasemates artiklites (, ). Mida on viimase aasta jooksul tehtud?
Glossaar
TĂ”usetub valik emakeele suhtes lubaduste ja lugemise keerulisust suurendavate bĂŒrokraatlike vĂ€ljendite vahel. Eelistan esimest, seetĂ”ttu palun ette vabandust, kui kellelegi allpool olevast sĂ”navarast rakenduskeel silma hĂ€irib. Siin tuletan lĂŒhidalt meelde, mida mĂ”ni termin tĂ€hendab.
VBRi ekspertidel vĂ”ib see osa jÀÀda vaheleJob â job â varukoopiate tegemise ĂŒlesanne. TĂ”eliselt pĂ”hineb kogu VBR töö ĂŒlesannete peal. Lisaks varukoopiatele ja replikatsioonile vĂ”ib see olla ka andmete edastamine magnetkettale (backup to tape job, tape job). RĂ”hutan, et varukoopiast taastamine (restore) on samuti ĂŒlesanne, kuid kĂ€esolevas artiklis mĂ”istetakse selle all just varukoopiat.
Storage â storage â ajalooliselt kujunenud nimetus. Need on failid, mis asuvad repositoriis (repository â hoidla), sisaldavad varukoopiaid â TĂ€ielikud ja inkrementaalsed. Ăhes storage'is vĂ”ib olla nii ĂŒks kui ka mitu virtuaalmasinat.
Ahel â chain â jĂ€rjestikune seotud storage'ite kogum. Andmete taastamiseks n-ndast inkrementaalsest storage'ist on vajalikud kĂ”ik eelnevad (n-1)-st esimeseni ja tĂ€ielik storage, millele viitab esimene inkrementaalne.
Allikas, siht â source, target. Allikas â algne entiteet, mida töötlus kĂ€itab. Varukoopiate/replikate puhul on see reeglina virtuaalmasin hĂŒperviisoris. Tapes-job'i puhul on allikaks ise backup-job (vĂ”i failid 'file to tape' job'i puhul). Siht backup-job'i jaoks on hoidla, kus varukoopiad asuvad. Tapes-job'i puhul on see meedia-basaar.
Meedia-basaar â â andmete salvestamise jĂ”ud, meie puhul â kassettide kogum. Loogiline konteiner, mille kasutaja loob ja mis sisaldab ĂŒhe vĂ”i mitme raamatukogu kassetti. Seega on tape job alati suunatud meedia puule, see tĂ€hendab, et andmed ei salvestata mitte mingile konkreetselt kassettile ega ka kĂ”igile kassettil raamatukogus, vaid kindlale komplektile. Meedia puul on seadistus andmete sĂ€ilitamise ajaks, mille möödudes kassett vĂ”ib uuesti ĂŒle kirjutada. Kasutaja saab luua tavalisi (standard) ja . Igal neist liikidest vĂ”ib nĂŒĂŒd olla ka WORM ja mitte-WORM, sellest allpool.
Meedia komplekt â â kassetid meedia puus, millele kirjutatakse pidevalt varukoopiaid/faile. GFS-poolide jaoks on meedia komplektidel ka seos ajavahemikuga (nĂ€iteks aastane â yearly), kassetid rotatsioonivad ainult oma ajavahemikus.
â tape-raamatukogu elemendid. Draiv loeb ja kerib kasseti, vahetaja â see on robot, mis liigutab kassetid ladustamise, laadimise ja draivi slotide vahel. On ka iseseisvad draivid (standalone â eraldi seisev), siin tĂ€idab muundurina funktsiooni inimene. Juhtme ĂŒhendamiseks on vajalik korrektselt paigaldatud tootja draiver Windows-masinas, kuhu on ĂŒhendatud teek; muunduriga saame töötada ka ilma draiveriteta, native SCSI kaudu.
Tenant to tape. Teenusepakkuja on kaitstud â kaitstud on kliendid.
Kohe tĂ”sised eelised lauale. Meie vĂ€rskenduse kĂ”ige ulatuslikum funktsioon, mis on loodud , kes kasutavad oma infrastruktuuris VBR-i. Arendus algas juba kaks aastat tagasi. Varsti saime aru, et sellise tĂ”sise ĂŒlesandega lĂ€heme jĂ€rgmise vĂ€ljaandeni Ă”igeks ajaks mitte joonde, vĂ”tsime vĂ€ikese pausi ja lĂ”puks soovitud funktsiooni vĂ€lja 9.5 vĂ€rskenduses 4.
LĂŒhidalt öeldes, on nĂŒĂŒd teenusepakkujatel vĂ”imalus kopeerida oma klientide varukoopiaid kassettidele GFS-grupi tape-job'i abil. See annab teenusepakkujatele â ja need on meie sĂŒdamele ning kaubandusosakonnale vĂ€ga kallid suuremad mĂ€ngijad â kaks vĂ”imalust:
- kaitsta oma kliente (tenantid, tenant â ĂŒĂŒrnik) andmete kaotuse eest juhusliku kustutamise vĂ”i infrastruktuuri probleemide tĂ”ttu ("ĂŒleujutus serveriruumis");
- pakkuda klientidele lisa teenust andmete taastamiseks vanast varukoopiast, mis on juba ammu hÀvitatud pilverepositooriumist vastavalt andmete salvestamise poliitikale, kuid kassettidel on endiselt alles.
Turunduse seisukohalt on funktsionaalsus vÀga "maitsev", meie jaoks aga - mitte vÀhem keeruline rakendada.
Arendus
Peamine probleem on andmete krĂŒpteerimine. Enamik pilvevarukoopiaid on krĂŒpteeritud, statistika ĂŒtleb umbes â kogu arvust. Meie jaoks oli see number ĂŒllatus, arvasime, et enamus on krĂŒpteeritud, aga ei - paljud kliendid nĂ€ivad olema oma teenusepakkujatesse absoluutselt kindlad.
Paradigma on lihtne: teenusepakkuja ei tohiks Ôigustada oma klientide andmeid. Samas, uue funktsiooni raames tuleb teenusepakkujal avada varukoopiatega salvestused. See on vajalik, et andmeplokke liigutada, nÀiteks tÀieliku virtuaalse varukoopia loomiseks. . Peamine on, et seda tuleb teha sÔltumatult kliendist, kui vajalikud vÔtmed ei edastata teenusepakkujale töö ajal.
Selle probleemile lahenduse leidmine, mis on muide oluline ka teises selle olulise funktsiooni osas, mis vĂ€lja lastud lisandmoodul â â seisneb tĂ€iendava krĂŒpteerimisvĂ”tme lisamises. ArhiivivĂ”ti (Archive key) hoitakse pakkuja andmebaasis krĂŒpteeritud kujul. Pakkuja pool lĂ”hestatud skeemi abil saab selle abil avada salvestusruumi, liigutada ja krĂŒpteerida andmeplokke salvestuste vahel (kuna igal ĂŒhel on oma vĂ”ti), kuid andmeid ei saa dekrĂŒpteerida.

LÔhustatud skeem (töötav variant)
Lisaks, kĂ”ik R&D insenerid armastavad meie toote krĂŒpteerimist, kuna keegi ei tea ĂŒksikasjalikult, kuidas see töötab. (Siin oli veel nali 'ja miks see ĂŒldse töötab', kuid toimetajad ei lasknud seda lĂ€bi.)
Testimine
Funktsiooni kohta on registreeritud sadu vigu. KĂ”ige keerulisemad valdkonnad on krĂŒpteerimine, kasutajaliides, taastamistsĂŒkli probleemid.
Testimise seisukohalt koosnes raskus suurest varieeruvusest, tĂŒĂŒbi ja tĂŒĂŒpi tenantide tööde ja hoidlate 'kombinatoorikast' â silmas pean nii allikat kui ka sihtkohta, kui varukoopiate taastamine infrastruktuuri. KĂ”ik see on seotud loogikaga raamistikus (sealatud uue â paralleelsus ja igapĂ€evased meedia komplektid, selgitame allpool), samuti harjumatutele pilvekeskuste spetsifikatsioonidele. Ărge unustage seda tugevalt krĂŒpteerida. Kui jĂ€tkata metafoori, oleme selle rooga korralikult ĂŒle söönud â kuid oleme seda ka igast kĂŒljest maitsta saanud.

Testplaani fragment
Tulemus
Ăksikasjalikku kirjeldust leiate (praegu inglise keeles): , . JĂ€tan siinkohal peamised punktid.
Varukoopia
Teenusepakkuja lisab kliente teip-tööle GFS-pooli sihtmÀrgina. Kui olemas on pilveluba, on wizardi teisel sammul saadaval valik Kliendid. Saate lisada kÔik kliendid korraga vÔi eraldi, samuti saate valida vaid teatud kvota (aga mitte alamkvota) eraldi kliendi jaoks. Erakliendi varukoopiaid ja tavalisi kohalikke ei saa sama töö puhul segada.

ĂlejÀÀnud seaded on peaaegu tĂ€ielikult identsete tavalise tööga GFS-pools.
Andmete taastamine on vÔimalik nii teenusepakkuja kui ka kliendi enda poolel.
Taastamine teenusepakkuja poolel
Teostatakse uue viisi abil. Siin on vĂ”imalik minna eraldi ĂŒlesande juurde, taastatakse tĂ€ielikult ahel, mis oli teatud pĂ€eval hoidlas.

Kolm restorani varianti:
- Originaal asukohta. Sellisel juhul eemaldatakse, kui see on olemas, originaalne varukoopia; rendi ĂŒlesanded seadistatakse automaatselt taastatud ahela peale. Eeldatakse, et selline taastamine jÀÀb kliendile praktiliselt mĂ€rkamatuks, vaid lĂŒhikese aja jooksul on see ĂŒhendatud pilvehoidla kaudu vĂ€lja lĂŒlitatud.
- Uude kvooti/hoidla. Teenusepakkuja vĂ”ib nĂ€iteks luua sel eesmĂ€rgil eraldi ajutise konto, mille ta hiljem eemaldab. Varukoopia ilmub rendi infrastruktuuri pĂ€rast sĂŒnkroniseerimist teenusepakkuja andmebaasiga.
- Lihtsalt Linuxi- vÔi Windowsi-serveri kettale, mis on registreeritud teenusepakkuja infrastruktuuris. Edasi saab selle ahela salvestada mÀlupulgale ja saata rentnikule.

Taastamine rendi poolel
See valik tĂ€hendab, et kliendil on oma tape-infrastruktuur ja suur andmemaht restoraniks. Teenusepakkuja vĂ”ib fĂŒĂŒsiliselt saata kliendile salvestatud varukoopiate kasseti kullerteenuse kaudu. Klient katalogiseerib selle oma seadmetes, dekrĂŒpteerib kassette ja varukoopiaid ning töötab nende varukoopiaitega, nagu oleks ta need ise lindile salvestanud. Selline nipi, et vĂ€ltida terabaitide laadimist WAN-i kaudu.
Mastaapsed tÀiustused GFS-pooles
-meedia-poolid ilmusid VBR-is kaks aastat tagasi versioonis 9.5. VĂ€rskenduses, seoses Tenant to tape funktsiooni ilmumisega ja kasutajate soovide tĂ”ttu, oleme selle funktsionaalsuse tĂ”eliselt ĂŒles töötanud.
IgapÀevased meedia-setid
Ilmunud on uus igapĂ€evane (igapĂ€evane) meedia-seade. NĂŒĂŒd on GFS-pool vĂ”imalik salvestada varukoopiaid iga pĂ€eva kohta, ja mitte ainult tĂ€is, vaid ka inkrementaalseid. Viimased vĂ”tavad oluliselt vĂ€hem ruumi ning see on tehtud ribade sÀÀstmise eesmĂ€rgil. Eeldatakse, et need kassettid pöörlevad pidevalt raamatukogus, mitte ei viida eemal sĂ€ilitamisele. Samuti on restorani inkrementaalse punkti jaoks vajalikud ĂŒks kassett vanema meedia-seadmest (nĂ€dalane, kuine, kvartaline vĂ”i aastane). IgapĂ€evase meedia-seadmest aktiveerimine ilma nĂ€dalase aktiveerimiseta ei ole vĂ”imalik, et enamikul juhtudel oleks taastamiseks inkrementaalsest koopiast vajalikud just nĂ€dalased kassettid. Need kas on alati raamatukogus vĂ”i on need hoitud mitte nii kaugel asuvas laos.

Tape-jobi tööloogika GFS-meedia-pools , tehnilised kirjanikud ei vea alt. Kui öelda kahel sĂ”nal, ilma detailideta, siis nĂ€dalase ja vanemate meediahulkade puhul kopeeritakse ainult tĂ€isvarukoopiad (sh virtuaalsed tĂ€isvarukoopiad), ĂŒks iga kuupĂ€eva jaoks, ja igapĂ€evases - kĂ”ik varukoopiad, mis on hetkel olemas hoidlas, kuna varukoopia töö vĂ”ib kĂ€ivituda sagedamini kui ĂŒks kord pĂ€evas.
Paralleelsus, kÀivitusaeg ja ooteaeg GFS-poolides
NĂŒĂŒd on mitme ahela vĂ”i töö paralleelne kirjutamine mitmest teegidraivist vĂ”imalik ka GFS-meediahulkades (varasemalt - ainult tavapĂ€rastest). See aktiveeritakse jĂ€rgus Valikud meediahulk.

Oluline tĂ€psustus: sama faili kirjutatakse alati ĂŒhe vooga, seetĂ”ttu on soovitatav mitme suure virtuaalmasina korral aktiveerida , et varukoopia koosneks mitmest ahelast.
Lisaks on nĂŒĂŒd vĂ”imalik valida GFS-töö kĂ€ivitamise aega. Paljude kasutajate arvates ei olnud sĂŒdaöine kĂ€ivitamine ja sellele jĂ€rgnev peaaegu terve pĂ€eva ooteaeg, kuni allika töö on lĂ”petatud, kuigi see oli soovimatu. NĂŒĂŒd on selle aja vĂ”imalik, nĂ€iteks, mÀÀrata hiliseks Ă”htuks, kui on juba midagi ekraanile kopeerida. Veelgi enam, kasutajate soovide pĂ”hjal oleme tĂ€iendanud seadeid, et vĂ”imaldada valikut, mida varem sai aktiveerida ainult registrivĂ”tmega. Piisab valimisest Protsessige kĂ”ige vĂ€rskemat taastamispunkti, selle asemel et oodata â ja salvestusse kopeeritakse see, mis on repoogitĂŒhi kĂ€itamise hetkel (nĂ€iteks eilne punkt), seega ei ole ĂŒldse ooteaega.

TÀpsem koostöö mitme raamatukoguga
RÀÀgime olukorrast, kus ĂŒhte meediapooli on lisatud rohkem kui ĂŒks raamatukogu. Sellist tuge oleme varem pakkunud, kuid aeg-ajalt on tulnud kliente kaebustega mitte kĂ”ige ettearvamatuma kĂ€itumise kohta.
Oli

NĂ€iteks, kĂ€ivitus töö, mis kasutas esimeses raamatukogus kahte draivi, kuid paralleelsuse seaded vĂ”imaldavad tal kasutada kohe 4 draivi. Kas peaks see töö lĂŒlituma teise raamatukogu meedia-pondile ja seda ka kasutama, vĂ”i oleks see ressursside ĂŒletamine?
Teine juhtum. Valitud on vĂ”imalus lĂŒlituda tingimuse jĂ€rgi «ei ole saadaval kassette», esimeses raamatukogus on vaid ĂŒks kassett, kuid sellele mahutatakse potentsiaalselt kĂ”ik andmed. Siiski vĂ”imaldavad seaded kirjutada paralleelselt kahte kassetti. Kas peaks selles olukorras teist raamatukogu kasutama?
Oleme otsustanud selle valdkonna korda teha, vÔimaldades seada kÀitumise selgelt.
Kohandatud

on nĂŒĂŒd rollid â aktiivne ja passiivne. Ja meedia-pondil endal on kaks reĆŸiimi: talitlushĂ€iretega, vĂ”i failover (failover) ja paralleelne salvestamine (paralleling). NĂŒĂŒd, vastavalt nĂ”udmistele, saab meedia-pondi seadistada erinevalt.
- Kui teil on mitu vĂ”rdselt tĂ€htsat raamatukogu ja on vajalik nende vahel andmete kirjutamist jagada, aktiveerite paralleelse kirjutamise reĆŸiimi, mÀÀrates kĂ”igile raamatukogudele aktiivsed rollid. Sel juhul kĂ€sitletakse uusi kassette ja draive kohe, kui tekib vajadus, sĂ”ltumata sellest, millises raamatukogus nad asuvad. Eelis on ikka olemas â esmalt pĂŒĂŒame leida ressursse raamatukogust, mis asub loendis kĂ”rgemal.
- Kui aga on ĂŒks peamine raamatukogu ja ĂŒks vana vĂ”i iseseisev draiv varuks, aktiveerite failover-reĆŸiimi, asetades peamise raamatukogu loendi kĂ”ige ĂŒlemisele positsioonile ja valides passiivse rolli varudraividele. Ăleminek sellisele seadmele toimub ainult siis, kui see on tĂ”eliselt vajalik, et tĂ¶Ă¶ĂŒlesanne saaks ĂŒldse toimida. Sellist olukorda peetakse hĂ€daolukorraks, millest saadetakse teade e-posti teel.
On olemas keerulisem olukord, mida me praegu ei toeta â mitu aktiivset teeki koos passiivsete olemasoluga. Tagasiside nĂ€itab, kas selliste konfiguratsioonide jĂ€rele on vajadus ja kas tulevikus on vaja funktsiooni tĂ€iustada. See on standardpraktika.
WORM-tugi
WORM â Write Once Read Many â kassett, mida ei saa kustutada ega ĂŒle kirjutada , saab vaid andmeid juurde kirjutada. Nende kohustuslik kasutamine on ette nĂ€htud teatud organisatsioonide regulatsioonide alusel, nĂ€iteks meditsiini valdkonnas töötavates. Peamine probleem selliste kasettidega oli varem see, et VBR vĂ”i salvestas pealkirja, mida hiljem ei saanud kustutada, ja teipimisĂŒlesanded ebaĂ”nnestusid sellise katse korral.
Versioonis 9.5 Update 4 on selliste kassettide tĂ€islahenduse tugi. Lisatud on WORM-meediahulki, tavalised ja GFS, kuhu saab paigutada vaid selle tĂŒĂŒpi kasette.

Uutel kasettidel on sinine, âkĂŒlmutatudâ ikoon. Kasutaja jaoks ei erine WORM-kassettide töö tavalisest tööprotsessist.
Kassettide âwormilisusâ mÀÀratakse algselt nende , kui baarikoodid on tavalised vĂ”i raskesti loetavad, edastab teave draiver, kui kassett esmakordselt sisestatakse. WORM-kassetid ei saa tavalisse meedia puul ja neid ei saa kirjutada. Naljakas on see, et mĂ”ned kasutajad on leidnud WORM-baarikoode, mille nad on kleepinud tavalistele kassettidele, ja imestanud oma infrastruktuuri muudatuste ĂŒle pĂ€rast vĂ€rskendust.
Kasseti kiip
Koos kirjutamata kassetide kasutuselevĂ”tuga hakati tegelema . Tavalisi atribuute kiipe ei ole varem kasutatud, praegu kirjutame ja loeme osa neist, kuid ei pea neid peamiseks andmeallikaks. Peamine orientiir on endiselt kassetipealkiri. See otsus osutus Ă”igeks: kuu pĂ€rast vĂ€ljaandmist nĂ€eme, kuidas kasutajate âloomaaedâ riistvarast toob kiibi töötamise osas ĂŒllatusi.
NDMP-mahupuhverdatud lindi peale
KokkuvĂ”tteks â kĂ”ige nĂ”utuma funktsiooni kohta selle vĂ€rskenduse arvustuste arvust. NDMP-mahtude varundamine kassettide peale on nĂŒĂŒd saadaval. VBR infrastruktuuri tuleb , pĂ€rast mida saab faili lindi tĂ¶Ă¶ĂŒlesandes valida selle hosti mahtusid. Need paigutatakse kassettidesse failide kujul, millel on spetsiaalne atribuut, et eristada neid tavalisest kataloogimisest.

Esimeses versioonis on teatud piirangud: laiendusi ei toetata, lisaks saab varundada ja taastada ainult tĂ€iskogumist, mitte eraldi faile. Varundamine toimub lĂ€bi (NetApp puhul â ), seal on oma eripĂ€rad: maksimaalne inkrementaalsete punktide arv on 9, pĂ€rast mida sunnitakse tĂ€isvarukoopia tegemist.
KokkuvÔtteks
Need olid vaid kÔige suuremad uuendused magnetlindiga varundamises VBR 9.5 Update 4. Muud muudatused on jÀrgmised:
- vĂ”imalus mÀÀrata allika tĂ¶Ă¶ĂŒlesannete ja failide jĂ€rjekord lindi tĂ¶Ă¶ĂŒlesannetes;
- lisatud Tape Operatori roll (kasutaja vĂ”ib teha kĂ”ike, vĂ€lja arvatud andmete taastamine lindilt â selleks on Restore Operator);
- lindi tĂ¶Ă¶ĂŒlesandes on lisatud tĂ€ielikud include/exclude maskid (vĂ€lja arvatud NDMP);
- töötati vĂ€lja failitĂŒĂŒbi taastamine (kaust taastatakse nende failidega, mis seal olid varukoopia hetkel, mitte kĂ”igi nende failidega, mis kunagi seal olnud on â nagu ikka, vĂ€ga nĂ”utud funktsioon);
- suurendatud taastamise kiirus vÀga suure arvu failide jaoks kassettidelt;
- töötati vÀlja algoritm jÀrgmise kassetti salvestamiseks, arvestades andmete mahtu, mis on kogu selle elu jooksul salvestatud/loodud, valime kÔige vÀrskema;
- töödeldi toote stabiilsust.
Kasulikud lingid
Mitmekesisuseks toon mÔned lingid ka vene keelt kÔnelevatele ressurssidele:
- Ja tagasime tagasi eelnevasse kohta ĂŒlevaatevideod âKuidas see töötabâ (kuigi praegu ainult inglise keeles) â neid saab vaadata . Lindiga rÀÀkijatest tehakse juttu slaididel 95 â 102.
Allikas: habr.com
