Three ways to modernize legacy Windows Server apps | Windows Server Summit 2019

Three ways to modernize legacy Windows Server apps | Windows Server Summit 2019


>>Hi, I’m Taylor Brown. I hope you’re enjoying
the Windows Server Summit today. For those of you who know me, you know we’re going to be
talking about containers. We’re going to talk about
how we can modernize our applications using containers. For those of you who haven’t
had a chance to meet me yet, we haven’t had a chance to talk
about how we can take advantage of this great new innovation
of containers with Windows Server in
our existing applications, you’re in for a treat, we’re going to go through some ways to do that. We’re going to see a couple of demos. It’s going to be great. Let’s go ahead and just dig on
it and get started. Probably you’ve no big surprise
to those of you out there, but ASP.NET and .NET continue to be among the most top used frameworks
for developers even today. This data came from Stackoverflow, stackoverflow we know has
a little bit of a bias towards those new application frameworks
like Node and .NET. But of course, ASP.NET
still top doing .NET still one of the top frameworks being used for new development today. Now, that doesn’t even account for all the existing applications
that we have out there. So how do we take advantage
of those applications and modernize them bring them
into the new paradigm? So we’re going to talk
about a pattern today. We’re going to take
that existing application, we’re going to convert
it into a container. That’s going to allow us to leverage
these modern methodologies, CI/CD, and active deployments, and deploy every day, and all of those things on modern infrastructure
that infrastructure could be Server 2019 on-prem, it could be in the Cloud, it could be an Azure of course, and we’re going to give our developers
the opportunity to leverage these modern microservice patterns to take advantage of
those new paradigms. So let’s dig right in. Got
a typical enterprise application. To ask for a show of hands but
we’re in a virtual events, so it’s hard for me to
see all your hands up. But how many people
have an application or a lot applications
that look just like this? You’ve got some sort of
WinForm App or WPF front end, some maybe it’s a Web App. Then there’s some middle tier set of web services or WCF
or who knows what? Then it’s talking to some back end, typically like a SQL Server or maybe a file server as the back end. Super common. How do we
modernize this application? Well, we’re going to containerize it, we’re going to package it up. So on the front end, we can use the packaging technologies
that we’ve got in Windows 10, MSIX to make that easily redeploy. Well, we’re not going to talk
too much about that today, there’s some great resources
out there for you, super easy to do. By the way, it’s using
containers in the back end, so it’s all the same
stuff under the covers. For that middle tier, we’re
going to talk about how we can use Windows Server
containers today. So we can package that application
up because easy to redeploy it, easy to move it around, easy to rebuild it, patch it all of the great
new management capabilities. We’ll talk a little bit
about how we can do the same thing with our back end, either leveraging containers
and packaged up SQL. We’ve got a great resource
at the end for a private preview of SQL Server, Or we can take advantage
of a past service if we’re using a Cloud
like, of course, Azure. So what does it mean to containerize? Well, typically, this is
meant to package up freight. When we talk about
containerized in applications, it’s really the same thing. We’re putting that application
into a uniform box. It going to have the same verbs
the way to describe it, memory and resources and storage. Now, we can treat all of our applications the same
from a management standpoint. I can start up one
application by just saying docker run that application. I can start up another one
with the exact same thing, and as long as I give it the
information it needs like where your storage is going to
be located in the resources, it will run exactly the same way. So it’s hugely advantageous for us as both developers and admins
working on applications. So here’s our traditional
architecture, we’ve got an application
can be written in .NET, could be Win32 or Java, we could have a Windows Servers. So again, that service can
be written in anything, it’s just a long running
set of processes. Then, of course, we’ve got
the underlying Kernel, the Kernel that provides
the driver support and turns the file
called “Open this file”, send the sound the network into bits and stuff that
goes out on the wire. When we containerized application, all we’re really
doing is we’re taking those top two buckets
the applications or the services and we’re packaged it into that container that uniform box. The Kernel stays the same, and now we can run
multiple containers on the same Kernel side-by-side. The applications are
unaware of each other because they’re each in
their own shipping container, there and their own box, their own steel box side-by-side. From the Kernel standpoint, we know how to talk
about him and from an Admin standpoint we know
how to just describe that. I want to run this application
and that application. So this is all a little bit abstract. Let’s just go ahead and see this in action to give us a little bit of a concrete example of how
this works in the real world. So here we are I’ve
got a Virtual Machine, I just happen to deploy this in Azure leveraging Windows Server
with containers image. So that’s an image that we
build in the gallery it’s just got Docker installed in
the container images pulled in. If I want to start a container
all I do is say Docker run. So is Docker’s the tool we use to start containers and a past and
a couple flags this RAM to says, throw the container way
when I’m done with it. IT says I want to interact with it. I’m going to do not because
we’re doing a demo here, and then this next part is
the image that I want to use. So I’m getting this image from
our Microsoft container registry. I’m using the Windows Image, and I’m using Server Core from our long-term service
and channel 2019, and the process I want
to run it is command. So here we go, firing that up, and we’ve started a container. So we’re now inside this container, it’s got its own file system. It’s really a contained environment, and if we look at
Task Manager over here, we see that there’s a new session
that got started up, and a new job object they
got associated with it. So if I do something like
ping -t www.Microsoft.com, we see that Ping is now running, it’s running in Section 3
with this Java object code. If I stop Ping, it goes away. So the host can see all of
the processes that are running, and if I exit this container, then all of the processes and things that were associated
with it just go away. If I start the container up again, we see a new one that starts up. From a performance standpoint. What’s this? This is great. Our memory usage, when we’re not using the container
is going to be about 2.2 Gig, so I just exited this guy. So as soon as that guy exits, we’ll see that I dropped
down to about 2.2 Gig. If I start a new Container 2.3. So about 100 Meg, we started a new container. It’s a lot less overhead than we normally see with
Virtual Machines. So we get some better
density out of this, in addition to those deployment
advantages that we talked about. So this is all great and wonderful. But how do I actually manage
this stuff in production? You just showed me remoting into
a server and running some script, like I’m not going to do that for
600, 700, 1,000 applications. So how do we manage
them in production? Well, we do that through what
we call an Orchestrator. So Orchestrators take advantage
and take care of things like scheduling our containers for
as, affinity and anti-affinity. So we don’t want to have all of our web servers running
on the same node, so that if that node goes
down all the websites down. So it takes the advantage and
takes care of those things for us. It can do are monitor and
it can do are fail-over, or scaling takes care
of network management. So what ports need to
be associated with what and how do I hook
those up to load balancers? It deals with service discovery. How does the Web server talk to
the SQL Server and upgrades? It can do all the coordination
of an upgrade rolling through the various versions. In terms of options there, we’ve got a couple, we
can use Service Fabric. Service Fabric is our
Microsoft Orchestrator for microservices and applications, use to run a lot of
our internal services, and customers have been taken
advantage for quite a while as well. We’ve taught Service Fabric
how to do Containers. Kubernetes. Far away
the predominant container. Orchestrator, we’ve got
full Windows Server support in Kubernetes as of 114, super-excited about that
a lot of work that went into both from Microsoft and across the ecosystem
really excited to have full Kubernetes support
for Windows Server containers. Now, we’ll see a demo of that in
a minute as well as App Service. App Service, for many of you who
have never used Azure before, you might not be familiar with this. It’s so easy to just set up a web app and get it
running in the Cloud, couple clicks and you’re done
it’s just a great experience. Then, of course, Docker
enterprise edition, who we’ve been partnering with
for a number of years bringing great container innovation both
to Windows and Linux, of course. So we lead off with,
we’re going to talk about three ways to modernize our
applications. Well, here they are. One, we’re going to talk
about how we can modernizing using our private Cloud resources. We’re going to talk about
how we can use Azure and Kubernetes in Azure, and we’re going to show App Service. So without further ado,
let’s just dig right into to these and let’s
start out with Kubernetes. I’m just going to connect to
my Kubernetes control plane. I’m happening to be using Azure. This can be run on-prem. Does not have to run in Azure, you could run it in
any Cloud you want. I’m just using Azure because it’s
super easy way to get going. But this is what it looks like. So we’ve got Kubernetes
control plane. We’ve got one deployment,
we’ve got five different pods, we’ve got a replica set, and I’ll explain what some
of these mean in a minute, don’t worry about the terms too much. We can see a deployment.
I’ve got a deployment that I called IIS-2019. It’s probably a web server.
These are those five pods. These are five different containers. So all of these containers are
running under this deployment. They’re scaled out. All right. So I’ve got five web servers running, replica sets, and then
we’ve got our service. That service is just called
IIS and if we open it up, it’s just a web server. Now, notice there’s only one address for this because it’s all being automatically load-balanced for me. So one of the cool things
I can do in Kubernetes, if I want to scale this up, I can go in here and
I can say scale 10. I’m expecting a lot of traffic there, and it’ll go and
scale this up for me. Now, if I tie this
into some monitoring, I can do what we call
automatic scaling. It’ll automatically scale that up whenever I need to and of course, if I wanted to, I could scale
this back down as well. All the load balancing
is taken care of for me. I don’t have to go
reconfigure load balancers, it all just happens. Super easy and amazing kind
of experience. All of this is available on-prem
and of course, in Azure as well. So I’ve got a preview of our
Azure Kubernetes Service. Really, really excited about this. We now have the ability,
in this preview, there’ll be a link here
at the bottom and at the end for how you
can join the preview. We now have the ability to
set up Windows node pools. So we’ve got this new node pools
in preview here. We’ve got Linux nodes and
we got our Windows nodes, and on those Windows nodes, I’ve got my containers. So I can do really cool things, I could jump into
the “Insights” here, I can get all of the utilization
of the whole cluster, all of the nodes within it, I can go to this nodes tab. This is great. We’ve
got our Linux nodes. So we can see our
Linux ping in there. We’ve got our Windows Server nodes. I can pull that out and I can see all of the containers that
are running on these nodes. So here they are. There’s the containers on it. I can click in, I can get
information about that container. I can go in, look at what kind
of configuration it has, what labels, what versions
it’s running, all that information, super
easy right at my fingertips. Because it’s Azure
Kubernetes Service, all of our Visual Studio
Code integration works too. So I can go and I can see
all that same information. If I had logs on this container, I can just right-click, show logs, we’d be jumping
all those logs right here. This one doesn’t happen
every logs, but if did, we’d see them all right
in that one spot. Super easy for developers
or admins who are writing PowerShell scripts or doing any sort
of configuration to see this. So it’s available either place. Really, really, really easy. So that’s our Azure Kubernetes
Service in Private Preview. Go jump in on that, it’s great. Now, I’m going to show you
the easiest way to get Containers up and running in Azure
and that is App Service. So all we have to do here
is we just go, hey, “New”, “Web” and we’re going to
say Web App for Containers. So this is great if
we have a web app, anything that’s using
just IIS or web server. Just give it a name, which subscription I want to
use, what resource group. Of course, we’re in
the Windows Server 7 here, so Windows obviously, but
if I wanted to use Linux, I could do that as well. What plan, and then I get
to configure the container. So here, I can choose
what image to use. For this little quick start, they’ve just got a sample one. Again, we’re just, mcr.Microsoft.com/azure-app-service/
samples/asp.nethelloworld. Pick that sucker up, hit “Apply”, go, and away we go. I’ve gone ahead and configured
one ahead of time here, just hello win server. So I can just go select the URL here. Web server is up and running. I can go ahead and configure
all sorts of stuff here. So I can go into
the Container settings. I can choose what image to
use if I was going to do an upgrade or change what it was. Really easy to pull that in. If I wanted to change between Azure Container Registry
and Docker Hub, super easy. Got all my logs streamed
right at the bottom here. So I can pull, look at all those. Just really, really easy way to get started with
Containers in Azure. So with that, we’ve just seen
a couple of great ways that we can leverage Azure Kubernetes, on-prem or in the Cloud, to start to modernize
our applications. Now, for many of you,
you’re just getting started with Windows Server 2016. I just want to show you, look at all the innovation that
we’ve been able to deliver, specifically around
Containers both in our Semi-Annual Channel and then
all the way up into Server 2019. So with Server 2016, it was our first innovation
on Containers. We launched Windows Containers
for the first time, which was a lot of work and
ton of great things there. Immediately out of that, through
our Semi-Annual Channel, we started delivering new innovation. We optimized the image size, reduced the image sizes
by significant amounts. A whole bunch of
networking improvements. 1803, six months later, again, a ton of
new networking innovation, a bunch of additional Container
enhancements, better, App compat, more optimizations. Server 2019, six months after that, our long term servicing release. Again, more optimizations,
even more Container work, all of the foundations
necessary for Kubernetes. This is the version that
Kubernetes 1.14 speaks of. So I really, really encourage you to start looking at Server 2019
as soon as you possibly can. With that, we’re still at it. 1903, our next Semi-Annual
Channel Release, a bunch more great Container
innovations, more networking support. We’re now able to take advantage
of GPU acceleration with DirectX. So some of our game studio companies and partners are really
excited about this ability to leverage that optimized
GPU acceleration for applications running
in their Container. We added the Container spec to
the PowerShell gallery and we’re working on the next layer of open source innovation around
Containers, containerD. So a ton of great stuff continuing in that Semi-Annual
Channel and we’re not done, we’re already working on the next
Semi-Annual Channel Release. So for those of you out
there still looking at 2016, see if you can start to turn your attention to
2019 or even better, to that Semi-Annual Channel, a lot of great stuff there. I’ll leave you with this. We’ve got a bunch of great customers who were already using Containers. We’d love to add you to this list. So go ahead and give
Containers a try today, it’s super-easy, aka.ms/containers. Great walk-through, gets you started. Heidi and the Doc Team
has done a great job of updating and revising that. Put your feedback on those docs. Please let us know. Go jump on that private preview
of the Azure Kubernetes Service. aka.ms/aks win, by far, the easiest way to get
Kubernetes set up and running. Super easy, Windows and
Linux together in Azure Win. We’ve got SQL Server support for Windows Containers
in Private Preview. Go ahead and jump on that
aka.ms/windowscontainers/sqlpreview, fill up the form, select
Windows Containers, we’ll get you into
that Private Preview as well. With that, this concludes
our event for today. You got to hear about
all the latest and greatest on Windows Server 2019. For more information, check out the resources icon
just below the screen. That’s going to include links to
download all this information. Dig in deeper on Windows
Server and our products. Also, please do not forget
to take the survey. There’s a survey icon below. Let us know what you
thought of the event. We love these events, we
want to continue to have great virtual events and we want to make sure that
they’re great for you. Shortly, we’ll be tallying
up the results of the knowledge test and we’ll be reached out to all of those winners. Congratulations to
you. Thank you-all. Stay tuned for
future Windows Server events and enjoy the rest of your day. [MUSIC]