DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung...

37
DIE WORDPRESS-HERAUSFORDERUNG krone.at - learned lessons

Transcript of DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung...

Page 1: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

DIE WORDPRESS-HERAUSFORDERUNG

krone.at - learned lessons

Page 2: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Reichweite

5.174.628Unique ClientsÖWA Basic 02 2018

32.141.875Unique ClientsÖWA Basic 02 2018

99.504.198Page ImpressionsÖWA Basic 02 2018

Page 3: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Technische Fakten

~ 850.000Lines of Code

~ 1.8Deploys / Tag

4-6TB / tag

Page 4: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

● CMS aus dem Jahr 2001/2002

● Proprietäre closed source Script-Sprache

● Oracle Datenbank

● gigantischer Monolith

● skaliert schlecht

Ausgangssituation

Page 5: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Legacy!

Page 6: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Legacy!

Page 7: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Goal!

● Neues CMS○ von 0 auf! legacy support

● Offene Standards○ PHP, node, …

● Skalierbar○ 0 single-point-of-failures

● state-of-the art

● Oracle Lizenz einsparen

Page 8: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

New CMS

● self-made

● Typo 3

● Thunder

● Wordpress

Page 9: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

New CMS

Page 10: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Wordpress Evaluierung

● wp_postmeta

● coding standards and code quality

● MySQL

● Filters/Actions

Page 11: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Der Plan

Page 12: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Der Plan - Docker

Page 13: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Der Plan - Microservices

● Nie wieder Monolith

● Jeder Teil - austauschbar

● Kein kompletter rewrite

● learn and adapt

Page 14: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Der Plan - caching Onion

● CDN - Akamai

● Origin - Varnish

● Redis

● Database

Page 15: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Der Plan - The Split

● BACKEND○ WordPress

■ admin■ json

● API○ Symfony

● FRONTEND○ Symfony

Page 16: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Der Plan - MySQL

● NDB Cluster -> Fail!

● Master -> Slave, Slave, Slave○ DB-dropin○ insert -> Master○ select -> Slave

● BACKUP Node

Page 17: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

DB Connections 7 tage

Page 18: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Der Plan - CI/CD

● Build und deployment via GitLab-CI

● Reproduzier/Rebuild-bar

● Revertbar

● Confidence

● Rolling Release

● Slack

Page 19: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Metrics

Page 20: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Metrics - Insights

● Grafana (influxdb, telegraf)

● Sentry

● Blackfire

● netdata

Page 21: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Biggest Issue - WPQuery: your worst enemy!

● postmeta exploded (12.772.835 records)

● WPQuery runtime > 90s

● wp-admin unbenutzbar

Page 22: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Biggest Issue

Page 23: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - WPQuery vermeiden

● ElastiPress Plugin○ ElasticSearch○ + Anpassungen für Wildcards usw.

● Plugin-flattable○ pro Post-Type eine flache Tabelle

■ mit Datentypen (date, int usw.)■ statt WPQuery - direkt $wpdb verwenden

○ OSS: http://github.com/KroneMultimedia/plugin-flattable

Page 24: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - flattable

Page 25: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - flattable

Page 26: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - flattable

Page 27: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - flattable

Page 28: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - flattable

Page 29: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - flattable

Page 30: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - Blockify

Ein riesiger html string, im legacy system!

● native-app

● externe partner

● ist ein bild vorhanden?

Page 31: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - Blockify

Page 32: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - Blockify

● Strukturierter Inhalt○ JSON○ utf8○ block basiert○ html nur in limitierter form (<b>,<i>)○ jede box kann custom option values haben.

Page 33: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - Blockify

Page 34: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - Blockify

Page 35: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Lösung - Blockify

● Beispiel Blöcke○ Iframe○ Tinymce○ Image/Video○ Social (Facebook, Twitter usw)○ Content aus anderen bereichen.

Page 36: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

Das Gesamtergebnis

Page 37: DIE WORDPRESS-HERAUSFORDERUNG · Typo 3 Thunder Wordpress . New CMS. Wordpress Evaluierung wp_postmeta coding standards and code quality ... Kein kompletter rewrite learn and adapt.

WE ARE HIRING!Entwickler gesucht

[email protected]@hjanuschka