Statikus publikálás nagy exporter gép nélkül

Statikus WordPress-publikálás skálázása Lambda-feldolgozókkal

A WordPress-kiszolgáló maradhat a forrásoldalak kiszolgálásánál, az exporter vezérli a feladatot, a párhuzamosítható feldolgozást pedig Lambda-függvények végezhetik.

WordPress forrás
      ↓ oldalak
Exporter vezérlő
      ├→ Lambda oldal-előállítás
      ├→ Lambda assetletöltés
      ├→ Lambda HTML-átírás
      └→ Lambda telepítés
             ↓
        S3 munkaterület → cél S3 → CloudFront

Hol fut a munka?

A vezérlő exporternek nem kell minden nehéz feladatot helyben elvégeznie

A Static Publisher eleve a WordPress/PHP folyamatán kívül futtatja a bejárást és a telepítést. Lambda-delegálással az exporter az oldal-előállítást, az assetek letöltését, a végső HTML-átírást és a telepítést is külön Lambda-feldolgozókra bízhatja.

WordPress / forrásoldal
   │
   │ kiszolgálja a kért nyilvános oldalakat
   ▼
Exporter vezérlő
   │ kezeli a sort, biztonsági és részleges publikálási
   │ döntéseket, manifestet, újrapróbálást, naplót és állapotot
   │
   ├─ oldalcsomagok ─────→ Lambda + Chromium ─┐
   ├─ assetcsomagok ─────→ Lambda ────────────┤
   ├─ átírási csomagok ──→ Lambda ────────────┤→ S3 munkaterület
   └─ telepítési csomagok → Lambda ────────────┘      │
                                                       └→ cél S3 → CloudFront

Mi korlátozza továbbra is az oldal-előállítást? Az oldalt előállító Lambda-feldolgozók továbbra is lekérik az oldalakat a WordPress forrásból. A nagyobb párhuzamosság ezért nem teszi korlátlanná a forrást: a WordPress kiszolgálási kapacitása, a Lambda-korlátok és a célrendszer teljesítménye továbbra is számít. Az assetkezelés, átírás és telepítés viszont nem terheli ugyanígy a WordPresst.

A publikálás menete

A számítási kapacitás csak akkor fusson, amikor tényleg publikálás történik

A worker modell elválasztja a folyamatosan elérhető szerkesztői rendszert a publikálás rövid ideig szükséges feldolgozási kapacitásától.

  1. A WordPress csak sorba állítja a feladatot — A WordPress tárolja a beállításokat és a publikálási kérést. A PHP nem futtatja a Node exportert és nem közvetíti a telepítési adatforgalmat.
  2. Az exporter vezérli a folyamatot — A vezérlő felosztja a munkát, alkalmazza a biztonsági és részleges publikálási szabályokat, kezeli az újrapróbálást és a folyamat állapotát.
  3. A feldolgozás csomagokban kerül Lambdára — Lambda-függvények állíthatják elő az oldalakat, tölthetik le az asseteket, írhatják át az S3-ban lévő kimenetet és másolhatják a kész fájlokat a célhelyre. Egy meleg Chromium-folyamat több oldalt is feldolgozhat egymás után.
  4. A kész kimenet S3-ban marad — Teljes delegálásnál az elkészült HTML és a letöltött assetek az S3 munkaterületén maradnak, ott történhet az átírás, majd közvetlen S3→S3 másolással a telepítés. A vezérlőnek nem kell mindent visszatöltenie és újra előkészítenie.

Mikor változtatja meg a Lambda-delegálás az infrastruktúraigényt?

Delegált feldolgozás

Akkor hasznos, ha a publikálás rövid, párhuzamos terhelési csúcsokat okoz

  • Nem szeretné az exporter gépét a legnagyobb publikálási feladatra méretezni.
  • Elég oldal vagy asset van ahhoz, hogy számítson a párhuzamos oldal-előállítás, letöltés, átírás vagy telepítés.
  • A számítási költség inkább a tényleges publikálási munkát kövesse, ne folyamatosan fenntartott tartalékkapacitást.

Helyi feldolgozás

Maradhat az egyszerűbb modell, ha egy exporter gép bőven elég

  • A webhely kicsi, és a publikálási idő már most elfogadható.
  • A WordPress forrás nem tudna érdemben több párhuzamos oldalkérést kiszolgálni.
  • Egyszerűbb egy folyamatosan futó worker gépet üzemeltetni, és nincs szükség külön Lambda-környezetre.

Gyakori kérdések

Lambda-delegálás a Static Publisherben

A Lambda-delegálás teljesen leveszi a terhelést a WordPressről?

Nem.

Van még szerepe az exporternek delegálás után?

Igen. Ő marad a vezérlő: kezeli a feladatsort, a biztonsági és részleges publikálási döntéseket, a manifestet, az újrapróbálást, naplózást, gyorsítótár-frissítést és a végső feladatállapotot.

Kell minden publikáláshoz erős VM?

Nem. A vezérlő viszonylag könnyű maradhat, mert a delegált feldolgozási fázisok csak a feladat idejére használnak Lambda-kapacitást. A tényleges költséget és sebességet továbbra is a beállított feldolgozók, az AWS-korlátok és a forrásoldal kapacitása határozza meg.

Mi történik a fájlokkal teljes delegálásnál?

Az elkészült HTML és a letöltött assetek az S3 munkaterületén maradnak. Az átírás ott végezhető el, a kész objektumok pedig közvetlenül S3-ból másolhatók a cél S3-helyre.

Static Publisher architektúra

A WordPress legyen tartalomforrás, ne publikálási munkagép

A Static Publisher külön kezeli a szerkesztői WordPresst, a publikálást vezérlő exportert és az opcionális Lambda-feldolgozást. A termékoldalon ez együtt látható a teljes, részleges és célzott publikálással.