Deployment notes

The intended deployment environment is a pair of 2GB Linux VPS instances, connected with a software load balancer. I initially attempted to deploy this on AWS, but I quickly became frustrated with the amount of, at least what I perceive as, attempts to lock me into AWS. The first annoying thing was attempting to get two suitable instances running against an AWS elastic load balancer. First I had to create two instances in separate availability groups in the same region, but different subnets in the same VPC. I spent a whole day trying to figure out how to get both subnets configured to access the Internet. (you need to become an expert at the AWS approach to security)

Despite both subnets being in the same VPC, I needed to update the routing table to allow 3306 (MySQL replication) traffic between the two. When I finally got that working, the final straw was when I was presented with a domain instead of an IP address for my load balancer. (Which could be rectified by switching my DNS service over to Amazon)

I had a much easier time using Linode. I was able to easily and safely connect, one instance in Dallas with the other in Newark binding to the private network providing at least as much security as AWS.

I also like how Linode offers support for Ubuntu which has the best ZFS support for Linux. It's interesting, many people think Ubuntu is unsuitable for a production server, but the MySQL 5.6 recommends ZFS for high availability.

As far as deployment configurations, it is recommended if you have some sort of high availability master/master (slave that can become a master) configuration, that both instances be in the same location, as the write synchronization will be your bottleneck.

With some careful configuration you should be able to run a decently designed/configured Django site on the same 2 2GB instances. If you have a lot of traffic, you probably should put PicoEvent on it's own two instances, it's not that expensive, and will support almost any website.

For scaling beyond that, it's best to invest in some dedicated servers for your write traffic. Offsite (possibly cloud based) read-only replica(s) will allow for horizontal scaling of Analytics. Make sure you configure your MySQL cluster so that the read only replicas don't have to be synchronized before the commit can finish.

Of course, using the Kinesis integration might be your best bet for advanced analytics with limited resources.

Technical Support