Easy scalability
Scaling Zope-based applications is easy and does not require changing the application code itself.
Zope supports application or infrastructure growth without any application code change. In the simplest setup you can configure Zope as standalone server processing incoming requests and accessing the database within the same Zope process - no additional moving parts needed. When you need to handle a lot more incoming requests or your machine becomes slow, you can scale your Zope application with additional servers.
ZEO - Zope Enterprise Objects
ZEO is a client-server technology that allows to split up the Zope front-end servers from the database server. The ZEO front-end servers talk to the ZEO server using the ZEO protocol. With this approach you can simply add more (cheap) ZEO front-end servers into your setup in order to scale your application and add a load balancer in front to distribute incoming requests.
Source: The Fnord Portal
ZEO allows you to scale on the backend side as well. In case of a performance bottleneck you can add additional ZEO storage servers and mount them into your ZEO front-end servers.
High availability
Redundancy and high availability can be key factors for mission-critical applications and websites. Those aspects are addressed in real-world applications by
- Load-balancing - incoming requests are distributed to a set of Zope front-end servers
- ZEO - the failure of a single Zope front-end server will not affect the overall functionality of your site. The load-balancer will detect the failure and remove the front-end server from the balancing process
- Replication of the ZEO storage server(s) - this can be accomplished either through Zope Replicated Storage (ZRS, commercial) or DRDB (on the block-level device) or using RelStorage and using the native capabilities of any relational database.
Performance
Like with any web-application, Zope can be fast or slow, which depends on the individual application's code and what it does. A key factor for Zope performance is caching. Within a typical Zope application, caching happens on various levels:
- on the ZODB database level with ZODB caches
- when using ZEO, database server responses are cached on the ZEO client side
- application-level caching
- Dedicated cache servers, typically a reverse proxy like Apache or Varnish performing caching on the HTTP level


