19. Membership
● Login/Registration: z3c.form
● No membrane
● Dexterity member folder
● Sync between member profile and folder with
event handlers
● Behavior to adapt member properties
● Registration should/could go into Plone core?
21. Comments
● plone.app.discussion
● Complex custom workflow
● Blaming / editing / deleting comments
● 3 community moderators
● Most commented viewlet om front page
● About 330 new comments each day
● Allow/disallow discussion
– behavior => plone.app.dexterity
– dexterity support => plone.app.discussion 2.2x???
22.
23. Migration
● Zahlen
– 30.000 Artikel
– 25.000 Blogeinträge
– 20.000 Mitglieder
– 350.000 Kommentare
● Transmogrifier
● MySQL rel DB => Plone
● Tägliche, nicht-inkrementelle Migration
● Jenkins Job (über Nacht)
● Sehr viel mehr Arbeit als gedacht! Trotzdem lief alles sehr gut!
24. Performanz / Skalierbarkeit
● The Grinder
● Jenkins
● Identifizierung von Bottlenecks
– Diazo
– Catalog
● Warm-up Script für Neustart
25. Produktions Server
● Komplett virtualisiert
● Delivery
– Web Server: NGINX
– Caching: Varnish
– Load Balancing: with HAProxy
● 10 Workers
– 2 Kerne, eine Instanz
● 1 ZEO server
– Data.fs ~1.5Gb, Catalog.fs ~2 Gb, blobs ~1.7 Gb
● Monitoring: Munin
● Mailversand bei jedem Fehler, überall
26. Produktions Server
● plone.app.caching
● Speicherverbrauch der Worker
– Automatischer Neustart bei 97% Speicherverbrauch
– experimented a lot with cache settings
– no way to force a mem usage ceiling
– upgrade brings down slow instances...
● Sehr langsamer Start der Instanzen
– Automatisches Startup Skript um die Instanzen aufzuwärmen
– Läd die Startseite und alle darauf verlinkten Inhalte
– Dauer: ~ 15 Minuten
– HAProxy erkennt die Instanzen
27. Server Deployment
● 3 in-house and 4 production servers
● Alles ist virtualisiert
– Git, Jenkins, Monitoring, Backup
– pypi, Devtest Cluster, Staging Cluster, Demo Seiten
● Fabric
● ~150 fabric tasks
– vms lifecycle, lvm, firewall, nfs, users, ssh logins
– nginx redirects, updates, maintenance tasks
● 4 Fabric Kommandos sind notwendig um innerhalb von einer Stunde den
kompletten Stack aufzusetzen
● Einzige Interaktion: Passwörter setzen
28. Zusammenfassung
● Plone rocks!
● Inhaltsstruktur muss passen
● Workflows
● Wünsche:
– Member Profiles, Notifications,
Speicherverbrauch beschränken, Einfacherer Weg
lange Tasks auszuführen, ZODB Replikation