Posted by mheydt on 1/26/2009 5:54 PM | Comments (0)
I blogged a lot last weekend as I needed to keep my mind off of that fact that my first dog Cosmo died last Friday.  I was on the road and my wife didn't tell me until Saturday night.  I'm still reeling over it a little, as I had him for 13 years, longer than my wife or kids.  He was my best friend and I'll miss him immensely.  Here are a few photos of him.

Love ya buddy, you'll be missed.

Categories: Cloud Posted by mheydt on 1/25/2009 11:02 PM | Comments (0)
  1. Package files for upload instead of uploading many small files
  2. Utilize multi-threaded access to blobs
  3. Utilize exponential back-off and retry when calling services
  4. Store reference information within messages
  5. Use Process-oriented messaging
  6. Use Document oriented messaging
  7. Use queues to distribute load
  8. Utilize controller systems to start and monitor clusters
  9. Use table based storage to store metadata, not the actual data
  10. Launch multiple instances at once
  11. Allocate compute nodes out of pools to lower startup times
  12. Automate as much as is possible
  13. Keep systems loosely coupled
  14. Think parallel
  15. Think on-demand
  16. Design for reboot and relaunch

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.

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:
  • Cloud Ingress
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
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).
  • REST / SOAP
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.
  • Service Bus
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.
  • Horsepower
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.
  • Cloud Storage Services
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.
  1. 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.
  1. 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.

Categories: AWS, Azure, Cloud Posted by mheydt on 1/24/2009 10:49 PM | Comments (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.
  • SimpleDB
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.
  • CloudFront
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
  • Azure
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.
  • .NET Services
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.

  • Access Control
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.
  • Service Bus
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.
  • Workflow
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.
  • SQL Services
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
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.
  • Sharepoint Services
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.
  • Dynamic CRM
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.

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

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 ITManaged servicesThe cloud
Capital investmentSignificantModerateNegligible
On-going costsModerateSignificantBased on Usage
Provisioning timeSignificantModerateNone
ScalabilityLimitedModerateFlexible
Staff expertise requirementsSignificantLimitedModerate
ReliabilityVariesHighModerate to High



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...


Categories: .Net, Cloud, EC2, Silverlight Posted by mheydt on 1/16/2009 3:15 AM | Comments (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.

Categories: AWS, Cloud, EC2 Posted by mheydt on 1/14/2009 1:40 AM | Comments (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.