>>: Good afternoon. It's my pleasure to introduce the last session before the wrap-up, and I have two presenters. Krishna Kumar here, who's our primary presenter, is one of our all-star academic developer evangelists based in Chicago. Krishna has been leading some of our biggest efforts with computer science faculty around the country, recently in the game development area, led a big effort around XNA and then over the last year has been doing a lot of work with an elite group of technical experts at Microsoft around Azure and cloud computing and also trying to figure out how we can take this and bring it to you as faculty. So Krishna has his degree from Northwestern University in Medical Informatics. Right? Krishna Kumar: Yes. >>: And we have here as well Gautam Reddy, who is currently based in Texas, but relocating to Redmond here very soon. And Gautam has been very active as well working with a range of our offerings for faculty and students, including MSDNA, which has helped make more effective in terms of delivery in the U.S. So it's my pleasure to turn over the program to Krishna. Thank you. Krishna Kumar: Thank you. Do you want to go first with the -- so, yeah, basically before we get into the talk, just a quick reiteration of the fact that all of you by now should have received an email with the Azure training token thing. It basically is a user name and password that you received that if you log into Windows or azure.com will get you access into Azure. Right? The key thing to note is it's good for a month and it's been preactivated, which means it's going to expire May 8th. It's hard limit. It's going to expire on that date. So please feel free to go in and play with it before the 8th. Again, the key thing is there's no registration required. It's all set up, good to go. The goal of this basically is to sort of let you have a flavor of what Azure is, try out Azure, see if it's right for you, try and run a couple of small loads and see if that's kind of what it is, and then following the one-month thing, you can actually get in touch with your regional representative to figure out what the transition strategy is going to look like. Oh, and the other thing I wanted to mention is actually, we're trying to scale this program out, so if you are interested in taking this to your students, so say you're teaching a class and you basically want all of your students, say you have 30, 40, 50 students, and you want to have them access Azure as well, the same thing can be done for that purpose as well. So you would just contact us, your local Microsoft regional rep, and say, hey, I need 30 tokens for this duration. The duration can be anything from two days to a month, actually. And you can say I need 30 tokens for one week starting this date, ending this date, and we can make it happen. We'll send you the 30 tokens and you can use it in your classroom and divvy it up among your students. So Gautam is going to go a little bit more into this. Gautam Reddy: So the issue is we don't know what your requirements are, right? There's a diverse set of requirements in this room and there's also requirements from faculty who need it for research, and they're probably not in this room at this point. How do we get to learn what your specific needs are in terms of the different aspects of Azure? And when I say different aspects, you've been hearing about the computer issue, you've been hearing about the data storage issue, you've been hearing about the Dallas data access to you. So the current model of one-month access is for you to kind of play with the Azure platform and figure out where your specific needs are. Are they more on the compute side or are they more on the data side? There could be additional parameters that involve resources and cost on the Azure platform, right, that are not listed here. So that's your window of opportunity to kind of learn what your specific needs are. And the needs to be, you know, in teaching where you need a lot of accounts but very sparse resources for 1500 students. Or it can be, you know, I have four grad students working. I only need a small number of accounts, but of those accounts need to have a depth of resources behind the account. So I talked to a number of faculty last night just on get a flavor for do we know what we want. And I didn't get a good answer, and I didn't expect to, but I just wanted to see where the current thinking was. So I asked, hey, given what you've seen this morning and the whole day, do you know what your requirements in terms of computation are or in terms of data storage are or in terms of, you know, the other stuff presented. And, yeah, we didn't know. And neither did I know, nor did the faculty know. So we are at a point where we both need to learn, right? And I did get some requests where they said, hey, I have four grad students and I want four accounts where they would go and play with the Azure platform and tell me what the needs are. Fair enough. We can make that happen just as Krishna introduced in the previous slide. And then the teaching aspect of it was there as well. There was a faculty that said I need 20 accounts for two weeks so I can give an introduction to my class and they can submit one assignment within that two weeks, and I have time to grade it as well. So if I said, hey, given the information I have, if I tried to create a solution for Azure access, you could go with the highest common denominator, just let you tell me what all you need and make that account available to all of you. And that's obviously very resource intensive and probably not the right way to solve the problem, right? Because we're not just thinking of the 200 faculty here. There's probably more who will view this video online and come to us with similar requests. Obviously -- the least common denominator will obviously not satisfy the 149 attendees out of 150, right? And then the mean also just doesn't make sense because there's just so many variables involved. So the way I was thinking about it after the conversation last night is use the 30-day account to kind of figure out what your specific needs are and then contact your Microsoft representative, whoever invited you to this conference, and we will kind of figure out where the demand is and go to the product group and say, hey, it's the computation aspect that needs more number of accounts or it's the data storage requirement that needs a smaller number of accounts, but more resources behind it, longer storage availability, or whatever that combination is. So that's my plea to you is, you know, don't store away the 30-day trial account. Just play with it to its maximum and get back to us with your specific requirements. It would help us a lot. Thank you. Krishna Kumar: Actually, I think we are happy to take a couple of questions at this point just because we'll transition into a different mode. >>: Are there any questions that you have about the 30-day ->>: Well, I think that for students, we don't need accounts to real Azure, but probably we need some [inaudible] machines ready with a test environment. So [inaudible], SQL, and BSDK ready, because it's difficult to relate to our departments and say, yes, prepare the machine with all this solid stuff. At least for students. For researcher, probably the biggest problem is that we -- if we start thinking in cloud, we don't know how much computation needs. So before there was a problem, are we consuming too much. We don't know. So we don't know if 30 days is enough to test and stress replication, because in university it's typical -- we're not in a company, so the time is longer, delayed. So I figure this is the biggest problem. Students, no. I don't think if we are teaching that it's better not to go to staging. Probably try for one instant application for a longer time, 90 days. I don't know. Probably there will be a first year, I think, in which we understand, and the next step we will learn how to health to Windows Azure and say, okay, I need this capacity. I don't know also -- if I go to my accountant and say I need 1,000 Euros, 1 million Euros to buy CPU, I don't know. I don't know. Krishna Kumar: Yeah, I'd say we're all learning. So I had a pick a number -- or as a company, we had to pick a number, and 30 seemed as valid as any number, and then seemed acceptable for the company to give it out. So you're absolutely right. There's no data behind the 30-day number. >>: There was a question there. >>: I actually just wanted to support that view. I think in one month, from my experience, with student work, it is impossible to get anything done, especially if it's a new platform that you don't know. So I would really think three months is a minimum. If you guys want some really serious feedback that's useful for you, then this needs to be longer. Krishna Kumar: So one of the things I probably made a comment right now is if it comes to the end of the month and if you need an extension on it, please feel free to reach out to us and if you do not know who your local rep is, ideally they're the ones to reach out to, but in the next slide, my email is going to be there as well. So please make sure to let us know and we'll work out a way to get you -- keep you on it. >>: Hi. I'm not sure if you covered this already, but is there a way to track the usage within those 30 days so when faculty start to test out with those tokens, they could get some sense of the usage or if executing some kind of calculation over there, what that could mean in costs? Krishna Kumar: Right. Absolutely. So from your perspective, the token that was given to you -- and we can try it out. I was actually planning to go into it and use one of those test tokens for the demo, but I doubt that you'll be able to get access to the administrative or to view the billing console. What we could do absolutely is if you at the end of the month came back and said, hey, this is my email that you gave to me and I want you to tell me what my usage was, we'll be able to look it up. The folks that set it up will be able to look it up and get back to you. >>: [inaudible]. Krishna Kumar: Absolutely, to get a ->>: [inaudible]. Krishna Kumar: Exactly. To at least fine a baseline. >>: [inaudible]. Krishna Kumar: Exactly. Absolutely. There's a question here, Kent. >>: Are there any -- for the tokens, are there any features are not enabled? Krishna Kumar: No. This is the actual account that you would get even if you went on Azure and bought it. So it's not a light version, it's the actual deal. >>: Two things. One is that you talked to an Italian MVP and he told me, oh, no, Azure costs too much. Without any information, without -- no one knows. And what does it mean, costs too much? Because you pick out a credit card and -- so pay attention, all the community that wants to try but have fear without any foundation so you can limit the users of Azure. [inaudible] when we have to choose, there is no portability between the cloud platform. It's not a carrier I go with Verizon as a cell phone. No. If I develop on Azure, I develop [inaudible] so I have to decide before. So there is a full price. It's a problem because we decide a false information, false idea, false perception, but this is -- this Italian told me, oh, I am an MVP, I have no guest account. I don't know what [inaudible] -Krishna Kumar: Right. Yeah. Okay. Absolutely. So thanks for that. So this is my title slide. But before we actually get started, just really quickly, I wanted to poll the audience. How many of you would you say are interested in it primarily from a teaching point of view? Oh, significant. And from a pure research point of view perhaps? Okay. Not as significant. Okay. And the second question I had was how many of you were here yesterday for Roger's session on Azure? Okay. A significant number. So this is going to help me level set, basically, because I don't want to replicate any of the stuff that he's talked about. So, yeah, thank you for being here. The title of the talk is basically academic -- Azure Academic Pilot, but I sort of made the title a little cooler. So this is me. My name is Krishna Kumar, and this is my email address. And if it's not visible all the way to the back, it's krishna.kumar@microsoft.com. That's the site. And we'll talk about the site in a second. So this is the site that I'm going to keep referring back to over and over. In fact, the email that I sent you has a link to this site because I've posted some of the walk-throughs and some of the FAQs up on the site. So what I'm going to do is actually take this as an excuse and just go up to the site, because even if you do not stay for the length of the talk, I'd like for you to leave with, you know, information on what's here, because this is the site that's going to act as sort of the community, if you will, for the things that we do for the rest of the year. So basically Azurepilot.com is the url, and it's set up as a Wiki. And you will observe it's not set up on a Microsoft property, it's on its own, which allows us one huge benefit. It allows us to make it a Wiki, right? Which means that you can come in and make any changes you want on the site, add new topics you want on the site, so you can actually change the maintain content. You're not restricted just to the forums. So that's a huge benefit. So some of the things that we've tried to cover in the site basically, the key thing that we've tried to cover is the on ramp. I mean, so how do you go from 0 to 60 on Azure. You know, if you're starting to teach cloud computing or if you're starting to incorporate cloud computing into your teaching, where do you go, how do you do, and if you just go on the net and search you will just find this vast array of information. So we've tried to take some of that and streamline it from an academic perspective. We've taken the most relevant bits or we've morphed some of the bits into, you know, usable nuggets of information in the context of an existing classroom. So things like -- so just to walk through it, I'm going to take a couple of minutes. If you start basically as an introduction -- it starts with an introduction to cloud computing, talks about the kinds of clouds, you know, models of cloud computing and all of that and sort of walks into -- walks through some of the steps, right? So what are some of the technologies that enable cloud computing to happen, right? So things like, you know, physical design. So data center design, for instance, right? That's kind of important. Virtualization is sort of a building block of cloud computing so we talk a little bit about that. We talk a little bit about the different protocol standards and wire formats, right? I mean, this cloud computing as you know is so fundamentally different from the way we write existing applications, right? No longer are you talking to a database down the network, you're basically talking to something that's across the internet. And now the internet has this property that will only allow http on it, and most firewalls on the internet are going to block anything that's not http and that's not xml. So we have completely had to redesign some of the ways in which we access data, and so some of those concepts are examined over here. We sort of move into a big overview of what the Windows Azure platform is, because [inaudible] was all agnostic, could apply to cloud computing in general. But we sort of drilled down a little bit here into Windows Azure. We talk a little bit about, you know, the different components of Azure, and at this point if you're getting started we actually talk you through the kinds of tools you need, right? The tool set. You need Visual Studio, but what else do you need on top of Visual Studio. So we have sort of a screen-shot-based walk through. The reason we've tried to make it so clear is one of the feedback that we got from the early adopters was that they would actually pass off some of these responsibilities, the course prep responsibilities, to their students, right? Grad students or even senior undergrads. So we've tried to sort of look at it from a student perspective and say, okay, if a grad student came in or a senior came in and said I've got to prep this, at that level it still needs to be accessible, right? So that's some of the things that we've had in our heads as we've gone about doing it. And just really quickly, we talk about compute, storage on Azure, storage using SQL Azure. So at this point you'll actually see we'll start bringing in videos from some of the industry event. So here's actually a video from MIX à la carte launch. So we basically -- a key goal is we've tried to call it, most of the information that's already out there, sort of pick the best, the most accessible pieces of content and throw it up on here so that you don't have to go about doing it. So I would sort of use this as a first place to sort as you're thinking about the cloud. And, finally, I'm going to take you to the references -- oh, actually, I also want to show you the events and workshops. So any major cloud event that happens will get listed here. So in fact this event is listed here as well as some of the other events we've done at SIGSI [phonetic], at AMSIS [phonetic]. So you'll find collateral from cloud events at those locations posted up here as well. And, finally, the reference, as the name suggests, will point you to thing like the training kit, which is pretty phenomenal. I'm going to show you the training kit next. Things like virtual labs. I mean, somebody just brought up the concept of virtual labs, how awesome it is to be able to point a student at it, give them a hands-on lab, walk-through and say go at it, right? Really nothing you can break. At the end of the hour and a half it gets reset back. So it's phenomenal. So we've got virtual labs. We'd love your ideas on what kinds of labs make sense for you and your students, right? We can actually add onto this or create a separate section of labs. So we'd love some feedback on that. Some case study. If you're looking at it from a business perspective we've got some pricing information TCO, so all of that. The way to get in touch with us, obviously you can become a member, you can make changes onto the site directly, there are forums on it, but if you actually want to physically get in touch with somebody on the front page, we have this alias azurefaq@microsoft.com. Is basically comes in to me and a few other folks in my team who are involved with the cloud effort. So there's a point directly into Microsoft through the site as well. So with that I'm going to quickly show you why you should consider -- the first thing you should obviously do is get the Azure bit, and yet next thing you should obviously do is get the Azure platform training kit. The link to that is on the site. And here's the reason why you should get it. It's basically about a 160 meg download, but you basically get so much good stuff. You get hands-on labs on everything from starting Windows Azure, starting with Windows Azure, all the way to SQL Azure to Dallas, the session we saw this morning, to app fabrics. So literally ever component of Azure, you have a hand-on lab. These are pretty cool, actually. You get, you know, code in both Csharp and VB . The lab manual is pretty good. In fact, I'm going to show you one lab manual. I'm not going to belabor you by going into every one, but literally you get, you know, pretty prescriptive screen-shot-based here's how you go, here's what you enter, here's what you do. So you can actually feel comfortable handing it off directly to your student without having to, you know, make this more accessible. Because that's a goal we've tried to go with. And, again, if you have specific topics that you want us to incorporate or build labs for, we'd love to hear from you. We've got demos, samples, presentations, so these are, you know, PowerPoint presentations. There's videos of these presentations as well, and some other resources. So with that I'm going to jump back into my slide. So this site is a great landing page for a whole bunch of your efforts. Up until now it was pretty closed, actually. We were working with a few universities and a few faculty in the country, and a lot of content here is based on their direct feedback. We'd love to make it more open now and get you to come in and contribute as well. Okay. So what I'm going to do is really quickly -- I'm not going to -- so we've been talking cloud, cloud, cloud, cloud, cloud. I'm not going to try and define cloud and this and that. Just so we're on the level footing, I'm going to -- and you'll see me whizzing through a whole bunch of slides. If you want me to stop, just please don't hesitate to tell me to stop. The key thing is there are so many players today that it's kind of difficult to distinguish between the kinds of offerings, and so just for purposes of our session, we're going to agree upon these levels distinction. You've got different types of clouds, completely public clouds like Amazon, Azure, Google at the at the moment. You can make prime clouds happen. A lot of vendors, Eucalyptus, and usually Azure actually is starting to offer private cloud solutions some time in the near future. So you can have private clouds, you can have hybrid clouds bridging both, which I think is really phenomenal. When we talk a little bit about where Azure is headed, I'd love to talk to you about how we view sort of the on-premise and cloud as not a binary state, as not you're totally on-premise or totally on the cloud but sort of as a continuum, right? In fact, I'm going to talk about it now because I think it's important enough that we sort of discuss it up front. In fact, a lot of changes that you'll see happen in our APIs over this year, over the next year, is going to basically allow you to write a program once. And it sort of falls back into the way that Microsoft does APIs, right? At the end of the day, we're a platform company. So we try and make our platform such that it extends seamlessly. So you actually see the client's side APIs evolve and the cloud's side API's evolve so that ultimately they sort of meet in the center, if you will, and then you write your application once using that API and your app will be able to straddle the client and the cloud. So, dynamically, your code will be -- so you have an existing investment on premise. Your code will be running on premise. Now, if you're on-premise applications get -- or on-premise infrastructure gets hit so much that you don't have capacity to satisfy the demand, then your code will automatically straddle over to the cloud and do what is called cloud bursting. So a portion of it will run here, a portion of it will run there without really the code having to know where it is running. So a lot of interesting issues come up during those things. What do you do with co-location of data and successive like that. That's some of the things we're working on right now. But a lot of really exciting things happening on hybrid cloud front, and that's basically where we see the whole software plus services thing that you keep hearing from Microsoft. That's sort of the vision that we have in our minds. The next distinction, again, with the whole Azure service offering, software, platform and infrastructure as a service. So this is a slide I use to talk about -- so this is basically your stack, if you will, from the very raw wire all the way be a subtracted to the application layer. And so over here you basically see that with on-premise, you basically own -- when I say own, you're responsible -- whereas, infrastructure, you basically hand off the hardware stuff over to a vendor, you get a box in the sky, but then anything on top of that box is your problem. So the operating system patching, databases, infrastructure software, and then application, all of that's your problem. And, finally, platform as a service is where you get a basic run time on the cloud and the only thing you worry about is the application. So Azure as a platform is a service player. Vendors like Amazon provide infrastructure as a service. And you'll actually see later this year, in fact -- and it's been public. Many executives have spoken about it -- one of the players in the Azure platform is going to be where we'll allow you to create an image of the -- a VM image, if you will, and upload that into the sky, upload that into Azure. So you can actually take a base Windows server 2008 image, install all of the applications and programs you need on it and then throw it up into the sky and we'll manage it exactly as we manage our stock images right now. So with Windows Azure, just a quick bit of sort of insight into what went on into building Azure. Basically we contacted a whole bunch of teams, primarily being -- and, in fact, if you ever get to -- a lot of it's not public, but if you get to see some of the way that the Bing team has their infrastructure thrown about together, you'll find a lot of similarities between Bing and Azure. So this just talks to the scale of some of the things. I think it's a slide from my customer, the enterprisee deck which basically says expertise and experience we have. But I'm going to jump to this real quick. So this is Azure. I basically am going to call this Azure right here and then everything on top of it as building blocks. Basically this is here to show the whole platform is a service. So I'm not going to talk about infrastructures as a service at this point, but I'm going to talk about platform as a service and then software as a service and then the highest order bit application as a service. Today we'll mainly spend our time talking about or looking at, actually -- not talking about. I think we've done a lot of that -- looking at Windows Azure and just briefly looking at the two component bits of Windows Azure, which is SQL Azure and dot net services. On top of these -- so all of these products that you see here -- Exchange, SharePoint, OCS -- all these products actually leverage Windows Azure. In fact, in a recent talk by Steve Baumer [phonetic] at University of Washington, he mentioned that 70 percent of our dev team is today directly working on a cloud-based product or tangentially their product is related to the cloud in some way, shape or form. In a couple of years it's going to be 90 percent. So it just basically shows you or talks about the fact that a lot of these, you actually see a whole bunch of different technologies get integrated at the very top. But all of the products that you see here directly leverage Windows Azure. The point I'm trying to convey through this is it's not something that we've created as a proof of concept and thrown it out there. We run some of our most intensive applications on top of this very same infrastructure that your code will be running on. So it's tried and tested. In fact, we'll talk about the Azure controller, the fabric controller, in a bit. The fabric controller itself runs in Azure, so it's sort of a recursive thing, if you will, where the thing that administers Azure itself runs on Azure, but on a different cluster. So it's very performant and reliable. So typically -- and this doesn't really translate really well onto the screen here -- but typically in an enterprising area, people talk about cloud for a whole bunch of issues. Well, the key problem is, you know, provisioning for peak. Basically if you have sort of a phase book-like scenario where your demand curve just grows up exponentially, you really do not want to, on day one, provision for a peak load. You want to basically start off small, ideally, and then grow as your demand grows. And cloud is awesome for that, right? That's your traditional scenario. But for this audience, I'm really, really excited about this opportunity, big data. And this is basically what -- and I was surprised to see every single key note speaker here and every single session actually here addressed this concept of big data, and all the examples they gave are actually from the scientific community, so I'm going to take this opportunity and show some statistics from sort of the business community, if you will. So I'm going to let this sit for a few seconds. And then I'm just going to call out two things. Maybe the last two. WalMart, the size of their database is in the order of petabytes. And this is basically growing. And an interesting statistic about it -- I mean, we can talk about exabytes and there's one more, zetabytes, after exabytes all day long, but really our capacity to fathom large numbers is pretty bad. So here's a way to make this apply in context. The amount of information that humanity created in the last nine years is more than we have from the very beginning of humankind. So in the last nine years we've outstripped all of the data that we've created in the last 3,000 years or so. And we will exceed that information, that content, over the next three to four years. So it's an exponential curve. And it's truly an exponential curve, because if you look at this chart, this is from the economists, actually, from two or three issues back. The top curve is basically the curve showing the rate of growth of information or rate of creation of information, and the bottom curve is the rate of creation of actual devices that can store that information. And it doesn't take, you know, a statistician to figure out that we will create information that we will not be able to store, which is really interesting. The way we address that issue now -- because we're already at this issue. At 2007, thereabouts, we have surpassed that limit. So a lot of this information we basically -- we know that most it's junk. We'll just basically sample it and throw it away. But in an a lot of other cases we really do not know what information is valuable, what's not. So we just randomly sample some data, hope that it's the right -- from the right area that we want to sample and then just throw the rest away. And really to handle some of these issues and to deal with this issue, really, cloud is the only way to do it. At the end of the day, that's what everybody's been saying. I'm not going to belabor the point. Really, cloud computing is -- you know, when people say, oh, it's a fad, you know, we've seen it come, we've seen it go, maybe. But unless you have something like the cloud, we will not be able to solve some of these problems. Not just in the scientific domain, but even in the business domain. So moving on. How does all of this come together? We're going to ->>: [inaudible]. Krishna Kumar: This one? >>: [inaudible]. Krishna Kumar: This one? Yeah. Sure. Oh, and all of this is going to be up on azurepilot.com and also on the cloud futures site as well. So I'll make this complete slide deck available. This is where I get interested. How toss it all work? How do I take it into the classroom and, as educators, how can you make it applicable to your students or into your curriculum. I look at it from a two-dimensional perspective. One is the infrastructure perspective, because when you talk about cloud computing, you're talking about scaling infrastructure in ways that we have not in the past. Very few companies in the past ever had to worry about large amounts of data, large amounts of compute, so you had these big, you know, three, four companies that would do it. But now with cloud, all of us have access to this kind of infrastructure, so it kind of pays to understand how this infrastructure gets put together. And so normally at this point I have a video that talks about how the new generation of -- the four generation data centers are built, but, again, people have spoken about it so I'm not going to dwell on this. I'm going to talk about this, actually, because interestingly enough, I didn't see a lot of content about it, and especially as it applies in a classroom setting. So, again, like I said, fundamentally some things have changed in terms of how you write applications that run on the cloud versus traditional client server applications that run on your network. So when you have an application that -- you know, we totally and thoroughly understand how to run applications that run on one box, right, that abstract the resources on that one box, that do automatic memory management, mapping, virtual memory. Totally beaten that to death, you know? Fantastic at it. Now, when you take that and you scale that across a thousand nodes, now that becomes a very thorny, very interesting problem. How do you make sure that your application that's simultaneously running on a thousand nodes is talking to the same piece of data? Especially if one of those nodes -- it's the classic read/write problem, but now on an astronomical scale. How do you ensure there's one version of truth? Because when you have your databases replicated across multiple, multiple nodes, how do you enforce that? How do you enforce fault tolerance? If your application is running in a process and dies, how do you get applications to talk well across the internet? All the of the protocols we have built, all of the stuff that we've done around distributed computing, if you will, around IPC calls, interprocedure calls and remote procedure calls don't really scale across the internet. No binary data on the internet. How do you take that -- so, yes, web services -- so, yeah, if I'm doing this to a student audience, a grad student audience, somebody or the other is definitely bound to say, but we have web services. Web services are definitely good, but it's just a huge Band-Aid. One of my biggest peeves about web services, web services basically are designed to replicate RPC, remote procedure calls, on the internet. So basically every single -- two problems with that. One is you have to have so much overhead data to replicate RPC which in and of itself not a problem, but the other thing is all of web services communications happen using post calls on the internet. But guess what? On the internet, 98 percent of your traffic is get, right? Most of the times you're just retrieving images from the internet or retrieving stuff from the internet, so it's all get calls, and all of your infrastructure is optimized for a get, right? So you've got caching servers, and gateway is all designed for that, and really web services do not take advantage of those. Whereas, with some of the newer data formats and methodologies like Rest [phonetic], we can effectively take advantage of the way the internet is actually built. So some of the ways we actually do conventional things has drastically changed, and then there are new things that we've never had to worry about, like data-intensive computing. So there's just so much shift that's happening in the industry in terms of some of the common things that we do that it just phenomenal. It's scary and interesting at the same time, and one of the best places to be. So what I'm going to do -- yesterday those guys actually -- Roger and Jared spoke about Windows Azure in detail, so I'm not going to delve into each one. So what I'm going to do is just actually take five or eight slides and just run through some of these just for the benefit of folks that have not been in that session or for the video folks that have not seen it yet. So Windows Azure, we're going to define it as a place to run your applications. You upload your applications and Windows Azure runs it. It a cloud computing platform, so it's designed to scale. It does scale out, not scale up, which means if you need your application to be super high performant, we will take your app and run it on a thousand nodes or something. That I way it more available, more scalable, instead of running your application on a really big, beefy machine, in which case you're pretty restricted in terms of how you can scale. Windows Azure is a utility computing platform, so you pay for what you use. Azure basically is built out on data centers which has many, many servers, hundreds of thousands, and each of those servers is broken into virtual machines. So you'll actually see Azure, there are four instance sizes. One CPU, two CPU and four CPU and eight CPU. So typically the way we do it and the way we break it out is on every rack you have sort of a motherboard, and each of those mother boards tool socket, right? So each socket has a quad core CPU. It's typically in Intel or AMD. So you've got one motherboard with eight cores on it because you've got two sockets and quad core processors in each socket. So you've got eight cores on one motherboard, and that's why we offer a one, two, four, eight configuration. If you get eight cores, you basically get the whole motherboard, and you get fractions thereof for a smaller size. So literally -- the point I'm trying to make is each VM, at least at the moment, runs on its own core. So a lot of people basically are concerned about, oh, it's a VM. It's not the same VM as you run on your PC. It a VM that's highly, highly optimized for that particular core, that particular hardware. So that's why your performance is going to be about 98 percent of native time. So this entire sea of VMs -- we call it the fabric. We've just borrowed this lingo from distributed computing, so we call it the fabric. And your application runs on the fabric, on a bunch of VMs. Windows Azure, like I said, does scale out. And to truly scale out, your compute needs to be -- so obviously the applications need state, right? Because nothing runs in a vacuum. You basically need your application to have some persistence in data, so you basically need durable storage. So to get a totally scalable stateless app, you basically need stateless compute and durable storage, and the way we do storage service -- you know the whole blobs, queues, and tables that they talked about yesterday? It's all an abstraction that's running on Azure itself. So it's interesting to think that Azure storage is just a compute service running on Azure. I'm going to repeat it. So you've got a whole bunch of discs, so you've got a disc array of some sort, and you've got some servers that are abstracting though discs into blobs, queues and tables. Those servers that are abstracting are running a program that runs on Windows Azure. So everything around Azure depends on Azure. So that's how reliant and reliable it is. So storage is just an application that's running on Windows Azure compute nodes abstracting away a bunch of hard drives. Like we saw yesterday, we expose blobs, tables and queues in storage. We make three copies of everything. And here's the super cool part. If one of your applications writes a bit of data into any of these storage mechanisms, when your call returns, you can be sure that all three replicas have been updated. So there's no -- so in Amazon, for instance, and that's a design choice that made, you get eventual consistency. If I update a piece of data, it will eventually be consistent. That eventuality can be anywhere from a few milliseconds to a few seconds, which means if I write a piece of data and immediately read it back, you may or may not get that same updated piece of information. Whereas with Azure, we actually do -- what's the word I'm looking for -- right away consistency, if you will. So when the call returns, you can read the data back again, you'll get the exact same updated piece of data. All of it's accessible to a rest API, which means we don't care if you're running on Linux or an Mac or Windows or using whatever programming language, you'll be able to access these services. So you can access these from desktop machines, on-premise, infrastructure or on the cloud. So it's completely open, completely interoperable. So I'm not going to get into a whole bunch of these details because we look at some of these things. This is important. Management tasks are automated by the fabric controller because you don't have people running around fixing machines and bringing up dead processes. So there's a piece of software. This software, like we saw, also runs on Azure. So the fabric controller runs on Azure and manages the other nodes, hardware nodes and software processes. And the interesting thing is for the fabric controller to be able to figure out that your application, whether it's running or not and at one level of health it's running, you should tell the fabric controller your application requirements. So you should say, well, my application needs to talk on core port 80 to the external world, and maybe it talks on port 40 and 50 to another process down the wire, and I need five instances of it. And these are the requirements -- it's almost like a system admin, right? When you give your app to an admin, you say I need these requirements. And so basically you do the same with Azure, and you do that by means of a config file, which we'll look at. And once you provide that, it figures out how to do it. And this is what I'm talking about, actually. So you basically tell us what are the components. So you'll say my solution has web role and a worker role -- and we'll see what that is in a second. Actually, I think we saw it yesterday, but still -- and then you will tell Azure controller whether these talk to each other or do not talk or do they except input from the internet or don't they and all of that, and Azure fabric controller will open the right ports on the machine and it will close everything else. For security we close everything that you explicitly do not ask for. And everything is load balanced. And all of this is scalable, of course. Or you can say give me 10 instances of my worker role, give me two instances of my web role, and all of that, and we'll load balance it across. You basically communicate between these guys, or we recommend that you communicate between these guys using a storage abstraction, typically a queue. You could communicate directly, but then that leads into the problem of if your first instance here is talking to the first instance here, it's made a call, what if that instance dies? It's just going to keep sitting, waiting for a response back. So you don't want that. We basically say go loosely coupled, be asynchronous. So you can do both, though. Developer experience is key. We provide tight integration with Visual Studio, obviously, but we also integrate really well with Eclipse. And because all of this is just command-line based, SDK, it integrates with any IDE that can accept a command-line compiler, which is most of the IDEs out there. So we play it really well with most of the IDEs out there, and we provide -- when I say local debugging, Azure allows you -- or when you install the Azure SDK, it installs a very high fidelity simulation of the cloud on your local desktop. So you're not building applications, throwing it up in the cloud to debug it. You can basically debug it locally because the underlying runtime is a very high fidelity representation of the fabric controller in the cloud and the runtime in the cloud. Geo-location, you can -- we have six data centers -- yeah, six data centers around the world, and your application can live in any of those six data centers or in multiple data centers. And here's a very quick illustration of the whole thing coming together, especially -- I'm going to stress on the fabric controller. But basically assume that this is Windows Azure compute, this is Windows Azure storage. All access to compute and storage is load balanced. So initially what's going to happen is you will send us your service, we'll take your service, and then your service will access your data. And, again, observe that even if your service wants to talk to data, it's load balanced, right? So you get performance no matter if somebody externally is talking to your data or just local data access is happening. And then any access happens through the load balancer. The service model that we spoke about is where you have your actual service and you have some configuration file that you basically pass on to Azure, right? So what's going to happen is once you upload that to the web portal, which we'll see in just a few minutes, the model gets -- the fabric controller takes that model and then configures your fabric as you request in the model. And if you say I need three services, it will take three machines, three VMs, configure it exactly the way you wanted it to, open the right ports, and then push your service onto those three machines. And if you want to make any changes -- oh, before that, it's also going to take the physical IP addresses of these machines and replicate that to the DNS server so when somebody goes to your service using their friendly URL that we set up, which we'll see it knows to point them to the right IP addresses. If you want to make changes, you can go into the web portal API or now there's a Rest API that you can program directly against and say, hey, I need those three instances to become eight instances, and, boom, automatically the fabric controller will take that change and make it happen. And then once you need to shrink the same thing, it will shrink. The best part is if one of those nodes dies -- when I say dies, it could be your service crashing or it could be hardware fault -- the fabric controller will detect it. Basically what happens is every so often the fabric controller will send a heartbeat pulse to all of the running services, and if it doesn't receive a response, it will conclude that the service has died, so it will flag it as having died. And we still need to preserve your model. We need three instances of your service always up and running, so we'll bring up a third instance, take down the old instance, and then update the DNS server to point to the new instance. So this is just to sum up everything. This is what your architecture will look like. Super simple. Any application that needs -- or any piece of functionality that needs to be accessed from the internet gets implemented as a web role. So these could be asp.net projects, these could be php. Any CGI project will have web server running beneath it. So you can actually access it from the internet. Any piece of code that does not require direct access from the internet runs as a worker role. So think of this as sort of a Window service, if you will, and this is the front end gooey, if you will, right? So this is just going to keep running in a tight endless loop but crunching whatever it's crunching on. And we recommend that the way you communicate between these two is to use a storage abstraction underneath. So if you need to patch some data between this guy and this guy, and if it's a large amount of data, store it in a blob and then pass a message over the queue or something like that. Both these, though, can make outbound connections, which is super cool because now they can actually talk to services on the internet or if you've got so the data that's too sensitive to upload to the cloud, they can actually call home, like call a service back at your on-premise location, grab the data, and then crunch it. So the fact that both of these can make outbound connections is pretty cool. Cloud storage is also accessible from outside. So you can actually use cloud storage directly from the internet. And the key thing to note is all of these -- it's not an all-in-one package. You can only use cloud storage, you can only use compute, or you can use a combination of the both. So I can just store all my movies alone maybe in cloud storage and access that locally from my computer here or I could build an application that accesses that and shows me the movie or something like that. So you can decide at what level you want to play. I'm going to race through SQL Azure really quick. All I'm going to say is in Windows Azure storage, there's no concept of a relational database. The tables in Windows Azure is basically just an entity value pair. The reason we designed it that way was because of scale. I mean, if you have a large number of relational databases or a large relational database that's replicated, then it is very time consuming to make sure that the updates are transactional because now it's not just one table you're messing with, you're basically figuring out how is this related to all these other tables and propagating, and then you have to make three copies -- you know, you have to change three copies, and it's a nightmare in terms of response time. So Windows Azure storage is meant for really fast, really scalable applications, and so it is not relational. In fact, SQL Azure when it is called SQL Services was also not relational. This is just a beefier version of the Windows Azure table, but we had such overwhelming customer demand for a relational data structure that they completely went back to the drawing board and redesigned their specs. And so now you can sort of think of this as SQL Server in the cloud, but it doesn't expose the complete functionality of SQL Server. At this point it's only going to offer the storage mechanism and the crediting mechanism in the cloud. But again, this is very much a product in development, and so basically you will see a whole bunch of other functionality: Analysis, BI, reporting, all of that. All of the stuff that you have in SQL Server on premise today you will see migrating over to this as well. So we looked at all of this. This part uses the same protocol as SQL Server, which means the tools that used to work with SQL Server -- your SQL Server management studio or link pad or whatever application that you used to work with on-premise SQL Server -- now works with SQL Server in the cloud. Your application can actually use one database or multiple databases. And the reason for this is we limit the size of a database today to 10 gig. The max size of a database is 10 gig. We will expand this limitation to about 50 gig or so in the near future, but the limit is base, again, beyond a certain point it's prohibitively expensive in terms of replicating changes then making sure that it stays consistent. So that's the reason why the limitation exists. You can shard your database, obviously, you can break it into smaller subsets and throw it cross multiple instances and your application can access those instances in parallel or together. And the final bit of the Azure -- Windows Azure story is something called .NET Services, and it provides two services. It provides access control on the cloud. So the traditional LDAP, you know, active directory access control that you've grown to use and love on premise gets now purported to the cloud. So your existing systems can hook up to this and now you can get access control on the cloud, which is pretty cool. And then Service Bus -- I'm going to actually talk about Service Bus on this slide right here. I'm going to show you this thing right here, which is a good example of the Service Bus. So Service Bus literary is just like the Enterprise Service Bus. It's basically a service discovery on the service mediation process sitting in the cloud. So what I mean when I say that? So say you've got two organizations. And this is very relevant when you've got multiple labs maybe wanting to talk to each other, share data or -- like in the case mentioned yesterday, somebody has terabytes of data on their bench and they want to basically be able to share this data with somebody else instead of having to ship it over. So in cases like these where services from multiple organizations want to talk to each other but are confined by fire wall boundaries, the Service Bus comes in and acts as a service broker, a mediator. So the Service Bus has two components. The registry, which is the part that basically lists this application and lists this application and allows them to discover each other, if you will, and once they've discovered, the Service Bus acts as sort of the mediator. So what's going to happen is this application will make a connection, a port 80 connection, into the service bus, and the fire ball is going to allow it because it trusts the Service Bus which is being listed on a Microsoft.com domain, and it's a port 80 connection, so it's going to let the connection go through. What the Service Bus is going to do is it's not going to close the connection, it will keep the connection open. And the same thing happens from the other end as well. This guy does the exact same thing, and it will keep the connection open here as well, and then these guys can talk to each other through this guy right there, because now you've got two connections that are open, port 80, your firewalls are happy because it's on port 80, and so that guy is just going to act as [inaudible] between those applications. So that's basically it. That's basically a really quick overview of not just Windows Azure but the all app Windows Azure platform. Right? So what I want to really quickly jump into now is examine two things. You know, back in the slide that we saw, there were two kinds of scenarios where Azure makes sense. So one is your traditional kinds of scenarios where you need high-scale compute, and the second case, it was all about data, and you need internet-scale compute basically with big, large volumes of data. So those are the two things that I'm going to look at here. The first one is -- let me just list all of these and we'll look at these. So these are presently some of the things that we're seeing happening on Azure, right? So just looking at some of the stuff that our customers are throwing up on the cloud, these have some of the things that we're seeing. You can use it obviously as high-scale hosting. So if you're building an application and you think that it's going to become someday, it's a fantastic way to host your app and then scale with demand. So obviously you can host web apps or just throw up complete applications and have them run on the cloud. For media it's great, for distributed it great. And it acts as a broker. So any sort of information sharing, integration kinds of stuff, it's great. What I'm really excited about, again, is the whole high-performance angle of it and over the next view slides -- you know what? I'm going to jump over these case studies. All of these will be in the slide deck. And these are on the site as well, so you can actually see how each company did, how they used it, what the benefits were and all of that. So I'm going to -- as you can see, some of these are really high profile users. There's others that we haven't added yet. Nike is actually one of the more recent users, and they've done some pretty cool things. But basically this is a quick summary of the different components and how an existing [inaudible] application can incorporate these components into its makeup. And this is great from a -- when I show this to software engineering faculty, they get really excited, because now they say oh, yeah, yeah, we talk about these different layers and we talk about these components at this layer, and this shows them exactly what kind of things they can actually integrate from the cloud computing world at each specific layer. So as you can see at the very top, the presentation layer, obviously it's all about web roles, scaling of web roles. One level down are the services layer. It's, again, about web roles and worker roles. Again, on the connectivity, the middle layer, if you will, the infrastructure, the bridge layer, it's all about using .NET Services. And, finally, storage is all about SQL Azure. So it's a direct one-to-one mapping, if you will, of some of these functionalities. So over the next four on six slides, actually, what I've done is we've listed out each of the big blocks of Windows Azure. Web roles -- you know, web page -- so ASP.NET, web roles, services-based web roles, worker roles, the different kinds of storage abstractions SQLAzure.net services. So this, as you recognize now, is Windows Azure platform. This is your private cloud. So if you have an on-premise infrastructure, that would be this, and all of the services running on it. And this would be the add-on services that are running on the cloud. Things like identity and things like add-on services like Dallas and stuff like that. Right? So for each of these kinds of allocations we just light up the appropriate kinds of blocks that get used and show you how they talk to each other, right? So I'm just going to jump through a bunch of these because I don't want to dwell -- maybe we'll stop at the XPC one a bit because, again, for this audience that makes sense a little, but all of these are very detailed, and it's, again, going to be available as part of the slide decks. So cloud web -- let's start with this, actually. Really quickly, let's see how this works. Cloud web apps have a web browser or a mobile browser front end or a Silverlight or a WPF front end. If you're a browser front end, you'd talk to an ASP.NET web role, which in turn ends up talking a service role, which in turn will end up collecting data from your local storage mechanisms. And your web role can also talk directly to SQL Azure to gather profile data and app data in a shopping cart and other mechanism which this guy will access, too, directly. Ideally I would not have these two arrows. I mean, I'm kind of a stickler for clean, separated layer of concerns, so I'm going to basically have this guy talk to this guy, which in turn will talk to this guy. But for optimization, you might have this happen directly. But, anyway, so you get the idea. It basically shows you sort of the data flow, if you will, between different nodes. Composite. So instead of a complete application, this is bits and pieces. I'm going to jump to -- integration scenario. I'm going to jump to grid and parallel computing, actually. So in this case you'll see that any application, maybe it's an enterprise application, maybe it's an E Science [phonetic] application, if it's trying to do something that's intensive, it will probably talk to one web role which will spawn a whole bunch of worker roles, and this guy will talk to the different worker roles through a queue mechanism for scalability and loose coupling. And that's basically it. And then if you need some specific application data you want to talk about, if these guys need to access some data as part of the -- which is probably constituting the domain knowledge, they can actually talk to SQL Azure, which can be accessed directly or -this can be synchronized with your private on-premise database as well. So it gives you a really quick idea in terms of how we see some of these things being architected. Makes great sense in a software engineering kind of class to decide how to layer applications and how to throw them about together using some of these new taxonomies that the cloud offers. Okay. So that was basically -- these are traditional application patterns, right? These are the really exciting bits. Internet scale. So far most of us didn't have to worry about internet scale because there was no way for us to achieve internet scale. But now with cloud computing, we can look at internet scale apps, and this is just a few statistics from a Google paper as to their 2007 stats. Pretty massive, as you can imagine. Facebook from 2009. You can see the numbers again. Pretty crazy. And, again, most of these Google or Facebook, any of these high-scale sites, you'll actually see they simulate relationalism. They don't really use relational data. They actually use something like entity value tables and then try and connect them up together. So when you are worrying about -- if I had only time for one slide, this is probably what I'd show, especially to -- you know, when I go in and talk to faculty and they say how can we incorporate -- what do you think we should talk about when it comes to cloud computing, this is the one slide kind of thing, you know, kind of deal where basically you say these are the kinds of ways in which traditional app development is different from a cloud app development, and these are the kinds of things you should talk about to your students when you're talking about what's the cloud, how do we do things differently in the cloud than we do today. So literally along all of these scales, these are the kinds of things. This is, as you can imagine, a very small list. But we're using this as sort of a guiding -- a start to basically guide us along in terms of what kinds of content do we need to create when it comes to the classroom, right? So we call these curriculum modules, actually. We're working with a bunch of faculty to try and create some curriculum modules to incorporate into the classroom. And so, again, we use this as a starting point. But, again, if there's interest, I mean, if you're looking at the cloud and you're already doing some of these things, please reach out to us. We'd love to see what you're doing and show you what we already have, if that'll help, and then also we'd love to take what you have and sort of help you scale that out much broader. So there are folks like me internationally who work with the universities, and we'd love to help you scale out. So, yeah -- some of these things -- and, again, I don't know this slide's replicated. So what I'm going to do now is we have about 20 minutes, 25 minutes more, so I'm going to jump and actually do a quick walk-through. I mean, hopefully by now we really, truly understand what cloud computing is, what Azure is, all the different moving bits in Azure. I just really want to take the rubber, make it meet the road, and show you really here's some code. And I wasn't prepared to write some code, but given that we have the time, let's take a shot. What's the worse that's going to happen, right? It's not going to run? That's fine. Right? So we'll actually walk through the cycle. We'll try and walk through a develop, deploy, and run cycle. We've already seen the concept of roles, and so I'm going to jump through a bunch of these. So you know what? Let's actually just get to it. What I'm going to do now is -- oh, question? Yes? I will repeat the question. >>: You showed for the [inaudible] web role which then figured out how many worker roles it wanted. But how does that sort of thing happen [inaudible] scalable web app, and maybe it got five, maybe 50 instances running? How can that figure out [inaudible]. Krishna Kumar: Exactly. That's a good question. So the question was when you have a web role trying to scale out through a worker role, how can the web role figure out how many worker role instances it needs ->>: That one you can do. That one it seems to me you can do. It's how does a web role scale out. Krishna Kumar: How does a web role scale out, right. >>: Because that's the front end. Krishna Kumar: Yep. Absolutely. So there are multiple heuristics you can use. I'm going to throw this slide -- I'm going to see -- so there were multiple heuristics, right? Obviously when it comes to getting the front-end web role to scale out, what we normally recommend a sufficient a monitor program running that's basically every now and then checking, polling the web role to see what the latency is, and then this program, if it detectives that, wow, the web role is taking too long, will scale it out -- will scale the web role out. This same program can actually help monitor the worker role as well, so it will basically monitor the length of the queue and determine if it needs to scale up or down the worker role as well. Typically we recommend that any scaling happen through an external program, because if you're program that is trying to help scale is part of your overall solution, and if that crashes, then your whole scaling strategy is lost. Right? Yes, you can have another instance that comes back up and picks up, but for the duration that this is down, and if that was the only instance -- so the normal time to bring an instance up is about five to ten minutes. So for those five to ten minutes you've lost your logic for scaling, and we recommend you don't do that. We recommend having a monitor application that's monitoring your web roles, your worker roles, the status of your queue and sort of dot scaling. And it's separate from your main application, and so therefore if it gets affected, then it's not going to see the effect and vice-versa. >>: [inaudible]. Krishna Kumar: Yes. So from the fabric you can get a few metrics. You can basically get -- so, for instance, the queue. You can get the length of the queue from the fabric. In terms of the -- I'm trying to think -- the diagnostic -- so there is a diagnostic pack -- not a pack but API that the fabric exposes that you can get a whole a bunch information from the roles, running role instances, you can query how many roles are running, how long have they been running and what the CPU utilization on that VMS and a bunch of those information. So basically, based on that, you'll have to come up with a heuristic that basically helps you scale. Yes? Question? >>: You mentioned the command line environment. Is it power shell based or it's -Krishna Kumar: So the command line environment for the SDK is just regular command line, but you can -- you can totally use power shell to access. In fact, all of the APIs can be accessed using power shell as well. So a lot of command lets -- we've created a whole a bunch command lets that actually use power shell scripts to do some of these things. Any other -- yes, sir? >>: [inaudible] you mentioned that you can make applications belong into different organizations to interoperate through your Service Bus. What makes the Service Bus trustworthy for the application [inaudible]? Krishna Kumar: That's subjective. You have to trust Microsoft. Yes, I mean -- and that's, again, a valid question because now if somebody else exposes -- because you're literally able to see the traffic that's coming in. Yes, you could encrypt it, but still, you're able to deduce a few things about, you know, the organization. So that's something -again, it's sort of a trust relationship. >>: It's an open issue? Krishna Kumar: It's an open issue. Yes? >>: To kind of build on the previous question, is there going to be something in Microsoft dealing with sharing of copyrighted data? Krishna Kumar: Sharing of copyrighted ->>: Assume corporation X and Y are going to [inaudible], you're going to transfer their data, and because you're a U.S.-based company you might have to provide the -- well, the records of the transferred [inaudible]. Did you think about this issue? Krishna Kumar: Yes. So the same issue applies to Dallas, the same issue applies to most of our storage services, for instance. So if -- so get this. You throw up a pirated movie on blob storage and you use that url to illegally sell this to your clients, right? So at that point, I mean, yeah the laws of the land come into play. You know, every country has jurisdictions on this data lives here so we have these kinds of powers over who the owner of the data is and all of that. So have we thought about it? Sure, we have. Have I thought about it? Not so much. But I'm sure that whatever the trademark, copyright, digital privacy laws of the land that are there will come into play. And that's, again, super important because a lot of countries actually -- I mean, Azure is only in six countries. The data center is hosting Azure in six countries, and that's interesting because certain countries do not want you to hold certain kinds of data outside their boundaries. So at that point it's a question of, hmm, can we use cloud at all. And so, yes, at that point it's a subjective thing, you know, do I want to go this route or not. Question? >>: I wonder if you have considered including in the [inaudible]. Krishna Kumar: Right. So have we considered including federal record management techniques and regulations? So I know that there is a part of the field team that's actually working closely with the government, the United States Federal Government, trying to figure out what their requirements are to try and see if we can bring that back into Azure. But we're also working on two other fronts. So we basically take a whole a bunch industry privacy and security standards, ISO -there's a 27,000, I think -- there's a few ISO certifications that you can basically get certified for privacy and security. So we're on those already, and we will work -- again, when the whole concept of later, not in the immediate time scale, but later when we think about do we want to go the private cloud option, at that point you can basically customize the kinds of security and privacy regulations to which you want to be certified for. So at that point you'll have full, you know, discretion in terms of how you want to go. But we go with the most major industry ones right now. For any custom ones, we probably might not support it. Yes, sir? >>: So what kind of logging information will I get as a user of Azure? You showed how something was restarted, but maybe I want to know why. Krishna Kumar: Exactly. So the kinds of -- the question was about what kinds of logging information will be made available as part of Azure. So anything that you can log today on your Windows PC using Event Viewer, that you can watch using Event Viewer, the same thing will be up there. Because at the end of the day what's running on Azure is Windows Server 2008, and you can turn on any of the log, the metrics, that you can turn on on your local instance up in the cloud as well. So you might take up [inaudible] if something is extensively logging, but other than that, you can get anything. And you can have all of the data be saved in your table storage or blob storage and pull down the log and examine it. There are some third-party tools, actually. Cloud Era I believe is the name of the company. They build tools that actually connect directly to your instance and grab the logs directly and show you a pretty view of your running instance. So, yeah. Any other questions? Okay. So what I'm going to do quickly is -- actually, let me see what I have remaining in my slide deck. >>: I have a question. Krishna Kumar: Yes? >>: What about the possibility for the universities to be their own version of an Azure [inaudible]. Krishna Kumar: Absolutely. So at present that's not something that's an option with Azure. There are other vendors out there that will sell you a stack that you can run on a cluster and make that a private cloud. Is Azure headed that way? Yes. Absolutely. Eventually, and nobody has a precise data in mind, but that's something we're absolutely looking at by way of taking, you know, the whole Azure runtime, the fabric controller, if you will, and making that available as a product so you can take it and run it on your cluster and it should basically be able to provide that environment on your local setup. And, in fact, that's a direction that we are moving in as well, because the whole goal of having an application that seamlessly straddles the cloud and the on-premise setup will require something like that. So that's sort of the direction we're heading in. The timeline is the thing that's still TBD. >>: And what type of vendors [inaudible]. Krishna Kumar: Yeah. So the most prominent vendor is somebody called Eucalyptus, and they're -- I think their open source as well. So Eucalyptus basically has a product now. I forget what the name of the product is, but ->>: I suppose that major vendors like Dell or HP -Krishna Kumar: Do they have -- I know that they have a virtualization solution. I don't know if they have a cloud solution out of the box that runs on any cluster. But I could be -- yeah, I mean, they might be doing something more recently that I'm not aware of, but, yeah, from my last count, the most prominent one seemed to be Eucalyptus. But I know these guys have cloud [inaudible]. I don't know if they have the packaged software yet that allows you to do that. >>: Okay. Krishna Kumar: Question? >>: A little follow up here. I see this presentation as a kind of invitation to participate in building applications for a product. I would think from the academic perspective it would also be very interesting to learn more about the internal [inaudible] and participate in the [inaudible]. Krishna Kumar: Exactly. >>: [inaudible]. Krishna Kumar: The fabric controller -- yeah. >>: [inaudible]. Krishna Kumar: Yeah, that's a great question. So the question was -- I'm sure everybody kind of heard it, but basically how can academia get involved in the -- in helping build Azure, especially get access to some of the internals of Azure. At this point -- I mean, as I'm sure you already know, at this point there's no mechanism to do it. But that's very good feedback, actually. And, in fact, for the Windows product, actually, that was something that our [inaudible] team helped spearhead. I mean, basically you were able to get access to the Windows kernel for academics. So maybe down the road that's something that we will work on. Obviously there's a lot of interest. This is an emerging field, so that's something that -so he's the right guy to hear that feedback, and he's here, so that's good. >>: I think it's a great idea [inaudible]. Krishna Kumar: Exactly. Okay. So I'm going to take the next, I don't know, 10, 15 minutes and really quickly show you end to end. So basically everybody today received an email, and that email probably looks very similar to -- okay. There it is -- looks probably very similar to this, right? You basically got an email ID and a password. So the Azure pilot site has a walk-through, but I'm just going to actually walk through from that phase on to throwing an application up on the cloud. So if you just go to windows.azure.com, this is basically our developer portal into Windows Azure. So at this point you can go in and sign in with a live ID, and you would sign in with -- in fact, let me see if I have it saved. There it is. So you would sign in with your Windows Azure, underscore, whatever number. And if I can remember the password -- 402 maybe? Okay. Let's see if I can -- you know what? Let's not worry about that. Let's just go in through a different account. But it's going to look exactly similar. And once you go in, you'll basically come into this page, my project. And I have three projects listed because I have three accounts on Azure, but you will see one project, whatever HotMail project, the name of your email was. And so when you click that, you will be able to see the different services inside the project, which for you should be empty. So the way you actually build a new service is just by clicking on new service. There are two kinds of services. A storage account, which is basically an account to store data in either a blob or a queue or a table, and a hosted service. This is basically the kind of service that you would throw up your application into and that would run that application. So how about we create -- let's see, we've got, I don't know, 15 minutes. I think we can do both. So I'm going to create a hosted service first, and it's basically going to ask you for two things. It's asking for a service label, which could be anything. I could call it whatever because it's going to be a private reference. Some description. So nobody outside of your self will see it because it's only going to show up on this page, not on the internet. But this thing right here, the url that you choose here, is going to be seen on the internet. So we have this top-level domain, and you can choose whatever subdomain name that you want, and I'm going to see if I can get hello cloud, and I'm going to say check availability. And I think it's taken, because it's -- yeah, it's not available. So let's get hello futures. Check availability. And -- oh, you've selected -- oh, interesting. I've never seen this before, actually. You've selected a word or a phrase that's not allowed. I don't know why ->>: [inaudible]. Krishna Kumar: Okay. Hello future? Okay. >>: [inaudible]. Krishna Kumar: Oh, it is the same. Interesting. >>: How about [inaudible]. Krishna Kumar: Yeah, I just keep -- okay. Okay. Interesting. I've never seen that. But -- wait. What is this? No, this is a -- okay, I'm going to say new service hosted service. And you see how it says -- okay. Back. You see how it says six services remaining? This is going to be -- this is a paid account, but you will see the exact same six services, and the six services means you can throw up six projects into your account and you'll have about five storage accounts. So you can actually create five of these. An E-storage account can store 100 TB, so you can actually store a total of 500 TB on this site. So I have not created a single storage account, so that's why I have all six. I'm going to say hello cloud and hit next. And let's just call it, I don't know, maybe cloud futures. Wow. Some allowed name. Okay. There it is. It is available. Good. So the next step is basically it asks you to choose an affinity group, and you have two options basically. You can say -- so an affinity group -- let's go over what that is first. An affinity group is if you have multiple instances, if you have multiple roles, maybe you have a web role, you have a worker role or you have some data projects, an affinity group allows you to bring them together, right? You can basically create an affinity group and bring all of those three projects under the same affinity group which is going to tell us that you really care about the performance between these three nodes because you probably are accessing data, you're probably communicating. So at that point we'll basically try and keep those as close to each other as possible. So if you did not care about that, you could just choose a region, which basically -- you see nine listed here, anywhere, Asia, Europe or U.S. or you can choose East Asia. And you can see the different data centers here. So you know what? Let's actually create an affinity group. And I say yes, and I'm waiting for this to light up. Okay. And I have one affinity group already created, actually. So it's asking me if I want to create this as part of their affinity group as well. I'm going to say no, and I'm going to create a new one, and I'm going to call this hello -- or, actually, cloud futures. I can, again, name this to be anything. And I can say give me north central U.S. It's just north of Chicago, this data center. So I'm going to say provision me there. But, again, you can choose any of these different ones. And I'm going to say create. So what this is going to do is create a new account for me, and it is going to show me some information. At this point it just going to be blank. So let's wait, I don't know, ten seconds and see if it comes back. There it is. So it's telling me that I'm geographically at this location, this is the name of my affinity group, and right now I have nothing deployed and I can actually see that it provides me two environments, a production environment and a staging environment, and basically allows me to upload to either one of those. Now, there's functionally no difference between these two. What would happen is if I uploaded into staging, for instance, it would be basically return a url that some [inaudible], some super-long number dot app cloud dot net, and I can test that locally to make sure it works. Once I'm happy with the way it works, there will be a swap button here. There will be like a button that allows you to swap, and I just push that button and that will get promoted into production, and the app now will be accessible under some available name dot cloud app dot net. And internally nothing is happening except the DNS servers are now pointing from this record to this record. That's all that's happening, right? So what we want to do is we want to throw up an application here. So let's actually fire up Visual Studio. I'm going to run as admin, actually. So when Visual Studio comes up we'll be able to open up a cloud service project and throw that up there. So I'm going to say a new project. I'm actually going to minimize this toolbox. Okay. There's a cloud option, and I'm going to say cloud service for -- actually, let's call it -- or, actually, cloud futures. I'm going to say okay. And what it's going to do is it's going to throw up a dialogue now, and this dialogue is asking me two things: Which language do I want to code in, VB or VC sharp or F sharp, and what kind of role do I want to create? Because when you create an application, you can actually create, like we said, a web role or a worker role. And then in terms of web roles, we can create an ASP.NET or an MVC or a WCF web role or I can choose CGI web role and then create any application that's -- using any application that's fast CGI compliant. So Python, PHB, [inaudible], any of those. For now let's just choose an ASP.NET work role. Let's call it cloud futures, underscore, web, to say that this is a web app. And what it's going to do is it's going to create the template. On the right you basically see the application getting created. And the key thing that you'll observe is there are two projects, right? Here's your cloud project and here's your cloud futures, underscore -- you know what? Let me get rid of this to get some real estate. Okay. Project creation successful. And you'll basically see that there's a cloud project and a cloud, underscore, web project. And this is nothing but a regular good-old ASP.NET application, right? You've got your defaulted ASP, actually, where all of the things that make up an ASP.NET app, and it's all of this. If you basically -- I'm not going to do it, but if I basically right click this and say set as startup project and I hit F5, it's going to open up -- you know what? Let's just do it. So I hit F5, and it's basically going to open up in the ASP.NET development server. The key thing that makes this ASP.NET project into a cloud project -- so you see how the ASP.NET development server fires up? And your blank page will load because there's really nothing -- we've done nothing on the page. So I'm just going to close this. Let's do this. Let's actually get in and design -- let's throw up some basic stuff. And I'm going to throw in -- so we're doing a hello world kind of app, right? So I'm going to throw in a text box maybe. Where's a text box? Text box. And let's throw in a button right next to it. On the next line let's throw in a label maybe. Right? So this is your quintessential hello world, right? You basically type your name in and you push the button and it's going to say hello whatever. So let's code it up. Let double click this. It's going to take me to the event handler. I'm going to say label 1.text equals -- not template control .text equals text box 1.text. So after I accept my developer of the year award I'm going to hit F5. And so you'll basically see that it fires up. It's going to launch the ASP.NET server and it's going to show us that page. And you see it's running on local host and it's running on this custom port, right? Because that's what ASP.NET dev server does. I can say Krishna and click button and it says -- oh, it should have said hello Krishna, actually. But, yeah -- don't take that award away from me. Okay. So I just proved it to you that this is basically just a good-old regular ASP.NET project. But now something magical happens when you choose this guy, cloud futures, right click, and make this the startup, right? So what happens now, this is now a cloud project. And what basically happens is it will read not just this -- so basically you will see -- under the cloud project you'll see there's a roles node, and it's says that there's one role, which is, you know, the cloud futures web role. And then there's two files, actually, a service configuration and a service definition. Remember what I said that when you throw up your solution into the cloud you basically pass on the code and the config? This is your config file, right? So you can actually go in and press the xml directly or if you double click this, we built a UI -- so here's where you basically say give me a VM size of small, medium, large or extra large. Remember the one core, two core, four core, eight core? That's this. This is where you say give me five instances, right? Now we'll take this role and spawn five instances. Remember where you basically say give me an http endpoint? And then you can go into different settings and you can choose more endpoints. At this point you can say I want to open a TCP endpoint on this port, I want to call it this, and so on and so forth. So you can actually go make all of these changes, and these changes actually will get reflected right here. So this whole -- the thing that we changed to five got reflected. So it will round-trip between the xml file and the IDE, or the Gooey. Now if I hit F5, something interesting happens. Now, again, remember, I'm starting this as a cloud project, and so something called the development fabric and development storage will start up, right? So this basically is the local simulation environment off the fabric, off the cloud, on your desktop. So when it says development storage started, the next thing to start will be the dev fabric, and -- okay, we're still waiting for the fabric to start -- okay, there it is. It's started. And now a browser is going to open up. So it's still waiting for the role instances to start. But this overhead is only for the first time. Now, if I run this in this subsequent times, it's basically going to snap up like this because my dev fabric and dev storage have started. Okay. But the first time -- yeah, I'm still waiting on the browser. Okay. Launching browser. Finally. Now, the interesting thing here is you basically see it's running on local host, but it's running on port 81, right? And I can basically say Krishna and push the button that says hello Krishna. Same thing. You're like, okay, what's the big deal? Here's the big deal. If you right click this and say show dev fabric UI, this will bring up an MMC, Microsoft Management, console window which actually will show you -- so if you go to log into the box that's running on the cloud, this is probably what you'd see. So you'll actually see some command window with just a whole a bunch debugs [inaudible] in terms of what got load and all of that, and you actually see the five instances that we've fired up. So you basically will see 0, 1, 2. All of these are the five instances that we fired up. Now, the way you would throw this up into the cloud is -- let's actually stop this. Shift F5. I can right click this, and just as I would package -I've got, what, three minutes, Kent? >>: Yeah. Krishna Kumar: Okay. Just as I would package an ASP.NET project, I would basically right click on publish, and what it's going to do is it's going to compile the project up, create a single zip file, if you will. It basically actually does use zip, but it's going to encrypt it, so you won't be able to open it using WinZip. But it creates a zip file, and then it's going to open up the location where it's stored the package file and where it's stored the configuration file. It's also going to open up the Azure dev portal because it knows that the next step is to actually upload it. So at this point it does not take your authentication information and throw it up directly, but that's something that, again, I think we'll see in the not too distant future. But basically all you would do is basically come into this screen, click deploy, and the screen that comes up, it'll ask you for a package file, which I can browse, and I know it's here, so I'm going to grab the location of this, come in here, choose the package file, and then it will also ask for a configuration file. Let's minimize this. It will ask for a configuration file from the same folder. I can choose a label for deployment, beta1 maybe, and hit deploy. And that's basically it. This will take a good solid five minutes, actually. You'll see it pass through different stages. So when it says processing, please wait. The files are actually getting uploaded. And once the files are uploaded, it'll come into this next screen where at this point -- this is the super cool part, right? The fabric controller is reading the config file, and it sees that I need five instances. I'm going to close Outlook. And it basically sees that is sees five instances, and it's going to do a graph mapping, right? It basically understands all of the nodes that it has. It basically has it represented as a graph, and it's trying to see where it can take my project and locate it at which point in the graph. So that's basically what it's doing now. It's trying to identify the nodes and it's basically -- once it's done identifying, it's basically going to show you here -- so this screen means it's identified the nodes, it's reserved that DNS name, and this the website url that we're going to get, and at this point the website url is -- the condition of this role is stopped. So what you'll have to do is basically hit run. And this process takes about five minutes or so, and we'll just have enough time to see what happens. I'm going to show you what happens because I think it's pretty cool. So this is what, under the covers, Azure, sort of a plot diagram, if you will, looks like, right? Basically you've got your hardware, you've got your hypervisor running on top of the hardware, and you've got these little virtualized instances. You've got four virtualized instances per chip, and the first virtualized VM is basically your server OS, right? This guy administers all of the remaining three VMs. And literally what's happening right now is when I say start running, the CPU has to get prepped. And the way, basically, it happens is a maintenance OS gets pulled in from the wire. This is about 15 meg or so. All it's going to do is format this partition, the first partition under the CPU, and download your server core VHD, your virtual hard drive, on it, and any patches are going to be updated. And the best part is this process takes literally two or three minutes because, again, you're not installing an OS, right? You're just copying an image and letting that run on top of your hypervisor. And then this host partition is going to partition your guest role, and then it's going to install the fabric or the .NET run time and the 132 run time on top of it. And, finally, the CS package file that we uploaded gets pulled in here and starts running. So this entire process takes about five minutes to 10 minutes or so, depending on the load up there. And so what you'll actually see is when that happens, you see how it's initializing now? From initializing, it's going to change to busy, and from busy it's going to change to running. And at that point if you hit this url, you will see that same application pop up on a browser. So with that, I'm going to wrap up, because I've already exceeded. So thank you so much for your patience. And if you have any questions -Can I -- do I have time for questions? >>: Sure. Krishna Kumar: Okay. If you have any questions, I'll take a few until we get thrown out. . >>: There any way that the application can negotiate the parameters, such as server ability, continuity of service, with a platform, I mean, and having guarantee that the platform will honor that? Krishna Kumar: Oh, so you're saying can the application request a certain level of ->>: Yes, before being deployed, can it negotiate some -Krishna Kumar: Right. So we publish a certain -- I think it's three nines or something -we publish a certain level of availability, and so the app does not -- cannot negotiate that, actually. But that's something we will honor, absolutely. And the app can absolutely expect that. And the thing that we also say is always -- we always say create two roles in case one goes down, then the other can come and -- in those points, there are five cases where, you know, calamity does occur with your app or with the hardware. Yes? >>: So the geographical location of where it's actually run, can I define it somewhere or prenegotiate -Krishna Kumar: Absolutely. So you know when we set up the service instance, we basically chose a geo location. So you can absolutely say I need this running. But the granularity that you're requesting can only extend as far as the data center. So inside the data center we'll not be able to say give me rack 3 or something. You can say take these three or four different roles or these storage projects and co-locate them. That's what we mean when we say affinity roles. And what it's going to try and do is it's going to try and co-locate them as close as physically possible, sometimes maybe giving it the same rack even, so that they're as close to each other as possible. But, again, that's not something that we have any control -- direct control over. >>: But will that be a service later on? Because some has more security concerns, want to be -- have their own server and this kind of thing. Krishna Kumar: Oh, like a VPN, a virtual private server kind of scenario, like maybe ->>: Actually, on the same hardware, not doing multi-tenancy at all, I mean, with others. Krishna Kumar: Right. Right. You could -- the only way to do that is if you took up -- if you took an extra large VM size, you'll get all eight cores on that wafer, on that motherboard, so that's the only way I can think of to have nobody else running on it. >>: [inaudible]. Krishna Kumar: Yes. So the question was is there a price difference between the different role sizes, right? >>: Right. Krishna Kumar: So for ->>: Not role sizes -Krishna Kumar: For the affinity groups and such? No, not at all. >>: So why would you ever say no, I don't want them close together? Krishna Kumar: You wouldn't, actually. So here's the reason why you might not say that. If you basically have a whole a bunch instances and you say I want them all as part of this affinity group, maybe we're not able to do it. Maybe we'll come back and say sorry, no availability in the group that you've requested. At that point you can probably say oh, I don't care now, break it up, but just give me some allocation. So that's probably the only reason why you'd choose that. But other than that, you'd probably always want the same affinity group. So with that ->>: One last question. Krishna Kumar: One last question. >>: You create a five instances, and we're using only one. When do the others come in the game? Krishna Kumar: All of the instances are up and running. So if I -- basically if I had some diagnostic that I was throwing out saying -- so you can actually do that, right? You can basically -- in my application, I could have written some code that throws out the name of the machine on which it's running, for instance. Then you'll actually see -- if you hit it from five different machines, you'll actually see five different -- so if the five of you in your row hit the service, each of you would see a different machine name on your browser. >>: But you can define a threshold for the workload, for each instance? Krishna Kumar: Can you define the address for ->>: A threshold. Krishna Kumar: A threshold for each instance like -- no. It just symmetric load balancing. So it's a hardware load balancer that does symmetrics. So it does have some affinity, so if you basically go to the site and you come back to that same site from that same browser, it will try and give you the same node, because if you have any sessions temporarily saved, it'll allow you to take advantage of it. But you cannot be guaranteed that it's going to go back to the same instance. It'll try and load balance across all instances evenly. >>: Thank you. Krishna Kumar: All right. So thank you so much, people. And it was ->>: Let's give Krishna a round of applause. Krishna Kumar: Thank you. [applause]