Architektura publikace v Sitecore

Systémy pro správu obsahu umožňují klasicky připravit změny a vypublikovat je, když je potřeba. Co když ale potřebujete více? Co když je potřeba připravit změny a poslat je ven na více serverů kolem světa? Vítejte ve světě authoringu a delivery.

Jednou ze základních vlastností, kterými Sitecore disponuje, je pokročilá práce s vydáváním obsahu. Sitecore je navržen tak, aby dokázal pracovat jak v single-instance módu (tedy vše zařizuje jediný server), tak v multi-instance módu (tedy tak, že má vícero specializovaných serverů).

Single instance režim má tu výhodu, že jeho pořízení je finančně výhodnější – licencuje se pouze jedna instance. Nevýhodou je nemožnost škálovat, nemožnost load-balancingu a nemožnost odlišit prostředí pro autory od prostředí pro návštěvníky. Ale je to zcela jistě krok k tomu, Sitecore rozjet a používat.

Všechny tyto neduhy jsou naopak vyřešeny vícero instancemi. Sitecore tradičně pracuje se dvěma druhy instancí:

  1. Content Management (také známé jako Authoring), neboli “CM”
  2. Content Delivery, neboli “CD”

architektura-publikace

V Sitecore 7.2 se nově oběvila i možnost využít Publishing instnci pro parallel publishing, o čemž bude řeč níže.

Jak se publikuje obsah?

Systém může dostat pokyn k publikaci několika různými způsoby.

  1. Manuální publikace umožní správci obsahu s dostatečnými oprávněními zveřejnit kdykoli jakoukoli část obsahu, včetně celého webu.
  2. Automatická publikace umožní nastavení přesně kontrolované akce publikace. Ta pak může probíhat periodicky, např. každou hodinu nebo jen o půlnoci. V tomto případě lze autorům nechat publikační možnost nebo ji odebrat a nechat publikaci přímo na systému.
  3. Vyvolání publikace přes ukončení workflow umožňuje nastavit workflow v Sitecore takovým způsobem, že autoři nemají šanci obsah publikovat. Ten musí nejprve projít všemi prvky workflow (typicky schvalovacím řízením) a až po dovršení tzv. konečného stavu workflow je obsah připraven k publikaci. K té muže dojít manuálně vyvolanou akcí nebo automatizovaně ihned po dosažení konečného stavu workflow, případně se čeká na běh automatické publikace.

Co se děje při publikaci?

Sitecore pracuje nativně se třemi (klasickými SQL) databázemi – Core, Master a Web. V databázi Core se nachází vše, co je potřeba pro běh a nastavení Sitecoru jako takového. V databázi Master se nachází veškerý obsah – všechny verze obsahu a všechny jazykové verze, včetně vydaného a nevydaného obsahu – k tomuto obsahu je možné se dostat výhradě z prostředí Authoringu. V databázi Web se nachází pouze vydaný obsah. Ten je k dispozici pro Content Delivery servery a je prezentován návštěvníkům. Databáze Web tedy obsahuje subset dat, které se nacházejí v databázi Master. Více o databázích a dalších aspektech Sitecore architektury se můžete dočíst ve článku Architektura Sitecore a její rozšiřitelnost.

Proces publishingu tedy nedělá nic jiného, než že všechny items, které jsou připraveny k publikaci/publikovány prostřednictvím jedné z výše uvedených metod a zkopíruje je do databáze Web. Tímto okamžikem je takto publikovaný obsah dostupný veřejně na Content Delivery serverech.

Publikovaný obsah přemazává původní obsah databáze web a umožňuje tak i “odpublikovat”.

V případě kompromitování webu externím útočníkem a změny jeho obsahu, je pak možné web jednoduše znovu vypublikovat a veškeré změny na front-endu se opět přepíšou správným obsahem.

Proč existuje takové množství variant publikace?

Sitecore je velmi flexibilní platforma, kterou lze nasadit do různorodých prostředí z hlediska velikosti a procesů. Systém je připraven na ovládání jediným správcem, který řeší vše, stejně tak jako na týmy správců různých rolí v různých zemích světa. Vše se odráží od velikosti nasazeného řešení a složitosti business procesů v organizaci. Sitecore tedy umožňuje modelovat publishing přesně na míru danému řešení.

Každá publikace má na starosti kromě přesunu obsahu mezi databázemi i řadu dalších operací – typicky vytváření nových vyrovnávacích pamětí (cache), indexaci nového obsahu pro vyhledávání atd. Ve velkých instalacích Sitecore tedy bývá publishing zpravidla řešen automatizovaně v intervalech a mimořádný publishing bývá řešen separátním procesem.

Na co použít Publishing Instanci?

Sitecore umožňuje publikovat klasicky z CM instance, ale existují případy, kdy je lepší publikaci přenechat samotné instanci. Taková instance pak může sloužit také jako CM nebo čistě jako publikační, bez možnosti authoringu. Jedná se tedy pouze o obslužnou instanci.

Publishing instance se používá v okamžiku, kdy Sitecore pohání celou řadu webů, které vyžadují častou publikaci, nebo při časté publikaci větších objemů dat. Při správném nastavení je pak možné využít i tzv. Parallel publishing, tedy metodu paralelizace publishingu, která plně využívá všech prostředků na serveru. Publishing instance jsou většinou součástí enterprise instalací neboť se za publishing instanci platí samostatná licence na CM instanci a není tedy vhodná pro všechny druhy nasazení.

2 thoughts on “Architektura publikace v Sitecore”

  1. Parallel Publishing — jak to teda funguje? A plánuje se něco o (re)indexaci při publishingu?

    1. Honzo, Parallel publishing je vlastnost uvedená v Sitecore 7.2. Standardní publikace Sitecore funguje tak, že je do fronty “Publishing queue” zařazeno vše, co má být publikováno. Fronta pak zpracovává na aplikační úrovni (tedy v CM instanci) items, které mají být publikovány. Data o items se přitom berou z Master databáze. Při intenzivní publikační činnosti se tedy může stát, že Publishing queue naroste a je potřeba čekat neúměrně dlouho na publikaci. Ve standardním režimu publikace navíc aplikace nevyužívá naplno výkon vícero procesorů serveru. Toto je naopak řešeno právě paralelizací procesu publikace, který využívá plně multithreadingu a tedy i více procesorů serveru. Nastavení Parallel publishingu je potenciálně rizikové v instalacích, kde není dedikovaná publishing instance a vše obstarává pouze jediná CM instance, protože se pak snadno může při nevhodném nastavení stát, že při publikaci bude CM instance neresponsivní pro standardní použití – tedy jako prostředí pro authoring obsahu. Bottleneck může v tomto případě tvořit i databázový server, který by byl zatížen i jinými úlohami. Chce to tedy pečlivou kalibraci, ale podle Sitecore lze použitím Parallel publishingu dosáhnout i 25x rychlejších časů publikace.
      Co se týče indexace obsahu, pak ta není Parallel publishingem dotčena. Vývojáři mají stále v základu 5 indexovacích strategií, které mohou dle libosti ještě dále rozšiřovat dle potřeby.

Leave a Reply

Your email address will not be published. Required fields are marked *