Register
Wednesday, May 30, 2012
 
Support this site Minimize
 
 
 
  
 
 Blog
  
Cloud Computing Thoughts Minimize
 
 
 
  
 
History Minimize
   
 
  
 
Cloud Computing Thoughts Minimize
   
 
  
 
Cloud Computing Thoughts Minimize
 
Author:Josef FinselCreated:6/17/2009 6:57 AM
This is my personal thoughts and opinions on the best ways to architect in the cloud as well as why something works and why it doesn't

Over the last several months, I’ve had to write patch scripts for database updates. Writing the scripts tends to be easy and I came up with a fairly effective way to implement changes but writing the actual script got to be tedious. So, like any good programmer, I automated the task.

My Patch Implementation There are a lot of ways to write patch scripts, but one main concern is that you don’t overwrite procedures with old versions. For my environment, I came up with a fairly simple solution for procedures and user defined functions. Every update to a procedure or UDF creates a time stamped named version of itself. If I was generating a patched version of auditing.GeneralLogInsert today, I would check to see if auditing.[GeneralLogInsert-2011-06-22] exists. If it does, then I don’t proceed any further with that stored procedure. If it doesn’t, then I populate an nvarchar(max) variable with the create statement for the procedure/UDF, execute a rename on the existing object and then execute the create. It...

Read More »

  • Build
  • Debug
  • Learn your Mistakes during Maintenance
  • Code Around your Mistakes
  • Go to Version +1 and try to undo your mistakes without being able to start with a clean slate and make a new set of mistakes while cringing at all you didn't know that you didn't know not realizing how much you don't know now that you'll regret later
  • Repeat as necessary



It’s been a couple of months since I last posted about the MOOP Framework, but we’ve been working on some exciting new things. Today we’re going to talk about implementing Search in Azure using Lucene. Actually, we’re using a modified version called Lucene.Net and the Azure Library for Lucene.NET.

Implementing search actually breaks down into two separate tasks. The first is indexing your data and the second is delivering up search results. Let’s look at each of these in turn.

Indexing Data for Search...

Read More »

 Today I’m going to delve into how the MOOP Framework handles data access using a combination of a Web Handler and Template Definitions. This handler can get data out of the database, serve it up and even set the cacheability of that data. Let’s begin by looking at the Handler in some detail...

Read More »

MOOP stands for Matter Out Of Place, and the MOOP Programming principles can really be summed up as stating that every part of program has a place where it should be running and having everything running in its place provides a built in efficiency that we can harness, an efficiency that’s especially important in cloud computing where we pay for our computer usage.

Yesterday, as I was introducing the MOOP framework, I introduced the concept of Handlers and showed their benefits. Today, we’re going to talk about the first handler that is part of the MOOP Framework, AzureBlobHandler. As the name implies, this handler processes blobs but in doing so, it removes the need for local files from our web role and helps us define caching in a way that drastically reduces our cloud computing costs.

One of the main principles of MOOP Programming Principles is determining where programming should be located and making sure that it is carried out there. Yesterday I explained how this included removing as...

Read More »

MOOP stands for Matter Out Of Place, and the MOOP Programming principles can really be summed up as stating that every part of program has a place where it should be running and having everything running in its place provides a built in efficiency that we can harness, an efficiency that’s especially important in cloud computing where we pay for our computer usage.

To introduce the MOOP Framework, I’m going to talk about a new implementation of the AzureArchitect Web Tools, this one using HTML, JavaScript and Handlers. The old version of the tools would allow you to enter your Account and SharedKey and then work with Blobs, Queues and Tables. This was handled by several different ASPX pages, one for each type of Azure Storage. Let’s take a look at the Blob Storage ASPX page as an example.

Once you’ve filled in your account and shared key, you could get a list of containers, for instance. Every time the button is pressed to get a list of containers, a call is made to the ASPX, which then uses the AzureCommands...

Read More »

Caching is a great way to cut down on processing. A client can say, “Hey, I have this version of an object, is that the same one you have?” And the server can either say, “Yep, they match” or “No, here, have the latest and greatest version.”  Ok, that’s a simplified version but the reality is just as good. Take an HTML web page that has several JavaScript files and CSS files and a couple of images, not to mention the HTML that makes up the page. That could easily add up to over a MB.  The table below is the base files and that’s not counting any of the image files or nested files the CSS may come up with.

Object Size dhtmlx.css 129 KB BaseLibrary.js 5 KB dhtmlx.js 1,039 KB CipherSolverBanner.gif 1 KB HTML in page 30 KB Total 1,204 KB  

Well, actually, the client passes in the “If-None-Match” header with an ETag and the server compares...

Read More »

Some people might look at the title of this blog post and wonder what I’m talking about. “The whole point of Azure,” they might say, “is scalability!” Which is true but only in a way. Azure Web and Worker Roles are scalable in the fact that you can turn on as many as you’d like to meet demand. This is very useful if your website is featured on the national news or Slashdot or Fark, but it can be costly too. The goal of a website should be to serve as many pages as possible before you need to add that next instance. And that’s what I am talking about with Building Scalable Websites, going somewhat outside of Microsoft’s standard playbook for building websites and moving into a way to build a website that’s as efficient in delivering content as possible. I am a small company, I don’t have a budget that can afford any more compute hours than absolutely necessary. Fortunately, building a scalable website tends to minimize those compute hours.

There are a lot of paradigms that programming seems to shift through....

Read More »

 I’m wrapping up work on the first version of my Azure Framework, hoping to get it documented and posted soon, but in doing my work I’ve made a minor change to the AzureBlobLoader utility, a command line utility that loads files to Azure Blob storage. It now supports the Archive flag, meaning it will only upload files in a directory that have changed, cutting down on processing time and costs.

Read More »

Microsoft’s Windows Azure has had a pretty stable authentication scheme since September 2009.  I spent time this weekend updating the AzureCommands library to implement the latest changes to Azure. The biggest headache I encountered was implementing the new Authentication scheme. It turns out there were a couple of things MS did that I didn’t expect and a bug in my own code that  caused some of my grief. Here I’ll document some of what I had to do to implement the new scheme and finish with a Best Practices Guidelines.

Defining the Changes Microsoft made a number of changes, mostly in the canonicalized resource and canonicalized headers. These changes add more items to what makes up the string to generate the security hash, with more items supposedly being more secure. The new string includes the following values, separated by a new line (\n):

VERB Content-Encoding Content-Language Content-Length...

Read More »

 
 
  
 
Privacy Statement | Terms Of Use Copyright 2009-2010 by Azure-Architect.com