> What are some sites using TurboGears 2.0 in a production setting?
We have been using TG 2.0 at ShootQ (shootq.com). The marketing
website is PHP based, but the application is all TG 2.0. Its a very
large and sophisticated application that we still think is very easy
to use :)
> Is the site Forward Facing or a backend?
Forward facing with thousands of users.
> How is the site deployed? (mod_wsgi, mod_python, apache2, proxy,
> paster, etc)
We use paste behind nginx on our application servers, which are
then behind a hardware load balancer which also provides SSL
acceleration.
> What templating engine is used? (Genshi, Mako, Jijna, etc)
Genshi for most of the application with Mako for performance
sensitive areas.
> How have web designers reacted to the constraints placed with the
> templating engine you used?
We love Genshi, and wouldn't use anything else if it performed
faster. I would like to see this become a big focus of TG in the
future. A faster version of Genshi!
> Are static files served by TG2?
No, they are served by nginx.
> How much daily traffic are you seeing? (hundreds, thousands, tens
> of thousands)
Tens of thousands of requests.
> What type of hardware/hosting? (virtual, virtual machine,
> dedicated, cluster, etc)
We are hosted on Joyent accelerators, which are essentially highly
optimized Solaris Zones.
> What implementation issues have you run into?
At the time we started, there was no transaction manager in TG 2.0.
In addition, we use MySQL master-slave replication for redundancy
and load balancing. We ended up rolling our own WSGI middleware
which:
1. Wraps all POST and DELETE requests in a transaction
automatically,
and routes all SQL to the MySQL master.
2. Routes all non-transactional (read) requests to a MySQL slave.
3. Allows us to flag certain requests as requiring the next
request to certain URIs to read from the MySQL master. This
is implemented as a decorator and a utility function. This is
so that writes quickly followed by reads don't suffer from
replication delay.
This is all possible thanks to WSGI and Elixir/SQLAlchemy making it
very easy to do.
In addition, we ran into issues early on with static resources being
served up too frequently and how to deal with this. We ended up
rolling our own little helper functions to generate URIs for our
static resources that include a "revision stamp" from our source
control repository. We then utilize nginx to force this content to
be cached by the browser. This makes it so that most of our static
content is requested only once by the browser until we manually
force it to be fetched again by changing the "stamp".
> What steps have been taken to plan for the thundering herd?
We make use of memcached, have a highly redundant infrastructure,
and have multiple instances of the application on each application
server, plus multiple application servers behind a hardware load
balancer.
We can scale horizontally by adding application servers and MySQL
slaves, and vertically by "turning up" the resources available to
our virtualized servers. In addition, most services run on their own
server (we have over 9 servers we currently run on).
We make use of memcached to cache intensive data like reports, and
have written a monitoring system that alerts us when resource usage
on our servers exceed a certain threshold. In addition, this system
has an OS X dashboard widget we implemented that allows us to see
the current status of all processes and resource usage across our
servers at a glance.
We also make use of Amazon S3 to keep user-generated content out of
our systems and our database, which allows us to scale up to many
hundreds of thousands of users without any concern.
> In particular, I notice shootq as a TG2 production site, but, they
> appear to run cakephp on the forward facing site and I assume
> they are using TG2 for the backend. Any input as to why the
> application development uses two frameworks?
We do this exact thing because, honestly, a marketing website
is very content driven, and its really not a great use case for
TurboGears in my opinion. There's a great deal of immediacy to PHP,
and being able to quickly push an update to the website without
having to restart the paste processes is a big win.
> I have seen some input regarding using TG2 for facebook and I
> am wondering what sort of hardware and environment I'm going to
> have to deploy to run the application based on some real-world
> experience. I don't need to know the url of the sites, but,
> would like to get a little real-world data so that I can plan
> accordingly.
Take a look at Joyent. They offer free accelerators for Facebook
applications, last I checked. They are nice, as long as you aren't
doing heavy I/O.
Best of luck to you!
--
Jonathan LaCour
http://cleverdevil.org
http://shootq.com
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---