Explore Microsoft Windows Server 2016 Application Platform

Explore Microsoft Windows Server 2016 Application Platform

Hi everyone. How are you guys doing?>>All right.>>Cool, you’re entering the last
session of the tech summit. The hard part of doing
a session right after lunch, I know I’m competing, I have a very
strong competitor at this point. You guys had a good lunch? Yeah, no,
are you guys ready to sleep? If the session is too boring. [LAUGH] Is the chair comfortable? This better not be. [LAUGH]
>>[LAUGH]>>Well, thanks for joining this session,
my name is Vinicius Apolinario, if you are wondering how
to pronounce that name. Anyone here have been to my
session yesterday on security? A few of you. This morning on ICDC? Some of you, okay. So for those of you that did not
hear the joke from yesterday. If you are wondering how
to pronounce my name, that’s Vinecias Apolonario. And there’s a funny
story about that. So my first name is Greek. My middle name, that’s not there,
is Ramos, which is Portuguese. My last name is Italian. I’m from Brazil and
I live in the US, right? So yeah, I do have problems when
people, what’s your name sir? There’s absolutely no
name that I can give that an American will be able
to pronounce correctly. Even if I’m going to
whatever part of the world, people can’t pronounce my name. So yeah, no worries about it. The next thing is,
I’m a Product Marketing Manager for the Windows Server
team at Microsoft. And usually when we come
to this kind of events, people see Marketing Manager, and
the marketing part doesn’t help me. Because people are expecting to have
some kind of technical conversation? So bear with me. I do have a technical background,
so we can probably have a good conversation on Windows Server,
right? Again, thanks for
joining the session. Another thing that I’d like
to ask you guys is to please participate, right? The reason why you are here and not
checking an online video is because you probably will have questions. You want answers to your questions. So please raise your hand. I will repeat the question, because
we don’t have any mics in the room. So people that will watch online
can hear your questions and then I’ll answer the questions, if I
know the answer, of course, right? So, this session is on Window Server
2016 application platform. How many of you guys have any idea
on what application platform is, or at least think they do? Yeah, so you guys have
no idea why you’re here. All right, okay. Application platform is, well
taking a step back, if you look at Windows Server, Windows Server has
many rows in the data center, right? First one, and probably the most
notorious one, the one that Windows Servers really has been
a reputation on is infrastructure. Right, so I wanna run my directory, my Active Directory,
that’s from the server. I wanna run my mail services,
Exchange or whatever other email that runs on top of Windows Server
maybe, you run Windows Server. I wanted to run my website,
that’s Windows Server, right? So those infrastructure pieces are, actually website is
kind of application. So think about DNS, DHCP,
storage networking. So another area that Windows Server
is very important is websites, applications, and
other stuff, right? At the end of the day,
Windows Server is the base for either your infrastructure or
your applications, right? These section is about applications, how Windows Server can support
the next generation of applications. We’re not talking
about legacy stuff, we will talk about some of these. But the technologies that are new to
Windows Server to support the new development model and the new
technologies that are coming out. So the two features that we’ll talk
about are, if we can say feature, containers, and
we’ll talk about Nano Server, which are the two things that
I wanna cover in this session. Sounds good? Okay, anyone has had any different
idea when you joined the session? No, okay. And another important point is,
well another question for you guys. How many of you are developers? Okay, so we can’t say bad things
about developers in this session. We said a lot of bad things about
developers in the other one. IT pros? Okay, I think that’s everyone. But any database administrator, maybe as part of the IT
role as well, probably? Okay, for the developers, and
the others as well, but mostly for the developers, how many of you
has been using containers already? That’s great, awesome. None of you, because we are here to
explain what containers are, right? What I was afraid was, someone that
had been using containers is here to hear what containers are. So that would be the wrong session. So, let’s keep going. So, the first thing that I would
like to highlight in this session is, what is the driver to what we’re doing in Windows Server to support
the new type of application? What’s going on, right? And when we think about what cloud
is causing to the data center, that’s probably the main things
that is driving the changes that we’re seeing for both development
and infrastructure, right? I was talking to a customer
the other day and he was saying that
they are a start up. They started like a few months
ago and they are already operating in five different
countries in a matter of months. And the only reason why
they can do that is because the technology behind
this company’s product or service the technology
that these ladies are to use uses cloud to scale,
to reach their customers and so on. So this type of company is
only possible these days, nowadays because cloud enable those
companies to operate like that. So cloud is providing
companies hyper scale. So companies that are small in
terms of number of employees, for example,
can operate in large scale, right? Availability, even the small
companies are processing millions, billions, maybe trillions of
dollars because they have the availability to do that. Maybe small companies, if their
service is not available for five minutes,
they end up loosing a lot of money regardless of the size
of the company, all right? And agility is another
component here. That company was able to bring
to market the service that they developed in a matter of
one month, or a few weeks. And their minimal viable product
was enabled with the agility that cloud allowed them to
deliver to the market, right? I have never seen
something like that. The past should be able
to hyper scale like this. You wanted to buy hardware, or you
wanted go to different vendors and different places that will
have different requirements. The application probably wouldn’t
run the same way, and so on and so forth in terms of the ability. How can a small company have
such availability, such SLA, compared to other Enterprise
customers that struggle to provide higher availability for
their services, right? And the agility, they are able
to implement new features or new services in their
portfolio very quickly, right? Their developers are constantly
working on improvements to their application. And they can simply deliver
that new feature, or that new service, to their
application or service running. Once they tasked it, and
it passed from the task, they can just go to production. Compared to probably the companies
that you guys work on. If you guys are large or
medium companies, you have some kind of
development in house. How can you guys quickly
develop something, test and go to production? Most of the companies that we talk
to, they struggle with this process. So one of the things that we started
to realize is that all those stations, they drive the change
that we are seeing today. Since we have developers and
IT pros in the audience today, let me ask you a question. Tell me if this is
familiar to you guys, we have a development team
that creates an application. They test the application,
they do all the quality tests and proof of the application and so on. Now they bring the application
to production. And the application doesn’t work. Have you guys seen this before? No, it doesn’t happen
in your company? I will bet it doesn’t
happen in your company. But anyway, it happens to most of the customers
that we talk to, right? And why is that it? Why does this happen? There’s some cases where it was
not implemented correctly or there was some bugs
in the applications. Most of the time in the vast
majority of the cases that we hear this situation,
there is some kind of requirement. That was done the development
environment and is not present in the production
environment, requirement for the application I mean right. Now, at that point, we start the pointing fingers war,
right? Operations will say, well we just
implemented your application, if it doesn’t work,
that’s a development problem. But a developer will say well,
we tested the application, so if it doesn’t work,
that’s an infrastructure problem or the operations problem, right? So it was time to create some kind of technology that will
help solve this problem right. I work in I T for
I don’t know more than 15 years now. And my entire career I heard
conversations like this. The answer to that is what we
are calling as mircoservices. Microservices, you thought I was
going to say containers, right? So containers is part of
the microservices story. Microservices assume one thing that we’ve been doing in IT for
a very long time. Which is when we create
an application we try to package everything that the application
need inside of a package. Then we move from environment
to environment, right. And we create some dependencies
from that package to the operating system or to the system where
that package is running, right? So, in order to deploy
an application, I have to configure
the entire operating system. So, every time, the application
will call the operating system, everything that the application
will need will be there, so the application can run right? What microservices is doing,
is decoupling the application from the system where
the application is running. So what micro-services tries
to do is instead of creating all the dependencies in a single
box, I will run multiple services or the micro-services spread out for
multiple nodes maybe, or even a single node but
it’s decoupled from that node. So every time that service needs
to run, I spin up the service,the service does what it had, to do,and
then I shut down that service. Now, because its decoupled,
from the operating system, if I have to spin up that same service In
another system, it will simply run. Because doesn’t matter,
the configuration of the system. The service is self contained, and
that’s where containers come up. So containers contain
all the requirements for the application to run. So that’s why containers are so
important. Now, when we talk about
microservices and containers as part of this story,
we have agility. Because you just spin
up a microservice because it’s just playing it. The microservice will run
self-contained, right? I can build an operated scale. Because different from
most applications, when we build an application based
on the micro services concept. Because I decouple from
the infrastructure, I can spin up multiple services. So I can have load balancing and fail over, managed by
the application, not infrastructure. Think about it, all the applications
that we have today in order to provide high viability,
what do we do? Cluster. Cluster is an infrastructure piece
to support your application, right. Now, what if the application is aware of the failures
in the infrastructure? And the application can remediate
itself by simply spinning up a new service that does the same thing
that the service that is down was doing in other node. I can do high availability and I can do load balancing at the same
time, from the application. I can continually evolve my
applications because I’m running as a Micro Surface and the surface
itself is easy to spin up. If I need to replace the application
of a new version, I simply bring this service down and I bring
the new version of the service up. That’s it right? I have faster delivery
of features and capabilities because I can
evolve the application rapidly. And I also because of that
because the application is not tied shooting for structure, I have a better use of my
hardware resources, right? We’re going to talk about
this one specifically, a little bit more
during the session. Anyway does this sound
good to you guys?>>Sure.
>>Sure, right? You guys can say that you love
this idea or this concept. Who doesn’t like ice cream cones?>>[LAUGH]
>>Right, the problem is, we are not dealing with
Ice cream cones today. This is what we are dealing with,
that’s the problem. We wanna get to
the ice cream cone but today we have ice cream,
what’s the name of this? Bucket or whatever, container right? So how do we get to there? We have one major problem here. The major problem we have is
not every single application will be rebuilt in order to be
working as a micro-service. Or as a container, or whatever
the technology that you decide to adopt in order to move to
a micro-services approach right? So how do we get there? Well, taking one step at a time,
right? And at this point we
probably need both. We need the legacy application
working, but we need to start working with the new applications
in our new model, right? Now the question that I get from
customers at this point is, okay [INAUDIBLE] so is there a way for us
to take our legacy applications and move to something that is
close to microservices? Yes, there is. So let’s take a look. Well, this is our North Star. This is where we want to get. If you think about infrastructure, what are the things that
Microsoft is providing today? We have Windows Server 2016,
our latest operating system release. And we have Azure and Azure Stack. And why is that important? Flexibility. You wanna run in the Cloud. Go for it. You wanna run on-prem,
your legacy applications, go for it. You wanna have a hybrid environment,
go for it. You have Azure stack coming
up later this year, right? Now the most important thing and
that’s a differentiator from, not just the flexibility but
the real differentiator of Microsoft from the other
vendors Is the part above this. One of the things that we’re doing
is that Azure Research Manager. How many of you know what
the Azure Research Manager is? Some of you. For those of you that
don’t know what the ARM, Azure Research Manager, is,
it’s basically a way for you to wrap all the components
of your application. And specify how to deploy those
components together to form your application. If you think about an application,
application is composed by database, website, the logic of
the application and so on and you may have many components for
your application, right? What the arm does is basically declare all of the components of
the application in a single file. So if you need to deploy
your application. Instead of deploying each of the
items of the application by itself, you deploy the arm template. And other components
are declared in this file. So when it deployed as a script,
you are deploying other components. Now, on top of that, you can
choose to run Windows Server or Linux as the foundation for
your application, right? So in Azure and Azure Stack
as well as Windows Server. We not only support Windows,
Microsoft technologies, we support Linux and
other third party technologies. And on top of that, you can choose
if you want to run a virtual machine, which is basically
just saying you can run legacy applications, the same way we’ve
been doing this for a long time. You can run containers, or
you can run Azure Service Fabric. But Azure Service Fabric is one
step ahead of containers in terms of really decoupling the services
from the operating system, also known as server applications. How many of you heard
about applications? So applications means that I develop
the service and I simply run that service in a platform that I
don’t even see the Operating System. Think about platform as a service,
right. So In Windows Server 2016 we are
taking from the on prem perspective. We are taking the first step
into this journey of moving my applications to micro services or
our North Star which is make sure that the application
is self containing. We have all the benefits of
using micro services right. So by just installing Windows Server 2016 what
are the benefits that I have? Well, first of all you have
a more secure environment. For those of you that were in my
session yesterday we talked about the features that we have
in Windows Server 2016. For security, like shielded
virtual machines, Device Guard, Credential Guard, just enough,
just in time administration. Simply because they deployed Windows
Server 2016 without any changes to the code, I can have a more
secure environment, right, for my application. And other perspective is for
some applications without changes to the code, I can
containerized the application and start taking advantage of
containers even without code, changes to the code of
the application, right? Now the best thing to do would
be if we were be able to either change the code of the application
or for new applications. For those applications we can choose
to create the application already based in this micro
services approach. But this just to say look. If you can’t change the code of
the application there’s still some benefits for you because we
are adopting Windows Server 2016. And there are some things that are
not related to the application that, because I adopt Windows Server 2016, I can start taking
advantage as well. Fronting for a structure perspective, there’s
a lot of investments as well. I had a session this morning
on software data center that will help you match the agility from the development perspective
inside the infrastructure. So the application regardless
if it’s a micro service or not. The network needs to be there. The storage needs to be there. The compute power needs to be there,
right? So there are other
advantages as well. Okay, so let’s talk about containerize
some existing applications. The thing about containers that
they were trying to solve is, and that’s the reason why you
see these images here. How many of you guys
are familiar on where the term container was created for
our technical space? You guys probably know
a shipping container right, you guys know how they used to do
before the shipping container? They had no standards,
the problem on moving stuff around the globe was that the ships
were different from each other, the stuff that you are carrying is
different, the sizes, the weight. Everything is different, right. So how can I create a standard to
move this stuff around the globe? Well, they came up with the idea
of shipping containers. Right what we’re trying to do
here is exactly the same thing. With a few things that
are specifically for the technology side. Like for example I was thinking
about the story of developing an application and when you deployed
the application wasn’t run, right? We all saw this happening, what container solve in that
case is all the requirements for the application are already
inside the container. So if I need to deploy this
container in a different host, I don’t care about the configuration
of the host, as long as the host supports container,
I can run the container, right? Okay, another thing that
containers enable is this DevOps approach or
agility that DevOps provides. One of the things that DevOps
tries to enable the companies that adopt this technology is
if you have new releases of your application,
DevOps make it easier for you to deploy this new
release in production, right? And DevOps is actually a cycle where most of the application is up and
running. You can always feed the development
team on the improvements that can be made to the application. So you have the cycle of development
and operations working together in order to make the application
better right. What we have here is for a container, the developers will
develop the application basically exactly the same way that they would
for any other application, right? The only difference is that
instead of packaging MSI or EXC or whatever on other
extension it is for Linux. They will develop a container,
I’m sorry, they will package the application
inside of container, right? And that container file is
the file that I need in order to move to production. So, one of the things that we
can do with containers and that’s the part where Docker
came up with the idea, is the idea of having
a repository of containers. Let’s take a look at this. I develop an application and
I create repository of my container images, that it can
apply containers from. So, if I need to update
the application, the development team will
work on that application and simply bring this application
to the repository. And operations can come and bring
this application to production. This is pretty cool right? Now once the application is in
production you can use many management tools. In order to check the performance,
to see if I have in the application and so on just like you
would do in any application. The good thing is, if I need to
change this container specifically the development team can
rebuild the container, upload it to the repository, and operations
can go and redeploy the container. In a regular application,
because everything’s tied to the operating system and
the infrastructure, in order to do this the development team
can always update the application. The problem is when we move from
here to operate to the production. Because everything is tied
to the infrastructure in order to replace that
application that’s a hard process. With containers I simply bring
the container down spin up a new container and
your application is up and running. It’s that simple. Now okay so how can we
create something like that? Let’s think about
a regular server running. We usually have the hardware,
the operating system and the application. So, if you’ll go back ten years,
that’s probably the way you were deploying applications
in a data center, right? Okay, we realize that
this is not a good way to use the hardware resources. By the way, virtualization was
created because we realized that we were not using the total
potential of the hardware that we used to have in
the data center right? So, what we did was we created
virtual machines that extend the hardware through
multiple operating system. So every single virtual machine will
now have an operating system and the application. Just like the physical machine but
for this virtual machine, that piece of hardware belongs
to the virtual machine right? Virtual machine will see
a motherboard, disk, processor, memory, just like
a physical machine right? You guys see any problem
With this approach, which has been working for decades. One decade now, right,
more than a decade. What is the problem
with this approach? The developers in the audience, you have an application of 20 megs,
right. It’s a small application. Then you hand over your package of
your application that you developed so carefully to operations, right. It’s your baby, and then you
give it to the operations team. You know what the operations
team gives you back? A virtual machine. What is the size of
a virtual machine? You hand over your baby and you get an elephant back, right. That’s what happens with
regular applications. The reason is because every
single virtual machine, in addition to the package of the
application, they have an operating system running on each
of the virtual machines. And there’s another problem now for
operations. For every single virtual machine
that I have here, I have to install the operating system, I
have to patch the operating system, I have to back up the operating
system, I have to maintain the life cycle of that operating system
plus the application, right. And there’s another problem. This is a single hardware. If this hardware goes down,
all the applications go down, right. Now, we solve this problem. We simply, again,
remember what I was saying? That because the application is
not aware on the infrastructure, what did we do? Clusters. We bring another server that
is connected to this server so I can live migrate
the virtual machine or I can failover the virtual
machine to other host in case I have a problem with
the hardware of this host, right. But, anyway,
we solved the problem, right. This is what containers look like. I have the hardware,
I have the operating system. And on top of the operating
system of this hardware, I have multiple containers. So instead of virtualizing
the hardware, I’m virtualizing
the operating system now. That’s awesome, right. This is exactly what Linux
containers look like, and this is exactly the technology that we
brought you in Windows Server 2016. Now, the good thing about this is,
all these containers, they are isolated from each other,
right, just like virtual machines. The virtual machines are isolated. But in this case,
I have a hypervisor in the hardware layer isolating the
virtual machines from each other. Here, I have a kernel that is
common to all the containers, but they don’t see each other. So think about this. When I start a container,
I will see the operating system inside of the container, just like
I would see in a virtual machine. But, actually, all the changes
to the operating system are only inside of this container
because the kernel is virtualized. So the changes to the operating
system are contained inside of the container. And all the other containers
see the operating system as part of their own. They only see their
operating system right. All the requirements for the application are already
inside of the container. So if I need to move this container
to another host that looks exactly like this,
I just move the container. All the requirements
are already there. The only requirement I have for the host is that the host
support containers, right. So Jeff was saying this in his
general session yesterday. I didn’t listen to
the session today, so I don’t know if he
talked about this. One of the things that we do for
Windows Server, every time we are launching a new
version of the operating system, is we go to the common
criteria analysis. And we check the security
requirements to see if we are going to pass all the requirements that
they ask for the operating system. And the engineering team came
to a group of people and said we are bringing
containers to Windows Server, what do you guys think about it? Yeah, we know about them. We hate it, it’s terrible. Wait a minute, everyone is
talking about containers. The idea of the ice cream cone,
the microservice, looks like something everyone
would like to do, right. Why do you guys hate this? There’s one problem here. You see this kernel that is shared? You can’t use shared and
kernel in the same phrase. You just can’t, right,
that’s a security issue. So then we went to open source
guys and we asked them, what are you guys doing
doing to solve this problem? Yeah, we know about it,
we use virtual machines. Do you guys see the conflict? This is exactly what we
were trying to avoid. And they are using
it to isolate the. Okay, we can’t be in
the middle of this fight, so at Microsoft we’ll do two things. We’ll create a Window Server
container that is exactly like the Linux containers
that exist today, and we will create a Hyper-V container,
right. Now, that wouldn’t work if
I have to develop through a Windows Server container or
a Hyper-V container. So one of the things that we did was
you develop for Windows containers. The moment operations is going
to deploy the container, they choose if they wanna use
a Windows Server container. Because, I don’t know,
that’s still in development phase or it’s not a highly regulated
application or whatever it is. You can use Windows Server
containers. If you’re going to deploy
a container that runs an application that is highly regulated,
you have some requirements, compliance requirements, you can
deploy as a Hyper-V container. Now, the difference between
Windows Server containers and Hyper-V containers is
that the kernel for Windows Server containers is shared
between the modes or containers. In Hyper V containers,
the kernel is contained, as well,
inside of the container, right. So no shared kernel, a hypervisor
isolation between the containers. We’re good to go. Now you can’t apply containers
in a production environment and meet your compliance regulations,
as well, right. Important point. Remember, from
the development perspective, there is no change to the code. I develop for
Windows containers, right. Very well, what are the options
that I have to deploy containers? I can have a physical machine and I can deploy a container on
top of this physical machine. That’s probably,
in terms of hardware virtualization, that’s probably the best way. I can deploy containers
inside the virtual machines. Now, again, that’s exactly what
we were trying to avoid, right. But in a public cloud environment,
the virtual machine is actually my host because I don’t
get to see the physical host, right. So the virtual machine in a public
cloud is equivalent to the physical machine on-prem from
the container perspective, right. You can mix and match physical and virtual depending on
your environment. But the key benefit is containers
will provide all the benefits that we talked about so far in this
technology, and you can still meet your requirements,
compliance requirements and so on. So this is just to take a look
at the architecture again. This is a Windows Server container. What happens is I have a server. I have an operating system
on top of this server, which is the host operating system. And then you have, as a feature
of the operating system, you have the containers. And each of the containers
can share some libraries, which means that they come
from the same container image. And they will have their
application, but they are isolated. Or they can simply be
another container coming from another container image, right. Hyper-V containers, I have
the server and the hypervisor. And when I deploy
the Hyper-V container, at the moment that I spin
up the container, I can choose between a Windows Server
container or a Hyper-V container. And, in this case,
we will deploy within the guest OS kernel inside of
this Hyper-V container. Now, the next logical question
is what is the overhead for the Hyper-V container? There’s some overhead,
but it’s minimal, right. We have some public information
about this on the Windows Server blog if you’re interested in that. There is some overhead,
but it’s minimal. The other point is when you see
Windows guest OS, you probably think, so, okay, do I need to manage
this Hypher-V container the way I manage Virtual machines, no, you
don’t get to see this kernel here. It’s self-contained in
the container, if there is any problem with the container, you will
be notified of it, but there’s no management to be made for
this guest west kernel here, okay? So, with that,
there’s a lot of theory. Let’s take a look on this working. So, what I have here is we
created a regular website. We will see that this is just
a sample dot.net application for Visual Studio. We deploy this website in
Windows Server 2012 R2 in a VM, and what we are trying to do is we
want to take this application that was not created for Containers, and we want to containerize
this application, right? So, how do we do that? So, let’s take a look. There is no audio on this, so
I’ll explain what’s going on here. So, in order to show you the
application, we’re going to choose access the lab site, so
Window Server 2012/mysite. So, we probably are familiar
with this interface, right? So, this is the regular sample for the .NET application
in Visual Studio. And the thing about
this application is this application is
consuming 3.1 gigabyte, along with the operating system, in
order for this simple application to run, you probably have applications
that consume way more than that. But part of this conception is from
the operating system as well, right? Okay, so. You can see that it’s consuming
that, so if I go to IIS, this is my regular website that
you guys are familiar with. The structure of IIS, so what I
wanna do here is I want to first export this application, because I
need to containerize the application so that the container
is deployed later. So, I go through the regular process
of exporting an application from IIS and export as myside.zip. Okay, so now,
what I can do is I can go to, that’s the file containing
my application. Now, I go to Windows Server 2016,
in this case, this is a virtual machine, but
could be a physical server. And let’s take a look at
the performance here. So, in this case, this virtual machine has three
gigabytes of memory available, and it’s consuming,
at this point, 1.2 gigabytes. Which leaves me with 1.7 gigabytes. Now, for
those of you that are IT pros, when we open something like this,
we usually see the IT pros are, my God, that’s development again. No, that’s just a script to
containerize the application. That’s not the application itself. What you see here is
Visual Studio Code, Visual Studio Code is kind of
[LAUGH] they are recording, so I can’t say what
I was going to say.>>[LAUGH]
>>No, I can, hold on, we’ll just do this anyway. It’s kind of evolved notepad, right? That lets you work on
the code of the application, because it can’t compile the
application on Visual Studio Code, you would in Visual Studio,
the going to do that. So, one of the things that
we have for business for the code is an add on to Docker. And you realize that at
this point in the session, I barely mentioned Docker, right? And every time you probably
hear about Containers, you hear about Docker. One thing that many people
don’t understand is Docker is not a container company,
right? They are a Container
management company, right, the Container technology is
a feature of the operating system. What Docker does is they
talk to Linux Containers or Windows Containers, and
they manage those containers, and they do this very well. That’s the reason we
are partnering with Docker, in order to create
Windows Server Containers. So, anyway. What you see here is a file, a
Docker file that basically explains how to bring this application
this that I exported from IIS and Window Server 2012 to
Window Server 2016. So, look at what this file is doing. When you see from deploy, this web
deploy is an existing container. So, someone created a container, they deployed Windows Server
on top of that container, which is the container image,
the shared kernel remember? So, that’s
a Windows Server Container. And guess what? Since that Window Server,
that container can run IIS. So, instead of creating a container
that only has Windows Server, then we package another container
image containing Window Server plus IIS already installed. And that’s the web deploy
image that you see there. The last is I wanna expose from
the container the port 80 and 8172, that are the ports that I need for my application to run, I will do
that on a Windows Server anyways. And then,
I will take the mysite.zip, which is the file that
we’re working on, and I’ll copy to the container inside
of the folder build/mysite.zip. This is a copy paste, right? And then look what I’m doing here. I’m running a PowerShell command
that I will run inside of Window Server anyway,
in order to deploy my application. That simple, right? So, all the learnings that you
guys acquired over the years, or working with Window Server,
this is too valid for containers. The only difference is,
instead of running the command inside of a Window Server, I put
the command inside of a Docker file, because the Docker file will say to
the container what a container has to do in order to run, right? Okay, let’s move on. We will explain here from webdeploy,
and that’s exactly what I was saying. There you go. So, here, what he’s doing
is he’s running the command Docker build to run that file that I
was working on, and call it mysite. So, this my site will be
the name of my container image. What I’m doing is I’m
taking a container image. I’m bringing the application that I
exported from Windows Server 2012, and I’m repackaging as
a new container image. So now this container image,
this new version of the container, has Windows Server IIS
in my application. Now, what I’m gonna do is I
will run the command, dockerM, that basically creates and
starts the container. I will use the port
80 from the host. I will map to the port 80 of the
container using the image mysite. So, take a look of
what happens here. If I target the port 80 of this
Window Server 2016 machine/mysite, because that’s the IIS website that
I created, will take a time for the first time that .NET
runs just like any web or Window Server, but
once this runs, there you go. I moved my website from
Windows Server 2012 to Window Server 2016 without
changes to the code, containerizing the application,
right? Now, one of the important
things about this is let me just go back on the bit,
so. Take a look at how much I’m using
now of the memory of this host. Instead of consuming all the memory
like I was doing in Windows Server 2012, now from the 1.2 I’m
now using 1.6 GB, right? Let’s take a look what happens
if I spin up other containers, because that’s just one instance
of my application, right? So. Let’s move it away, so
we can all see what’s going on. Take a look at how much memory we
are consuming, 1.7 at this point. If I create a new container, 1.8, another one 1.9, now,
let me pause this again. The question that most people ask
at this point is wait a minute, the first container used
400 megs to run, right? The next one use just 100 megs,
why is that? You guys remember that we
are sharing the same kernel, so that’s better utilization, right? So, the next containers won’t use
exactly the same amount of resource, it should run. And to prove that the other
one’s are running, we change the ports,
so if we run 81. Actually 82. The application will open now. There you go. Those are the [INAUDIBLE]. Now I want to run this one as a
Hyper-V container, what should I do? I simply use the isolation
option to Hyper-V. That’s it. That’s an operational,
Operational option. And one other difference is
because it’s completely isolated. If I use Task Manager to see the
process of the containers, you can see that I have the processes
from the first three containers. But I can’t see the process from
the other container, right, from the Hyper-V container. The reason is because the isolation,
prevents the operating system on the host just so the
processes inside of the container. So now we have one,
two, three, four, five, six containers, right? And I believe we are going to
move again to the performance. We are using very
little extra resources. Yeah, there we go. We are using 2.9 for 6 instances
of the same application that I was consuming more than 3 gigabytes
to run and the other option. And one of the details here is
that I didn’t change the code of the application. Questions? [INAUDIBLE]
>>Yes, the question is how do
we get that kernel? So it’s the moment where
you start the container. So you can take an existing
container that’s already running and move to Hyper-V. You will need to turn
off that container and start it again as
a Hyper-V container. Because the moment we start
the container, we will launch this container with user isolation or
Hypervisor Isolation.>>So
then in other words you can put back [INAUDIBLE] between [INAUDIBLE]
>>Yeah, the question is, I can go back and
forth between Windows Server and Hyper-V containers
>>Yes, in terms of scenarios, we are seeing the customers that
are adopting this technology at this point, for development, they
are using Windows Server containers. And when they go to production, they
go as Hyper-V containers, unless, they are running on
virtual machines. And then they run as
Windows Server containers anyway.>>[INAUDIBLE]
>>Correct.>>What [INAUDIBLE].>>What version of what, sorry?>>So [INAUDIBLE].>>Yeah, that’s a good question.>>[INAUDIBLE]
>>Yep. So, let me just repeat the question. What version of Windows Server
2016 we are running here in order to be able to
do this lift and shift? Before we talk about lift and shift, there’s one concept that
you need to understand. When I run, let me go back
to that previous slide because then we’ll be
able to understand. If I run as a Windows Server
container, what will happen is the container application and
the container itself will see what is the operating system that
is running below the container. That is host in the container. So If I am running Windows Server
2016 Full GUI or Server Core, the container needs
to be Server Core, because that’s the container
image available. If I am running a Windows Server
container as nano, the Window Server container
need to be a nano-image, right? Because they are sharing
the kernell, right. So there is no way for us to run a Server Core
container on top of a Nano. Now, that’s not true for
Hyper-V containers. Hyper-V containers can
run other versions of the image on top of
the container the depending on what you have as
the container host. So if I have a server core for Hyper-V containers that can
run Nano or server core. If I have Nano I can run
server core on Nano, right? Now for the lift of shift
the important part is that application needs to work
on Windows Server 2016, right? So happens to be that that
application that I moved. Works well in Windows Server 2016, as well as Windows Server 2012 and
2012 R2. Now, if you had your application
working on Windows Server 2016, that’s probably a case where
the application can be ported and simply lift and shift to
a container in Windows Server 2016. Makes sense, right. Okay, so
in terms of customers that are using containers this is one of the cases. Tyco International, they
are basically used in containers because they have multiple services
running in multiple locations, and they need to be able to
deploy services in buildings and multiple locations, so they can
spin up their application easily. They keep making changes to the
application and every time that they make a change to the application,
then it should deploy globally to the multiple locations that
they are monitoring and so on. So, this is one of the cases where
they are using containers and are being very successful. Now when we talk about
containers and microservices, we are obviously talking about what
we call cloud-native applications. And cloud-native applications
basically are applications that try to decouple from the infrastructure
in order to have a better scale, agility and so on and all those things that we
We were talking about. Now, from the Windows Server
perspective, there is an important point about,
born-in-the-cloud applications. In Windows Server historically, what
we’ve been trying to do is we wanna enable the operating system to run
whatever the application may need or whatever the need for you is. So for example,
I need DNS a server along with my IIS application along with
whatever it is that you are running. So, the reason why Window Server
is a big image as it is, is because we want to
provide you with all the features and capabilities that
you may need from the server. Just checking how much time I have. And historically we’ve
been adding stuff to the Window Server image, right? Now a few things changed when we
started to run our own cloud, right? Let’s me see what is the next
slide here just so I’m, yep. So when we started to
run our own cloud Azure, there are a few things
that we realized. For example, it takes a lot of
time to deploy Windows Server. You guys probably know that right? We didn’t know,. We don’t deploy
Windows Server you do, right. Also, Windows Server
images are very large. But you know what? That’s something that
we heard from you, and we changed in the operating
system because you ask it for. You remember the days where if you
wanted to enable IAS you had to go and take the media for
Windows Server 2003? Put in a server and
then install IAS. And then you guys asked
us can you please make the content to the server so
we don’t have to bring the CD or the media every time you
want to enable something? And we did and
sometimes you shouldn’t. [LAUGH] Right. What we’re talking about
here is this shift from applications that are monolithic. And they need everything that
the system that could provide through applications that will run
a service that is self contained. All the requirements that
the application need is there. So the work of the operating system,
to host those service, is make sure the service runs,
right? We don’t need a large
operating system to do that. That’s where Nano Server came in. Nano Server is not a new product. If you bought Windows Server 2016, you have the option to
deploy Nano Server. Nano Server is just an installation
option that is now available for Windows Server 2016, and it’s kind of a different approach that we took
when we created the Server Core. So, we realized that
we needed actually a smaller version of the Operating
System back in 2008, right. So in 2008, we launched WIndows Server 2008
with two deployment options. Was introduced in 2008. So when you were
installing Windows Server, you had the full GUI and
Server Core. And what is Server Core? Server Core is simply,
we looked at the full GUI, which have one of the things that
are not really necessary, if you are, simply, running an application
that you, first, you don’t log into the server, you don’t go in front
of the server to log to the server. In order to run the application, you don’t need things like Internet
Explorer, even Windows Explorer, you don’t need a lot of
things that in order for your application to run,
you won’t need those things. So, we took the full GUI server and we started to remove some things,
right. What we end up with is Server Core. If you install Server Core and
you go in front of the server, you launch the server,
you’ll see a command prompt. The first time I saw that,
okay, what do I do? Well, that’s it. The other option you have
is to type PowerShell, and then have a PowerShell
[LAUGH] interface. That’s it, you have nothing
inside of the server. Now, you can still open Notepad,
you can still open the Task Manager. There are some things
that you can do. But the most important concept
that Server Core brought was the idea of
the remote management. Is the Server Core an IIS server,
an Active Directory, a DNS server? Install the DNS, Active Directory, IIS interface in your
Windows client machine. Remote manage the server
with the same interface that you are used to, right? With Nano Server,
we took another approach. We thought, okay, so instead
of taking the full server and starting to remove some
things that we don’t need. Let’s start with nothing and
let’s add what we need. So, that’s the main difference
between Nano Server and the other installation options for
Windows Server. Nano Server is a kernel. And on top of Nano Server, you add the packages that you
need to run your application. Or whatever workload you’re
going to run in that server. So if you take the media for Windows
Server 2016, you put on the server, if someone does that to you,
not if it doesn’t use an Agile file. Anyway, you take the media,
you put it on the server, you have two options. Full GUI, and Server Core. You don’t see Nano Server. Why is that? Because in order to install Nano
Server, you have to take the medium. There’s a folder in there
called Nano Server. And then you have to
create your own image. Which takes us to
another concept that we realized is completely
wrong that we we do. How many of you have the golden
image in your environment? Some of you, that’s bad,
that’s not good, you know why? Because the gold image is
basically what we were doing with the full GUI. Let’s bake into this image
everything that I may need in all the possible workloads that
I run inside of my environment. And we blast that image
as the gold image, right? The problem is you end up with
a very large operating system that runs a lot of things
that it don’t need, that you have to maintain,
that you have to secure and so on. Now, installed in every single
machine in your data center. Nano Server takes
the funny approach. I have a website to run,
I take the Nano Server image, I bake the web server package into that image and then I
create the image for my web server. That’s it. In terms of size, ports open,
services running, foot print, everything is a smaller or
better with Nano Server. But you have to create
an image that was purposed for that workload, right. So, let’s take a look
at a few things. For containers, for example. I have two options to
run the containers. I can run containers on top of
Nano Server or Server Core. Why would I use Server Core, after everything that I talked
about with Nano Server? Because there is one important
thing about Nano Server. The idea of removing everything
is really removing everything, including some APIs that
some applications may call. Right? So, not every single application
will work with Nano Server, you have to create your application for
Nano Server in order for you to run. Now, with that said, there is
a package for Nano Server that you can add as well to the image
that does some translations for some applications that are calling
some APIs that are not there. So then we translate those
calls to the correct API. That’s not the best way to do, but
you have an application that you need to run on Nano Server that
could work, you have to test. So, if you have an application
that was not created for Nano Server,
you can use Server Core. It’s a smaller version of
the operating system and support containers as well. Okay, let take a look
at Nano Server.>>I would like to talk to
you today about Nano Server. When you run set up, from Window
Server 2016 installation media, you’re presented with two
familiar installation options Server with Desktop Experience and
Server Core. We’ve included both of these
installation options in separate releases of Windows Server ,and
they’re what can be considered as all inclusive,
meaning you get all the roles and features you might possibly need or
want baked into the OS Image. And you can install those roles and features at any time
whenever you need them. Both of these installation options
are also highly backwards compatible and we go to great lengths to
ensure that existing software and applications continue to
work with each release. However, if you’re building
cloud infrastructure or hosting born in
the cloud applications, these traits aren’t going to provide
you the most optimized image. You really want something
that is more purpose designed specifically for the Cloud. So, allow me to introduce
you to Nano Server. This is the server that many
of you have been asking for. When you think about the cloud,
size is critically important, and Nano Server is tiny. Rather than 13.2 GB,
it has a disk footprint of 500MB.>>Let me just pause here because,
at the time that we recorded this, it was 500MB. At this point, it’s less than 400MB, the base image of Nano Server,
right? Just like Jeff Woolsey said in
the general session yesterday, for the millennials in the room. If you don’t know
what a megabyte is, a megabyte is less than a gigabyte.>>[LAUGH]
>>Right?>>Rather than a reboot
taking minutes, it reboots in under nine seconds. Rather than 46 services
running by default, it has 28. Rather than 27 ports opened
by default, it has 12. Nano Server provides just what
you need, and nothing more. We call this just enough OS. The roles and features
are separated from the image, so you build images that are tailored
for your specific work loads. This translates to
real cost savings. Lower storage cost due to
a reduced disk footprint, less network traffic to copy and
deploy operating system images. Smaller attack surface due to fewer
services running, processes running, and ports open. Significantly shorter setup time and just overall less to configure and
manage. Nano Server is optimized for
the Cloud. It’s the perfect OS for
Cloud scenarios. For instance, as a Hyper V host. Nano Server uses fewer resources, allowing higher VM density
on the same hardware as a scale up file server, as
a DNS server, and as a web server. The smaller text surface comes
in handy given how web servers are classic targets for hackers. Nano Server’s smaller footprint,
fast deployment and quick reboots are the essential
ingredients for cloud scalability. Nano Server also makes
the perfect app server for born in the cloud applications and
supports popular cloud frameworks such as NodeJS,
PHP, Python, Ruby, MySQL, Redis, Java, .Net Core, NGINX and
Go, just to name a few. And like other installation
options of Windows Server 2016, Nano Server can be used as the base
OS for Windows Server containers or Hyper-V containers. Another key difference from
Server Core is that Nano Server is headless. However we’ve designed it to
be remotely manageable using familiar Windows Server tools,
like PowerShell and Desired State Configuration. Existing MMC Snap-Ins,
such as Hyper-V Manager, Failover Cluster Manager,
Server Manager, and DNS Manager, or using the new browser based
server management tools. In summary.>>Let me just go back here, are you guys familiar with this
tool that he is showing here? So that’s the server
management tool. This is a Azure based tool. So what this is, is a way for you
to manage the servers that you have in Azure, on-prem, in EWS,
on VM, or whatever it is. And you can manage
Windows Server servers remotely using this graphical
user interface, right? So if you have a foo get server,
you can use this, but that wouldn’t
make a lot of sense. But if you have Nano Server,
that makes a lot of sense, right? Because on Nano Server, you can’t
go in front of the server because there is no console to log to,
right? Not even Command Prompt and PowerShell, you have to run
Prompt and PowerShell remotely. So in order for you to have a tool
to manage Nano Server remotely, we added server management
tools to Azure, where you can see processes,
registry, services, storage. So all the things that will
let you manage the server, you can do remotely in GUI. So I would encourage you
to take a look at this. Now, the other thing that
I would like to show you because I still have three minutes
to finish, so if I have, oops. I believe I have a Nano Server
virtual machine running here. Yes, so this is a Nano Server,
so first of all, let me start the virtual machine. Let me see if I have memory
available to start this virtual machine, yes. There you go, don’t blink. Oops, There you go,
the server is up and running. And by the way, we are running containers
on top of this Nano Server. Three seconds, was that it, right? Now the question that a lot
of people ask is, okay, so what happens if you
log to the screen, because when we first launch
Nano Server during the technical previews of Windows Server 2016,
there was not even this screen. It was not an option to log
into this console, right? But one of the things that we heard
from customers is, maybe I created the image, I changed some
configurations on the networking, and now I lock myself
out of the machine. How do I go back? You have to redeploy, no,
we have to find a way to fix network problems without
re-imaging the server, right? Okay, so what we did was,
we added an option for you to come here, and
actually, let me try to zoom. Come on. So, this is the Nano Server console. This is what happens if you’re going
from the Nano Server machine, right? And the reason why there’s
this console is because you may wanna change the networking
configuration of this machine. So it can come here. There’s an option down here that
shows what you can press to change the configuration from static
IP to DHCP or the opposite. You can come here and also configure the inbound
firewall rules or outbound. Another thing that we added,
show Nano Server, when we launched, is if you install Hyper-V in
this Nano Server in the console, you will be able to see
the status of your guests. Like the virtual machines,
in this case, I don’t have anyone cuz I
was testing containers. And I also have the option to see
the VM switch, which in this case, I don’t have anyone as well,
but I could work in here to solve some minor issues with
this configuration, right? So, that’s what you can do, if you go in front of
a Nano Server machine. Now, the rest works
exactly the same way. You guys know Server Manager, right? When you install Windows Server,
the first thing that pops up is Server Manager, you can remote
connect to another server. You guys know the MMCs, like Active
Directory users and computers. By the way,
that was not a good example. Active Directory users and computers
not a variable Nano Server yet. Let me take another example,
DNS, the DNS MMC, you guys are familiar with that? I can remote connect to a DNS
server into Nano Server. Hyper-V, storage, fill over cluster,
and the other things that I’m using too, like the application
frameworks that he mentioned, right? So I just wanted to show you
the console because it’s kinda new, After the launch. So, the last thing that
I wanted to talk about, I realize that I’m past the time
here, is just the notion that Nano Server will also
bring that is new to client. Server is kind of adopting a similar
model, but not exactly the same. We have this concept of LTSB,
it’s the long-term service branch. What that means is when we launch
Windows Server, we start to plan for the next version of Windows Server,
right? So a few years after this release,
we go down and we release a new version
of Windows Server, two, three years depending on which
version we were talking about. There’s a new version
of Windows Server. For Nano Server,
we are going to have, by the way, this is too valid for Desktop
Experience, for GUI and Server Core. For Nano Server,
we’ll have something different. We’ll have the CBB, the CBB is the
Current Branch for Business, right? So Current Branch for
Business means that at some point, there would be an update for Nano
Server for new features, not for security and fixes and those things. There would be a new feature
update for Nano Server, right? We don’t know what would
be the time frame yet, we are still working on it. But in order to be able
to deploy Nano Server and work on a CBB model,
you need software assurance, right? Because you are getting new features
every time a CBB’s released. And the other point is because we
are releasing these new features, just like we do for LTSB, the five
plus five model for support. For Nano Server,
it will be a little bit different. For Nano Server, so if we look at
a timeline in terms of features and time, we have Windows Server 2012,
2012R2. We launched Windows Server 2016,
which is the first CBB for Windows Server 2016 and
Nano Server CBB1, right? At some point, we will have
other CBBs, and we’ll have, at some point again, another LTSB
version of Windows Server 2016. If you decide,
if you choose to use Nano Server, you can’t be more than
two CBBs behind, right? We lost CBB1, which is the launch of
Windows Server 2016, there is CBB2. You’re good to stay with CBB1. There’s CBB3, you have to
move at least to 2, right? Okay, got it, questions?>>[INAUDIBLE]
>>No, you just don’t have support anymore.>>[INAUDIBLE]
>>I don’t know about security fixes. I think that will be because we
are still launching stuff for the regular version
of Windows Server. I would say security features,
security fixes will be there. It’s just a support. If you have support of Microsoft,
you call Microsoft because you have a problem, we can’t help you. Okay, so just to summarize,
this is our North Star, with Windows Server 2016, we are taking the first step in
order to provide support for you for this broad set of options that you
have to deploy your applications. By simply deploying
Windows Server 2016, you are already taking
a step in terms of security, in terms of agility for applications
and software-defined data center. You can choose to lift and shift
applications to a container world, and you can target
micro-services more easily. Sounds good? Thanks everyone, see you next time.>>[APPLAUSE]

Be the first to comment

Leave a Reply

Your email address will not be published.