My question has two parts I know they are basic ones but not able to clear the thoughts so posting this.
We are planning to build a new app on windows azure. after reading some of the articles on cloud I have build a sample application on cloud that perform basic operation like CRUD.
So I want to know that what are all fundamental difference you all felt while working on azure app. I have built the application using MVC as framework. I have not felt much of difference in terms of writing code in normal web app using MVC and a cloud app using MVC.
What are the to-dos while building an cloud app?.
We are planning to hire some people that have hands on experience in working with Windows azure, there are several head hunters in the market that bombard you with piles of resume.Though people have not worked on windows azure they have just included in there resume. How to evaluate a candidate to judge his potential on cloud computing . Any tips for this would be helpful.
1. Fundamental differences
Windows Azure is going to work fine with ASP.NET. Considering the VMs are Windows Server 2008 R2/SP2, there's not much you can't do. The big differences between on-premises apps and Windows Azure apps are about how these VMs behave, how Windows Azure manages SLA and availability, how underlying guest and host OS maintenance is done, and so on. A few things that come to mind:
- Load balancing. There's no way to direct traffic to a specific VM instance within a set of Web or Worker role instances (unless you build your own request router). So you need to plan for statelessness
- Session management. Related to first point. Can't use inproc, need to work with Cache, table storage, or SQL providers, which give seamless session experience.
- Services. Windows Azure provides identity management, cache, traffic manager (load balancing across data centers), CDN (edge cache for blobs), blob storage, table storage (schemaless, NoSQL), and more. You need to look at these services carefully and see how they best fit your app. For instance: Table storage scales to 100TB per account and has a very low per-GB cost, yet your programmers will need to learn a new way of content persistence, especially if they're used to SQL Server.
- Deployment. You'll need to understand how to maintain your app, monitor it, scale it, upgrade it.
- Availability. You'll need to understand How Windows Azure manages your OSs (unless you're using Virtual Machines that you manage), how failures are dealt with (e.g. hardware failure)
- Security. Windows Azure SQL Database security is different from SQL Server security.
2. Interviewing
Architecture skills are critical. Programming skills can be learned more easily, especially with the Windows Azure Training Kit or some good books. Here's just a quick list of things I'd be inquiring about, when interviewing candidates for a Windows Azure project. A seasoned Windows Azure developer would be able to handle the majority of these.
- Describe scenarios where they would combine (or separate) tasks into the same (or separate) roles
- Explain how to monitor and scale an app
- Understand the various aspects of upgrading an app
- Know how to install and run 3rd-party tools and alternative (non-.NET) languages
- Architect for cost vs performance vs availability
- Know about storage solutions (SQL, 3rd-party SQL & NoSQL, blobs/tables/queues)
- Know the pros and cons of Windows Azure Queues vs. Service Bus queues
- Differences between SQL Server and Windows Azure SQL Database, including federations, security, transient faults, cross-database queries and transactions
- Understand the capabilities (and limitations) of Content Delivery Network edge-cache
1) As you say; not many differences. I really liked the Queues and they make building async processes a breeze. The ability to spin up environments without help from OPS is a huge time saver. Biggest negative for me is the time it takes to deploy. In-house, TeamBuild can have it on my test server in < 1 minute. With Azure it can be up to 30 min depending on the time of day / usage in that datacenter.
2) Other than some special knowledge around hooking up ACS / ADFS I'm not sure what seeking someone with Azure experience will get you. It really is just like writing an in-house app. People put all kinds of crap on their resumes just to get in the door hoping you won't notice. Just grill them on everything they say they can do that you think you need them to be able to do. Maybe have them do a scenario where they have to log onto the Azure portal and bring up a new host/ database. Have them deploy a package. Have them make some changes to a Cloud Project (connection strings, vm size, instances). Have them debug a worker role project. If they can't do that stuff you know they are lying. I am interviewing someone today that used the adjective "immense" on one skill. You can bet I'll be targeting that one!