Cloud Computing and Programmatic Infrastructure

The NIST definition for cloud computing is: model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.

Introduction to Cloud Computing

In order to help you better understand the basis of Cloud Computing, you can start by this introduction.

Infrastructure As A Service (IAAS)

IAAS is the capability provided to the consumer to provision processing, storage, networks, and other fundamental computing resources.
The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly select networking components (e.g., firewalls, load balancers).

The major IAAS providers are:

Platform As A Service (PAAS)

Platform as a Service (PaaS) may be defined simply as a computing platform that allows the creation of applications quickly and easily and without the complexity of buying and maintaining software and infrastructure. 

Some interesting resources:

Open source PAAS providers are:

And the major commercial PAAS platforms are:

Building Cloud Applications

Microsoft published twenty-four design patterns and ten related guidance topics in 2014. This guide articulates the benefit of applying patterns by showing how each piece can fit into the big picture of cloud application architectures. Another more generic reference is the Cloud Computing Patterns book. Other sources of information are: Amazon application architecture center and The Open Guide to AWS. Finally Octo Technology did provide a guide, in French, describing patterns to be used to move applications to the Cloud.

In order to create and automate cloud Workflow, you can use the open source CloudSlang solution.

Finally, to draw your architecture, the AWS way, use CloudCraft.