This task describes plans for the Phacility cluster, and is intended to give existing and potential customers some technical insight into planned features.
We need to do a significant amount of work before we're ready to deploy private clusters. There's no timeline on any of this yet and all of it is subject to change, but conversations about this have started to come up more frequently so I wanted to provide some details about our thinking.
What are private clusters?
The current Phacility instance offering generally works well for smaller installs (in the realm of 10-ish users) but there are a number of features we'd like to be able to offer to large or growing installs (roughly, above 50 users). These include:
- Unlimited users.
- Domain whitelabeling (host your instance at phabricator.mycompany.com instead of mycompany.phacility.com).
- More control over availability, clustering, and regional deployment (so east-coast companies can be hosted on the east coast).
- Support for instance-specific login mechanisms (LDAP, "only Google", etc) that we can't really provide with a shared login flow.
Ideally, we also like to provide a higher level of access and customization, although these are probably farther-future features:
- Possibly, some level of greater access to data, hosts, logs, configuration, etc.
- Possibly, some level of ability to run custom code and control when upgrades occur.
To provide these features, we tentatively plan to offer "Private Clusters" once installs outgrow shared instances. They would look something like this:
- Your install moves from the shared cluster to a dedicated private cluster.
- Private clusters have a minimum of two hosts (primary + replica).
- Hosts can be allocated in any AWS datacenter, so you can put your primary closer to your offices if you aren't on the west coast of the US for better performance.
- As you continue to grow, you can add hosts to improve performance or expand to multiple geographic locations.
- Pricing changes from $20/user/month to $500/host/month. This means:
- At 50 users, the cost of a shared instance or a private cluster are the same ($1,000/month), so you can upgrade to a private cluster for free.
- Adding unlimited numbers of users no longer affects your costs.
- Because private cluster will have dedicated hardware, we can support whitelabeling, custom logins, etc., and explore providing greater access to the hardware and software in the future.
- Except for new features and lower costs, this looks just like the current instances do: we continue to manage and maintain everything for you.
How evil is this?
This plan is probably not very evil. We expect this to be strictly better for larger installs: more features for less money.
Ideally, we'd offer these features to all installs, but the minimum hard cost of a private cluster is significantly larger than the revenue a small install generates. Since we like money, we can't spin up multiple dedicated hosts and an SSL-terminating load balancer for every 1-user test instance.
As installs get larger we can absorb these hard costs more easily, and support costs don't really continue to rise linearly above 50 users. Private clustering may actually reduce our support costs for these larger installs, as many questions we field are related to features which we can only support through private clusters.
Because Phabricator is open source, we also compete with ourselves at the high end. Large installs always have the option of leaving the cluster and self-hosting, and as long as costs scale per user there will be some point at which hosting on Phacility stops making sense from a cost perspective. Switching instances to unlimited-users as they hit 50 users removes this pressure, and may also make us more attractive for large installs currently using software which has per-user pricing.