>>: Good afternoon. It's my pleasure to introduce... and I have two presenters. Krishna Kumar here, who's...

advertisement
>>: 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]
Download