Analogies help, don’t they?! So here I am…just one more analogy that may help you understand Cloud Computing modalities i.e IaaS – PaaS – SaaS. If you want to know what IaaS – PaaS – SaaS are? Then this is not the right blog post. But if you find want an analogy that would help you differentiate them, read along…
So, If my Laptop were a cloud:
If my Laptop were a cloud, then Laptop Hardware is IaaS (Infrastructure as a Service)
Operating system (OS) on Laptop
If my Laptop were a cloud, then Operating system on Laptop is PaaS (Platform as a Service)
An App (Software) running on Laptop OS
If my Laptop were a cloud, then App running on Laptop OS that you access is SaaS (Software as a Service)
Hardware <-> IaaS / Cloud Computing
OS <-> PaaS / Cloud Platform
Apps running on Laptop <-> SaaS / Cloud Services
Remember, it was an analogy, Not technically accurate and so please look at the concepts on your own. But this analogy helps me differentiate concepts and i though it may help someone else..
Do you have other analogies to share? If so, I encourage you to post it as comments!
This blog post is about SQL Azure and not SQL server. And it’s also not about importance of indexes. We know that indexes are important in the world of SQL server as well as in the world of SQL Azure. But in the world of SQL Azure, there is an important concern – when you create indexes, they would occupy “Space” and it will increase the database size. So what’s the point here? The point is that the pricing model of SQL Azure is database size driven. So bigger the database size, bigger would be your bill. It’s that simple. So to figure out the cost of indexes, we need to know the size of indexes and, We do have a TSQL query to know the size of each index in a database/table.
So here is a TSQL Query that would list indexes in a given database along with its size in KB.
[code] SELECT SI.name, SUM(PS.reserved_page_count) * 8.0 as "Size in KB" FROM sys.indexes AS SI JOIN sys.dm_db_partition_stats AS PS ON SI.object_id = PS.object_id AND PS.index_id = SI.index_id GROUP BY SI.name ORDER BY 2 DESC [/code]
I ran the above query by logging into the SQL Azure database ‘AdventureWorksLTAZ2008R2’ (which is a sample database for SQL Azure) as a service administrator and here’s the result:
You can also list indexes along with its size for a particular table in a database. Here’s the TSQL code (Replace SalesLT.product name with your table name):
[code] SELECT SI.name, SUM(PS.reserved_page_count) * 8.0 as "Size in KB" FROM sys.indexes AS SI JOIN sys.dm_db_partition_stats AS PS ON SI.object_id = PS.object_id AND PS.index_id = SI.index_id WHERE SI.object_id = object_id(‘SalesLT.product’) GROUP BY SI.name ORDER BY 2 DESC GO [/code]
And one can definitely embed the pricing logic in the TSQL Query we just saw. check this article for reference: http://blogs.msdn.com/b/sqlazure/archive/2010/08/19/10051969.aspx – Just note that the pricing model is slightly different now. The pricing model is same for database size upto 50 GB. But when you above 50 GB (upto MaxSize 150 GB) there is NO additional cost. so essentially. 50 GB db = $499.95 per month and 150 GB = $499.95 per month. Update your TSQL queries accordingly!
So, Make sure that you use indexes that you have created And Drop indexes that are not used. you need to evaluate performance gain vs cost for your scenario.
I am not implying that Indexes on SQL server are “free”. They consume resources in the world of SQL server too. This post just happen to focus on SQL Azure side of it.
The Pricing Model of SQL Azure may change in future.
You also need to evaluate performance impact of creating indexes on create, update and delete queries
Recently, Google announced something called authorship markup. Basically what it does is that it shows the author information (Only Google Profile) along with search results. I found it interesting. Here’s why: Now Notice that the first result is “Normal”.
Now Notice second result. It has: 1) Author’s photo (Via Google Profile) 2) Author’s Name 3) Link to G+ profile 4) Number of Circles the author belongs to
And so I thought I would do that for my WordPress.com Blog (Not a self hosted WordPress blog but a wordpress.com blog). But challenge for me was that I didn’t get all information at one place. I had to watch three-four videos and read three-four blog posts before I was able to “figure it out”. So I thought I would share how I did it. So here we go:
Now the basic concept is that: – Your Content should link to your Google+ Profile – Your Google+ Profile should link back to your content
How to go about doing that in WordPress.com?
So I have an “About me” page on my blog. Now if you do not have a about me page – please create one. (Now there are others ways but i found this approach to be best) Now Go to WordPress Admin Page > Appearance > Menu > Screen Options (Top Right corner) > Check the “Link Relationship” in advanced settingsNow you need to add the word author in the Link Relatonship Text Page, Like shown below: “Save Menu”
Now Go to your About Me page and Go to Edit Here you will need to add a hyperlink like this:
Now, Here the href has the link to Your Google Profile And Edit the “Title” And the Hyper-Link’s Text to your Name. Keep ‘+’ in Hyper-linked Text.
Now Next step, Go to your Google profile > About > Edit Profile So note that i have added the Link:
In my Google Profile. You should add the Full URL of your “about me” page in the contributor to section of the Google Profile.
DONE! So Summarizing: 1) Add About me Page (If you do not have one) 2) Edit the About me Page’s Link Relationship To Author (From Menu) 3) Add the rel=me hyperlink in your about me page that points to your Google Profile 4) Edit the Google Profile’s contributor to section with the Link to your “About Me” Page.
I got this question recently and I thought of converting them into a “cloud 101” blog posts. So here they are:
Q: “Banking – with its high security needs and strict regulations – was always considered to be one of the last industries to accept cloud-computing”. So is cloud computing insecure?”
A: I would say – Cloud is secure. At least companies like Amazon (AWS), Microsoft, Google have advanced security mechanisms in place – In most cases, Cloud is more secure than private data-centers. And some banks do not move to Cloud (or cannot move to cloud) because of other reasons. And most of them fall on the legal side of things. Strict regulations (government regulations) as you mentioned.
And later at one point, we discussed about banks keeping parts of the data/app on-premise and moving other parts to cloud. That’s called hybrid cloud. What they do is that since they cannot move “sensitive” data to cloud because of government regulation and/or business policies – they move things that are permissible by law/business policies to cloud.
And we also discussed about what are the disadvantages of moving to cloud? I realized: Most of the perceived “disadvantages” are actually MYTHS. so at one point I felt the need to clear myths and then talk about other topics. It was fun though!
I just completed the Cloud University’s online course http://www.rackspace.com/knowledge_center/cloudu/ and found it to be a nice resource – I thought I would share it with you. It’s a free online resource for learning about key elements of cloud computing. They have modules covering:
Economics of cloud
Cloud computing stack (IaaS, PaaS, SaaS)
Planning phase to move to cloud
Hybrid Cloud (Cloud Bursting)
Open cloud computing initiatives
After every module – you would be Quizzed (based on learning in that given module). And after completing all (10) modules – there would be a final exam and once you clear that – you’ll get a certificate like this:
In this blog post, we would see how to enable RDP (Remote Desktop) for a Windows Azure web role. You would see that it’s pretty straightforward. Just note that this blog post is not about How to deploy a Windows Azure web role and it’s also not about How to develop an application that can be ported to Windows Azure. Nope, This blog post is just about enabling Remote Desktop for an ‘Hello world’ application (MVC3 web app) deployed as a Windows Azure web role. And yes, I would be using the Azure SDK 1.6 (Nov 2011). I mention this because Windows Azure is growing rapidly and growing for the better and since Microsoft folks are trying to give us the best developer experience – you may find that the exact steps may differ in future.
I created an app by following steps: File, New, Project, Installed templates, Visual c#, cloud, Windows Azure project, ASP.Net MVC3 web role, Internet application. Clicked OK
Then I edited the default text in the app and so now I have this nice little MVC3 web app running Locally. Just a Hello world app.
Courtesy: A default ASP.NET MVC 3 project with an account controller that uses forms authentication.
Now in solution explorer, right-click the project and click on “publish”
Now, In the Publish Windows Azure application, choose the subscription. If you are doing it for the first time, click on “Sign in to download credentials”. Login with the Live ID and download a file like:
And click the import button in the Publish Windows Azure application wizard and point to this file and open it.
This is how it looks:
Click on Next >
Now if your subscription does not have any hosted services, you would be prompted to create one. Provide the Name and Location.
Now once you do that – In the common settings, To enable Remote Desktop you’ll need to select the check box Enable Remote Desktop for all roles. Also notice that since I just want to the app to be in staging environment, I selected the Environment as staging. To enable Remote Desktop to a web role, you can set the environment as production too. Either way, you can enable Remote Desktop.
Now when to click on the check box, a window would pop up and here, you will need to specify the username and password that you will use to RDP into the Web role. Provide a strong password which is important, and by default it asks you for a password that is at least 6 characters in length with upper, lower, digits and symbols in it.
Click Ok when done.
And press next >
The next step shows the summary:
Click on Publish
You need to wait for a 3-4 minutes while it is deploying and you can see the progress in the Windows Azure Activity Log. And when it completes, you can see a the Website URL:
Now to RDP into Azure web role, Go to Azure management portal, Hosted services storage accounts and CDN, Hosted services.
Now here select your subscription, and select the instance:
Now on the Top Right section of the portal, In the Remote Access section, Click on Connect
save the .rdp file.
Then, open the file. And click on connect andprovide the password which you had set earlier for RDP earlier. click on OK.
It’ll attempt to connect.
On successful connection, you would see:
In this blog-post, we saw how to enable remote desktop for a Windows Azure web role.