Migrating web applications to Azure

[MUSIC] >> So, welcome to Microsoft Ignite the Tour, Netherlands here in Amsterdam Today we’re going to be talking about migrating Web applications to Azure Why? Well here are the goals for this session and I hope you learned something because I actually learned a lot putting it together for you We’re going to migrate a data center hosted application to Azure, we’re going to review the available endpoints that we can move our application to, we’re going to modernize lot operational tasks that we used to have to do all the time, and then I’m going to do a demo am going to show you today how you can build a couple of containers and build an application, and it’s not quite as scary as a lot of people think it is So I’m going to ask you a question Where are your applications? Don’t tell me they’re in the app store, or you know you download them from a binary pack, that’s not what I’m asking you When I ask you where your applications are, I mean are they hosted in a data center? Does anyone have a data center still hosting their app workloads? Give me a hand please, cool so some of you are still dealing with this but I bet you, after years and years of running a really successful solution, it looks less like this and maybe closer to this I have been in these types of data centers, I’ve dealt with this and yikes, I mean this hits close to home to some of you I’m sure Where you’ve been in situations where you have the best of intentions when you build out that data center You said, “Hey we have control over everything We can build our networks the way we want.” But then you end up with this giant mess, that’s not cool So it’s 2019, we have the” Cloud” So let’s ask ourselves this question like, what are the date that is still the drawbacks of being hosted in your data center? The number one thing that I like to think about aside from you know all the cash that you have to spend upfront to actually acquire a data center or build it out, rent it from a co-location company, and let’s not forget electricity power blah blah blah All those things that you need to take care of You’re also making an assumption What is that assumption? That I don’t want to buy more or less hardware you’re just buying hardware, you’re assuming scale when you’re starting up and that could be a little difficult So you could also get yourself into situations like expensive compliance requirements, let me use four letters you-all know very well in this part of the world a GDPR So think about building a data-centered still building it compliant to GDPR in 2019, that’s rough Now, let’s talk about benefits of hosting an Azure So number one, and this is the thing I loved to people, no more hardware to manage That’s a real benefit people just want to build and build rapidly You’re always up to date, because the hardware, the firmware, the operating systems that are associated with most of these systems are taken care of for you We have flexible costs, so we don’t have to be so concerned about all that capital expenditure because what we can use is a pay-as-you-go kind of methodology to use our systems I know a lot of you like to add little cute names to your servers, like Helio One and you know Cool Server 27 No that’s fine if you want it, but the thing is that you don’t need to create an emotional attachment to that machine That’s server should serve one purpose and when that purpose is complete, get rid of it So if you want to keep your cute names you can, but you could create them as just metadata tags So let’s move over to the “Cloud” Let’s get out of the business for herding hardware Let’s get into the practice of building systems that are going to grow with you So hi, I haven’t really talked much about myself yet, so I figure I’ll get that done now because I want to just get toward the content and make sure that you learn tons So first of all, my name’s Jay Gordon I am a” Cloud” Advocate, I work of course for Microsoft and I live in New York City, it’s really cool If you’d like to get in touch with me afterwards, you can find me on Twitter and on all the other things like GitHub at @jaydestro, cool So let’s talk about this company Anybody familiar with NorthWind Traders? Anyone? They are one of the most popular fake companies in the history of Microsoft, we like to use them as an example of, this company built this and this company built that and it’s something that some of you in the Microsoft ecosphere may be familiar with Well here’s a big big news Tailwind Traders, the other cool fake company that we like to talk about They have just acquired Northwind So now we have one of the biggest fake companies in the world

They build products, they sell products like aniseed oil and all sorts of weird things Like a lot of companies when you purchase someone else, you’re not just buying all that cool stuff that you’re going to start selling you’re buying technical debt What do we mean by technical debt? But you know that big mix some ugly data center and technology sometimes that happen after years of building and not maybe modernizing because you just want to keep things up and running Well, that’s kind of Weird Technical debt comes from and that’s what Tailwind Traders acquired They acquired this inventory system which is essentially technical debt and this technical debt is made up of several different pieces that we’re going to talk about Now, there are two APIs, which are a.NET Core API, and that’s back-ended by SQL Server and then we have a Node.js API, that’s providing services and that’s back-ended by MongoDB So we’re keeping everything for information about our products in a NoSQL document database That made it a lot easier for these companies to start considering how to store data, how to describe what products are, so they decided let’s keep product descriptions in NoSQL and then what we’re going to do, is keep the inventory system in our.NET Core app, and keep all that pictures and the total number of items in the SQL Server database Now, what does that mean? That means it’s a big system that we kind of have to look at Now, this is what they’re acquiring as technical debt Now, that technical debt is just for this one piece that they’re migrating over So we have four servers, we’ve got our NodeJS, We’ve got a React, which is a front end for our NodeJS and our .NET APIs We’ve got our data layer, and a data layers made up of a MongoDB, ReplicaSet, and SQL with one failover and then we’ve got our backups and monitoring So who here knows Nagios? Cool, when it’s open source and when they got started they figured, let’s just use what we know, let’s use what we can But modern times may not show that Nagios is the best solution for them In this particular case, maybe they want to have management associated with their monitoring Then there’s Bacula they had Anyone here use Bacula? Okay. Cool. Bacula is another open source product that they use because they knew it to build and manage their backups Of course, how you’re connecting everything together? With networking equipment So that’s another team that has to manage So that’s a whole data center, all this gear, and all this important equipment we need to consider So here’s our migration path that we’re going to take today We’re going to move to an elastic solution, and when I say an elastic solution, I say a solution that is going to both grow and shrink with your company So if your company has what I like to call a Thundering Herd group of people that run toward the website, you can scale up easily If you are reaching a point of minimal traffic, you could scale down That’s what you want to consider You want a fixed cost to be more growing with you and decreasing with you as your business needs to shape and change That’s why we go with an elastic solution We’re going to also reduce them responsibility So, we used to have people that would have to manage networks, and that meant physical connections, making changes to firewalls, we had people who would have to run and make changes to our routers, things of that nature, but we’re we’re saying no more to that We’re going to modernize for more rapid deployment What does that mean? We’re going to use more modern tools rather than say FTP of something or ask the person to run the script that does the deploy, as we all have been in situations like that I have. So, when you talk about moving to something like Azure, you look at all these services I mean look at everything we got here from media, CDN, integration [inaudible] I mean, there’s so many options and you may be looking at this a little overwhelmed saying, “Well, how do I get that multi-part application into this?” Well, what I’m going to do, is just give you coupled explanations on all the different options So Virtual Machines are part of Infrastructure as a Service Or think of the idea of lift and shift as some people want to say, just taking a product that might be a certain code base or some binaries, picking it up and just moving it along So, think of it in a way of saying I just want a VM I want a full operating system I don’t meet a manage the gear I don’t need to concern myself with connecting and interconnecting other physical networks

So, we’ll have easier to manage networks A lot of the things that you need, as far as the operating system if you want to manage, you’re capable of doing it So if you want to run Ubuntu , you want to run Windows, you want to run Free BSD, these are all capable to be done on Azure, through using our VMs We have things like security built in So, out of the box you can create policies to limit who can access what you have So let’s go and talk about Platform as a Service So when we get to platform as a service, we take a little responsibility away from you We tell you, “You know what, it makes a lot more sense for you to just worry about the code.” So rather than spend time building systems, you can just work on code and then build pipelines to deploy that code directly to application services that will provide you with everything from HTTPS for your app or your API It’ll provide you with management for Cores, DNS, you can add as many different host names you need So, what you’re getting are great defaults out of the box and the ability to customize, and wait it deploy quickly through continuous integration and continuous deployment methods So you can use a lot of the tools you already know or you can integrate it with tools that we already provide like Azure DevOps So let’s move a little bit further and talk about those databases So much like platforms is a service, we have database as a service So, I’ve worked at database companies in the past and let me tell you, managing databases can be a lot of work You have to concern yourself with all the other things You have to consider yourself when it comes to regular systems, but, databases tend to be constantly moving, updating, changes being made, and you have to concern yourself with always having backups, and that can take a lot of work So, what we do is a database as a Service is say, provide us with the actual database data you have Let Microsoft Azure through the different types of services we have such as managed Cosmos DB or SQL Server for Azure, what we do is provide you with simpler ways of managing your databases by saying provide us with the data, tell us where you want to connect your database to, and that’s all Then there’s the network So, we used to have to have a networks team, and that team would have to go ahead and manage your networks day to day They would get requests and say, I need this IP available or I need this firewall port open, or as a network people will do, you have another layer of management, another bit of operations overhead that you had to consider Well, thankfully you can virtualize these networks You can put them into code and manage them that way, so your networking team can now retrain They can be part of developing services in code as opposed to having to go to the data center, replace the broken switch, and then go back to the office and tell you, “I now have to RMA this broken switch.” We don’t need to do that anymore So, this is a network diagram of the application we are going to move today But I want to tell you that what we’re going to do is go down the line and show you the parts that are eventually going to move So, let’s get started with our connectivity Now we see we’ve replaced all that network gear that we needed with the Azure Virtual Network or VNet Then eventually what we’re going to do is replace the MongoDB replica set with Cosmos DB Cosmos DB is going to provide an API that speaks and works with the MongoDB API so that you can go ahead create apps, but have management behind it You don’t have to manage those three replicas Let’s move a little further along and remember that SQL Server I told you we needed to manage, not anymore Now we can use our hosted service on Azure We go a little further along the line All those application and web servers we have replaced with APIs that are based on App Service, and we’re going to create containers We’re actually going to be able to do it with the little bit of customization if we want to by using Docker files, and all of our backups and monitoring, they’re just replaced with the services that you get out of the box in default with Microsoft Azure services So, it’s time to demo, and that’s what you-all came here to see today Right? You want to see how this works, correct? Cool. So, here are the services that we’re going to migrate to We’re going to use App Service which is going to provide us containers We’re not going to have to worry about using Kubernetes We’re going to get started very simply by showing you how to just use Docker to build, and then deploy your application very quickly After that, we are going to show you how to replace MongoDB with Cosmos

We’re going to go ahead and move that unmanaged database to a managed database service with SQL Azure DNS will take care of all of our names services So we know when we’re done, we can point our host names and move on with our life Then of course, all that networking that we need to, the security, the VPN connections that we may need to do for off-site people, all the things, we can now just manage with an Azure Virtual Network So, let’s slide on in. All right? We’re going to slide on in and we are going to get started with our tutorial, and I’m going to go ahead and bring you to, the demo portion of this So, let’s get working Cool. So here we are at the dashboard, and the dashboard is going to be the place we get started The first thing we’re going to do is create a resource group A resource group is going to act as maybe like a logical container of where we put all of our items So, anything we create we can put in this resource group, and when we’re done, rather than have to do everything manually to tear it down, we can just destroy the resource group So, let’s go ahead and create “Add”. We’re going to use Ignite The Tour because that’s what we’re on here Then we’re going to create a resource group, and just to make it so I can see it really quickly, we’re just going to call it 0001, and we’re going to call TWT Tailwind traders So, now we have this region Now, this isn’t where this is going to live This is actually where the resource group the metadata is going to live So, if the resource group’s metadata is to fail, we know where it’s going to live and we know how we have to do a restoration from it It’s just a way that Microsoft ensures that there is data associated with your resource group stored in at least one of the data centers So, we have all these different regions, and where are we today? We’re in West Europe So, let’s pick West Europe Will click “Review and Create” In just a second or so, we’ve created a resource group Now within this resource group, we need to create those databases So I’ll show you very quickly how we can start creating an Azure Cosmos Database It’s as simple as clicking “Azure Cosmos DB” on the side We’ll click “Add” We’re going to use our resource group that we’ve already created We’re going to use Ignite The Tour as our subscription We’re going to just give it a name We’ll call TWT API and MDB, MongoDB So now we have these different APIs So, this is one of the benefits of Cosmos DB If you want to speak to any of these databases using APIs that you know, you can they are available You can start working with Cassandra You can actually do SQL queries against no SQL data, and that’s pretty cool If you want to use time series we’ve also got Gremlin for graph So you’ve got tonnes and tonnes of information that you can store, but we’re just going to want to store some documents So we’re going to use Azure Cosmos DB for API Then we want to use West Europe as our region So now we’re actually saying where we’re going to host this data, but the cool thing is we’ve got geo-redundancy, which means we can select other places to keep our data to make it closer to our customers So, if we have customers in other regions, we can go ahead and say, let’s place another set of data over there, so then we can say read that region first Cool? All right So, we also have multi-region rights So we can actually tell you not only can you read from that multiple regions, but you could also write data directly So, if you have members of your business that want to do business specifically in Japan, you can set up an endpoint in Japan Sounds good to me Sounds good to you Let’s Review and Create, and after a few minutes we’re going to go ahead and have a database So, we don’t have to sit here and wait a few minutes What we’re going to do is move on to the next database we need We need SQL Just like we did before, we’re going to click “SQL databases” We’re going to click “Add”, and same situation What I will do is pick our resource group, we’re going to give it a name, and we’ll just call twt-sql Cool. Then we’re going to have to select a server So we actually have to pick the kind of hardware we wanted to live on To do that, we can just create new We’ll give it a name, twt-sql Then we’re going to give it, oh somebody’s already using that It’s got to be unique so we’ll call it TWSQL NL Here we are. All right, cool We have to have a user name Now, I am going to show you-all a little secret I keep this username and password in VS code for this particular tutorial So here we are, I’m just going to go and grab that password It was right here

Of course, when you do something live things go wrong So let me just grab that password for you All right, so rather than show you the password, I’m just going to type a new one So you can select a username and we’ll go ahead and add a username we’ll call it twtprod Whatever, we just create a random username and then what we need is a complex password I’m just going to make up a complex password right here We’ll copy it. We’ll paste it We’ll paste it in again Great and then we’ll pick our location as a West Europe Select. So now we’ve created the type of server that we want and now we can actually pick the hardware type So we have all these different styles of hardware that we can use, there are different classes We have basic and as you can see that basic is great for demoing, for dev work and it’s only five bucks a month, how can you go wrong We’ll click apply, then all we have to do go to our additional settings We’re going to go into our additional settings and we’re going to have the ability to create it with either an existing backup snapshot or a sample but we want none because we’re going to move and migrate that data eventually Then we’re going to use the all the rest of the defaults We’ll click “Review” and “Create” We’ll get all the information and just click “Create” And after a few minutes it will start creating our databases and what we’ll be able to do very simply when we want to look for specific information associated with connection strings I’ve got some they’re already ready and I can show you right away is we go to our database server and if we want our SQL information, we can see everything associated with the actual server itself and then we want to access it, we can go right here and we can see our connection strings Then we can copy this and make it ready for application So we’ll take this, we’ll open up our VS code and we’ll just store it for when we actually have to do our deployment So next thing same situation, we’ll go back to our resource group >> I have a question about [inaudible] >> I’ll answer plenty of questions after. Thank you very much So what we can do is now do the same exact thing for our Cosmos DB We can go here and look at connection string As you can see we’ve got all the information, the host, the user name and password and here’s the really cool thing If you are afraid of keeping the same passwords and you want to rotate them simple as this We’ve regenerate our password, we can create additional information, we have connection strings that are all here, make it very simple for you to just take your primary connection string, copy it, pop it here into it for when we go forward and set up our configurations for our actual application to piece together Cool. So we’ve created our databases Now here’s the thing You know we typically want to talk to you about these database migrations and they are a wonderful discussion but I am not going to be doing that portion of the migration today What my portion is going to be giving you how to take Docker and use Docker and Docker is a great tool to containerize environments We’re going to use that and move our application into Azure’s Container Services but we still have to migrate those databases I like to kind of like in database migrations because like I said I worked at a database company for a while and I talked to people a lot about database migrations I look at database migrations as taken a giant room of puppies and telling them they have to go into another room Like literally saying to them, “Hey dogs, go to that room.” You can’t control what puppies do They are constantly moving around, they’re making noises and they’re leaving bits of archives all over the place So I don’t have the time today to tell you how to move a bunch of puppies but if you go to migration session two, you will be able to meet Laurent my coworker and he is going to give you-all the information about how to take those two databases that we had and move them over to those two endpoints we created So stick around for the mid-twenty session if you can, okay? Cool. So now we’ve set up the data storage but we still need to create the places for our application, right? So let’s talk about our application a little bit I gave you some minor description of it before but let me get a little bit deeper So Tallwind Traders Product Service, like I said is a MongoDB backed application

It runs with NodeJS and it’s a simple API You have all the information here that you can see in the variables that we need to have so that we’re actually able to run it Now we have our inventory service and that’s our.NET core portion That’s what’s going to store images and that’s just another REST API that we’ve created and that we need to manage and then eventually deploy These are all stateless that they’re going to be, the actual applications themselves are stateless They keep all their actual data in a database remotely So the hosting environment doesn’t need to be able to keep state So containers make a ton of sense That same thing can be said about the front end The front end is just react and as you can see all it does is need two environment variables to say where the APIs are so it eventually can move everything over So typically you would have to manage some connection string file where you would have environment variables that would eventually be passed So that would be something that you would have to go in and make changes during development and and then it makes sure that you’ve made those available to your application when you go to production So let’s go to the portal and let’s show you little bit about how we’re going to get this started So we’re going to go back to here Let’s go to mirror Cool. What we’re going to do is create what’s called an Azure Container Registry and that’s going to be where we create and store Docker container images that we’re eventually going to deploy to Azure app services So what I’m going to do is go to my resource group I am going to quick add and I can search within everything and just type Azure Sorry, I always feel nervous typing in front of people and this is a lot of people So Container Registry Cool. So we’re going to a Container Registry and we’ll click “Create” So now what we’re going to do is just create a place to store our Docker images So I like to make sure it’s all at the top, so I’m just going to call it a 01 You don’t have to call it this, obviously We’ll call it TWT Cool. We’re going to use our same subscription, so all the billing goes the same place We’ll use the same resource group so we can trash everything We’ll pick West Europe because all of our other resources are there We’re going to enable an admin user because we want authentication when we actually store things or grab them So we’ll click “Create” and in just a few seconds our ACR Azure Container Registry will be created So there you see deployment in progress We’ll go ahead and click that Complete. Let’s go to the resource So now within here we’re able to see all the different access control that we can create So if we have our back users and Azure Active Directory domain, we can use those But we also have access keys and these access keys can be used to do simple Docker logins So that’s what we’re going to do We’re going to login via Docker to this server So I’m going to click login server and then what I’m going to do is go over to one of my terminals and what I’m going to log into is Docker login and I’m going to state the name of the ACR Hit return user name and the user name is as simple as just going back here. Copy I’ve got to get that better There we go, and then go right here. There we are So now we’re logged in, and now that we’re logged in, we can actually start taking the different portions of our application and dockerizing it The first step in that is taking each section of those APIs and creating Docker images So first what we need to do is grab the login server, because we’re going to need that to state where we’re going to create and store this image So I’m going to do “Docker”, which is going to invoke the actual Docker binary, and then I’m going to do “Build”, which is going to say, I want to build a container, “minus t”, which means tagging it So we going to tag it within our ACR, we need to give a location, and then we’re just going do a slash like we would for a URL We’re going to name this one Product Service You can see we’re in the product service directory and that’s part of our full repository We’ve got front-in, inventory, product service, we’re not working with reports today So now we’re going to say,

“Docker build minus t”, and we’re going to give it a name Product Service, very simple, and then we’re going to tag it, we’re going to tag it as latest Now, when you build something, you want to build it in the directory you’re in, so what we’re going to do is to say “Dot”. That’s it So what it did was followed some instructions So let’s take a quick look at those instructions A Docker file is simply a set of instructions on how an application should be deployed to Docker, and you can see right here it’s very very simple, we’re just creating a directory, we’re copying the contents of the source into it, we’re doing an npm install and then we’re starting it Then once we actually take that container and load it into Azure Container Services through App Service, we’re able to just expose that 8,000 port over to a port 80443, so we’ve got it fully SSL enabled, and a host name with a fully qualified domain name So after we’ve built, now we can push this, and it’s really simple to do Get rid of the period Excuse me. Let’s get rid of that period, and then we don’t need the minus t anymore, because the tag is already been established, and we don’t need to build, we’re just going to push There you go. Now she’s pushing it up to the repository Now, we have to do that for our other API, which is the same thing So let’s look at the Docker file Well, that’s building As you can see, it’s got a.Net image that it’s basing this build off of, and then doing the .Net publish so that we can have our application So same situation, Docker build minus t, and then we’ll say our tag is Inventory Service Remember, of course we’re going to need our ACR, so inventory service slash, like that, and then of course the tag and I’m just going to call it latest because it is the latest version, and period because we want to do it in the directory we are currently in, same situation Now, let’s push it just as fast Don’t need that period anymore, take the care of the minus t in the build, let’s make it push Anybody seen me need to use Kubernetes yet? Exactly. We don’t need Kubernetes It’s useful, but we don’t need it to start building applications with Docker, and that’s the really cool thing We can can create everything, get your containers built and start deploying apps So we’ve got one more to go, and that’s our simple React front-end as we can see, front-end, so we’re just going to do same thing, Docker build minus t, our ACR front end service and then latest What did I do wrong, oh I forgot my periods If you don’t have your period, you’re not saying where it’s going to actually build, quick easy Let’s get rid of that period Same situation, and then what we’re going to do is we are going to go back to the portal, and within the portal now, you’re going to see these repositories, or now represented with in, because they’ve been created So we can go to front-end service, and we can look, there’s our latest version of it, we have all the information with the tag creation date, all the run IDs, platform that it can run on, which is Linux, and the digest, so that if you are concerned and you want to be able to make sure the image matches the Shah Digest, you can All right. So we’ve got our images created, they are uploaded over to Azure, and now we want to actually deploy them, and now we’re going to do that with a very simple service called App Service for containers So what I’m going to do is take you back to my dashboard, and I’m going to show you have created a shortcut here, Web App for Containers Web App for Containers, you can create simple containers like I said, without using complex services like OpenShift or Kubernetes to manage your containers You can just create it within Docker, upload it, explain how much scale you need, and then go So we’re going to need three of these So let’s create the first one The first one just going to call it 0001-twt-product-service Cool. We’re going to use our existing, we’re going to use Linux, and then we need to create the hardware we want to run our containers on So an App Service plan is just giving you-all that information about

what the hardware that you’re going to use is going to look like So we’ll give it a name and we’ll call 0001-twt app service plan So this is how you can get granular information when it comes to billing Everything is nicely separated, so you could find out, how much did App service costs just as much? How much the database has cost us this much? Okay. So now we’re going to pick our location A couple wish I was in the Central US, but this is a really cool place So we’re going to just stick here and stick with West Europe, and now we’ve got our pricing tiers, and a pricing tiers gives you the ability to take a look and you can do Dev/Test, very very inexpensive 35 American dollars, and of course production, it’s a bit more expensive but, you get tons and tons of features like I said SSL, you can auto-scale things, staging, so o you can have multiple versions and then have say a BlueGreen Deployment If you want to allow say 10 percent to go to the new version, leave 90 percent to the old version, you could do that with slots and then easily say, “All right, time to go to a slot two and go 100 percent It’s a great way to make your deployments have a little bit of a canary style of testing Our Traffic Manager, helps you move where your traffic flows globally, and then you have tons of memory to run your app and storage if you need to store anything statically So what we do is just click “Apply”, and now we’ve got what are hardware’s going to look like, and now it’s time for this particular API to get his container So this is the product service, and so what we’re going to do is find our registry that we’ve already created, because we have a couple of different options Now, you can use quickstarts, and there are a couple of Demo Containers if you want to get started trying with them, so engine acts or a Python, Hello World, Docker provides you with a place to store, but that’s a public registry You can create your own private ones if you’d like to, it’s a little bit more work, but we provide you obviously with a hosted option, and so what we’ll do is pick 0001-twt Now, we can pick the actual image that we created for the App Service, product-service, the latest tag We don’t need a startup file, but if we need something to run during Cloud in it if you would, we can have it so maybe we need a particular agent to run, we have a script that needs to happen, we can make it part of the startup file, then we click “Apply” and then create In a few seconds, we’re going to have a Container created So let’s go ahead and create the next one, same situation We want one for our Inventory Service So, we’ll go to 0001 We’ll keep the actual application plan that we’ve already created because we don’t need another one We’re going to be using Linux for all these Even in our.NET application, we don’t need to run it on Windows So we’ll click the “Container,” “Azure Container Registry,” same one Now we pick “inventory-service” instead, same thing with our tag Apply. Create. This is how quickly your deploys can go manually Now, imagine once you create a pipeline using something like Azure DevOps Now, one more to create for our frontend Create. Go away Siri Same situation, use the existing group Linux, ECR, Registry, Our image. Not product service We’re going to pick our frontend service Latest tag Apply. All these are co-create and then be available within your resource group Now, anybody here like to watch cooking shows on TV? Come on. Somebody here has to like Wash. I like Chopped So one of the things that on a lot of those cooking shows is they get things started in the oven so that they don’t have to do it live Well, I’ve done that for you right now I’ve got some stuff that I’ve already cooked I want to show you how these things start to fit together So let’s go to my complete dish My complete dish will look a little bit more like this Now, we’ve got all the different portions of our application that we need that have been created in Azure We have our ACR whereas I’m going to store all of our Azure Containers We have our services for APIs, inventory, frontend and our product We’ve also got our SQL databases

and our Mongo databases now stored in Cosmos DB Our Virtual Net is taking care of all the security Let’s see how this all fits together So you saw, we had to take care of some environment variables Well, I’ve already done that for you but I want to show you how it’s done If we go into the product service, we need to be able to provide a database That database can be provided very easily here in application settings If we go into application settings, we scroll down, we see these application settings right here These are environment variables They will be available within the Azure Linux Container that you created So if you need to state that the database connection string has to be this Yes, it can be encrypted Sorry, I couldn’t mention it then, but we have Azure Vault Services that you can encrypt stuff and then eventually leave that in here For right now, I’m just showing you the demo or the basics But here’s our MongoDB data connection string, that’s going to go to Cosmos All we have to do is paste that in and click “Save” Same situation now with our inventory API In this case, when we go down to application settings Because it’s using the native SQL Server, we actually have a section within here for connection strings that shows you that the name of the connection is inventory context Here is the full connection string that’s here on Azure and we’re stating it’s a SQL Azure So it’s going to go ahead and make that network connection and use all the existing our back and information that you may have, if you have specific security policies already created Then finally, we’re going to tie it all together with that frontend and the two APIs that we just created Because if you see each of these has a full URL So if you just give me one sec to show you Our inventory API, that’s our URL right here What does that look like? Well, I haven’t added security against that API yet But when we go to our APIs, they start looking like this So here is our inventory service API You could see the full host name Here is the actual API for the product service, all the documents that are stored in MongoDB What we’ve done here, is we go to Application Settings, and we’ve got some- I need to go to the frontend one You go to our frontend, we go to Application Setting, and then within application settings, you’ll see, we’ve got inventory service base URL with the base URL for API, and product-service base URL with the product service URL for the API as well So now we’re connecting all this together We don’t have to manage manually those connection strings or any of that within Config Files and then store them in some repo We can just do it right here Here’s the really awesome part about all of this, is that we have ways for you to go ahead and take all of this and codify it through arm templates So what we can do is go back here and take a look at all the different methodologies of deployments because we have our arm layer and it’s a unified layer So the things that I showed you today eventually created this particular app and that arm layer I was just talking about All the things that we just built to create this website We didn’t need to do it all manually The Azure Resource Manager layer that comes along with using Azure allows you to do all the things that I did today either by using the Azure CLI which is just a CLI that you can use in either PowerShell or Bash You could do this by the SDK using APIs that we provide you or you can just do like I did, right in the portal So there’s tons of easy ways for you to build these things I wanted to make sure that you saw the simplest and quickest way to build an application As you can see, we can add, remove portions of our application and that’s that So let’s start wrapping things up What do you say? So this is what we’re left with now Rather than having that huge network diagram, with all those different parts that we needed to concern ourselves with Say building backup services, building database services, creating monitoring Now that’s all going to come with the services that we’ve put together with fully managed Azure services that we now have in production

So let’s wrap it all up What did we do today? We migrated the Northwind and Tailwind Traders application from the old datacenter over to Azure which used service-based endpoints So they’re no longer manually doing back-ups, they’re no longer mandatory responding to everything that happens when a failure occurs We’ve modernized a lot of the operational tasks So your team’s no longer having to go to the datacenter, replace the tapes Your team is not going to the datacenter and then reinstalling switches because of broken line cards Now your team is improving your application They’re improving how time to deliver is made by your actual development team Your ops team is now empowered to help you grow as opposed to just keep maintaining existing hardware More than anything, I’ve given you a simple application that if you’d like to, you can build on your own using all the same resources that I’ve shown you here today So there are a few more sessions in this particular learning path around migrations that I really recommend you go to Twenty is going to be a perfect tie into what we’ve learned today and we’re going to go ahead and give you the next step in the database portion of the migration Because database migrations suck No other way to put it They are really hard But my coworker Laurent is going to show you how to make them a little bit easier Then we’ve got tons of more showing you how to monetize your applications with Containers and Serverless Anybody here work at a place where you have a Cron server? That server that rungs one Cron one day? Let’s not build Cron servers anymore Let’s build Serverless jobs So go check out that Then of course, we’ve talked about how to get start with Containers, but if you want to build really huge applications, you can do that with Azure Kubernetes service So get your lesson plans together, get your code for all these sessions and enjoy yourself here at Microsoft Ignite So thank you very much I’m Jay I’d love to hear from you If you enjoyed this session, what I’d like you to do, go on Twitter if you have a Twitter account and just say, “Thanks at Jay Destro Loved your session and I’ll retweet you because I want the world to know that you are here So thank you very much Enjoy yourself here at Microsoft Ignite The Tour I got about 10 minutes I’m going to hang out here If you have questions, I’d like you to come up with because I want to talk to you one on one I hate doing this screaming question answers back Come on up to the front, I’ll talk to you Like I said, we got about 10 minutes So thanks a lot for being a part of this I’m going to do something that a lot of people don’t do This a big room. Thank you for being here No. No. Well, I’m clapping for you first Thank you-all for coming here today You were great. Thanks. Give me that. Now, you give it to me [MUSIC]