How to provision service instances on the private cloud, public cloud and the data center
- Ops: For the sake of this discussion... What do you mean when you say "private cloud, public cloud and data center"?
- Cloudify: A data center is a bunch of machines that are running most of the time. It could be a bare-bones data center or a virtualized data-center. A private cloud is a data center that has an API for provisioning machines on-demand. It takes away the need to manually decide which VM runs on which physical machine for which user. A public cloud is like a private cloud, but each machine is billed by the hour.
- Ops: Ok, so how do you provision service instances to machines?
- Cloudify: The simplest scenario for clouds is to start a new virtual machine before an instance starts, and stop the virtual machine after an instance stops.
- Ops: And what if I don't have a cloud?
- Cloudify: In that case the machines are always running, and the instance is started on a machine that is not used by any other instance. When the instance is stopped the machine becomes vacant (and another instance can use it).
- Ops: On a public cloud I am billed for each machine by the hour. If I use a machine for only 20 minutes and start a new machine for 20 minutes, I pay double the price.
- Cloudify vFuture: In that case, we use a mixed strategy. Before a new instance is started, look for a vacant machine. If there is no vacant machine start one. When the instance is stopped the machine becomes vacant (and another instance can use it). The machine is left vacant until its hourly billing period is over and then it's stopped.
- Ops: So while it is vacant, if I start another instance then it will not start a new machine, but rather use the existing machine.
- Cloudify vFuture: Correct. This time sharing mode saves money. The downside of this is that when the instance is stopped, the machine is not deleted and another instance could sniff it later.
- Ops: Got it. So if I don't start another instance the machine is left vacant until the end of the billing hour?
- Cloudify vFuture: Basically yes. You can define for each service the must-have number of instances, and nice-to-have number of instances. This time if a vacant machine is scheduled to go down in 20 minutes, (and there is no must-have instance) a nice-to-have instance will use the machine for the remaining 20 minutes.
- Ops: And what about multi-tenant scenarios?
- Cloudify vFuture: Each service instance runs in a separate process (instead of a separate machine). An instance can share the same machine with other processes as long as they serve the same tenant. In a loose security environment you can allow different processes that serve different tenants to run on same machines.