Categories: Cloud
Posted by
mheydt on
1/25/2009 11:02 PM |
Comments (0)
- Package files for upload instead of uploading many small files
- Utilize multi-threaded access to blobs
- Utilize exponential back-off and retry when calling services
- Store reference information within messages
- Use Process-oriented messaging
- Use Document oriented messaging
- Use queues to distribute load
- Utilize controller systems to start and monitor clusters
- Use table based storage to store metadata, not the actual data
- Launch multiple instances at once
- Allocate compute nodes out of pools to lower startup times
- Automate as much as is possible
- Keep systems loosely coupled
- Think parallel
- Think on-demand
- Design for reboot and relaunch
88911a17-727d-471f-863b-ef442e31538a|0|.0
Categories: Cloud
Posted by
mheydt on
1/25/2009 10:34 PM |
Comments (0)
- Self-healing / Reliability: In case of failure, cloud systems are capable of taking advantage of failover to standy systems (both CPU and storage), thereby enabling high levels of availability and reliability to applications that take advantage of these capabilities.
- SLA-driven: The cloud is dynamically managed dynamically by
service-level agreements that define policies such as delivery parameters, costs and availability.
- Multi-tenancy: The system is built in a way that allows
several customers to share infrastructure, without the customers being
aware of it and without compromising the privacy and security of each
customer’s data. This also allows for low costs due to sharing of the resources.
- Service-oriented: Cloud based systems are the epitome of loosely coupled service oriented systems, allowing the composing applications
out of discrete services that are independent of each
other, and also provide the inherent ability to failover to backups through redundancy.
- Virtualized: Applications are decoupled from the underlying
hardware, and dynamically allocated to available systems, freeing you from needing to worry about where an application runs, what hardware it runs on, and for maintaining the hardware over time.
- Linearly / Incremental Scalability: Cloud environments provide the ability to allow users and systems to add additional compute resources on-demand in response to application loads.
- Agility: Cloud system provide the basis to put quickly put together systems that can solve new problems through use of in-cloud services.
- Virtually Unlimited and Replicated Data: Need more storage? Just store more in the cloud. It's the clouds providers responsibility to provide enough storage, and you only have to pay for what you use, not for what you might use. And you never will get blocked by running out of physical storage.
c399d684-1643-4ed0-858a-050038fb48e8|0|.0
Categories: Cloud
Posted by
mheydt on
1/24/2009 11:15 PM |
Comments (0)
In the diagram that I previously posted I laid out a cloud architecture composed of 5 major components:
This section provides the means by which systems outside of the cloud (and sometimes systems within the cloud) can locate and communicate with systems in the cloud. This is typically done through one or more of the four means shown (although any network communication is technically possible):
- Queue based communications
The application outside the cloud posts a message into a message queue, where systems within the cloud look for messages, process them, and potentially send messages back to the client through another queue.
HTTP communications into the cloud can be broken down in to two primary forms of communications. First is the access of cloud applications through standard web applications presented through HTML. Another is through the use of tunneling other protocols over HTTP (although I consider REST and SOAP over HTTP its own category).
Basically these come down to accessing web services within the cloud. The historical means of doing this is over SOAP, but REST has become a popular alternative over the last few years do to its relative simplicity compared to SOAP.
The "Services Bus", otherwise referred to as the "Internet Service Bus", or ".NET Services", is a Microsoft technology that allows systems to register their "endpoints" in the cloud, whereby the cloud publicly exposes those endpoints, thereby allowing systems outside the cloud (or within) to locate other systems within (or outside the cloud) and establish connections with each other. This also provides another valuable service in that it will define tunnels through firewalls on each end.
This section of the cloud is basically dominated by raw CPU power, although that power can be subcategorized into functional sections. One of the primary tenants of the CPU in cloud computing is that it is "on-demand", being dynamically allocated only when needed. The on-demand nature has a direct ramification for cost savings in that you are typically only billed for the CPU time used, but there are also indirect benefits in ability to failover easily. The on-demand nature of CPU utilization is a direct result of the work over the years in computer and software virtualization, except that it is now extended to be able to on-demand allocate systems from libraries of machine images instead of just within your own enterprise.
All cloud services provide native services for storing data to your applications. This breaks into a few different types of storage, ranging from "blobs" (basically files, but with limitations compared to normal file systems), table data (structured data, but not as complex as RDBMS systems), structured storage systems (more akin to RDBMS system), and dynamic storage volumes which are comparable to disk drives on regular systems but able to be created on the fly and attached to any virtual system.
- Cloud Provided Services
All cloud providers will offer additional services to your systems in the cloud (and possibly to you from outside the cloud). This can be things along the lines of advanced data services, payment processing, search, web and generalize data cachin, workflow, and more complex application services such as CRM/ERP/MRP.
- Intra-Cloud Communications
[Explain why this is important] Cloud service providers will provide you with one or means of allowing your cloud based systems to communicate with each other. Communications between cloud based systems is typically accomplished via message queuing facilities, and both Amazon and Microsoft provide these services. Microsoft also provides its .NET Services facility (also know as an Internet Service Bus) that can also allow your systems to find and communicate with each other.
92d7e715-c47c-4587-9655-bd3c02ffd760|0|.0
The two primary cloud service providers available at this time are Amazon and Microsoft.
Amazon Web Services (AWS)
- Elastic Compute Cloud (EC2)
Amazon Elastic Compute Cloud (Amazon EC2) is
a web service that provides resizable compute capacity in the cloud. It
is designed to make web-scale computing easier for developers.
Amazon SimpleDB is a web service providing the core database functions
of data indexing and querying. This service works in close conjunction
with Amazon Simple Storage Service (Amazon S3) and Amazon Elastic
Compute Cloud (Amazon EC2), collectively
providing the ability to store, process and query data sets in the
cloud, making web-scale computing easier and more cost-effective for
developers.
- Simple Storage Service (S3)
Amazon S3 is storage for the Internet. It is designed to make web-scale computing easier for developers.
Amazon CloudFront is a web service for content delivery. It integrates
with other Amazon Web Services to give developers and businesses an
easy way to distribute content to end users with low latency, high data
transfer speeds, and no commitments.
- Simple Queue Service (SQS)
Amazon Simple Queue Service (Amazon SQS) offers a reliable, highly scalable, hosted queue for storing messages as they travel between computers. By using Amazon SQS,
developers can simply move data between distributed components of their
applications that perform different tasks, without losing messages or
requiring each component to be always available. Amazon SQS makes it easy to build an automated workflow, working in close conjunction with the Amazon Elastic Compute Cloud (Amazon EC2) and the other AWS infrastructure web services.
Microsoft Azure Services Platform
The Azure™ Services Platform is designed to help developers quickly and
easily create, deploy, manage, and distribute web services and
applications on the Internet. Windows® Azure is a cloud services
operating system that serves as the development, service hosting and
service management environment for the Azure Services Platform. Windows
Azure provides developers with on-demand compute and storage to host,
scale, and manage web applications on the internet through Microsoft
data centers.
Microsoft .NET Services are a set of Microsoft-hosted, highly scalable,
developer-oriented services that provide key building blocks required
by many cloud-based and cloud-aware applications. Much like the .NET
Framework provides higher-level class libraries that make developers
more productive, .NET Services enables a developer to focus on their
application logic rather than building and deploying their own
cloud-based infrastructure services.
The Microsoft .NET Access Control Service provides an easy way to
control web applications and services while integrating with
standards-based identity providers, including enterprise directories
and web identity systems such as Windows Live ID. Authorization
decisions can be pulled out of the application and into a set of
declarative rules that can transform incoming security claims into
claims that applications understand.
The Microsoft .NET Service Bus makes it easy to connect applications
together over the Internet. Services that register on the Bus can
easily be discovered and accessed, across any network topology. The
Service Bus provides the familiar Enterprise Service Bus application
pattern, while helping to solve some of the hard issues that arise when
implementing this pattern across network, security, and organizational
boundaries, at Internet-scale.
The Microsoft .NET Workflow Service is a high-scale host for running
workflows in the cloud. It provides a set of activities optimized for
sending, receiving, and manipulating HTTP and Service Bus messages; a
set of hosted tools to deploy, manage and track the execution of
workflow instances; and a set of management API’s. Workflows can be
constructed using the familiar Visual Studio 2008 Workflow Designer.
Microsoft® SQL Services delivers on the Microsoft Data Platform vision
of extending the SQL Server capabilities to the cloud as web-based
services, enabling you to store structured, semi-structured, and
unstructured data. SQL Services will deliver a rich set of integrated
services that you can use to perform relational queries, search,
reporting, analytics, integration and synchronize data with mobile
users, remote offices and business partners. Currently, SQL Services
offers relational database service called Microsoft® SQL Data Services.
Other services will be available in future.
Live Services is a set of building blocks within the Azure Services
Platform for handling user data and application resources. Live
Services provides developers with an easy on-ramp to build rich social
applications and experiences, across a range of digital devices that
can connect with one of the largest audiences on the Web.
In the future, developers will have access to functionality from
Microsoft SharePoint® Services in the Azure Services Platform. With the
flexibility to use familiar developer tools like Microsoft Visual
Studio, developers will be able to rapidly build applications that use
SharePoint capabilities as building blocks for their own applications.
Developers can expect a breadth of SharePoint capabilities across the
spectrum of on-premises and online applications using the Azure
Services Platform.
In the future, developers will have access to Microsoft Dynamics CRM
functionality in the Azure Services Platform. With the flexibility to
use familiar developer tools like Visual Studio, developers will be
able to rapidly build applications that use Microsoft Dynamics CRM
capabilities as building blocks for their own applications. Developers
can expect a breadth of Microsoft Dynamics CRM capabilities across the
spectrum of on-premises and online applications using the Azure
Services Platform.
4babac72-d996-4aaa-bdf1-a936e6b90738|0|.0
Categories: Cloud
Posted by
mheydt on
1/24/2009 3:38 AM |
Comments (0)
- Processing pipelines
- Video transcoding
- Converting large numbers of documents into other formats
- Image processing used to convert images from one format to another
- Searching and indexing of large amounts of data
- Mining of large amounts of data
- Batch processing systems
- Various back office applications that needs heavy, but often infrequent batch processing
- Reporting systems that analyze operational data and deliver reports, often infrequently
- Software build systems that do nightly builds
- Software testing systems that execute tests against many different configurations.
- Websites
- Sites that can change the number of servers based upon demand (less at night, more during the day)
- Instant sites needed on demand for specific events
- Seasonal sites (like taxes or various holidays)
- Parallel / concurrent processing
- Financial data correlation, where different systems can work on their own subset of the problem in order to speed processing time
- Parallel video conversion into multiple bitrates
- On-demand / scheduled processing
- Bi-weekly payroll processing
- Video transcoding during media events
b161a434-7642-4ba6-983a-d0fad43694af|0|.0
Categories: Cloud
Posted by
mheydt on
1/24/2009 3:36 AM |
Comments (0)
I'm going to start this post as a place to build a running list of "benefits" of cloud computing.
Benefits of cloud computing can be broken down into several categories. One of those are the "Business Benefits":
1. Almost zero upfront infrastructure investment
2. Just-in-time Infrastructure
3. More efficient resource utilization
4. Usage-based costing
5. Potential for shrinking the processing time
6. Virtually unlimited computation and storage
[http://www.webhostingunleashed.com/features/cloud-computing-benefits/]
1. Scalability
2. Easy implementation
3. Skilled practictioners
4. Frees up internal resources
5. Quality of service
[http://www.webhostingunleashed.com/features/essential-guide-cloud-computing/]
1. Access to data from any location with Internet access
2. No need for maintaining a physical storage device
3. No upfront capital expenditures for hardware
4. No ongoing costs for maintaining and upgrading storage facilities
5. Pay as you go
6. Can add or remove capacity based on real rather than projected storage needs
7. Alleviates burden on IT teams
Security Benefits
[http://cloudsecurity.org/2008/07/21/assessing-the-security-benefits-of-cloud-computing/]
1. Centralized Data
2. Incident Response / Forensics
3. Password assurance testing
4. Logging
5. Improve the state of security software
6. Secure Builds
7. Security testing
Another way to look at cloud computing is by comparing how you would use it compared to other services, such as with your own internal IT or with typical managed services (the way we thought of doing it in the late 90's early 2000's), and how it compares to the others in terms of both complexity and $$:
| | Internal
IT | Managed
services | The
cloud |
|---|
| Capital investment | Significant | Moderate | Negligible |
| On-going costs | Moderate | Significant | Based on
Usage |
| Provisioning time | Significant | Moderate | None |
| Scalability | Limited | Moderate | Flexible |
| Staff expertise
requirements | Significant | Limited | Moderate |
| Reliability | Varies | High | Moderate to
High |
0e0205f6-3ab3-41da-b86a-e8d768244402|0|.0
Categories: Cloud
Posted by
mheydt on
1/24/2009 12:16 AM |
Comments (0)
I put this diagram together tonight to use in upcoming posts that I will be making about cloud architecture...
f1d24989-c98d-4bb4-bd17-b17deacbe7ab|0|.0
Well, I felt real good tonight when I got the EC2 library for WPF to cross compile to Silverlight, which in of itself was not as easy as it should have been, but only to get block by security violations errors which I can only assume that is because EC2 does not provide the proper policy files.
Point is, I know this, but was so lost in the "fun" of the cross compile effort that I spaced out that this would be a problem. So, its onto needing to write a back end web service to proxy the calls over to EC2 from the Silverlight client. I've done this before, and its relatively easy, and will actually allow me to use the WPF library that I wrote already, but it's a little dissappointing none the less.
5aff6e1b-5860-4dde-8186-d40f3a9c3796|0|.0
Amazon released the AWS Console about a week ago and I've been using it almost exclusively since instead of ElasticFox. For the most part I think it is better, but at the same time I notice things that are not quite as good. A plus is that it is accessible via any browser and any system, so you can always access your EC2 configurations no matter where or what browser you are running. A negative is that it appears to be slower than ElasticFox, and I have found myself annoyingly having to wait at various times.
One thing I like is that it opens into a dashboard. It's not a whole lot of useful information right now, but it is nice and will allow a nice overview once more features are added.

But if you go to, say the instances form, you'll see the following which isn't a whole lot different than in ElasticFox (and the same for the other forms):

Where this tool will become real interesting is when the offer the following features that they are teasing you with on the overview page:

Administrative interfaces to the other AWS services will be really nice, but I like the potential of tagging as well as the admin, load scaling and monitoring functions will be really nice.
The solution does still need a nice graphical user interface in WPF / Silverlight. I've got it in the works but it is still early. Maybe something there to talk about on the weekend.
c5e9fde6-d79a-4de1-9e01-065c06ad758b|0|.0