i see it andrew's way on this topic. i also think the precise approach of "how" single BOSHes or multiple is a detail that ideally the product team can leave for engineering to drive with product team input (as the result certainly affects the BOSH UX, system requirements, etc). ultimately, the product high-level requirement and priority for "high availability" is the main way we should express this. having said that, let me switch hats and opine some ideas that bounce around my head.
in my ideal view of a future BOSH, there is a very straight-forward way to get started with BOSH as a single node. nic, ferdy, dmitriy and pivotal's product that uses BOSH called Ops Manager all have experimented with various approaches:
* the current microbosh install from the bosh CLI approach [1]
* an Inception VM Image that has everything needed to get the initial BOSH instance deployed (ferdy, nic and Ops Manager all have used this approach at times). this certainly simplifies some of the steps in the microbosh install
* a vagrant plugin [2] that uses vagrant with a bosh deployment management to have a guest VM get softrware using a bosh deployment manifest. dmitriy has some ideas about how we can use an approach like this to create inception VMs, stemcells, etc.
once you have this single node, it would be a good UX if BOSH instance were able to be expand itself to have multiple nodes to add high availability and scaling benefits. for example, when MicroBOSH first starts, there are many co-located components like a director database, NATS, health monitor, etc on the single node. since the CF MySQL release [3] is adding an HA MySQL, that is currently working on a multi-node deployment of MySQL with a recovery time objective of several minutes called "Durable MySQL" [4]. i can imagine having the single node BOSH, deploy an HA MySQL instance which is comprised of multiple nodes and some type of BOSH Errand which migrates data out of the co-located database into the HA MySQL database. similarly, i can imagine the single-node BOSH deploying multiple additional gnatsd instances and then turning off the co-located nats process. now this BOSH instance has a highly available database and a highly available messaging tier. use this pattern to finish breaking out the co-located components.
currently BOSH deploys new VMs for these activities. in a future world we can imagine BOSH reusing Diego to run both short and long running bosh processes such as NATS and MySQL HA components with constraints like "distribute instances of this process to separate hosts, ideally in separate AZs" and we can shift from a VM mindset to a Container mindset.
i'm done opining. it's going to take awhile to get somewhere like this, but that's what i've been thinking about.