Azure Content Delivery Network (CDN) umožňuje nejen rychlejší přístup k typickému „těžkému obsahu“, ale dnes nově i ke statickému obsahu webových stránek, jakým mohou být např. kaskádové styly. V následujících odstavcích se pokusím jednak službu v nové verzi představit a jednak ukázat na praktickém příkladu, jakých výsledků lze dosáhnout.

Služba Azure CDN funguje od uvedení platformy Windows Azure na trh. Její možnosti byly původně mířeny na rychlou distribuci objemného obsahu, jakým může být video, audio nebo velké obrázky. Jejich distribuce z jednoho místa v internetu provází dva obecné problémy:

  1. Konzument se může nacházet geograficky velice daleko
  2. Distribuční místo nemá dostatečnou rychlost připojení pro obsloužení většího množství konzumentů

Oba tyto problémy vedou jednoduše k neúnosně vysoké odezvě na požadavek stažení obsahu případně až nedostupnost služby. Ve výsledném efektu odchod klienta od služby.

Jak Azure CDN funguje

Azure CDN je tvořena řadou tzv. hraničních serverů (edge server), které fungují jako transparentní cache. Servery jsou co nejvíce rovnoměrně rozmístěny po světě, aby byly nejblíž koncovým uživatelům. V současné chvíli jsou tyto hraniční servery rozmístěny v níže uvedených lokacích. Jejich počet však během roku průběžně narůstá.

Region USA

Region EMEA

Region Asie, Pacifik a Jižní Amerika

Ashburn, VA

Amsterdam, NL

Hong Kong, HK

Bay Area, CA

Dublin, IE

São Paulo, BR

Chicago, IL

London, GB

Seoul, KR

San Antonio, TX

Moscow, RU

Singapore, SG

Los Angeles, CA

Paris, FR

Sydney, AU

Miami, FL

Stockholm, SE

Taipei, TW

Newark, NJ

Vienna, AT

Tokyo, JP

Seattle, WA

Zurich, CH

Doha, QT

 

CDN následně funguje tak, že při prvním dotazu, který pochází nejblíže daného uzlu CDN, se obsah přenese přímo z datového centra a je zároveň uložen na daném hraničním serveru. Při dalším dotaz na stejný obsah jsou data přenesena z odpovídajícího uzlu CDN. To, který uzel CDN dotaz obslouží, je automaticky řízeno logikou CDN a pro všechny zúčastněné (klient, administrátor, programátor) je zcela transparentní. Fakticky ale nemusí jít o geograficky nejbližší uzel, neboť záleží na síťovém připojení klienta. Pokud jsem např. v Praze připojen přes VPN do Irska, budu obsloužen uzlem v Dublinu.

CDN pro data v Azure Storage

Služba CDN od svého počátku funguje jako cache pro libovolná data uložená v Azure Storage, konkrétně v blob úložišti. Zde jsem v podstatě schopen ukládat libovolná data. Často jsou jako příklady uváděny různá multimediální data, ale mohou zde být uloženy i jakékoli jiné soubory a CDN síť může dobře sloužit jako kvalitní distribuční síť pro novou verzi aplikace nebo update, který je v krátké době stažen velkým množstvím uživatelů.

Použití CDN pro distribuci dat a Azure Storage je technicky velice triviální operace a vyžaduje následující kroky:

  1. Uložení dat do Azure Blob Storage
  2. Povolení CDN podpory pro Azure Blob Storage (na provisioning portálu)
  3. Nahrazení původních odkazů na Azure Blob Storage odkazy do CDN

Windows Azure Blob service URL: http://MujUcet.blob.core.windows.net/music/

Windows Azure CDN URL: http:// <identifier>.vo.msecnd.net/music/

Na následujícím obrázku vidíte měření, které jsme provedli se společnosti Trask solutions pro jednoho z našich zákazníků. Cílem bylo ověřit, jak bude ovlivněna latence při stahování bitmapového obrázku z různých geografických lokací při uložení zdroje na různých místech. Těmito místy byly:

  • Lokální web server umístěný na kvalitní datové lince v ČR (červeně)
  • Windows Azure Blob Storage služba v datovém centru v Evropě (modře)
  • Windows Azure Blob Storage služba v datovém centru v Evropě se zapnutou CDN službou (zeleně)

clip_image002

Je zřejmě, že se zapnutou CDN dojde až k 10 násobnému snížení latence, která se pohybuje v průměrné hodnotě do 200 ms.

CDN pro hostované služby

Celkem nedávno, po novém roce, jsme uvolnili podporu CDN i pro obsah hostovaných služeb. Prakticky může jít o libovolný obsah, který je umístěn na web nebo worker rolích. Ať je přímo o ASPX stránky nebo třeba již zmíněné soubory s kaskádovými styly. CDN si ale klade následující podmínky na obsah:

  • Obsah by měl být statický
  • Obsah musí ležet na produkční nasazení (ne staging)
  • Služba musí poskytovat obsah před HTTP protokol na portu 80, případně přes zabezpečený HTTPS
  • Obsah, který se má cachovat v CDN, musí být uložen v adresáři /cdn

Po zapnutí CDN pro hostované služby se také změní URL odpovídajícího obsahu, obdobě jak tomu bylo u blobů.

Windows Azure hosted service URL: http://MojeSluzba.cloudapp.net/cdn/music.aspx

Windows Azure CDN URL: http://<identifier>.vo.msecnd.net/music.aspx

Prakticky lze v CDN cachovat i parametrizovaný obsah, kde URL může vypadat např. následovně:

http://<identifier>.vo.msecnd.net/chart.aspx?item=1

Další možnosti a nastavení

Mezi časté dotazy patří možnost nastavení vlastní domény pro CDN. Tato možnosti je k dispozici a konfigurace se provádí ve Windows Azure provisioning portálu.

Druhou otázkou je řízení životnosti v obsahu na CDN serverech. Obecně platí, že ji lze přesně řídit a v praktické rovině pak záleží, zda cachuji data z Azure Blobu nebo soubory z hostovaných služeb. Praktické návody lze najít na dokumentaci na MSDN.

Závěrem bych doporučil přečíst i best practices proužívání služby.