ANNOUNCER: Ladies and gentlemen, please welcome President, Server and Tools Business, Satya Nadella. (Applause.)
SATYA NADELLA: Good morning. Good morning, and welcome back to day two of Build. Hope all of you had a fantastic time yesterday. From what I gather, there were half a trillion megabytes of downloads as far as the show goes in terms of show net, so we really saturated the show net with all the downloads of Windows 8.1. So that's just tremendous to see that all of you took Steve's guidance and said, "Let's just download it now and play with it." Hopefully you had fun with it, also had a chance to get Visual Studio and maybe hack some of those Bing controls last night after the party.
But welcome back today, and we have some fantastic stuff to show. There's going to be a lot more code onscreen as part of this keynote.
Yesterday, we talked about our devices, and we're going to switch gears this morning to talk about the backend.
The context for the backend is the apps, the technology, as well as the devices, experiences that all of us collectively are building. We're for sure well and truly into the world of devices and services. There is not an embedded system, not a sensor, not a device experience that's not connected back to our cloud service. And that's what we're going to talk about.
And we see this momentum today in how we are seeing the backend evolve. If you look at Windows Azure, we have over 50 percent of the Fortune 500 companies already using Windows Azure. We have over 250,000 customers. We're adding 1,000 customers a day.
We have 3.2 million distinct organizations inside of Azure AD representing something like 65 million users active. That's a fantastic opportunity, and we'll come back to that a couple of different times during this keynote.
Our storage and compute resources are doubling every six months. Our storage, in fact, is 8.5 trillion storage objects today, doing around 900K transactions per second. Something like 2 trillion transactions a month.
The last point, which is around the hypervisor growth, where we're seeing tremendous hypervisor share growth is interesting. Because we are unique in that we not only are building an at-scale public cloud service, but we're also taking all of the software technology that is underneath our public cloud service and making it available as part of our server products for service providers and enterprises to stand up their own cloud. That's something pretty unique to us.
Given that, we're seeing tremendous growth for the high-end servers that people are buying and the high-end server software people are buying from us to deploy their own cloud infrastructure in support of the applications that you all are building.
Now, of course at the end of the day, all that momentum has to be backed up by some product. And in that case, Steve talked a lot about our cadence and increased cadence across our devices. But when it comes to Windows Azure and our public cloud service, that cadence takes on a different hyper drive, if you will, because we are every day, every week, every month doing major updates. We've done over 100-plus major updates to our services from the last Build to now.
In fact, this is even translating into a much faster cadence for our server. We now have the R2 updates to our 2012 that were made available yesterday. So all around, when it comes to server technology and cloud technology, we have some of the fastest cadences, but very targeted on the new scenarios and applications and technologies that you're building to run these cloud services.
Now, one of the other things that drives us and is at play for us on a daily basis is the feedback cycle of our first-party workloads. We have perhaps the most diverse set of first-party workloads at Microsoft. You know, these are SaaS applications that we run ourselves.
Now, these applications keep us honest, especially if you're in the infrastructure business, you've got to live this live site availability day in and day out. And the diversity also keeps us honest because you build out your storage compute network, the application containers, to meet the needs of the diversity these applications represent.
Take Xbox. When they started Xbox Live in 2002, they had around 500 servers. Now, they use something like 300,000 servers, which are all part of our public cloud to be able to really drive their experiences. Halo itself has had over a billion games played, and something like 270 million hours of gameplay. And Halo uses the cloud in very interesting ways for pre-production, rendering support, gameplay, post-production analytics, the amount of real-time analytics that's driving the continuous programming of Halo is pretty stunning.
Take SkyDrive. We have over 250 million accounts. You combine SkyDrive with the usage of Office Web Apps, where we have more than 50 million users of Office Web Apps, you can see a very different set of things that are happening with storage, collaboration, productivity.
Skype is re-architecting their core architecture to take advantage of the cloud for their 190-plus million users.
Bing apps that you saw many of them yesterday as part of Windows 8.1 are using the Azure backend to do a lot of things like notifications, which is one of the core scenarios for any mobile apps. And it's going to send something like a billion notifications a month.
So all of these diverse needs that we have been building infrastructure for, we have this one simple mantra where "first party equals third party." That means we build for our first party and make all of that available for our third party. And that feedback cycle is a fantastic cycle for us.
Now, when you put it all together, you put what we're building, what you're building, we see the activity on Azure, we listen to our customers, and you sort of distill it and say, "What are the key patterns of the modern business for cloud? What are the applications people are building?"
Three things emerge: People are building Web-centric applications. People are building mobile-centric applications. And what we call cloud-scale and enterprise-grade applications. So the rest of the presentation is all about getting into the depth of each of these patterns.
Now, in support of these applications, we're building a very robust Windows Azure app model. Now, of course, at the bottom of the app model is our infrastructure. We run 18-plus datacenters on our own, 100-plus co-locations. We have an edge network. And so that is the physical plant. But the key thing is it's the fabric, the operating system that we build to manage all of those resources.
At the compute-storage-network level, at the datacenter scale and multi-datacenter scale. And that really is the operating system that is Windows at the backend, at this point, which in fact shipped even in Windows Server for a different scale unit.
But that infrastructure management or resource management is one part of the operating system.
Then about that, you have all the application containers. And we're unique in providing a complete IaaS plus PaaS, which is infrastructure as a service and platform as a service capability when it comes to application containers. Everything from virtual machines with full persistence to websites to mobile to media services to cloud services. So that capability is what allows you to build these rich applications and very capable applications.
Now, beyond that, we also believe that we can completely change the economics of what complex applications have needed in the past. We can take both productivity around development and continuous deployment and cycling through your code of any complex application and reduce it by orders of magnitude.
Take identity. We are going to change the nature of how people set up your applications to be able to accept multiple identities, have strong authentication and authorization, how to have a directory with rich people schema underneath it that you can use for authorization.
Integration, take all of the complex business-to-business or EI type of project that you have to write a lot of setup before you even write the core logic; we want to change the very nature of how you go about that with our integration services.
And when it comes to data, there is not a single application now that doesn't have a diverse set of needs when it comes to the data from everything from SQL to NoSQL, all types of processing from transactional to streaming to interactive BI to MapReduce. And we have a full portfolio of storage technologies all provided as platform services so that your application development can be that much richer and that much easier.
Now, obviously, the story will not be complete without great tooling and great programming model. What we are doing with Visual Studio, we will see a lot of it throughout the demos. .NET, as well as our support for some of the cloud services around continuous development -- everything from source code control, project management, build, monitoring -- all of that technology pulled together, really take everything underneath it to a next level from an application development perspective.
But also supporting all the other frameworks. In fact, just this week we announced with Oracle that we will have even more first-class support for Java on Windows Azure. And so we have support for node, we have support for PHP and so on. So we have a fantastic set of language bindings to all of our platform support and a first-class support for Visual Studio .NET, as well as TFS with Git when it comes to application development.
So that's really the app model. And the rest of the presentation is really for us to see a lot of this in action.
Let me just start with our IaaS and PaaS and virtual machines. We launched our IaaS service just in April. In fact, we have tremendous momentum. Something like 20 percent of all of Azure compute already is IaaS capacity. So that's tremendous growth.
The gallery of images is constantly improving and increasing in size, in depth, breadth, and variety. In fact, if you want to spin up Windows Server 2012 R2, I would encourage you to go off to the Azure gallery and spin it up because it's available as of yesterday there, and so that will be a fantastic use of the Azure IaaS, and test that out.
So what I want to talk about is websites. We've made a lot of investments in websites. And when we say "websites" we mean enterprise-grade Web infrastructure for your most mission-critical applications. Because if you think about it, your website is your front door to your business. It could be a SaaS business, it could be an enterprise business, but it's the front door to your business. And you want the most robust enterprise-scale infrastructure for it. And we've invested to build the best Web stack with the best performance, load balancing built in, elasticity built in, and from a development perspective, integrated all the way into Visual Studio.
So we think that what we have in our website technology is the best-in-class Web for the enterprise-grade applications you want to build.
Now, you can also start up for free, and you can scale up. So maybe even the starting process with our Web, very, very easy.
Now, of course having Web technology is one, but it's also very important for us to have a lot of framework support. And we have a lot of frameworks. But the one framework that we hold close and dear to our heart is ASP.NET. This is something that we have continued to innovate in significant ways. One of the things that we've done with the new version of ASP.NET, which is in preview as part of .NET 4.5.1. is the one ASP.NET. Which means that you can have one project where you can bring all of the technologies from Web forms to MVCs to Web APIs to signal all together.
We also improved our tooling from a scaffolding perspective across all of these frameworks.
You're all building even these rich Web applications. So these single-page Web applications. And for that, you need new frameworks. We have Bootstrap. You also want to be able to call into the server side, we made that easy with OLAP support, we made it easy with Web APIs. So this makes it much easier for you now to be able to build these rich Web apps.
And entity framework. We've now plumbed async all the way back into the server. So now, you can imagine if you're building one of those social media applications with lots of operations on the client, as well as needing the same async capabilities on the backend, you now have async end to end.
So a lot of this innovation is, I think, in combination with our Web is going to completely change how you could go about building your Web applications and your Web technologies.
To show you some of this in action, I wanted to invite up onstage Scott Hanselman from our Web team. Scott? (Applause.)
SCOTT HANSELMAN: Hello, friends. I'm going to show you some of the great, new stuff that we've got in ASP.NET and Visual Studio 2013.
I'm going to go here and hit file, new, project. And you'll notice right off the bat that we've got just one ASP.NET Web application choice. This is delivering on that promise of one ASP.NET. (Applause.)
Awesome, I'm glad you dig that. And this is not the final dialog, but there is no MVC project or Web forms project anymore. I can go and say I want MVC with Web API or I want Web forms plus MVC. But there is, at its core, just one ASP.NET.
We've got an all-new authentication system. I can go in here and pick organizational accounts, use Active Directory or Azure Active Directory, do Windows auth.
For this application, I'm going to use an individual user account. I'm going to make a geek trivia app. So I'll hit create project.
Now, of course when you're targeting for the Web, it's not realistic to target just one browser. We're not going to use just Internet Explorer; we're going to use every browser and try to make this have as much reach as possible.
So up here, I'm going to click "browse with" and then pick both Internet Explorer and Google Chrome and set them both as the default browser. (Applause.)
Now, we'll go ahead and run our application. And I'll snap Visual Studio off to the side here. You notice Visual Studio just launched IE and Chrome.
You can see that we're using Twitter Bootstrap. We're shipping Bootstrap with ASP.NET; you get a nice, responsive template. We've got the great icons, grid system, works on mobile. And that's going to ship just like we shipped jQuery, as a fully supported item within ASP.NET, even though it's open source.
I'm going to open up my index.cs HTML over here. You can see we've got ASP.NET as my H1. Notice next to multiple browsers, we've got a new present for you. You see this button right here? We're running SignalR in process inside of Visual Studio, and there's now a real-time connection between Visual Studio and any number of browsers that are running.
So now I can type in the new geek quiz application and hit this button. And using Web standards and Web sockets, we've just talked to any number of browsers. (Applause.)
Now, this is just scratching the surface of what we're going to be able to do. What's important isn't the live reload example I've just shown you, but rather the idea that there's a fundamental two-directional link now between any browser, including mobile browsers or browser simulators and Visual Studio.
Now, this is using the Bootstrap default template, which is kind of default. So I'm going to go up to Bootswatch, which is a great website that saves us from the tyranny of the default template.
And I'm going to pick -- this looks appropriately garish. I'm going to pick this one here. And I'm going to just right click and say "save target as" and then download a different CSS, and I'm going to save that right over the top of the one that came with ASP.NET.
And then I'll come back over here and use the hotkey control/alt/enter and update the linked browsers. And you'll see that right there, the hotdog theme is back today, and this is the kind of high-quality design and attention to -- I can't do that with a straight face -- attention to detail and design that you've come to expect from us at Microsoft. That's beautiful, isn't it? You've got to feel good about that, everybody.
I'm going to head over into Azure. And I'm going to say "new website." You know, creating websites is really, really easy from within the portal. I'll say geek quiz. Blah, blah, blah, and I'm going to make a new website.
And this is going to fire up in the cloud right now. You can see it's going and creating that. And that's going to be ready and waiting to go when it's time for me to publish from Visual Studio.
Now, I'm going to fast forward in time here and close down this application and then do a little Julia Child action and switch into an application that's a little bit farther along.
So we're going to write a geek quiz or a geek trivia app. And it's going to have Model View Controller and Web API on the server. And it's going to send JSON across the wire over to the client side. This trivia controller, which is ASP.NET, Web API is going to be feeding that.
This is code that I'm not really familiar with. I can spend a lot of time scrolling around, or I could right click on the scroll bar, hit scroll bar options, and some of you fans may remember this guy. It's back. And now you've got map mode inside of the scroll bar. I can move around, find my code really, really easily. Here is the GET method. Notice that this GET method is going to return the trivia questions into my application here. And it's marked as async. We've got async and await all the way through. So this asynchronous Web API method is then going to call this service call, next question async.
Now, I could right click and say "go to definition." But I could also say "peek definition." And without actually opening the source code, see what's going on in that file. (Applause.)
I could promote that if I wanted to. You notice, of course, I'm using Entity Framework 6, I've got async and await from clients to servers to services all the way down into the database non-blocking I/O, async and await all the way down. I just hit escape to drop out of there. So it makes it really, really easy to move around my code.
So this is going to serve the trivial questions. I'm just going to hit control comma, go get my index.cs HTML.
Now, in this HTML editor that's been completely rewritten in Visual Studio 2013, you notice that I've got a couple of things you may not have seen before in an ASP.NET app. I've got Handlebars, which is a templating engine, and I've got Ember. So we've got model view controller on the server and model view controller on the client. So we can start making those rich, single-page applications.
Here, I've got the Handlebars. This is a client-side template. You can see right off the bat that I've got syntax highlighting for my Handlebars or my Moustache templating. And I'm going to go ahead and fire this up, and I'll put IE off to the side there, and I'll put VS over here.
And I'm going to log into my geek quiz app. See if I can type my own name a few times here, friends. There we go. And this is going to go and fetch a trivia question. See, it said, "loading question." And then it says, "How many Scotts work on the Azure team?" Which is a lot, believe me.
You'll see that that's coming from this bound question tile. So we've got client-side data binding right there.
Now, I need to figure out what the buttons are going to look like. I've got the question, but I don't have the buttons. I could start typing the HTML; that's kind of boring. But I could use Visual Studio Web Essentials, which takes the extensibility points in Visual Studio and extends them even further.
And I could say something like hash fu dot bar and hit tab. And now I've got Zen Coding, also known as Emmet, built in with Web Essentials.
So that means I could go and say, you know, I need a button. And button has a button trivia class, but I need four of those buttons.
And then, again, I hit -- you like that, kids? (Applause.) Then I hit refresh, and you'll notice that my browser is updating as I'm going.
But that's not really good. I need more information. I really want the text there that says "answer," and I want to have answer one, answer two, answer three. So I'll go like that. And then hit refresh, and then we're seeing it automatically update.
So that looks like what I want it to look like. But I want to do that client-side data binding. So I'm going to take this here, and I'm going to spin through that JSON that came across the wire. So I'm going to go open Moustache, and I'm going to say for each, and again, syntax highlighting, great experience for the client-side developer.
I'm going to say for each option, and then we'll close up each here. And answer one, just like question title is going to be bound. So I'm going to open that up, and I'm going to say option.title. And then when a user clicks on that button, we're going to have an Ember action. I'm going to say the action is call that send answer passing in the question and then passing in the option that the user chose.
I just did an update with the hotkey, how many Scotts work on Azure? 42. How old is Guthrie? He is zero XFF because he's quite old. What color is his favorite polo? Goldenrod, in fact, is my -- no? I'm sorry, Goldenrod is the next version of Windows, Windows Goldenrod. So my mistake there.
So that's pretty hot. I'm going to go ahead and right click and hit publish. And because I've got the Azure SDK installed, I can do my publish directly from Visual Studio. We're going to go and load our Azure website. Hit OK. It brings the publish settings right down into Visual Studio. And I can go and publish directly from here.
So now I'm doing a live publish out to Azure directly from Visual Studio. It goes and launches the browser for me.
And I can click over here on the Server Explorer, and Windows Azure actually appears on the side now. I can start and stop virtual machines, start and stop websites; they're all integrated inside of the Server Explorer.
That's my website. I can double click on it, and again, while I can go to the management portal, I can change my settings, my .NET version and my application logging without having to enter the portal.
So back over into my app, when I sign in, I know that people are going to be pushing buttons and answering questions backstage. I want to see that. I put in some tracing. So what I'm going to do is right click and say view streaming logs in the output window.
This is the Visual Studio output window. And I'm just going to pin that off to the side. And then as I'm answering questions, and it looks like someone backstage is answering questions as well. I'm getting live streaming trace logs from Azure fed directly into Visual Studio. (Applause.)
Now, you know that we've also rewritten the entire authentication infrastructure and made it based on OWIN, which is the Open Web Interface for .NET. It's an open source framework that lets you have pluggable middleware. So identity and authorization has been rewritten in a really, really clean way. And it allows us to do stuff that we really couldn't do before and extend it in a pretty funny way.
And I think that every good sample involves a QR code, right? Don't you think? This will bring the number of times that you've seen a QR code scanned in public to three. (Laughter.)
So what I want to do is I want to install this QR sample because I know people are going and checking out these trivia stats. And I've got SVG and SignalR giving me real-time updates as people are answering trivia questions.
I'm logged in right now as CHanselman. I want to take this session and I want to deep link into an authenticated session on a phone and then view these samples and take them with me.
So I've gone and used NuGet to bring in the QR sample. And now I'm going to go and publish that again to the same site. This is an incremental publish now. So this is going to go and send that new stuff up to Azure.
And then I'll bring up my phone here. I've got my phone. And my camera guy, he follows me around. And I'm going to click on trivia stats. And here are the real-time trivia stats.
And then I'm going to click on transfer to mobile up here in the auth area. And we're going to do is we're going to generate a QR code. I'm going to then scan that code, and we get a deep link that pops up generated by ASP.NET that's then going to bring me in IE, and now I've got SingnalR, SVG, and Flot all running inside of my browser and I've jumped into my authenticated session using OWIN, ASP.NET, and HTML5. It's pretty fabulous stuff. (Applause.)
So we've got the promise of one ASP.NET; we've got browser link, bringing all of those browsers together with Web standards using SignalR. You saw Web Essentials as our playground that we're adding new features to Visual Studio 2013. We can make Azure websites easily in the portal, publish directly from VS, logging, SignalR everywhere. Thanks very much, I hope you guys have fun. (Applause.)
SATYA NADELLA: So I hope you got a great feel for how we're going to completely change or revolutionize Web development by innovation in tools, in the framework, and in the Web server in Windows Azure. And round-tripping across all three such that you can really do unimaginable things in a much more productive way.
We have over 130,000 active websites or Web applications today using Azure websites. Some big-name brands -- Heineken, 3M, Toyota, Trek Bicycle -- doing some very, very cool stuff using some of this technology.
I'm very, very pleased that we're using all of that feedback to announce the general availability of Windows Azure Websites. This has been in preview now since last Build, and we've had some tremendous amount of feedback from all of the customers who have been using it. Many of them, obviously, in production. But now you can start using it for full SLA and enterprise support from us. So we're really, really pleased to reach this milestone. Hope you get a chance to start using it as well. (Applause.)
I'm also pleased to announce the preview of Visual Studio 2013. You got to see it yesterday, today, and you'll see a lot more of it. It's just pretty stunning improvements in the tool itself. And combined with the .NET 5.1 framework update, you now have the previews of both the framework and the tools, and we really encourage you to give us feedback like you did the last time in your app development, and we'll be watching for that.
So now I want to switch to mobile. Now, when you think about mobile-centric application development, the key consideration perhaps more than anything else is how do you build these mobile apps fast? And since there's not a single mobile experience or application you're building which doesn't have a cloud backend, then the natural question is: What can we do to really speed up the building of these cloud backends?
And that's exactly what Azure Mobile Services does, which is we provide a very easy way for you to build out a backend for your mobile experiences and applications. We provide a rich set of services from identity to data to push notification, as well as background scripting.
And then, of course, we support all of the platforms, Windows, Windows Phone, Android, IOS, as well as HTML5.
To show you this in action, I wanted to invite up onstage Josh Twist from our Windows Azure Mobile Services team. Josh? (Applause, music.)
JOSH TWIST: Thanks. We launched Windows Azure Mobile Services into preview in August last year. And in case you weren't familiar, mobile services makes it incredibly easy to add the power of Windows Azure to your Windows Store, Windows Phone, IOS, Android, and even Web and HTML applications.
To prove this to you, I'm going to give you a demo now of how easy it is to add the cloud services you need to an IOS application using this map.
Here we are in the gorgeous Azure portal, and creating a new mobile service couldn't be easier. I click, new, compute, mobile service, create. I enter the name of my mobile service, and then I choose a database option.
And I want to point out, look at this new option we have here. You can now create a free 20-megabyte SQL database. Which means it's now completely free for developers to work against Mobile Services with the 10 free services and that free 20-megabyte SQL database.
Now, I've already created a service we have here today that we're going to use called My Lists. If I click on the name, I'm greeted by our quick start, which is a short tutorial that shows me how to build a to-do list application.
Now, I selected IOS, but this same mobile service could simultaneously power all of these platforms.
We're going to create a new IOS application. And since it's a to-do list app, I need a table to hold my to-do list items.
And then I'm going to download a personalized starter project. So here it comes. That's a little zip file. And inside that zip file I'm downloading from the portal is an Xcode project. So if I double click this, it'll open up in Xcode, and then we're going to take a look at the source. Because what we've done is we've pre-bootstrapped the application to be ready to talk to Mobile Services. You'll see it already contains the URL for my new mobile service.
So what I'm going to do is launch this in the simulator. And what we'll see here is a little to-do list application that inserts, updates, and reads data from Windows Azure with each operation being a single line of code, even in Objective-C.
So I'm going to create a little to-do list item here to add to my tasks. Let's just save that. So now that's saved in Windows Azure. To prove that to you, I'm going to switch over to the portal. We take a look at the data tabs, and you'll see I can drill into the table, view all of my data right here, and there's the item I just added saved safely into a SQL database in Windows Azure.
Now, we have so many cool features in Mobile Services. Here's another one. I can actually add a script that executes securely on the server and intercepts those CRUD operations.
So what I'm going to do here, just to give you a quick example, is I'm going to add a time stamp to items that are being inserted. So I simply say item dot created equals new state. I'm going to save that. And right here from the portal, that's going to go live into Windows Azure and be updated in just a few seconds. So it's done.
Switch back to the app. Let's insert a new item. That's now saved. So if I switch back to browse, we'll see that data again, but notice how we've automatically created a new column, and we've got that extra piece of data in there that executed on the server.
Now, we have this amazing script editing experience here in the browser, but not everybody wants to edit code in the portal. And so we've added a new feature to Windows Azure Mobile Services that allows you to manage all of your source assets using Git Source Control.
So I'm going to show you how to enable that. We go to the dashboard. Just down here under quick glance, we'll get an option to set up source controls. So I'm going to click on that and kick it off.
Now, this can take a minute or two. So while that's running, I'm going to give you a tour of some of the other new features we've added to Mobile Services recently.
One of our most-requested features was the ability to have service scripts for execute on the server but not in conjunction with HTTP CRUD operations where I can create an arbitrary REST API.
We've added that feature, and it's called Custom API. So I can now create a completely arbitrary REST API in a matter of minutes with Mobile Services.
We also have a scheduler that allows me to execute scripts on a scheduled basis. So I can execute these every 15 minutes, every night at 2 a.m., whatever I prefer. And we also make it incredibly easy for you to authenticate your users with Microsoft Accounts, Facebook, Twitter, and Google. It's just a single line of code in your applications.
Now, our source control's still running here. So what I'm going to do actually is switch to another service, not make you guys wait.
So we have one here where I pre-configured Git. So if we go to the configure tab, you'll see what we have here is a Git URL. So I'm going to copy this to the clipboard and then switch the terminal. And we're now going to pull all of the source files down from the server repo onto my local machine.
That's going to take just a few seconds. It's going to pull those files down so I can now work on them locally with my favorite tools.
So I'm going to just drive into this directory here and show you what the tree looks like. So you can see we can see all of the API files, the scheduler files, and my table files including that insert script that we just edited in the portal.
Let's take a look at that in Sublime. And you can see there's that change. Now, we can make more changes here. I'm just going to comment this out and save it. And then I'm going to do a Git push to push that back up. So let's commit it to the tree. And then Git push, and in a matter of seconds, that change will go live into Windows Azure.
So enough with the Mac. Let's talk about what's happened since preview. We're now supporting tens of thousands of services in production on Mobile Services to all kinds of scenarios from games to business applications and consumer engagement applications.
I want to talk to you today about one of my favorite applications that we have in the store. And it's from a company called TalkTalk Business. TalkTalk Business are one of the U.K.'s leading telephony providers for businesses. And these guys have a serious focus on customer service. So they've created a Windows Phone app and a Windows Store app.
Let me show you the phone application now. So here's the app on my Start screen. If we launch it, you'll see we get an instant at-a-glance view of my billing activity, my account balance. I can see all of the services I can use with TalkTalk Business, and I get real-time delivery of up-to-the-minute service alerts.
Now, it should come as no surprise that best-in-class applications like this need best-in-class services. And this is actually built using Mobile Services and is live in the U.K. stores today.
Now, they also have a Windows Store application. And I actually have a replica of that project here on my Windows machine.
And you can see the project's open in the next version of Visual Studio 2013. One of the capabilities this app has is it lets me manage my user profile.
Now, let me show you some of the code that does that. So over here in this file, you can see where we upload the user profile when we make a save. Notice how that's just a single line of code to write that data all the way through to my database.
And here we load a user profile into the UI, again, with a single line of code.
Now, these guys also have tables and scripts. And I want to show you those, but instead of switching out to the portal, let's do it using the Server Explorer in Visual Studio 2013.
So I can open up the Server Explorer here, dive into Windows Azure, notice the new Mobile Services tab, expand that, and we'll see enumerated all of our Mobile Services.
There's my TalkTalk service. And if we open this, we'll see all of the tables that are backing that service, including my user profiles table down here.
If we look in that, we'll be able to see all of my scripts. The best thing is I can now edit them here in Visual Studio.
So I launched the script editor. I can make a change. And then when I hit save, this is going to deploy live to Windows Azure directly from Visual Studio in a matter of seconds. It's done. (Applause.)
So the next thing I want to do is app push notifications for this application.
Now, setting up push traditionally is quite a few steps. I have to register my application with the Windows Store. I have to configure Mobile Services with my credentials to call Windows Notification Services. I have to require a channel URI on my client and upload that to Mobile Services so it's ready to send the push.
Let me show you just how easy we've made this in the next version of Visual Studio.
I simply right click, add push notification, and this wizard is going to guide me through all of the steps necessary. So I'm just entering my credentials there for the Windows Store. And then it's going to ask me to choose which application I want to associate. So I'm going to choose this one.
The next step, I'll be asked to choose which mobile service I want to configure. I'm going to choose TalkTalk, and we're done.
What's going to happen now is this is going to make some changes to my mobile service and to my client application. In fact, it's going to prewire a test notification so I can be superbly confident that everything is wired correctly and going to work. And to try that out, all I have to do is launch the application.
Let's try that now. It's going to take a second to deploy. And then what we should see is a push notification arrive in the top-right corner. And there we go. So that's how easy we've made it now to add a push notification to your application with Mobile Services and Visual Studio 2013. (Applause.)
The next thing I want to do is create an ability for the administrators at TalkTalk Business to actually send these service alerts. And these guys use a Web portal. So let's switch over to their Web project.
So here it is in Visual Studio. And you'll see we have an index HTML file. Let's open that up.
We've already added the client. So all I need to do now is add the code to invoke the service API that sends those messages. So let's try that. So I start client dot invoke API. I need the name of the API I'm calling, which is send alert, in this case. And then since I'm doing a post, I need to specify the body. Body is service alert. And we're done.
So I'm going to save that and launch it in the local browser. Now, since we've already pre-configured the client to receive push notifications, we can actually test this whole scenario end to end right here on this machine.
So what I'm going to do is send out a service alert for email in the midlands and western region that says SMTP upgrade complete. And when I hit send notification I should get a push notification in the top-right corner that was initiated from a website. And there we go. (Applause.) Thank you.
You can see just how easy it is to add some incredible capabilities to your apps using Windows Azure Mobile Services. I really can't wait to see what you guys do with this. I'll see you at 2:00. (Applause.)
SATYA NADELLA: Thanks, Josh.
As Josh was saying, we've been in preview, and we've got some tremendous feedback. We've had over 20,000 active apps on Azure Mobile Services to date, and TalkTalk Business is something that Josh showed. There's a cool app written by Aviva, which is an application that collects telematic data from a mobile app and gives you a real-time quote based on your driving habits for your car insurance, which is a fascinating application, and there are many, many applications like that, which are getting written on top of Azure Mobile Services.
So I'm really, really pleased to announce the general availability of Azure Mobile Services today. We think that this is going to really help in your mobile development efforts across all devices, and we look forward to seeing what kind of applications you go build.
So now to take you to the next section, which is all around cloud scale and enterprise grade, let me invite up onstage Scott Guthrie. Scott? (Applause.)
SCOTT GUTHRIE: Well, this morning we looked at how you can use Windows Azure to build Web and mobile applications and host them in the cloud.
I'm now going to walk through how we're making it even easier to scale these apps, as well as integrate them within enterprise environments.
Let's start by talking about scale. Specifically, I'm going to use a real-world example, which is Skype.
Now, Skype is one of the largest Internet services in the world. And over the last year, they've been working to migrate that service to run on top of Windows Azure.
One of the benefits they get from moving to Windows Azure is that they can avoid having to buy and provision their own servers, and instead leverage a dynamic cloud environment.
Like most apps, Skype sees fluctuations in terms of load throughout the day, the week, even different parts of the year. And in a traditional datacenter environment, they need to deploy a thick set of servers in order to handle their peak load.
The downside with this, though, is that you end up having a lot of expensive, unused compute capacity during non-peak times.
Moving to a cloud environment like Windows Azure allows them to, instead, dynamically scale their compute capacity based on just what their service needs at any given point in time. And this can yield enormous cost savings to both small and especially to very large services.
Now, with Windows Azure, you've always been able to dynamically scale up and scale down your apps, but you had to typically write custom scripts or use other tools in order to enable that. What we're excited to announce today is that we're going to make this a lot easier by baking in auto-scale capability directly into Windows Azure. And this is going to make it easy for anyone to start taking advantage of these kind of dynamic scale environments and yield the same cost savings.
I'd like to invite Charles Lemanna onstage to show it off in action. (Applause.)
CHARLES LEMANNA: I'll be giving a quick demo of the brand-new autoscale feature that supports Windows Azure Compute Services.
First, I'll cover the website autoscale, then the cloud services, and then the virtual machine.
So if I navigate to the website you saw earlier from Scott Hanselman's demo, the geek quiz website, we see all the normal metric information that Windows Azure is collecting for his deployment. In this case, CPU time, response time, and network traffic.
But now there's a new prompt to configure autoscale for this particular website. In the past, when the website would get lots of traffic, people would come in and take the quiz. Scott would have to go in and manually drag the slider to increase his capacity so his response time is not impacted.
However with autoscale, I'm able to now configure a basic set of rules that will manage the capacity from my website automatically.
I can configure an instance count range with a minimum value that we'll always honor, as well as a maximum value. In this case, we'll never go above six instances, so you can be sure you won't get a giant bill.
Next, you can also configure a target CPU range. In this case, I say choose 40 to 54 percent, and what that means is the autoscale engine for Azure in the background we'll be turning off and turning on website instances so your CPU always stays in that range. In other words, if you go below 40 percent, we'll turn off the machine to save you money, and if you go above 54 percent, we'll turn on a new machine so none of your users are impacted.
And just like that, I click save, and Windows Azure will manage my website, scale, and capacity entirely on its own. (Applause.)
Next, I'll hop over to the cloud service autoscale. I just have a simple deployment here with a Web front end where my customers can come and, say, place T-shirt orders or other memorabilia. And this front end puts items into a queue, which I have a background worker role, which will go and pull items from this queue and process them for billing or shipping.
For the Web role, I've already configured autoscale based on CPU, just like you saw for websites with an instance range and a CPU range. But I also can configure a scale up by, which impacts the velocity by which I increase my capacity. I've chosen to scale up by two instances with only a five-minute cool down because I want to respond immediately and quickly to spikes in customer demand.
For my background worker role, it's a little bit different. I don't care as much about CPU; I care about how many items are waiting in the queue to be processed, how many orders I have to go through.
In this case, I've already configured autoscale based on queue depth by selecting a storage count and queue name, as well as the target number of items in that queue per machine.
In this case, as the queue gets bigger, we'll add more machines. Imagine it's the holidays and a bunch of new orders come in; we'll make sure you have enough capacity to process it in real time.
And imagine it's a Sunday night and not as many people are coming to your website and placing orders. We'll go down to your minimum to save you even more money on your monthly Azure bill.
Lastly, I'll hop over to virtual machines. Virtual machines are just like cloud services in that you configure autoscale for a set of virtual machines based on either CPU or queue.
For the virtual machines, you can choose minimum-maximum instances, and we'll move you up and down within that range by turning on and turning off those machines. And with the recent announcement of no billing while the machine's stopped, you don't have to worry about being charged in this case.
As you can see, it just took a few minutes to configure autoscale across all these different compute resources. And that's what the power of autoscale brings to Windows Azure. In just a few minutes, you can make sure your cloud application runs, stays up and running for the lowest possible cost. Thank you. (Applause.)
SCOTT GUTHRIE: So as Charles showed you, it's super easy to configure autoscale and set it up so you can really take advantage of some great savings. He also mentioned, two of the improvements that we made earlier this month is the ability now to stop VMs without incurring any billing compute charge, as well as the ability to now bill per minute. This means that if you run your site or you run your VM for only 20 minutes, we're only going to bill you for the 20 minutes that you actually run it instead of the full hour.
And when you combine all these features together, it really yields a massive cost savings over what you can do today in the cloud, but in particular, also over what you can do in an on-premises environment.
We're really excited to announce that the preview of Windows Azure Autoscale is now live. And you can actually all try it out for free and start taking advantage of it today. (Applause.)
So let's switch gears now and talk a little bit about enterprise integration and some of the things that we're doing to make it even easier for you to build cloud apps and integrate them within your corporate or enterprise environment. Whether you're an enterprise building your own apps or you also hear a little bit about how we're enabling ISVs that are building SaaS-based solutions to sell into an enterprise environment and monetize even more effectively.
There are a whole bunch of services that we have built into Windows Azure in the identity space that makes it really easy to do this kind of enterprise identity integration so that you can define an Active Directory in the cloud using a service we call Windows Azure Active Directory.
You can basically have a cloud-only directory, meaning you only have one directory, and it's in the cloud, and you put all your users in it.
What's nice about Windows Azure Active Directory though is it also supports the ability where you can synchronize it with an on-premises Active Directory that you're running on Windows Server. And this is great for enterprises or corporates that already have Active Directory installed. And it allows them to very easily synchronize all their users into the cloud and allow cloud-based applications to start using that directory very easily to authenticate and enable single sign-on for all their customers.
And what's nice about Windows Azure Active Directory is it's built using open standards. So we support SAML, OAuth, as well as WS Federation, which makes it really easy for you as developers to start authenticating and enabling single sign-on within all your apps using existing libraries and protocols that you already use.
So what I thought I'd do is actually walk through a simple example of how this week we're making it even easier in order to take advantage of that.
So what I'm going to show here is just a simple example where we have a company called Contoso that has an Active Directory on premises. And they're going to basically spin up an Azure Active Directory running inside Windows Azure. And they can synchronize their directory up into the cloud. That means all their users are now available there.
And what they can then do is they can start to build apps, whether they're mobile apps, Web apps, or any other type of app, deploy them in the cloud, and now any of their employees when they go ahead and access that application can enable single sign-on using their existing enterprise credentials and be able to securely login and start using that app. Let's go ahead and walk through some code on how we do that.
So what I'm standing in front of here is the Windows Azure Management Portal, which you already seen Scott and Josh and Charles walk through earlier today.
What I'm going to do is click on this Active Directory tab that's within the portal, which allows me to control and configure my Windows Azure Active Directory.
And what you can see here is the Contoso directory has already been created. I'm creating directories inside Windows Azure; it's actually free; it doesn't cost anything. So every developer they want can create their own directory, and companies can very easily go ahead and populate their directory with their information.
You can see here this directory; I already have a number of users that are stored within it. If I want to, I could directly inside the admin tool create new users and manage them through the admin console.
I could also click that directory integration tab and then set up a sync relationship with my on-premises Active Directory. That means every time a user is added or updated inside my on-premises Active Directory, it'll be automatically reflected inside Windows Azure as well.
So once I have this, I basically have a directory that I can use within my applications to authenticate users.
So let's build a simple app using the new Visual Studio 2013 and the new ASP.NET release coming out this week and show how I could basically integrate that within a Web app.
So I'm going to use the same Web application template that Scott showed earlier. Call this Simple App.
I can choose whatever frameworks I want within it. I can also click this change authentication dialog box that Scott touched on briefly in his talk.
And what I'm going to do is I'm going to click this organizational accounts tab. And I can go ahead now and enter in the name of the domain of my company. You'll notice inside this dropdown we've added support so that both for internal apps within an enterprise that want to target a single company, they can do it. We also support the ability if you want to develop a SaaS application and target multiple enterprise customers, you can go ahead and select that as well. (Applause.)
I can then go ahead and just enter the password here. What I'm doing here is just registering this application with Windows Azure. And I just hit create project, and what this is literally going to go ahead and do now is create for me an ASP.NET project using whatever framework that I wanted to specify as registering that application with Windows Azure. So it's basically saying I'm going to do secure sign-on with it.
And now if I go ahead and run this application in the browser, it's going to launch, and one of the first things you'll see it do is because I've enabled Active Directory single sign-on, it's just going to automatically show me a single sign-on screen. And right now, I’m on the Internet, so that's why it's going to prompt me with this in HTML. I can also set it up if I was in an intranet environment where I wouldn't have to explicitly sign in.
But right now, I can sign in. And I'm just going to say Contoso Build.com. If I do this now, I'm logged into this ASP.NET. I'm logged in using my Active Directory account that the employee has. And I've literally in a matter of moments set this thing up where I'm actually now using the cloud in order to actually use a single sign-on provider.
What this means is not only can I run this thing locally, but I can now just right click and hit publish, and I can publish this as a website, I can publish this as a virtual machine or in a cloud service. And now any of the employees within my organization that access it are integrated with their existing enterprise security credentials and can do single sign-on within the application. (Applause.)
So this makes it really, really easy for you now to build your own custom applications, host them in the cloud, and enable enterprise security throughout.
What we're also doing with Windows Azure Active Directory is making sure that not only can you host your own applications, but we also want to make it really easy for enterprises to be able to consume and integrate existing SaaS-based solutions and have the same type of single sign-on support with Active Directory as well.
This is great for enterprises because it suddenly means that they can go ahead and take advantage of all the great SaaS solutions that are out there, and they can start to integrate more and more apps with less friction into their enterprise environment. And it's really great from an ISV and developer perspective because it now means that you can go ahead and build SaaS solutions and sell them to enterprises at a fraction of the friction that was required today. That makes it much easier to go ahead and show the value quickly, makes it much easier to onboard your enterprise customers, and at the end of the day, enables you to make a lot more money.
So what I'm going to do is walk through an example of how this works. So we're going back to the Windows Azure portal. And we've got our users, like we had before here. I'm now going to click this applications tab as well. And what the applications tab does is it's going to show me all of the apps that have been registered with this directory. So any of the custom apps that I would build would show up here.
You'll notice also inside this list, we have a bunch of popular SaaS-based solutions that have already been registered with Contoso as well. So we've got Box, Basecamp, and many others.
What I can do now inside the Windows Azure portal if I'm an administrator of the directory is I can go ahead and just click add. Click this manage access to an application link. And what we're integrating is SaaS-based directory of existing SaaS-based solutions that this organization can now seamlessly integrate as part of their Windows Azure Active Directory system.
So, for example, I could do popular ones like DocuSign or Dropbox or Evernote.
We've got ones you might not expect at a Microsoft conference. We've got Google Apps. We've got Salesforce.com. We even just for giggles enabled Amazon Web Services. (Laughter.) Some of these we'd like you to use more than others. (Laughter.) But regardless, you can add any of these, and basically once you just click add, they'll show up in this list. And then all you need to do in order to integrate your single sign-on with one of these apps is drill into it.
So in this case here, I'm going to drill into Box. Basically, I can just hit configure. I can say I want to enable my users to authenticate the Box using my Windows Azure Active Directory. Just paste in my Box tenant URL, which is the URL I get from Box. And I just download and upload a cert in order to make sure that we have a secure connection.
And once I do that, I then basically have integrated my Active Directory with Box. I can then go ahead and hit configure user access. This will bring up my list of all the users within my Windows Azure Active Directory. I can then go ahead and click on any of them, click enable access.
You'll notice we've even integrated if the SaaS provider has roles defined within their application, I cannot only give this user access to Box, but I can actually map which roles within the Box applications they should have access to. And then hit OK and then literally in a matter of seconds, that user is now provisioned on Box and they can now use their Active Directory credentials in order to do single sign-on to that SaaS application. (Applause.)
So I'm going to switch gears now and go to another machine. So I was showing you kind of the administrator experience for how an administrator would login or enable that. I'm now going to kind of show you the end-user experience of what this translates into. And once we set up that relationship with that particular employee, that employee can go ahead and just go to Box directly and use their Active Directory credentials to sign in.
Or one of the other things that we've done which we think is kind of cool is integrated the ability so that the company can expose the single dashboard of all the SaaS applications that they've configured that employees can just go ahead and bookmark.
So in this case here, going ahead and logging into this. So this is kind of an end-user experience. All of the apps, SaaS solutions, or custom apps that the administrator of Active Directory has gone ahead and said you have access to will show up in this list. So you can see the Box app that we've just provisioned shows up here now. And as more get added, we'll just dynamically show up.
And then what the user can do is just go ahead and click on any of them in order to initiate a single sign-on relationship. And that's how easy now our Contoso employee is now logged into Box. And they can now do all the standard Box operations now using their Active Directory against it. (Applause.)
The beauty about this model is not only is it super easy to set up, you saw both on the administrator side, as well as on the developer side, it's really, really easy to integrate. But it also means from an enterprise perspective, they feel a lot more secure. It means that if the employee ever leaves the organization or their account is ever suspended, they basically lose all access to the SaaS applications that they've been using on the company's behalf. So the company doesn't have to worry about the data leaving or the employee still able to kind of login and make changes to their data. So it enables a very nice model there.
And I think from a developer perspective, you know, one of the things to think about in terms of what we're enabling here is not only is it easy, but it's going to enable you to reach a lot of customers. We have more than 3.2 million businesses that have already synced their on-premises Active Directory to the cloud and more than 68 million active users that login regularly using that system.
That basically means as a developer, as a company that wants to sell to enterprises, you've got an awesome market that you're now able to go ahead and sell to and makes it real easy for you to monetize.
And what I thought I'd do is actually invite Aaron Levie, who is the co-founder and CEO of Box to actually come onstage and talk a little bit about what this means to Box and some of the kind of possibilities this opens up for them.
AARON LEVIE: Hey, how you doing? (Applause.) How's it going? So I'm really excited to be here. At Box, we help businesses store, share, manage, and access information from anywhere. And we're big supporters of Microsoft. We build for the Windows desktop, we build on Windows 8, build on Windows 8 Phone. We love to integrate our work with SharePoint. Unfortunately, they haven't returned our email yet, but maybe spam filter, we don't know what's going on there.
But it's really exciting to see sort of an all-new Microsoft. I think the amount of support for openness and heterogeneity is incredibly amazing. I think you normally wouldn't have seen a development preview on top of a Mac or whatever. I was actually afraid that Bill Gates was going to drop down from the ceiling and rip it off. So that was really exciting to see.
So we're really excited to be supporting Windows Azure Active Directory. It helps reduce the friction for customers to be able to deploy cloud solutions, and we think it's going to be great for developers. We think that's going to be great for startups and the ecosystem broadly.
SCOTT GUTHRIE: Yeah, we were talking a little bit earlier about some of the friction that it reduces. I don't know maybe you could talk as an enterprise SaaS solution what that friction is like, and how does something like this help?
AARON LEVIE: Yeah, I mean, if you think about how the enterprise software industry for decades basically if you wanted to deploy software or technology in your enterprise, you had to build this sort of massive competency in managing infrastructure and managing services and managing new software that you want to deploy. And there was so much friction for implementing new solutions into your business. So any new problem that you wanted to solve, you had to have the exact same amount of technology that you had to implement per solution.
Even harder was getting things like the identity to integrate and getting the technology to actually talk to each other. The power of the cloud is that any business anywhere in the world -- and we're talking millions of businesses that now have access to these solutions -- can instantly on-demand light up new tools.
And so what that means is when you have lower friction, when you have more openness, we're going to see way more innovation. And that creates an environment where startups can be much more competitive, where we can build much better solutions, and I think the ecosystem broadly can actually expand. And the $290 billion that is spent every year on enterprise software today on-premises can massively move to the cloud, and we can actually expand the amount of market potential that there is between the ecosystem.
SCOTT GUTHRIE: That's awesome. You know, we're kind of excited on our side in terms of the opportunity both kind of to enable that kind of shift. How we can use Windows Azure, how we can use the cloud in order to provide sort of this great opportunity for developers to basically build solutions that really can reach everyone.
You know, I think one of the other things that's just nice is sort of how we can actually interoperate and integrate with systems all over the place. And that's across protocols, that's across operating systems, that's devices, that's even across languages. And I think as Aaron mentioned, it's going to open up a ton of possibilities. And at the end of the day, I think really provide a lot of economic opportunity out there, hopefully for everyone in the audience.
AARON LEVIE: Cool.
SCOTT GUTHRIE: So thanks so much, Aaron.
AARON LEVIE: Thanks a lot, appreciate it. See you. (Applause.)
SCOTT GUTHRIE: I'm really excited to say that everything that we just showed here from a developer API perspective, you can start plugging into and taking advantage of this week. We've got a lot of great sessions on Windows Azure Active Directory where you can learn more, and you can start taking advantage of all the tools that we are providing in ASP.NET and with the new version of .NET and VS to get started and make it really easy to do it.
We're then going to go ahead and soon have a preview of the SaaS app management gallery that you can also start loading your applications into, and we'll start taking advantage of as an enterprise. So we're pretty excited about that, and we think, again, it's going to offer a ton of opportunity.
So let's switch gears now. We've talked a little bit about identity and how we're trying to make it really easy for you to integrate that within an enterprise environment. I'm going to talk a little bit about the integration space more broadly, and in particular talk about how we're also making it really easy to integrate data, as well as operations in a secure way into your enterprise environment as well.
And we've got a number of great services with Windows Azure that make it really easy to do so.
One of them is something that we first launched this month called Windows Azure BizTalk Services. And I'm pretty excited about this one in that it really allows me to dramatically simplify the integration process. For people that haven't ever tried to integrate, say, an SAP system with one of their existing apps, or ever tried to integrate an SAP system with an existing SaaS-based solution, there's an awful lot of work involved in terms of doing that both in terms of code, but also in terms of monitoring and making sure everything is secure. And these types of integration efforts can often go on for months or years as you integrate complex line-of-business systems across your enterprise.
What we're trying to do with Windows Azure BizTalk Services is just dramatically lower that cost in a really quantum way. And basically with Windows Azure BizTalk services, you can stand up an integration hub in a matter of minutes inside the cloud. You can do full B2B EDI processing in the cloud so you can process orders and manage supply chains across your organization.
We're also enabling enterprise application integration support so that you can very easily integrate lots of different disparate apps within your environment, as well as integrate them with cloud-based apps, both your own custom solutions, as well as SaaS-based apps that your enterprise wants to go ahead and take advantage of.
You know, we think the end result really is going to be a game-changer in the integration space and opens up a bunch of possibilities.
So what I thought I'd like to do is walk through just sort of a simple example of how you can use it. So I'm going to go back to our little Contoso company.
And they want to be able to consume and use a SaaS-based app that does travel management. We'll call it Tailspin Travel. And they want to be able to do single sign-on with their employees so that their employees can login using their Active Directory credentials.
But to really make it useful, they also want to be able to tie in their travel information and policies with their existing ERP system on premises, and that poses a challenge, which is how do you securely open up your ERP system and enable a third party to have access to it? How do you monitor it? How do you make sure it's really secure?
And so that's where BizTalk services comes into play. So with BizTalk services, you can go to Windows Azure, you can very easily and very quickly stand up a Windows Azure BizTalk service. And then we have a number of adapters that you can go ahead and download and run on-premises to connect it up.
In particular, we have an SAP adapter. We also have Oracle adapters, Siebel adapters, JD Edwards adapters, and a whole bunch more. So, basically, without you having to write any code, you can actually just define what we call bridges, which make it really easy and secure for you to go ahead and expose just the functionality you want.
That SaaS or your own custom app can then go ahead and call endpoints within Windows Azure BizTalk Services using just standard JSON or REST APIs, and then basically securely go through that bridge and execute and retrieve the appropriate data.
Again, it's really simple to set this up. What I'd like to do is just walk through a simple example of how to do it in action.
So what I have here is kind of the end-user app that our Contoso employees will use. It's a Web-based application. Again, our Tailspin Travel. You'll notice that the users are already logged in using the Windows Azure Active Directory already within the app. So this app could be hosted anywhere on the Internet.
I could then create new trips as an employee, or I could go ahead and look at existing ones that I've already booked. So here's one, this is the return trip from Build. Right now, I'm flying in economy. I don't know, maybe it would be nice to get upgraded. So I can go ahead and try to enter that.
But you'll notice here at the top when I do it, a few seconds later, I've got a policy violation that was surfaced directly inside the Tailspin Travel app. And basically it just was saying I can't just do this myself; my manager actually has to go ahead and approve it. And it's coming directly out of the SAP system of Contoso.
So how did this happen? Well, on the Tailspin Travel side, this is the SaaS app, they're building it in .NET. This is basically a simple piece of code that they have, which allows them on the SaaS side to actually check whether or not this trip is in policy.
Basically, the way they've implemented it is they're just making a standard REST call to some endpoint that's configured for the Contoso tenant. And this doesn't have to be implemented with Azure, doesn't have to be implemented with .NET, it can be implemented anywhere. And it's just making a standard REST call. And depending on that action, the SaaS app then goes ahead and does something.
So how do we implement this REST call? Well, we could implement it in a variety of different ways on Windows Azure. We could write our own custom REST endpoint and process the code and handle it that way. We have lots of great ways to do that. Now, the downside, though. The tricky part of this is not going to be so much implementing the REST API; it's actually implementing all the logic to flow that call to an on-premises SAP system, get the information validated, and return it.
Again, that would typically require an awful lot of code if you needed to do that from scratch.
What I'm going to do here is switch here to the other machine. And walk through how we can use BizTalk services to dramatically simplify it.
So you can create a new BizTalk service. Go ahead and just say new app service, BizTalk service custom create. I could say Contoso endpoint. And literally just by walking through a couple wizards here and hitting OK, I can basically stand up my own BizTalk service inside the cloud hosted in a high-availability environment literally in a matter of minutes.
And for anyone who's ever installed BizTalk Server or an integration hub themselves, they'll know that typically that does not take a couple minutes. And the nice thing about the cloud is we can really kind of make this almost instantaneous.
Once the service is created, you get the same kind of nice dashboard view and quick start view that you saw Josh with Mobile Services. And so there are ways that you download the SDK. You can also monitor and scale up and scale down the service dynamically.
And then as a developer, I can just launch Visual Studio. I can say new project. I can say I want to create a new BizTalk service, which will define all the mapping rules and the bridge logic that I want to use.
This is one I've created earlier. You'll notice here on the left in the Server Explorer we have a number of LOB adapters that are automatically loaded inside the Server Explorer, so I can connect through my SAP system directly and do that.
Add it to the design surface, and then I can create these bridges that I can either define declaratively; I can also write custom code using .NET in order to customize. Basically, I can just double-click it. This little WYSIWYG designer here lets me actually map the REST calls that I'm getting from that Tailspin Travel SaaS app, transform it, and then I can basically map it to my SAP system.
And you can see here in our schema designer, we basically allow you to do fairly complex mapping rules between any two formats. So here on the right-hand side, I have my SAP schema that's stored in my on-premises environment; the left-hand side here, there's that REST endpoint. This is a very simple example with a lot of these integration workflows. You might have literally thousands of fields that you're mapping back and forth.
Once I do the mapping, though, all I need to do is just go ahead and hit deploy, and this will immediately upload it into my BizTalk Azure service and at that point, it's live on the Web. I can then choose who do I want to give access to this bridge? And I can now securely start transferring just the information I want into and out of my enterprise.
For an IT professional, they can then go ahead and open up our admin tool. They can see all the bridges that have been defined. And then one of the things that we also build directly into Windows Azure BizTalk Services is automatic tracking support. And what this means is now the IT professional can actually see all of the calls that are going in and out of the enterprise. It's all logged; it's all audited so it's fully compliant, and they can basically now keep track of exactly all the communication that's going on to make sure that it's in policy.
Literally, you saw all of this sort of a simple example here, but this really starts to open up tons of possibilities where you can integrate either with other SaaS out there that your organization wants to use, or as you want to start building your own custom business application and host within Windows Azure, you can now securely get access to your on-premises line-of-business capabilities and very securely manage it. (Applause.)
And I'm excited to announce that everything we just showed here, as well as everything I showed when I created that Active Directory app, is now available for you to start using. You can go to WindowsAzure.com, and you can start taking advantage of Windows Azure BizTalk Services today. (Applause.)
So I talked a little bit about how we're making it easy to integrate enterprise systems with the cloud, both on the identity side as well as the integration side. The other side of enterprise grade services that we're delivering fall into the data space. And here we're really trying to make it easy for you to store any data you want in the cloud, any amount of data you want in the cloud, and be able to perform really rich analysis on top of it. And so with Windows Azure storage, we have a really powerful storage system that lets you store hundreds of terabytes, or even petabytes, of storage in any format that you want. We have NoSQL capabilities that are provided as part of that as well as raw block capability. With our SQL database support, we now have a relational engine in the cloud that you can use. You can very easily spin up relational databases literally in a matter of seconds and start using the same ADO.NET and SQL syntax features that you are familiar with today.
We also a few months ago launched a new service that we call HD Insight. This makes it really easy for you to spin up your own Hadoop cluster in the cloud, and that you can then go ahead and access any of this data that's being stored and perform map reduce jobs on it. And what's nice about how we're doing HD Insight, like you've seen with a lot of the openness things that we've talked about throughout the day, is it's built using the same Hadoop open source framework that you can download and use elsewhere. We're actually contributors into the project now.
And with Windows Azure, it's now trivially easy for you to spin up your own Hadoop cluster, be able to point at the data and immediately start getting insights from it, and starting to integrate it with your environment. And so I think in the next keynote later today, you're actually going to see a demo of that in action. So I'll save some of that for them.
But the key takeaway here is just sort of the combination of all these capabilities in identity integration and data space really we think are game-changers for the enterprise, really enable you to build modern business applications in the cloud. I think they're going to be a lot of fun to use. So we look forward to seeing what you build.
Thank you very much.
SATYA NADELLA: Thanks, Scott.
So one last thing I want to talk about is Office and Office 365 as a programmable surface area. We talked a lot about building SaaS applications using services, Scott talked about it. But what if you were a large developer, line-of-business application developer, or a SaaS application developer and could use all of the power of Office as part of your application? And that's what we're enabling with the programming surface area of Office.
What that means is the rich object model of Office, everything from the social graph, the identity, presence information, document workflows, document libraries, all of that is available for you to use using modern Web APIs within your application. You can, in fact, have the chrome either in the Office client or in SharePoint, and you can have the full power of the backend in Azure. And, of course, the idea is here is to be able to do all of that with first-class tool support.
To show you some of this in action, I wanted to invite up onstage Jay Schmelzer from our Visual Studio team to show you some of the rapid application development in Office.
Jay, come on in.
JAY SCHMELZER: Thank you. The requirements and expectations and importance of business applications has never been greater than it is today. Modern business applications need to access data available inside and outside the organization. They need to enable individuals across the organization to connect and easily collaborate with each other in rich and interesting ways. And the applications themselves need to be available on multiple different types of devices and form factors.
As developers, we need a platform that provides a set of services that meet the core requirements of these applications. And we need a toolset that allows us to productively build those applications while also integrating in with our existing dev ops processes across the organization.
What I want to show you this morning is a quick look at some things we're still working on inside of Visual Studio to enable developers to build these modern business applications that extend the Office 365 experience leveraging those services available both from Office 365 and the Windows Azure platform.
And, of course, doing it inside of a Visual Studio experience that allows the developer to focus on unique aspects of their business, and their application, not spending as much time in boilerplate code.
To do that, we're going to focus on the human resources department at Contoso, who has been using Office 365 to manage the active job positions across the organization. And we want to create a new application that allows individuals in the company to submit potential candidates for open positions from within their Office 365 site using whichever device they happen to have available at the time.
To do that, we'll switch over to Visual Studio, and we'll see that we have a new Office 365 Cloud Business app project template available to us. This project goes and builds on the existing apps for Office and apps for SharePoint capabilities that are surfaced as part of that new cloud app model Satya was talking about. And it provides us a prescriptive solution structure for building a modern business application.
I mentioned data is a core part of this, and you see we've already started creating the definition for a new table that we'll use to store our potential candidates. What Office 365 Cloud Business apps does for us is surface additional data types that provide access to these core capabilities of the Office 365 and Windows Azure platform.
Some examples of that we see here that the referred by is typed as a person, giving us access to all the capabilities in Office 365 associated with that Office 365 or Azure Active Directory user. The document, their resume, is stored as a typed document. So we can store it in a document library, and it leverages the rich content management and workflow capabilities associated with Office documents.
We also need to be able to go and pull in data from elsewhere. In our case, we want to go and grab data from that existing SharePoint list the human resources team is using to manage active positions, so that our users can choose a potential position they think those candidates are appropriate for. You see, I've already added that, so it's in my project.
We'll just go and connect it up between the candidate and our job postings, specify the relationship, and say OK. And now we have this virtual relationship between our Office 365 list and our SQL Azure Database.
OK, the next thing we want to do, though, is really enable that people interaction. If you notice, when I look over here at the candidate, if I select this, you'll see right from here I have the ability to have the application interact with my corporate social network on my behalf as I'm doing interesting things in the application.
So we have the data model defined. The next thing we need to do is create the UI model. Users of business applications today expect a modern look and feel, a modern experience, but they also want it to be consistent. Visual Studio gives you great ways of doing this for providing a set of patterns that are going to be consistent across your applications. We'll select a browse pattern, just choose, or the default pattern, choose the table we care about, and now let Visual Studio go and create for us a set of experiences for browsing, viewing, editing and updating that candidate information.
So we have our data model. We have our UI model. The last thing we want to do is go in and actually write some business logic. In this case, back on the entity designer, we'll go in, and we'll leverage the data pipeline where we can interact with data moving in and out of the application. In this case, we'll use our validate. And what we'll do is, we'll just go in and make sure that the only folks that can go and actually set or modify the interview date are members of the HR department. And here's another example where we see the power of surfacing those underlying platform capabilities. I'm able to reach in to the current user, into their Azure Active Directory settings, and grab the current department and validate it against the checks we want to make.
Let's go ahead and set a breakpoint here. I think we're probably in good shape. Anyway, so we're going to launch the application, and Visual Studio is going to go package this up, send the manifest off to our remote Office 365 developer site, and then launch our application. We have no candidates yet, so we'll create a new one. Last night when we were talking about this stuff, Scott seemed pretty excited about what we're doing. So maybe he would be an interesting person for us to work with.
When I go in and actually start specifying who it is that's going to refer this person, you see I'm by default getting the list of the users available on this Office 365 site because I typed that it's a person. So we'll select Jim there, one of our team members, go ahead and upload a document that is Scott's resume. And we'll specify an interview date, maybe we'll go out here into September.
The last thing we want to do is go choose which of the positions we think is appropriate to Scott. He's going to be new to the team, so we'll maybe choose a little more junior role for him so that he can be successful. We hit save. If we'd actually set that breakpoint, we would see our business logic would have been executed, and we would be able to get that rich debugging experience you've come to know and expect from Visual Studio.
We now see we have our candidate. When I drill in and look at it, you see that we're getting that consistency of experience. I'm getting presence information for the person. When I hover over it, we see the contact card. A little misplaced, but if I want to have a conversation with Jim right now, I can go ahead and do that right from within the application just because we've leveraged those underlying capabilities. Of course, in the document we can see the properties of the document. We can view it in the Web application right from the site, or we can follow it if we want to do that as well.
I noticed one thing here; I've got this extra ID showing up. So let me go flip over to Visual Studio, and we'll look at the View Candidate page. And just like we can with any other Web development, we can just go in here and while the application is running we'll just remove that. We'll save those changes, flip back over here, just kind of do a little quick refresh, and now when I go in you'll see that, hey, that extraneous value is no longer there.
The other thing you'll notice is that in addition to the values we specified for our SQL data, we also have built in the ability to do the basic tracking of, hey, who was the last person who created or modified this record, just core requirements of a business application.
The last thing we'll look at is on the newsfeed we're going to click over to that, and you'll see that the application has gone and interacted on my behalf, right, and entered things into our internal social network, letting people know that, hey, I just submitted somebody as a potential new candidate. So if you folks want to follow them, and so forth.
OK. Our application is looking good. It's time to go get it integrated with our existing dev ops processes. To do that, we'll just go over here to the solution explorer, we'll right click on the solution, and we'll start by adding this to source code control. In this case, we'll add it to our Team Foundation Service instance. We'll go right click; we'll go check in all these changes that we just made, and while that's happening I'm going to switch over and take a look at some of the build environments we have established in our Team Foundation Service.
In this case. we'll see that we have an existing build definition for HR jobs. If I look at that definition, we'll see that the things I can do is I can switch it to now be continuous, so that as we check in code we can go move on. The other interesting thing is here we've got a custom process template that understands how to take the output of the build and deploy it into our Office 365 test site. So this is all just basic power, and this is all built on the underlying technologies and capabilities inside of Visual Studio. That also means we can extend this beyond the SharePoint experience into the Office client experiences, as well.
So here I've also built a mail app that allows me to go and prepopulate information in the application from the content of the mail and shove it right into creating a new user, without having to go directly into the application. Hopefully with that, you got a really quick look at some things we're still working on in Visual Studio, to enable developers to build modern business applications, extending the Office 365 experience, building on the capabilities of Office 365 and the Windows Azure platform.
Thank you very much.
SATYA NADELLA: Thanks, Jay. Thank you.
So hopefully, you got a feel for how you can rapidly build these Office applications, but more importantly, how you could compose these applications you build with, in fact, your full line of business application on Azure and enrich your SAS app, or your line of business enterprise app. I'm very, very pleased to announce that there is a subscription of my Office 365 Home Premium for 12 months that's going to come to you via email later this afternoon. We hope you enjoy that subscription. (Applause.)
And I know everyone in the room is also perhaps an MSDN subscriber. So we are continuing to improve MSDN benefits. One of the things that we are doing with Windows Azure is to make it very, very easy for you to be able to do dev tests. So now you can use your dev test licenses on Windows Azure. In fact, the cost and the pricing for that is such that you can probably share something like 97 percent of your dev test expenses. We're also going to give you credits based on your various levels of MSDN. So if you're a premium subscriber, you get $100, which you can use across your VMs, databases, as well as doing things like load testing. So fantastic benefits I would encourage everyone to go take advantage of it. And also to reduce the friction even further, we have now made it possible for any MSDN subscriber to be able to sign up to Azure without any credit card. I know this is something that many of you have asked for. We're really pleased to do that. (Applause.)
We had a whirlwind tour of the backend technologies. Really with Windows Azure, we think we now have a robust platform for you to be able to do your modern application development for a modern business. It could be Web, mobile, or this cloud scale and enterprise grade. So hope you get a chance to play with it. We welcome all the feedback, and have a great rest of the Build.
Thank you very, very much.