I just got home to Milwaukee from the MSDN Developer Conference in Chicago, about two hours drive. I knew that it would be a rehash of the major technologies revealed at the PDC which I was at in November, so I wasn’t sure how much value I’d get out of it, but I had a bunch of questions about their new technologies (Azure, Oslo, Geneva, VS2010, .NET 4.0, new language stuff), and it just sounded like fun to go out to Fogo de Chao for dinner (a wonderful Brazilian steakhouse, with great company).
So despite my reservations, I’m glad I went. I think it also helped that I’ve had since November to research and digest all of this new stuff, so that I could be ready with good questions to ask. There’ve been so many new announcements, it’s been a little overwhelming. I’m still picking up the basics of Silverlight/WPF and WCF/WF, which have been out for a while now. But that’s part of the fun and the challenge of the software industry.
With some last minute changes to my original plan, I ended up watching all four Azure sessions. All of the speakers did a great job. That being said, “A Lap Around Azure” was my least favorite content because it was so introductory and general. But the opportunity to drill speakers for information, clarification, or hints of ship dates made it worth going.
I was wondering, for example, if the ADO.NET Data Services Client Library, which talks to a SQL Server back end, can also be used to point to a SQL Data Services endpoint in the cloud. And I’m really excited knowing now that it can, because that means we can use real LINQ (not weird LINQ-like syntax in a URI). And don’t forget Entities!
I also learned that though my Mesh account (which I love and use every day) is beta, there’s a CTP available for developers that includes new features like tracking of Mesh Applications. I’ve been thinking about Mesh a lot, not only because I use it, but because I wanted to determine if I could use the synchronization abilities in the Mesh API to sync records in a database.
If Microsoft is building this entire ecosystem of interoperable services, and one of them does data storage and querying (SQL Data Services), and another does synchronization and conflict resolution (Mesh Services)–and considering how Microsoft is making a point of borrowing and building on existing knowledge (REST/JSON/etc.) instead of creating a new proprietary stack–isn’t it at least conceivable that these two technologies would at some point converge in the future into a cloud data services replication technology?
I’m a little disappointed that Ori Amiga’s Mesh Mobile wasn’t mentioned. It’s a very compelling use of the Mesh API.
The other concern I’ve had lately is the apparent immaturity of SQL Data Services. As far as what’s there in the beta, it’s tables without enforceable schemas (so far), basic joins, no grouping, no aggregates, and a need to manually partition across virtual instances (and therefore to also deal with the consequences of that partitioning, which affects querying, storage, etc.). How can I build a serious enterprise, Internet-scale system without grouping or aggregates in the database tier? But as several folks suggested and speculated, Data Services will most likely have these things figured out by the time it’s released, which will probably be the second half of 2009 (sooner than I thought).
Unfortunately, if you’re using Mesh to synchronize a list of structured things, you don’t get the rich querying power of a relational data store; and if you use SQL Data Services, you don’t get the ability to easily and automatically synchronize data with other devices. At some point, we’ll need to have both of these capabilities working together.
When you stand back and look at where things are going, you have to admit that the future of SQL Data Services looks amazing. And I’m told this team is much further ahead than some of the other teams in terms of robustness and readiness to roll out. In the future (post 2009), we should have analytics and reporting in the cloud, providing Internet-scale analogues to their SQL Analysis Server and SQL Reporting Services products, and then I think there’ll be no stopping it as a mass adopted cloud services building block.
The thought that keeps repeating in my head is: after we evolve this technology to a point where rapid UX and service development is possible and limitless scaling is reached in terms of software architecture, network load balancing, and hardware virtualization, where does the development industry go from there? If there are no more rungs of the scalability ladder we have to climb, what future milestones will we reach? Will we have removed the ceiling of potential for software and what it can accomplish? What kind of impact will that have on business?
Sometimes I suspect the questions are as valuable as the answers.