< Zpět na články

Jak na migraci do moderního headless CMS

Martin FoldynaMartin Foldyna
26. září 2024

S rostoucí popularitou headless CMS se stále častěji objevuje otázka, jak přejít z tradičních systémů jako WordPress, Joomla nebo Drupal na moderní headless řešení. Tento proces však nemusí být vždy jednoduchý. V tomto článku se podíváme na všechny kroky potřebné k úspěšné migraci, včetně praktických zkušeností z migrace našeho firemního blogu z WordPress do Strapi.

Tradiční vs. Headless CMS

Když mluvíme o správě obsahu na webu, většina z nás si vybaví tradiční systémy pro správu obsahu (CMS), jako jsou WordPress, Joomla nebo Drupal. Tyto platformy se staly základem pro miliony webových stránek po celém světě a poskytují robustní nástroje pro tvorbu, publikování a správu obsahu. Avšak s rostoucí potřebou flexibilnějšího a škálovatelnějšího přístupu k webovým aplikacím se objevila nová generace CMS známá jako "headless" CMS. Jaký je tedy rozdíl mezi těmito dvěma přístupy?

Tradiční CMS

Tradiční CMS, jako WordPress nebo Joomla, jsou tzv. „monolitické“ systémy. To znamená, že obsah, prezentační vrstva a administrační rozhraní jsou pevně propojeny do jednoho celku. Typicky nabízejí jednoduché WYSIWYG editory a instalovatelné pluginy, které umožňují uživatelům vytvářet a upravovat obsah přímo v administraci, přičemž výsledky jsou okamžitě viditelné na webové stránce.

Unnamed from Google Keep (1).png

Headless CMS

Na druhé straně, headless CMS představuje modernější přístup ke správě obsahu. Hlavní rozdíl spočívá v tom, že odděluje správu obsahu od jeho prezentace. Zatímco tradiční CMS spojuje obsahovou a prezentační vrstvu do jednoho balíčku, headless CMS poskytuje pouze backend a administrační prostředí pro správu obsahu. Konzumující aplikace pak přistupují k obsah prostřednictvím API. To znamená, že stejný obsah lze snadno zobrazit na webu, v mobilní aplikaci, na chytrých zařízeních nebo jakékoli jiné platformě.

Google Keep (1).png

Postup migrace

Náročnost migrace vždy záleží na struktuře dat v systémech, mezi kterými se migruje. Jedná-li se o Wordpress s pár příspěvky, který je potřeba zmigrovat jedna ku jedné do headless CMS, bude migrace velmi jednoduchá. Na druhou stranu, pokud migrujete tři instance Wordpress, kde každá instance obsahuje velké množství příspěvků a využívá několik pluginů, do jedné instance Strapi a při tom ideálně nechcete přijít o žádná data, může být migrace poměrně náročným procesem. Druhá varianta je přesně náš případ. Migrovali jsme tento blog, který zrovna navštěvujete, ze třech oddělených instancí Wordpress (jedna pro každou jazykovou mutaci) do jedné instance Strapi CMS.

Unnamed from Google Keep.png Postup migrace dat z WordPress do headless CMS.

1. Export dat z tradičního CMS

Jedná se asi o nejjednodušší krok migrace, jelikož touto funkcí je vybavena většina tradičních redakčních systémů. V našem případě stačilo přejít do nastavení WordPressu, kliknout na export obsahu a získali jsme (téměř) veškerý obsah z dané WordPress instance v jedno velkém souboru formátu XML.

2. Konfigurace a nasazení headless CMS

Jelikož v dalším kroku bude nutné už komunikovat s novým headless CMS, je potřeba nakonfigurovat a nasadit vybrané headless CMS. Tento krok obnáší také vydefinování si datových modelů a případné doinstalování podpůrných pluginů.

3. Migrační skript

Po nejjednodušším kroku, přichází většinou ten nejnáročnější krok. Tím je vyvinutí vlastního migračního skriptu pro převod dat mezi původním a novým CMS. Tento skript se kromě transformace formátu dat z tradičního na headless redakční systém, stará také například o převod url obrázků nebo o mapování relací. V našem případě řešil také například generování nových jedinečných identifikátorů příspěvků se zachováním existujících relací. Nebo jsme v rámci něj získávali data z pluginů, která nebyla obsažena v rámci vyexportovaných dat z tradičního CMS. Pro získání těchto dat nám nezbývalo něco jiného, než si “vyskrejpovat” vlastní blog. Jelikož Strapi neumí hromadný upload obrázků, staral se skript také o nahrání obrázků pomocí REST API.

Jak lze vidět, migrační skript je jádro celé migrace, které je unikátní pro logiku a datový model původního a nového CMS. Skript může být velice jednoduchý pouze pár řádkový kód nebo komplexní a rozdělený, pro lepší čitelnost, do několika souborů.

4. Import dat

Tento krok je možné provést také z migračního skriptu, my jsme k němu využili instalovatelný plugin do Strapi od třetí strany import-export-entries. Pomocí něj jsme mohli prostřednictvím JSON souborů, které vygeneroval migrační skript, importovat veškerý obsahu.

Závěr

Migrace z tradičního do headless redakčního systému může být úkol na jeden den nebo také několik týdnů, možná i měsíců. Ne vždy se vyplatí, ale když ji zhodnotím z našeho pohledu, určitě byla přínosná a to hned z několika stran.

Z hlediska správy kódu máme Strapi CMS nasazené na našich serverech a máme kompletní kontrolu nad databází. To stejné platí i pro konzumující frontendovou aplikaci. Blog máme implementovaný, jako podstránku našeho Gatsby firemního webu. Můžeme tedy využívat jednotný design systém. A když se rozhodneme změnit design webu, stačí nám udělat změny na jednom místě a zpropagují se i do blogu. To je podstatně příjemnější a udržitelnější, než oddělená custom šablona, která byla použita pro WordPress. Přechod na Gatsby nám pomohl dosáhnout také lepší hodnoty optimalizace pro vyhledávače na platformě Content king, kterou používáme k SEO analýze. Konkrétně tedy o 25.6 %!

Migrace přinesla přínos i pro náš marketing tým, kdy mohou spravovat kompletní obsah blogu z jedné administrace, a nemusí tak přepínat mezi několika aplikacemi. Jaké zkušenosti máte s migrací vy? Dejte nám vědět třeba na Twitteru nebo si o tom přijďte pokecat na další Ackee meets.

Martin Foldyna
Martin Foldyna
Frontend developer

Máte zájem o spolupráci? Pojďme to probrat osobně!

Napište nám >