How to build a private cloud service on Linode?

Hi! I'm not a Linux sysadmin and so Linode support suggested posting my question on the Forum. We want to scope the work below and hopefully find some guidance to implement it or work with an existing skeleton outline or resource a sysadmin. The use-case is:

Zak is the lead dev at Frederico, Inc., who want to test and deploy a MyStartup cloud service. Zak creates a paid-for Account on the MyStartup site. Three account sizes are available - Small, Medium and Large. Each account includes a Test VS and Deployment VS. Zak selects the Medium account and the Test VS is automatically provisioned with the MyStartup programs and a web server. During the development phase, Zak and his devs will upload (test) data to their Test VS multiple times. After completion of application development and testing, Zak provisions the Deployment VS with live data. The Test VS continues to be used for ongoing development.

The Frederico app, which is used by multiple consumers, calls the Fredirico MyStartup service which returns results. The volume of calls from the app is dependent on Frederico's business. Good VS sizing estimate can be determined from Frederico's uploaded data size. Both the Test and Deployment VS are the same size wrt memory and storage. The Test VS and Deployment VS are priced separately. Frederico can cancel their MyStartup account at any time.

The devs need a dashboard to create an account, provision Test and Deployment VS servers, and upload data to both. MyStartup needs a dashboard to manage services for Frederico and all other customers.

That's about it. Be good to hear from you.

Best …

Dinesh

3 Replies

There isn't any technical reason that I can see why you can't implement what you've described with Linode using the Linode API; provisioning and configuration of linodes can be entirely automated, and stackscripts can be used to automate configuration on initial deployment (although obviously this can also be automated directly rather than through Linode).

I don't know what existing sort of software is available that might help you build a solution using this, although Linode is supported by Apache libcloud, and you can get a list of apps/platforms that support libcloud here:

http://libcloud.apache.org/whos-using.html

One caveat to note is that, while you can spin up additional capacity to a properly designed live system rapidly, that definition of rapidly is "a few minutes" and not "instantly"; if you pre-configure a linode as a template and then spin up additional instances by cloning it, it will take a few minutes to copy the disk image to the new host and boot up (and then tweak any config options that should be unique between machines). Also it should be noted that linodes are pro-rated to the nearest day; you can create and destroy a linode at any time, but the minimum you'll be billed for it is for one full day of usage. As such, it makes sense to spin up linodes during the day whenever required to handle load, but to spin them down only once a day if they're no longer required.

Thanks for getting back Guspaz, and good to hear that technically it can be implemented using the Linode Api's and stackscripts.

Spin-up capacity:

Spinning-up additional capacity taking 'a few minutes' should not be a problem. At this stage of MyStartup's development, a customers instance will be pre-configured; provisioning of a Deployment VS would be expected to take a few minutes; it is possible that a customer initially selects a Small option for example, but on uploading test data it requires re-sizing to a Medium option but that should be easy to deal with.

Data updates to Deployment VS:

Forgot to mention this in the requirements. The customers uploaded data in a live Deployment VS will need to be updated on a frequency dependent on their needs. A hot data-swap will be needed as and when.

Resources and time:

What is a reasonable estimate of how long it would take to build the required service for a seasoned Linux SysAdmin? We don't need a Porsche-level service from day one but the essentials to bring on a dozen beta customers and continue the build-out from there.

I can't really help you in terms of resources or time involved, I've never built such a system. Linode provides a pretty flexible generalized system which can be controlled by an API. You can explore the API reference to see what kinds of things it can accomplish. You can create new instances, delete instances, clone instances, configure instances, etc. That's the core functionality, actually building a platform around that is up to you (or the existing platform if you find one). Linode gives you the means to automate their side, and your software would need to handle creating new instances, configuring them, populating them with data, etc.

The process might go something like, the customer provisions a small-sized deployment, your software creates (say) five new linodes, specifies stack scripts that put the right software and configuration on the new linodes, and then your software uploads the customer data to the newly created linodes (or the stack script could pull the data from somewhere as part of the config process). If the customer needs more capacity, your software can create additional linodes and configure them as required.

You don't have to use stack scripts or such things to do the configuration, there are other tools for automating configuration in a cloud, like Puppet or Chef. HoopyCat can probably talk more about those.

I guess what I'm trying to say is that Linode provides the basic raw resources to drive your platform, but you've got to put it all together and make it work.

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct