Hi,

I am in a process of developing a new version of my application.  The new
version must be able to have high availability and scale so I am evaluating
both hardware and software techniques so I can cope with the increasing
traffic and a SLA.

I already use Zend_Cache to reduce unnecessary calls to the database, use
Headers to cache elements (like images, css) in the browser side, separate
web server from the database server.

The idea so far is to have a "management" node which is a server with my
application/media files/admin scripts that will be used to add new content
and replicate this to several client nodes.   Each client node is a web
server + database used just for the reads.  The writes (a few) will be done
in the management node database.  The management node will replicate the
database to the clients and also the media files.

The management node itself is actually a replicated cluster (for
redundancy/ha) but the client nodes are regular ones.

So where does ZF enters here?  Well, the app will be itself developed using
ZF but I have some questions about:
a) database

Should I use regular databases?  In my case MySQL with the master - slave
situation.  Or should I try Mongo/Cassandra because of the auto-sharding
features?   This is something that I don't need right now but some sort
future planning.

Are there any plans to have those Nosql adapters for ZF 1.x?

b) content management

in my app I have to upload files (images) besides text.  The text is stored
in the database so If I stick with the database replication I'll be fine.
 But how about the other files?  I think I need to control which files have
been uploaded to the management node and if they were correctly replicated
to all the client nodes.

Since the database changes are small (in size) when compared with the media
files I think that ideally I should wait until the files are replicated
before the database is replicated (or at least that record).

Is this reasonable?  Should I try to do this (or any other approach) from ZF
or use another tool?

For the replication of the files I am considering some sort of queue to
generate a list of files and call rsync to do the actual transfer.

c) cache management

in a similar situation when I add/modify/delete a content I'd like to signal
each client node that they should "invalidate" that cache object (if they
have)

d) Which version use?

The development will begin in up to three months and probably last for six
more months after that.  So should I start using the ZF 2.0-dev or is it in
too early stages?  This will be the first time that I'll have the
opportunity to start from scratch so I'll probably have to maintain this
code base for at least 5 years...

e) CDN

This is probably OT (so feel free to reply me directly) but I am looking for
companies that I could host the servers (client nodes) and/or that could
provide a 'director' service, redirecting the requests to the closest active
client node (so I can add new nodes or remove for maintenance).

Regards.

Reply via email to