|
|
Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs
Page 4 of 6
Another approach to reliability in the cloud (besides retries and other approaches already discussed) is to execute duplicates of the same task in parallel. The task that completes first is accepted by the client, or the results of both are analyzed and one is chosen. This is illustrated in Figure 3.
Of course, not all code is idempotent and repeatable, often because it affects state of some sort. In such a case, the cloud platform needs to be able to deal with that, preferably in an application-configurable manner. You'll see some possible solutions later in this article.
Even as developers, we are affected by how difficult or easy it is to deploy and manage code in the runtime environment. When the runtime environment, even in development and testing, is distributed across multiple servers, the complexity and time to manage the application goes up dramatically. Cloud platforms take this into account -- more often than not because the developers that are creating and maintaining the cloud platform are affected by the same complexities!
Some cloud platforms allow you to code and test your application on one box rather than many, and some cloud application platforms allow you to develop most or all of your applications outside the cloud platform with your normal development and testing tools. (This is not true for many platform-as-a-service environments.)
Beyond this point, there are varying levels of difficulty in deploying and managing your application on the various cloud platforms. The worst-case scenario arises all too often, where you must manually deploy to each server or virtual machine directly, as illustrated in Figure 4.
(In the discussion that follows, I'll be focusing on those feature sets that I consider easiest to deal with. Your mileage will vary based on the cloud platform you choose.)
Imagine that you have some code ready to run. Typically, you will package the application in some way, bundling with it configuration information that tells the cloud platform how you want the application managed. Next, you will deploy that application into the cloud platform with a single command. Some (but not all) cloud platforms will automatically distribute your application to all of its workers (or some workers, depending on the platform's model), and get your application up and running, as shown in Figure 5. You're done -- now use your client and access your cloud application.
Subsequent versions of your code are handled the same way. You will usually repackage the code and redeploy it, probably with some mechanism for package versioning. The cloud platform will update the code for you.