SPSTC: SharePoint and Windows Azure Development
I attended Thursday’s all-day workshop on SharePoint and Windows Azure Development at SPSTC. Sahil Malik and Girish Raja led an engaging and entertaining workshop that led off with an announcement that many may already know about, but which (very pleasantly) surprised me:
There is an iOS SDK for Azure!
This is further evidence that Microsoft (along with other market players such as Amazon, Google, Apple, etc.) is going “all-in” with its cloud strategy.
So what distinguishes Microsoft and its cloud offerings from these other players? Simply put, only the Azure platform delivers the full continuum of “cloud nirvana” that encompasses Infrastructure as a Service (IaaS), Platform as a Service (Paas), AND Software as a Service (SaaS). Developers are free from yesteryear’s worries about hardware, networking, and infrastructure so that they may focus on writing applications.
There is still somewhat of a fear/control mentality among executives that perpetuates the false belief that an organization’s data is somehow more secure in a local datacenter than “in the cloud.” This is analogous to thinking your money is somehow safer by stashing it in your own mattress rather than depositing it in a bank. It will take time to change this mindset, but it is gradually changing. In the meantime, Azure allows the gap between on-premise and cloud solutions to be bridged by allowing virtual machines and networks to have IP connectivity to an existing, on-premise network. This allows organizations to gradually migrate to the cloud while still retaining the comfort of some on-premise infrastructure.
The focus of the discussion then shifted on Azure technology — specifically Windows Azure and SQL Azure. There is also Azure AppFabric. From a developer’s standpoint, there are not many differences between traditional development and developing for Azure. Some of the “gotchas” that are not permitted in Azure development (e.g., no in-process session state, no writing to disk, etc.) are actually poor practices that hinder scalability and should not be considered best practices even in non-Azure development. For instance, an application should write to memory or a database rather than disk.
Windows Azure supports the following roles: Web (ASP.NET web application), Worker (service in the cloud), and Virtual Machine (VM). The VM role allows you to create “servers” that are not physical in nature, but are loosely analogous to a dedicated physical server. Again, the point was made that Azure is freeing developers from worrying about these types of concerns so that they can focus on writing applications.
The focus then shifted to SQL Azure. SQL Azure is a cloud-based relational database platform that supports Binary Large Objects (BLOBs), tables, and cubes. There is even a CodePlex project that supports the mapping of SQL Azure BLOB storage as an NTFS drive. All functionality is fully accessible via .NET and REST-based APIs. Some organizations express concern that SQL Azure does not support replication; however, this is truly unnecessary considering all data maintained by Azure is written three times for redundancy and fault tolerance. SQL Azure databases are exposed as tabular data stream (TDS) clients and can even be added as linked servers to an on-premise instance of SQL Server (you should avoid doing this, though).
In the SQL Azure labs, we created a database in the cloud and added data to it via a web-based management interface. We then connected to SQL Azure via SQL Server Management Studio using the fully qualified domain name of our servers, along with a SQL-based login that we created earlier in the exercise. I found this to be a more familiar and reliable experience, but with a few limitations (I couldn’t right-click a table to design it, the right-click Properties option was conspicuously absent from objects, etc.) Just about all the interactions I had with my SQL Azure database via Management Studio had to be done through SQL queries (although I could rename and delete some tables without writing SQL). We wrote a simple console application and created a simple ASP.NET web site that leveraged ADO.NET (one could also leverage Entity Framework) to query and display data from SQL Azure. The code was identical to what a developer would write in a traditional, on-premise database scenario.
For local web development, Visual Studio’s Azure tools create a local Azure Compute Emulator (ACE) for development and debugging purposes. Again, it was emphasized that with the exception of a couple new namespaces and some additional deployment steps, developing for Azure is truly no different than developing “the old-fashioned way.” It was recommended that the default instance of SQL Express be used in conjunction with the local ACE.
We then moved on to doing some basic SharePoint development leveraging SQL Azure. We leveraged Business Connectivity Services (BCS) to create an External Content Type in SharePoint Designer that connected to our SQL Azure database via “impersonated custom identity” credentials maintained in the Secure Store Service. Data surfaced in SharePoint from SQL Azure can be used by the SharePoint 2010 Client API and can be crawled just like data surfaced from an on-premise SQL Server.
Some other highlights from the workshop:
- The Windows Azure Marketplace was introduced. There are many, many data sets available for use. Charges for use are set by the publisher of each data set. Generally it is based on the number of queries per month.
- There was a lively discussion about the uncertainty associated with the cost of Azure resource usage. Many developers view this uncertainty as a barrier to entry, as no one wants to be surprised by a $1,000 usage bill.
- Sahil showed that developers can always check their current resource usage (as of the previous day, his bill was up to a whopping $0.06). MSDN subscriptions also come with a considerable amount of free hours of usage each month.
- Also on the subject of resource usage and cost, you must delete your application, server, etc. or you will still be charged for it! Billing is based on consumption of resources, and resources are being used as long as something has not been deleted.
Workshop attendees also received a copy of Steve Fox’s book, Developing Microsoft SharePoint Applications Using Windows Azure. This book is a must-read from one of the leading experts on this subject, and I look forward to reading it as I venture further into the world of SharePoint and Azure development.
Anyone interested in beginning SharePoint development with Azure should immediately download Microsoft’s SharePoint and Windows Azure Development Kit. The kit includes extensive documentation and training materials to quickly bring developers up to speed with this new and exciting technology.