44. Buildout II: Getting Ready for Deployment

44.1. The Starzel buildout

Have a look at the buildout some of the trainers use for their projects: https://github.com/starzel/buildout

It has some notable features:

  • It extends to config- and version-files on github shared by all projects that use the same version of Plone:

    [buildout]
    extends =
        https://raw.githubusercontent.com/starzel/buildout/5.1.2/linkto/base.cfg
    
  • It allows to update a project simply by changing the version it extends.

  • It allows to update all projects of one version by changing remote files (very useful for HotFixes).

  • It is minimal work to setup a new project.

  • It has presets for development, testing, staging and production.

  • It has all the nice development-helpers we use.

Another noteable buildout to look for inspiration:

44.2. A deployment setup

A ‘normal’ deployment setup could look like this:

ZEO-Server   ->   ZEO-Server (ZRS)

   / | \

ZEO Clients (as many as you want)

   \ | /

Load balancer (nginx or haproxy)

     |

   Cache (varnish)

     |

Webserver (nginx)

Deploying Plone and production-setups are outside the scope for this training.

44.3. Other tools we use

There are plenty of tools that make developing and managing sites much easier. Here are only some of the ones you might want to check out:

  • Fabric (managing sites)
  • Sentry (error monitoring)
  • Ansible (managing and provisioning machines)
  • Greylog, ELK (logging)
  • Nagios, Zabbix (server monitoring)
  • jenkins, gitlab-ci, travis, drone.io (Continuous Integration)
  • piwik (statistics)
  • gitlab (code repo and code review)
  • redmine, taiga, assembla (project-management and ticket-system)