[Ungasebenzisi] i-CDN

Cishe yonke indatshana noma ithuluzi lokuthuthukisa isivinini sesayithi linomushwana onesizotha othi “sebenzisa i-CDN.” Ngokuvamile, i-CDN inethiwekhi yokulethwa kokuqukethwe noma inethiwekhi yokulethwa kokuqukethwe. Thina kwa-Method Lab sivame ukuhlangana nemibuzo evela kumakhasimende ngalesi sihloko; amanye awo avula i-CDN yawo. Inhloso yalesi sihloko ukuqonda ukuthi i-CDN ingahlinzeka ngani mayelana nesivinini sokulayisha isayithi, yiziphi izinkinga ezingase ziphakame, futhi yiziphi izimo ukusetshenziswa kwe-CDN kufaneleka.

[Ungasebenzisi] i-CDN

Ukubambezeleka okuzungezwe esithombeni kubangelwa ukusetshenziswa kwe-CDN.

Umlando omncane

Njengobuchwepheshe obuningi, ama-CDN avela ngaphandle kwesidingo. Ngokuthuthukiswa kweziteshi ze-inthanethi phakathi kwabasebenzisi be-inthanethi, izinsizakalo zevidiyo eziku-inthanethi zivele. Ngokwemvelo, okuqukethwe kwevidiyo kudinga ama-oda omkhawulokudonsa omningi uma kuqhathaniswa nokuqukethwe kwewebhusayithi evamile (izithombe, umbhalo, nekhodi ye-CSS noma ye-JS).

Uma uzama ukusakaza ukusakaza kwevidiyo ngokuhambisana namaklayenti amaningi kusuka kuseva eyodwa, isiteshi se-inthanethi seseva cishe sizoba umgoqo. Njengomthetho, izinkulungwane ezimbalwa zezintambo zanele ukuvala isiteshi seseva esijwayelekile. Yiqiniso, kungase kube nokunye ukulinganiselwa kwezinsiza, kodwa akubalulekile okwamanje. Kubalulekile futhi ukuthi ukukhulisa isiteshi seseva kubiza kakhulu (futhi ngezinye izikhathi akunakwenzeka), futhi futhi akunakwenzeka. Umthwalo esiteshini ngesikhathi sokusakazwa uzoba ngomjikelezo.

Inkinga yokukhawulela isiteshi seseva ngayinye ixazululwa ngokuphelele yi-CDN. Amaklayenti awaxhumeki kuseva ngokuqondile, kodwa kumanodi kunethiwekhi ye-CDN. Esimeni esihle, iseva ithumela ukusakaza okukodwa endaweni ye-CDN, bese inethiwekhi isebenzisa izinsiza zayo ukuletha lokhu kusakazwa kubasebenzisi abaningi. Ngokombono wezomnotho, sikhokhela kuphela izinsiza ezisetshenzisiwe (lokhu kungaba umkhawulokudonsa noma ithrafikhi) futhi sithole ukukala okuhle kakhulu kwesevisi yethu. Ukusebenzisa i-CDN ukuletha okuqukethwe okusindayo kuthetheleleka ngokuphelele futhi kunengqondo. Nakuba kufanelekile ukuqaphela ukuthi abadlali abakhulu kakhulu kulesi sikhala (isb. I-Netflix) bazakhela ama-CDN abo esikhundleni sokusebenzisa ama-CDN amakhulu okuhweba (Akamai, Cloudflare, Fastly, njll.)

Njengoba iwebhu ithuthukile, izinhlelo zokusebenza zewebhu ngokwazo ziye zaba yinkimbinkimbi futhi zaba yinkimbinkimbi. Inkinga yesivinini sokulayisha yavela phezulu. Abathandi besivinini sewebhusayithi basheshe babona izinkinga ezinkulu ezimbalwa ezidale ukuthi amawebhusayithi alayishe kancane. Enye yazo kwaba ukubambezeleka kwenethiwekhi (i-RTT - isikhathi sokuya nokubuya noma isikhathi se-ping). Ukubambezeleka kuthinta izinqubo eziningi ekulayisheni iwebhusayithi: ukusungula uxhumano lwe-TCP, ukuqala iseshini ye-TLS, ukulayisha insiza ngayinye ngayinye (isithombe, ifayela le-JS, idokhumenti ye-HTML, njll.)

Inkinga yabhebhethekiswa yiqiniso lokuthi uma usebenzisa iphrothokholi ye-HTTP/1.1 (ngaphambi kokufika kwe-SPDY, QUIC ne-HTTP/2 lena kwakuyiyona ndlela kuphela), iziphequluli azivuli ukuxhumeka kwe-TCP okungaphezu kuka-6 kumsingathi oyedwa. Konke lokhu kuholele ekwehleni kokuxhumeka nasekusetshenzisweni ngendlela engafanele komkhawulokudonsa wesiteshi. Inkinga ixazululwe ngokwengxenye ngokuhlukaniswa kwesizinda - ukudalwa kwababungazi abengeziwe ukuze banqobe umkhawulo wenani loxhumo.

Yilapho ikhono lesibili le-CDN livela khona - ukunciphisa ukubambezeleka (RTT) ngenxa yenani elikhulu lamaphuzu kanye nokuba seduze kwamanodi kumsebenzisi. Ibanga lidlala indima ebalulekile lapha: ijubane lokukhanya lilinganiselwe (cishe 200 km/sec kufiber optical). Lokhu kusho ukuthi njalo ngo-000 km wohambo wengeza u-1000 ms wokulibaziseka noma u-5 ms ku-RTT. Lesi yisikhathi esincane esidingekayo sokudlulisa, njengoba kukhona nokubambezeleka kumshini ophakathi nendawo. Njengoba i-CDN ijwayele ukwazi ukuthi igcina kanjani izinto kumaseva ayo, singazuza ngokulayisha izinto ezinjalo nge-CDN. Izimo ezidingekayo zalokhu: ukuba khona kwento kunqolobane, ukusondela kwe-CDN kukhomba kumsebenzisi uma kuqhathaniswa neseva yohlelo lokusebenza lwewebhu (iseva yoqobo). Kubalulekile ukuqonda ukuthi ukusondela kwendawo ye-CDN node akuqinisekisi ukubambezeleka okuphansi. Umzila phakathi kweklayenti ne-CDN ungakhiwa ngendlela yokuthi iklayenti lixhumane nomsingathi kwelinye izwe, futhi ngokunokwenzeka nakwelinye izwekazi. Yilapho ubudlelwano phakathi kwama-opharetha e-telecom kanye nesevisi ye-CDN (ukubheka, ukuxhumana, ukubamba iqhaza ku-IX, njll.) kanye nenqubomgomo yomzila wethrafikhi ye-CDN ngokwayo. Isibonelo, i-Cloudflare, uma usebenzisa izinhlelo ezimbili zokuqala (zamahhala futhi ezishibhile), ayiqinisekisi ukulethwa kokuqukethwe okuvela kumsingathi oseduze - umsingathi uzokhethwa ukuze afinyelele izindleko ezincane.

Izinkampani eziningi ezihamba phambili ze-inthanethi ziheha intshisekelo yomphakathi (abathuthukisi bewebhu nabanikazi besevisi) esihlokweni sejubane lokulayisha nokusebenza kwewebhusayithi. Phakathi kwalezi zinkampani kukhona i-Yahoo (ithuluzi le-Yslow), i-AOL (WebPageTest) ne-Google (isevisi ye-Page Speed ​​​​Insights), ezakha izincomo zazo zokusheshisa amasayithi (ngokuyinhloko ahlobene nokwenza kahle kwamakhasimende). Kamuva, amathuluzi amasha okuhlola isivinini sewebhusayithi ayavela, nawo ahlinzeka ngamathiphu okukhulisa isivinini sewebhusayithi. Ngayinye yalezi zinsizakalo noma ama-plugin inesincomo esingaguquki: "Sebenzisa i-CDN." Ukwehliswa kokubambezeleka kwenethiwekhi kuvame ukushiwo njengencazelo yomphumela we-CDN. Ngeshwa, akuwona wonke umuntu olungele ukuqonda kahle ukuthi umphumela wokusheshisa we-CDN ufinyelelwa kanjani nokuthi ungalinganiswa kanjani, ngakho-ke izincomo zithathwa ngokholo futhi zisetshenziswe njenge-postulate. Eqinisweni, akuwona wonke ama-CDN adalwe alingana.

Ukusebenzisa i-CDN Namuhla

Ukuhlola usizo lokusebenzisa ama-CDN, adinga ukuhlukaniswa. Yini engatholakala manje ekusebenzeni (izibonelo ezikubakaki, yiqiniso, aziphelele):

  1. I-CDN yamahhala yokusabalalisa amalabhulali e-JS (MaxCDN, Google. Yandex).
  2. I-CDN yezinsizakalo zokuthuthukisa iklayenti (isibonelo, i-Google Fonts yamafonti, i-Cloudinary, i-Cloudimage yezithombe).
  3. I-CDN yokuthuthukisa i-static nezinsiza ku-CMS (etholakala ku-Bitrix, WordPress nezinye).
  4. Inhloso evamile ye-CDN (StackPath, CDNVideo, NGENIX, Megafon).
  5. I-CDN yokusheshisa iwebhusayithi (Cloudflare, Imperva, Airi).

Umehluko oyinhloko phakathi kwalezi zinhlobo ukuthi ingakanani ithrafikhi ehamba nge-CDN. Izinhlobo 1-3 zingukulethwa kwengxenye kuphela yokuqukethwe: kusuka esicelweni esisodwa kuya kweshumi nambili (imvamisa izithombe). Izinhlobo 4 no-5 zingammeleli ogcwele wethrafikhi nge-CDN.

Empeleni, lokhu kusho inombolo yokuxhumana esetshenziselwa ukulayisha isayithi. Nge-HTTP/2, sisebenzisa uxhumano olulodwa lwe-TCP kumsingathi ukucubungula noma iyiphi inombolo yezicelo. Uma sihlukanisa izinsiza kumsingathi oyinhloko (umsuka) kanye ne-CDN, ngakho-ke kuyadingeka ukusabalalisa izicelo ezizindeni ezimbalwa bese udala ukuxhumana okuningi kwe-TCP. Icala elibi kakhulu yileli: DNS (1 RTT) + TCP (1 RTT) + TLS (2-3 RTT) = 6-7 RTT. Le fomula ayikunaki ukubambezeleka kwamanethiwekhi eselula ukuze kusebenze isiteshi somsakazo sedivayisi (uma besingasebenzi) nokubambezeleka embhoshongweni weselula.

Nakhu ukuthi kubukeka kanjani empophomeni yokulayisha isayithi (ukubambezeleka kokuxhuma ku-CDN kugqanyiswe ku-RTT 150 ms):

[Ungasebenzisi] i-CDN

Uma i-CDN ifaka yonke ithrafikhi yesayithi (ngaphandle kwamasevisi ezinkampani zangaphandle), singase sisebenzise uxhumano olulodwa lwe-TCP, silondoloze ukubambezeleka ekuxhumekeni kubabungazi abengeziwe. Impela, lokhu kusebenza ekuxhumekeni kwe-HTTP/2.

Ukwehluka okuqhubekayo kunqunywa ukusebenza kwe-CDN ethile - ohlotsheni lokuqala lumane lubambe ifayela elimile, okwesihlanu lishintsha izinhlobo eziningana zokuqukethwe kwesayithi ngenjongo yokuthuthukisa.

Amakhono e-CDN okusheshisa iwebhusayithi

Ake sichaze uhla olugcwele lwamakhono e-CDN okusheshisa amasayithi, ngaphandle kokubheka ukusebenza kwezinhlobo ngazinye ze-CDN, bese sibona ukuthi yini esetshenziswayo kuzo zonke.

1. Ukucindezelwa kwezinsiza zombhalo

Isici esiyisisekelo nesiqondakalayo, kodwa esivame ukusetshenziswa kabi. Wonke ama-CDN amemezela ubukhona bokucindezelwa njengesici sokusheshisa. Kodwa uma ubheka kabanzi, ukushiyeka kuyacaca:

  • amadigri aphansi okucindezela okuguquguqukayo angasetshenziswa - 5-6 (isibonelo, i-gzip ephezulu ingu-9);
  • ukucindezela okumile (amafayela akunqolobane) akusebenzisi izici ezengeziwe (isibonelo, i-zopfi noma i-brotli ene-degree 11)
  • akukho ukusekelwa kokuminyanisa okusebenzayo kwe-brotli (konga cishe u-20% uma kuqhathaniswa ne-gzip).

Uma usebenzisa i-CDN, kufanelekile ukuhlola lawa maphuzu ambalwa: thatha ifayela elivela ku-CDN, urekhode usayizi walo ocindezelwe bese ulicindezela ngesandla ukuze uqhathanise (ungasebenzisa isevisi ethile eku-inthanethi ngokusekelwa kwe-brotli, isibonelo. vsszhat.rf).

2. Ukusetha izihloko zenqolobane yeklayenti

Futhi isici esilula sokusheshisa: engeza izihloko zokugcinwa kwesikhashana kokuqukethwe yiklayenti (isiphequluli). Inhlokweni yamanje kakhulu i-cache-control, esiphelelwe yisikhathi siphelelwa yisikhathi. Ukwengeza, i-Etag ingasetshenziswa. Into eyinhloko ukuthi ubude beminyaka yobudala bokulawula inqolobane bukhulu ngokwanele (kusukela enyangeni noma ngaphezulu).

Ama-CDN angehlisa inani lobudala obukhulu, okuphoqa umsebenzisi ukuthi alayishe kabusha okuqukethwe okumile kaningi. Akucaci ukuthi lokhu kuxhumene nani: isifiso sokwandisa ithrafikhi kunethiwekhi noma ukwandisa ukuhambisana namasayithi angakwazi ukusetha kabusha inqolobane. Isibonelo, isikhathi senqolobane yenhlokweni ye-Cloudflare iyihora elingu-1, esiphansi kakhulu kudatha emile engaguquki.

3. Ukwenza kahle kwesithombe

Njengoba i-CDN ithatha imisebenzi yokulondoloza isikhashana nokuphakela izithombe, kungaba okunengqondo ukuzithuthukisa ohlangothini lwe-CDN futhi uzinikeze abasebenzisi kuleli fomu. Masenze ukubhuka ngokushesha ukuthi lesi sici sitholakala kuphela ezinhlotsheni ze-CDN 2, 3 kanye no-5.

Ungakwazi ukuthuthukisa izithombe ngezindlela ezihlukahlukene: usebenzisa amafomethi okucindezela athuthukile (afana ne-WebP), izifaki khodi ezisebenza kahle kakhulu (MozJPEG), noma ukumane uhlanze imethadatha engadingekile.

Ngokuvamile, kunezinhlobo ezimbili zokulungiselelwa okunjalo: ngokulahleka kwekhwalithi nangaphandle kokulahlekelwa kwekhwalithi. Ama-CDN ngokuvamile alwela ukusebenzisa ukwenza kahle okungalahleki ukuze agweme izikhalazo zamakhasimende ezingaba khona mayelana noshintsho lwekhwalithi yesithombe. Ezimweni ezinjalo, inzuzo izoba yincane. Eqinisweni, ngokuvamile izinga lekhwalithi ye-JPEG liphezulu kakhulu kunesidingo futhi ungakwazi ukucindezela kabusha ngokuphephile ngezinga eliphansi lekhwalithi ngaphandle kokufaka engozini ulwazi lomsebenzisi. Ngakolunye uhlangothi, kunzima ukunquma izinga lekhwalithi nezilungiselelo emhlabeni wonke kuzo zonke izinhlelo zokusebenza zewebhu ezingaba khona, ngakho-ke ama-CDN asebenzisa izilungiselelo ezilondolozayo uma kuqhathaniswa nalezo ezingasetshenziswa kucatshangelwa umongo (inhloso yezithombe, uhlobo lohlelo lokusebenza lwewebhu , njll.)

4. Ukuthuthukisa uxhumano lwe-TLS

Iningi lethrafikhi namuhla lihamba ngoxhumo lwe-TLS, okusho ukuthi sichitha isikhathi esengeziwe kuzingxoxo ze-TLS. Muva nje, kusungulwe ubuchwepheshe obusha ukuze kusheshiswe le nqubo. Isibonelo, lena i-cryptography ye-EC, i-TLS 1.3, inqolobane yeseshini namathikithi, ukusheshisa ukubethela kwehadiwe (AES-NI), njll. Ukusetha kahle i-TLS kunganciphisa isikhathi sokuxhuma ku-0-1 RTT (ingabalwa i-DNS ne-TCP ).

Ngesofthiwe yesimanje, akunzima ukwenza imikhuba enjalo uwedwa.

Akuwona wonke ama-CDN asebenzisa izinqubo ezihamba phambili ze-TLS; ungahlola lokhu ngokulinganisa isikhathi sokuxhuma kwe-TLS (isibonelo, ku-Webpagetest). Ilungele uxhumano olusha - 1RTT, 2RTT - izinga eliphakathi, 3RTT nokuningi - kubi.

Kufanele futhi kuqashelwe ukuthi ngisho nalapho usebenzisa i-TLS ezingeni le-CDN, iseva enesicelo sethu sewebhu kufanele futhi icubungule i-TLS, kodwa kusukela ohlangothini lwe-CDN, ngoba ithrafikhi phakathi kweseva ne-CDN idlula kunethiwekhi yomphakathi. Esimeni esibi kakhulu, sizothola ukubambezeleka kokuxhumeka okuphindwe kabili kwe-TLS (okokuqala kumsingathi we-CDN, okwesibili phakathi kwayo neseva yethu).

Kwezinye izinhlelo zokusebenza, kufanelekile ukunaka izindaba zokuphepha: ithrafikhi ivamise ukukhishwa ukubethela kumanodi e-CDN, futhi leli yithuba elingaba khona lokuvinjwa kwethrafikhi. Inketho yokusebenza ngaphandle kokudalulwa kwethrafikhi imvamisa inikezwa ezinhlelweni zentela ephezulu ngenani elingeziwe.

5. Yehlisa ukubambezeleka kokuxhumeka

Inzuzo enkulu ye-CDN wonke umuntu akhuluma ngayo: ukubambezeleka okuphansi (ibanga elincane) phakathi komsingathi we-CDN nomsebenzisi. Kufinyelelwe ngokudala i-architecture yenethiwekhi esabalaliswe ngokwendawo, lapho abasingathi batholakala ezindaweni zokugxilisana kwabasebenzisi (amadolobha, izindawo zokushintshana kwethrafikhi, njll.)

Empeleni, izinto eziza kuqala kumanethiwekhi ahlukene zingase zibe sezifundeni ezithile. Isibonelo, ama-CDN aseRussia azoba namaphoyinti amaningi okuba khona e-Russia. AbaseMelika bazoqale bathuthukise inethiwekhi e-USA. Isibonelo, enye ye-CDN Cloudflare enkulu kunazo zonke inamaphuzu angu-2 kuphela eRussia - eMoscow naseSt. Okusho ukuthi, singonga ubuningi obungafika ku-10 ms wokubambezeleka uma kuqhathaniswa nokubekwa okuqondile e-Moscow.

Iningi lama-CDN aseNtshonalanga alinawo amaphuzu eRussia nhlobo. Ngokuxhuma kuzo, ungandisa kuphela ukubambezeleka kwezithameli zakho zesi-Russian.

6. Ukwenza ngcono okuqukethwe (minification, izinguquko zesakhiwo)

Iphuzu eliyinkimbinkimbi kakhulu nelithuthuke kakhulu kwezobuchwepheshe. Ukushintsha okuqukethwe ngesikhathi sokulethwa kungaba yingozi kakhulu. Ngisho noma sithatha i-minification: ukunciphisa ikhodi yomthombo (ngenxa yezikhala ezengeziwe, izakhiwo ezingabalulekile, njll.) kungaphazamisa ukusebenza kwayo. Uma sikhuluma ngezinguquko ezibucayi kakhulu - ukuhambisa ikhodi ye-JS ekupheleni kwe-HTML, ukuhlanganisa amafayela, njll - ingozi yokuphazamisa ukusebenza kwesayithi iphakeme nakakhulu.

Ngakho-ke, kuphela uhlobo oluthile lwama-CDN angu-5 enza lokhu. Impela, ngeke kwenzeke ukwenza ngokuzenzakalelayo zonke izinguquko ezidingekayo ukuze izinto zisheshiswe—ukuhlaziya okwenziwa ngesandla nokuthuthukisa kuyadingeka. Isibonelo, ukususa ikhodi engasetshenzisiwe noma eyimpinda kuwumsebenzi owenziwa ngesandla.

Njengomthetho, konke ukulungiselelwa okunjalo kulawulwa izilungiselelo futhi eziyingozi kakhulu zikhutshazwa ngokuzenzakalelayo.

Ukusekelwa kwamakhono okusheshisa ngohlobo lwe-CDN

Ngakho-ke ake sibheke ukuthi yimaphi amathuba okusheshisa angaba khona ahlinzekwa yizinhlobo ezahlukene zama-CDN.

Ukuze kube lula, siphinda ukuhlukaniswa.

  1. I-CDN yamahhala yokusabalalisa amalabhulali e-JS (MaxCDN, Google. Yandex).
  2. I-CDN yezinsizakalo zokuthuthukisa iklayenti (isibonelo, i-Google Fonts yamafonti, i-Cloudinary, i-Cloudimage yezithombe).
  3. I-CDN yokuthuthukisa i-static nezinsiza ku-CMS (etholakala ku-Bitrix, WordPress nezinye).
  4. Inhloso evamile ye-CDN (StackPath, CDNVideo, NGENIX, Megafon).
  5. I-CDN yokusheshisa iwebhusayithi (Cloudflare, Imperva, Airi).

Manje ake siqhathanise izici nezinhlobo ze-CDN.

Ithuba
Thayipha 1
Thayipha 2
Thayipha 3
Thayipha 4
Thayipha 5

Ukucindezelwa kombhalo
+–
-
+–
+–
+

Izihloko zenqolobane
+
+
+
+
+

Isithombe
-
+–
+–
-
+

TLS
-
-
-
+–
+

Ukubambezeleka
-
-
-
+
+

Okuqukethwe
-
-
-
-
+

Kuleli thebula, u-“+” usetshenziselwa ukukhombisa ukwesekwa okugcwele, “–” akukho ukusekela, futhi “+–” ukusekela ngokwengxenye. Yiqiniso, kungase kube khona ukuchezuka okuvela kuleli thebula empeleni (isibonelo, i-CDN yenhloso evamile izosebenzisa izici zokuthuthukisa izithombe), kodwa ngombono ojwayelekile iwusizo.

Imiphumela

Ngethemba, ngemva kokufunda lesi sihloko uzoba nesithombe esicacile mayelana nesincomo sokuthi "sebenzisa i-CDN" ukusheshisa amasayithi akho.

Njengakunoma yiliphi ibhizinisi, awukwazi ukukholelwa izithembiso zokumaketha zanoma iyiphi isevisi. Umthelela udinga ukukalwa futhi uhlolwe ngaphansi kwezimo zangempela. Uma usuvele usebenzisa i-CDN, ihlole ukuthi iyasebenza yini usebenzisa imibandela echazwe esihlokweni.

Kungenzeka ukuthi ukusebenzisa i-CDN njengamanje kwehlisa isikhathi sokulayisha sesayithi lakho.

Njengesincomo esijwayelekile, singagxila kulokhu okulandelayo: funda izethameli zakho, unqume ububanzi bendawo. Uma izethameli zakho eziyinhloko zigxile ngaphakathi kwebanga elingamakhilomitha ayizinkulungwane ezingu-1-2, awuyidingi i-CDN ngenjongo yayo eyinhloko - ukunciphisa ukubambezeleka. Esikhundleni salokho, ungabeka iseva yakho eduze nabasebenzisi bakho futhi uyilungiselele kahle, uthole ukulungiselelwa okuningi okuchazwe esihlokweni (mahhala futhi unomphela).

Uma izethameli zakho zisatshalaliswe ngokwendawo ngempela (irediyasi engaphezu kwamakhilomitha angu-3000), ukusebenzisa i-CDN yekhwalithi kuzoba usizo ngempela. Kodwa-ke, udinga ukuqonda kusengaphambili ukuthi yini ngempela i-CDN yakho engasheshisa (bheka ithebula lamakhono nencazelo yawo). Noma kunjalo, ukusheshisa iwebhusayithi kusewumsebenzi oyinkimbinkimbi ongenakuxazululwa ngokuxhuma i-CDN. Ngaphezu kokuthuthukiswa okungenhla, izindlela eziphumelela kakhulu zokusheshisa zihlala ngemuva kwe-CDN: ukwenziwa kahle kwengxenye yeseva, izinguquko ezithuthukisiwe engxenyeni yeklayenti (ukukhipha ikhodi engasetshenziswanga, ukuthuthukisa inqubo yokuhlinzeka, ukusebenza nokuqukethwe, amafonti, ukuguquguquka, njll. )

Source: www.habr.com

Engeza amazwana