hi my name is Abel and I'm a senior cloud developer advocate specializing in DevOps today I'm going to show you the ultimate DevOps tool for creating your own CI CD pipelines for any language targeting any platform I'm gonna be showing you a sure pipelines with Azure pipelines we've made it ridiculously simple to go from nothing at all to a new as your pipelines project see people have been telling us it's too complicated to get started with your DevOps tools and guess what we listen so let's go check this out let's say your code is sitting somewhere like on github and you don't have an azure DevOps account and now you want to create a CI CD pipeline well just go to this landing page click on start free with pipelines and it's going to create for you your own organization where now all you have to do is jump in here type in your project name click create and bam that is all you need to do now when it's done creating the project you'll have an empty Asscher pipeline project like this so let's go ahead and create our first pipeline so we'll jump into our pipelines and we'll go ahead and create a brand new one and the very first thing it asks you is where is your code is it up and github is it in and Azure repos we also support tfv c and bitbucket cloud but for those you have to use the visual designer now my code is sitting out in github so let me go ahead and authorize with github and once it's done authorizing with github I'll be able to see all of my private repos and public repos out in my github account so let me choose my repo and now it's going to go and analyze the code and the technology used inside my repo and based on what it sees it's going to offer me a couple templates it just so happens my application is an asp.net app but if my repo held let's say no js' app running in a docker container guess what it will create for me a bill pipeline that makes sense for the technologies that we picked all right so now it's going to create for me my pipeline using a yamo file now I'm gonna go ahead and add a couple more tasks and basically the tasks that I'm gonna add I'm just gonna go ahead and copy my zip file that's created and deploy and take my build artifacts and publish them back up to Azure pipelines now once that's done let's go ahead and save and run this build and voila that is literally all we have to do and now it's kicked off our build so now it's gonna go ahead and spin up a build agent and it's gonna go ahead and build our application for us now it's going to download my code from github is gonna restore my packages from you get is gonna compile everything using Visual Studio it will go ahead and run my unit test right is this right here is just what we used to have in V STS now if you remember we defined this build using a yamo file if you guys like yamo files that's freaking awesome I love yamo files because pipeline s code what we're doing here this really speaks to the DevOps in me right however if you still want to define our builds or describe our builds using the visual editor you absolutely still can and hooray for that looks like our build has finished let's go ahead and jump into the summary where now you can see a timeline of everything that's happened during this build including all the tests that were run now notice the one thing that's missing is going to be where's my deployments well there are no deployments because we haven't created a release yet so let's go ahead and create a release for this build I'll go ahead and click on the release link and it will take me to the visual editor for the release pipeline now because I'm deploying into Azure it makes things insanely simple let's choose the azure app service deployment template click apply and hurray for that that's all we need to do now when you go and create a pipeline for your releases the first thing you have to do is you have to define your stages so we'll call this our staging and next you have to define what are the tasks that are going to run for this particular stage now everything is filled out for us because we're using a template but I do need to connect my accounts with my subscription so what I'm doing right now is I'm connecting my Asscher pipelines account to my Azure subscription once this is done we can go ahead and jump in here and select the app service that we're going to be deploying to in my case I am deploying to Azure DevOps launch now there's one other change that I want to make because this is my staging environment so I'm going to go ahead and deploy this into my slate staging slot so first I have to choose my resource group then I have to come in here and choose my staging slot now what if you wanted to do more than just deploy an app to Azure app service well to customize these release pipelines what you would do is add and remove tasks now out of the box as your pipeline gives you about a hundred tasks that you can just download and start using now if what you want to do doesn't exist out of the box it's not a big deal because go to the marketplace in the marketplace our partners have created over 700 build and release tasks that you can just download and start using now if what you want to do doesn't exist in the marketplace and doesn't exist out-of-the-box guess what you can create your own custom tests as well custom tasks those are nothing more than PowerShell or no js' so what that means is anything you can do from the command line you can easily get Azure pipelines to do as well all right so we've created a really small pipeline right we're just deploying into one staging environment let's go ahead and look at this a little bit deeper because after you've created your stage and you've created the tasks that should run in your stage you have the ability to add approvers before and after each stage so let's go ahead and add a post deployment approver and I'm just going to add myself select that and you know what let's go ahead and clone this because I want to add a new stage I want to add a new stage where I can deploy to my production so we'll call this production and from here jump into the production tasks and I do need to make a couple of changes one of them that I'd need to make is instead of deploying to a slot this is production so I'm just going to deploy it to my app service itself so I'll go ahead and save this now and now let's go and release this I'll click on release click create and just like that I've created a release and now the release will start flowing through our staging environment and after I approve it it can flow all the way out into production easy peasy so there you go Azure pipelines for your code we've made it so simple to go from nothing to a full CI CD pipeline for any language targeting any platform and yes this is your code sitting in your repository of choice deploying to wherever you need it to be deployed it can be in Azure of course but it can also just as easily be behind your firewall in front of your firewall anywhere remember any language targeting any platform and not only that if you have an open source project guess what if you get all of this for free you get 10 parallel pipelines out-of-the-box and if you need more just ping us and we'll give you more so go and check out as your pipelines today by going to dev calm
Wednesday, 23 October 2024
Build Amazing Cloud Connected Apps With Xamarin, Azure, and App Center
my name is Matt soaked up and I'm a senior cloud advocate here at Microsoft and for the next 30 minutes I'm going to show you how to build a mobile app using xamarin connect it to the cloud with Azure and make it amazing with App Center so let's jump right into it and show you what we're building today so what I have here is you may have seen this app used a couple times yesterday and during the keynote and today it's the pretty weather app and it looks pretty good alright we have the weather condition so we're in Seattle we have the temperature we have the current date but the world doesn't revolve around Seattle right don't tell anybody the bad here but there's more cities involved and so what we're going to do is we're going to make this app fully functional and by that we're going to hit the three little icons in the bottom and then we're going to be able to sign in to Chrome say no thanks and actually be able to sign in to our app so I'm going to enter my email address and my favorite password of all time ABCD one two three four with an exclamation point sign in and what this is going to allow me to do then is save cities that I want to be able to view the weather with hit a plus button and I can now add other cities other than Seattle around enter Honolulu probably has a little bit better weather than Seattle and now I can be able to see the current weather conditions then in Honolulu so what I did is in addition to the current weather conditions added a little magic to be able to sign in and have data follow me around the different locations or different devices so let's see how we did all of that we're going to be using to build all this three things xamarin for the mobile app functions to be our compute in the cloud and then App Center mobile backend as a service that do auth and data which wraps around as repeated C and Azure cosmos DB so first up xamarin so a quick overview of what xamarin is xamarin is microsoft's framework for building performant ios and android apps but it's so much more than that you can build mac OS apps you can be able to watch OS f so you build TV OS apps you could even build apps for Samsung's Tizen operating system so it's much more than just I Oh s and Android apps and how this is done is that you've used the great power of dotnet and c-sharp so we have let's say an iOS UI and Android UI and as G sharp UI for Windows so we're going to build a UI for each one of those out separately we're using c-sharp we're using dotnet we have full access to the platform but we're building those UI separately but we're building an app that one app is still going to perform the same thing although we have to build it for each platform so when we call to that web service when we go get our our weather information it's going to be done the same way so we may as well use a shared C sharp logic way Eclair and that's where the power hammer comes in that we can write our shared logic just once and have it use across multiple platforms that well at the same time but we can do better and that's where xamarin forms pops in so what salmon forms does it gives us an abstraction of the user interface layer so let's say iOS has a button Android has a button and uwp has a button so what we're going to do then is salmon forms gives us an API that lets us program against a button and then forms takes care of emitting a natural native button for us so now we're sharing c-sharp logic for our application logic we have shared logic for a UI logic and we have more and more shared code this is great so that in a nutshell is what Zarin is the next thing I wanted to talk about is the compute layer or Azure functions and so this is a quick diagram of what we're gonna call the cloud native compute or how we're gonna architect our apps so way back in the day we had the claw on-premise architecture and so what that was was essentially that was the old data the computer underneath your desk right where you had every year to take care of everything yourself the machine make sure the operating system was good you had to install all the software yourself but as we moved along we started moving to the cloud so you had infrastructure as a service so you no longer had to take care of the hardware you then you moved a platform as a service so you didn't have to really worry about the operating system and now we're at functions as a service or serverless or are only worried about writing our code and so our answer to that is as your functions where it's events being tied to code and then we have functions and so what are some of the events that we can write that we functions run off of think of having a blob being written to blob storage or something being written to the azure queue so that in itself will actually kick off an azure function and have our code start running the secret sauce though comes in with the bindings and so what a binding means is that we can have something let's say from cosmos dd be bound to an azure function and then like a document can be sent into our function as a variable so the same thing can happen with a Azure storage table or a file it automatically gets sent in or we can write it out as well so this gives us a really powerful mechanisms to write some really cool code with a little bit of lines so scenarios to demonstrate this so let's say we had a timer going off every 15 minutes that's our event the function then kicks off it will then find and maybe clean some invalid data from a table and then we are resulting with a clean table afterwards another event could be a file a CSV file let's say gets added to blob storage we have a function then that takes that in transforms that CSV file into data rows and then from there we can display a power bi chart graphic or our scenario that we're dealing with today is our mobile app it needs a forecast it sends off an HTTP GET request to a function that function then is going to call up to a third-party weather service get the data back and then it's going to massage that data into a version version that the app can deal with send it back down to the app and in the app displays the data so let's see how we can use compute with Azure functions and add that in to our mobile xamarin application so this is what the function looks like it's some call get current conditions and it's running as an HTTP trigger so that means that as soon as a HTTP GET request comes in it's going to trigger off this function and is going to start running and then it has various requests queries that I can get a latitude and the longitude and then it runs through so actually let's kick this off and run it so it's going to compile and I'm going to run this all locally and then as that fires up I'm going to actually call it out through postman through this localhost 7:07 1 and here I have postman sup and I'm going to be passing in a latitude and a longitude of Seattle so I send it off hiren hits so now what I can do here is step through so I get my latitude and longitude out of the query string and then these next ones I'm just pulling out of essentially a config file to get my key and my URL for my third party weather service and so that's another great thing about putting this up in functions instead of having it in my mobile app I can have the key to my weather service not onboard my mobile app where it could be possibly compromised I have it up on functions within the azure cloud and it's safer eventually I could even put that in an azure key ball and really lock it down if I wanted to great so back to the function then all I'm doing here is using this client which happens to be an HTTP client calling getstring async invoking that third-party weather service getting my data back deserializing it and then finally all I'm doing here is putting it into a version that my mobile app would use so I continue that off and down here I just get this a little JSON back and this is all my map app needs to display its data so I've already actually deployed that to assure that particular function and I'm gonna run my mobile app now to actually see it in effect so I'll compile it and run it on the emulator and as it's going all I'm going to do here again is using the HTTP client is called getstring sync and it's just calling out to pretty weather that as your website's net to get its data back so as soon as it fires up still compiling and then we should have it done in just a second here hopefully and then um we'll continue on talking here we go so loads up going to deploy it to these emulator then once that's done it'll go through and the very first thing that's going to do is going to hit this weather service here get the weather info and then it's going to deploy call out to the function loading itself up and then it should come in here and that's what I did call the getstring async and I can see my weather info that came back it's the same thing as before and now it's just been updated with weather from Honolulu so there we go so that's all that's involved with loading up and calling an Azeri function from a mobile app it's just an HTTP GET request involved so that's pretty straightforward as far as it's creating just a back-end a Web API but doing with Azure functions a cloud native way of creating a Web API so now adding the real amazing stuff to functions or to our mobile app and that's with App Center and so what App Center is gonna do is gonna allow us to wrap together Azure ad b2c Active Directory b2c visit the client and also as a cosmos DB and our really nice easy-to-use developer friendly SDK and so the way this works is that a lot of y'all may be already familiar with App Center in the dev ops portion where we had build and tests and distribution so what happened is that with build what you would do is that you would connect to your favorite repo and then as soon as you would push to that repo it would build it would kick off some unit tests and maybe even some UI tests that would run on real devices and as soon as that was done everything would pass it would kick off to the distribution whether it's distributing to the stores or whether it's to some external beta testers and then you would have some Diagnostics I could run so what happened at the app crash maybe you can get full stack traces it could hook into app insights and then you have analytics where you can track how people are using your app that was App Center however there is this now this new features called the mobile backend as a service where there's authentication data and push now what's great about these features is that they interact really well amongst each other and they are super easy to use so first we'll take a peek at what the authentication does and as I mentioned before visual studio apps centers authentication works hand-in-hand with Azure Active Directory b2c so ad b2c itself is I'm gonna say it's a little bit involved in getting set up and also what App Center auth is going to help you do is going to help you ease that process of getting set up and making calls to it so it's focus is on making everything easy for you and so the other way so there's two parts involved in calling and authenticating and signing in your users there's the b2c portion and then there's the actual signing in portion which is done through Microsoft authentication library or M cell now the M cell is all done on device and that's taken care of displaying the webview and actually communicating the b2c and performing the authentication where b2c handles like calling out to Twitter or Facebook or your email to make sure you are who you say you are so you have these two pieces that need to interplay with each other nicely in order to get your sign-in experience App Center makes this whole layout this whole journey way easier this is what it looks like it's just sign in a sink now if you're familiar with what the M style framework was before it's super powerful but it was a lot of ceremony that goes along at Sutton setting it up this is what it looks like now it's super it's nice it's developer friendly and that goes right along with the App Center ethos going along with this I mentioned that right now it's just working with Azure Active Directory b2c but in the future they're implementing something called bring your own identity and so what this means is is that if you're using auth0 or if you're using firebase or if you're using Azure Active Directory already you can just bring those in to App Center and it's gonna work for you so you don't have to be just using b2c you could be using any of those other identity providers bring it in and you'll still be able to work with them behind that beautiful su K that we had then next up is the data portion so what the data gives us here is a nice wrapper around as your cosmos TV so the way is I mentioned before is that auth and data and push work together hand in hand so this is one of the ways that they do so we're logged in with auth and then user a user B and user see whenever they do some data information they get their own private partition within cosmos dB so what I want to store some data I get my user a partition the same with be the same with C but yet we still have some public data and so there's no I don't have to set up as a developer set up a new partition for anybody app centers SDK takes care of that for me now the other thing that we get with the data SDK is the ability to do offline writing if I'm connected it writes to the cloud right away also writes to an a sequel cache on device however if we're not connected just writes to the cache on device and we keep on going it'll write up to the cloud next time we're connected same thing when we're reading always read it's from the online cat or the cache on device if we're connected reads to the cloud and syncs up automatically works you don't have to worry about whether you're online or off the SDK is gonna take care of it for you so some methods here that you have you create your data model new it up and then there's a create method a delete method passing in the IDS of what you want and then the partitions here are the user documents as opposed to public and then there's a list a sink to get them all back a read for a single and then a replace which is like an absurd or an updating well cool things that we have with AB Center is that you can see data metrics from what your cosmos database looks like all within the App Center portal and you can actually go through and view different documents and the best thing at all is that there is a free tier coming along it's not there today but it is coming along soon so it is cosmos DB free tier with App Center and that's pretty really slick so let's jump in to the last demo that we have going walking on sunshine off and data with App Center so first thing I want to do is show you how we would set up the portal the epicenter portal to work with ODS and data so what I would have here is I have open up a App Center application and I have often data here so just by hitting auth it says welcome to auth connect my address subscription and I can go through I'm gonna have my pretty whether it's reading what's already in my Azure subscription user impersonation and then for the policy I have to manually add my user flow which has happens to be this user flow is the how you sign in so it's like which identity providers like if you want to connect to Facebook or if you want to connect to Twitter and then I can just say connect and that's all there is to it now my app is set up to use authentication the same with data all I'm gonna say is I want to use an existing database use my subscription hit next here which database within it user preferences which collection and that's it I would hit done so to show you one that's already set up and ready to go is one of my Android authors already there it's telling them my tenant name my application ID and the data and you can see here I have overview and then my Explorer and you can see I have both Seattle and Honolulu so the next thing what I want to do here is finally go through and show you the methods that I have set up to be able to log in and a save data so I hit the little things below and the sign in right here is just off sign and a sink I have tokens that come back an account ID which is my b2c account ID all within that I can get listing my cities out is just a data list a sink sending in a city info which just happens to be a regular class continue on and then if I when I want to add a new one we'll come through here pick a new city and crash the app so what it would look like if I would pick the new city then is say vsync instrument just says create a sync city info passing in everything I need and then what I would have there is some really really funky stuff but if I go over to my real device I can see if I load up the app it should be able to see Madison Seattle and Honolulu come up now because Madison did not save but that's okay so hopefully it saves here without crashing anything and it comes over so great that's the quick version of adding everything and using App Center with as amra mobile app so in summary we use xamarin for creating a cross-platform mobile application as your functions for our server list back in for a compute and then App Center for a mobile backend as a service data and authentication so please go out and learn more follow these documentation links for xamarin App Center often data and finally the bottom one there is all the code that you can want from this session alright my friend man how you doing today my friend I'm doing well Seth fantastic so here's a question that I always get that I thought I would ask you performance with xamarin versus native is like tell us about that you get 100% native performance with Sam earn as you would if he were writing something in Java or if you're running something with Swift you're gonna get the same native level performance as you would so there is no difference as if anything Sethi write bad code he can get back home yeah he's saying that from experience yeah we work together and so he's seen some of that all right so here's another question those Azure App Center auth work with uh securing with securing a web api being called from a desktop app that's a good question so the center app works with securing a web api calling from a mobile app I haven't tried it from a desktop app but they do support WinForms in the other portion of app centers so I'm not gonna speculate and get that project team or the development team product team into trouble but it's just a JWT token fantastic well there's a lot of good links that he put up there so make sure that you follow those and get some of the code so you can try it out yourself it's pretty amazing now as we go along make sure to remember to participate in the technical treasure hunt it's still going on you're gonna want to watch olive dot Netcom 2019 because the UH net partners are sponsoring a technical treasure hunt there will be fun challenges to solve me to be eligible to win a lot of prizes which is critical so what we're gonna do is we're going to throw to a commercial break and right after that we're gonna have a tour of what's new for zamel tools and saml islands in Visual Studio 2019 with my good friend Demetri Lyle in but this first
Browser-based Exploratory Testing in Visual Studio Team Services
my name is Charles sterling I'm a senior program manager in the visual studio team and I'm excited that at connect we're releasing a browser-based exploratory testing tool here at Microsoft we've always had great test case management tools inside a visual studio team system today we're actually extending that with an exploratory testing tool so you can integrate that in your development environment this tool makes it easy for you to annotate and validate the should the value that you're shipping in your product backlog items makes it very very easy for you to file bugs it's simple to get started it's simple to acquire it works in your environments whether they are Mac Linux or Windows and also works across your devices again working with Android iPad iPhone and Windows Phone it's resilient so if you happen to crash your browser in one of these instances while you're doing the exploratory testing when you bring it back up we're gonna remember where you were and be able to let you continue on from there so what is in this brand new tool this tool is going to let you capture notes making sure that you're actually delivering the value as you think it is or actually just notes about what you want to do going forward we make it easy for you to capture screenshots and annotate those screenshots now whether or not you do the annotation in our tool or your own tool is up to you as I mentioned earlier it's very simple the file bugs and these are fairly rich bugs we actually collect information about the environment in which the bug was filed all of this had occurred in a timeline so if you actually span different pbis well actually put that in a single time list so you can actually see where that occurred and as I mentioned it enables you to actually test it across your mobile device so I'd love to show this to you as a demo we have got great test tools for formal testing and test case management if you haven't looked at them please do but this is about exploratory testing and making it integral to the dress the development cycle I wanted to show you how you access it to make it very easy to acquire you can download the exploratory testing tool from the new marketplace so if you haven't taken a look at it please do if for no other reason just to get the new exploratory testing I said make it integral to your development environment or a development process what am I talking about you can see I'm actually looking at my backlog right here and I've actually working with Cory Fowler we said that we're going to add categories to that sample and we've done that and I'll actually want to go ahead and create a exploratory test for it so I'm gonna go ahead open up the parts of limited sample and click on that exploratory test tool and right off the bat it's asking me which visual studio team service should I be using so I type in parts Unlimited I think I fumbled finger.this so let's see if we can fix this and right off the bat it knows about my projects that I'm actually working on and I've been doing this with Cory Fowler so I'm gonna go ahead and reference the quarry team now in looking at it looks awesome the team's done an amazing job but I can see that we've actually got an issue with the price of the red wheel so I'm gonna go ahead and start that session and I'm going to capture a picture of this red wheel and I'm gonna go ahead and draw a pointer to it and say something like real price revealed price is you know if this was actually you know private information I could go ahead and block the you know and and blur that information as well and this is included in a time line so I could capture multiple multiple images and it's all part of that time line you can see the time line is taking me forward in time now I mentioned that I can not only test my Windows environment but I can test my devices so I'm going to go ahead and file a bug for that wheel and I'm gonna go ahead and take a look at it in my device so I'm gonna do both things first thing is I see that my wheel is here and I could probably go ahead and add real text here please update wheel price and price needs updated and if I go back and take a look at that backlog where I was showing you that work I would actually find this bug as part of part of my current sprint go ahead and save that and it's just that easy now let's take a look at this exact same experience but on a physical device working with our friends at perfecto mobile working with our friends at perfecto we make it very very easy for you the developer to take a look at your application running on physical devices so I've entered in the credentials letting me look at the perfecto mobile cloud and you can see that I actually have a bunch of different devices in the cloud that is available to me I'm gonna go ahead and enter in my iPad and the iPad air 2 is what Corey is playing with so let's go ahead and take a look at make sure that we render okay on that device now right off the bat you can see that while we started our exploratory instance and tab 1 or the the tab to our immediate left of this one we are actually going to maintain that state and run it and know what was happening before in that same time line in the second tab that's pretty cool so I can actually span instances and span tabs inside of my browser let's go ahead and start my Safari on this air pad - with oh and it actually remembered from the last time I was looking at this that it remember this page so it looks pretty good I could see right off the bat I do have an issue with the logo it occurs in both places but I do need to file this as a bug as well so let's go ahead and bring up the exploratory testing session and take an image of the logo and I want to make sure and include the device crumbs that way the people who are looking at it know that I was actually in a device while I was capturing this particular bug ooh yes the metadata will be in the bug itself but that will ability have a visual cue of that in the picture itself and as I mentioned I did the annotation earlier in our tool I don't have to do that so I could go ahead and not do the annotation here file that bug copy this out let's see if we can actually highlight that good and like I said I'm kind of old school so I'm gonna go ahead and paste it into my paintbrush so we're going to go ahead and copy image go into paintbrush and I want the new logo we we have a new logo I actually I think I'm in charge of updating it so we're going to go ahead and update logo okay putting all of that back on the clipboard we're going to go back into my exploratory test extension and you can see that I have annotation from other tools so it's not just our tool it's the tool that actually fits your your purposes in your workflow best and this is a logo issue okay now I mentioned the fact that this was resilient so at this point weapons if I crash this application still running and it may not be the the best citizen at this point so let's go ahead and open up task manager and we find our browser is running and I'm going to go ahead and just bring it down so at this point did I lose everything let's find out I'm gonna go ahead and restart my browser and I'm gonna go ahead and reopen the test extension and you'll see right off the bat that not only did I not lose my timeline and actually remembered the bug exactly where I was at so let's go ahead and finish the typing of the title so logo bug and what was that that was a iPad air 2 I believe was actually what well we had problem even though it occurs in all places so at this point the only thing left is to bring up full circle so if I go ahead and let's look at parts unlimited I want to show it back in the development environment all those bugs are actually we're brought back in and we should be able to find those so I'm going to open up my quarry parts I'm gonna go to work and we should be able to see right off the bat of the right off the bat in our my backlog a logo bug as my last one so right there logo logo bug in air pad to bringing exploratory testing all the way into your development cycle making it fit for your devices your operating systems and your workflows as you saw we had a great demo I know I actually had a lot of fun showing it to you I just want to recap what you saw we were able to capture screenshots we were able to annotate those screenshots both in the tool that we're delivering and actually in my case paintbrush we're able to capture those notes as we walk through it we filed a couple bugs too I think and also we put all of this in a timeline and it actually spanned a couple of my different PBIS and we were able to do the exact same work across different devices showing you how the resiliency even though we had a crash in that case I was able to remember exactly where we were and continue on going forward my name is Charles sterling I hope you have a great time to connect
Azure DevTest Labs updates
hi my name is Xiao Ying I'm the Senior Program Manager for Azure death has slabs the commercial as a service that helps developers and testers to quickly create environments while minimizing waste in controlling cost in this video I'm going to show you all the key features with ship since the connect conference last November before jump there in case you haven't heard about dev test labs please allow me spend a couple minutes explaining what it is that has labs aims at solving the real problem in dev testing arrow that has investments are usually significant when we talk to most traditional IT organizations we realize that up to 50% of their infrastructure spending is happening on non production environments furthermore neither IT nor developers are very happy about their provisioning experience 65% of developers say that is too complicated and time-consuming it takes weeks to get infrastructure for that test sometimes not even enough for testing and there's a lot of unused resources what is the case the demand for death has infrastructure is a linear it typically looks like this spiky grass when devs are working on Springs you see Peaks when there is off time like night weekends or holidays you see valleys and when there is a release the demand for test environments is high so you see a bit peak if you're provisioning infrastructure in a traditional way here's what you do results in 80% of wastage that's a lot of good money being put to bad use however when you use Azure you can map your infrastructure spending closely to your needs pay for the use only and enjoy cost savings with Azure being the only cloud that does per minute billing for VMs you only pay for what we used more importantly lightning-fast provisioning and automation improves productivity driving top-line business value for to quickly get started with theft has environment here we have solution called dev test labs it's in out-of-the-box solution that won't getting any other cloud it empowers our developers and gives the cost control and governance that your IT ones dentists Labs is a good for multiple scenarios including hosting your developer machines test environments and beyond them testing arrows it's also good for training education scenario and trowel hexam or demos in arrow as well now let's talk a little bit more about these narrows one by one first developer machines because that has elapsed make it super easy for IT teams to enable cost controlled self-service environments for developer teams developers have the flexibility to quickly compose their own development machines on demand by using the reusable templates and artifacts under the policies defined by the IT team the needs are satisfied from both sides the IT team gets the control and developers are happy about agility similarly you can test the latest version of your application by quickly provisioning Windows and Linux environments using reusable templates and artifacts that says labs provides a rich set of API is in permit VSDs tasks that help you to easily integrate with your deployment pipeline to provision only mul environments you can also scale up your load testing by provisioning multiple test agents in the lab once the testing is done you can also create your golden image from test machines and make the image available immediately for all the lab users through a single step as mentioned earlier in addition to dev test environment you can also create pre prevention environments for training and demos in the classroom scenario a set of identical VMs are created in a shared VM pool before the class starts students in the class simply click a button together VMs needed all the VMS can be automatically clean up after the class similarly in the trowel hack phone or demo scenario lab users pick a machine from the VM pool in dev test labs if needed once this event is over the lab can automatically clean up all the VMS for next event so at this point I've talked about what is step have in how they can help you in various narrows before talking about new features let me quickly walk you through the core capabilities in dentists laughs you're destined slab is created from as your marketplace once created you can use and manages through either Azure portal or api's here are logging Azure portal in open one of my favorite dev test lab as a lab user that is granted with dev test labs user role I can cream as VMs or environments with past resources from a set of reusable templates under the policies defined by malleable me once created a VM I can start stop or connect to the VM apply artifacts in film or software or attach my data disks that contains my latest source code or test data as an owner or admin of the lab Delta slabs gives me full control to deform the lab policies including allowed VM sizes maximum numbers of VMs each user or lab can keep at the same time auto shutdown and auto start identified were usable templates for my lab users to create VMS including arm templates added through my git repository my selection of azure marketplace images in the custom images I can also monitor the current spending in the lab check the projection defy my cost target income range and get notification when there is a risk of overspending when I see a red flag a list of cost by resources reviews more details on the usage in each resource ok now let's look at what's new since the connect conferencing last November the first big thing we've shipped recently is to support managed disks in creation of VMs cut images and data disks in desert labs before they support because of if's limits in a single start account for optimized performance ESS labs create VM OS disks in additional start account when they are already many VMs using the same start account in addition because creating VMs from a cousin image VHD in a different storage account can takes a long time usually around 40 or even 60 minutes in order to optimize the VM creation the same custom image VSD is replicated to all the new storage accounts with managed disk support this flow is significantly simplified as its name indicates all manage these resources are automatically managed by a j''r instead of the start account in your subscription you don't need to manage any storage accounts anymore and all the VMS can be created from the same cutting image VHD file another key experience will be enabled dentist Labs is claimable viens with this lab Allah means can prepare VMs and put them in a shared VM pool lab users can then take a vm from the pool to use without spending any time to create it from scratch this is very helpful for a couple of different scenarios in test narrows claimable VMs that are installed with the latest build for testing can be generated automatically from the release pipeline developers and testers can then start using the latest build immediately for further testing or validation trimmable VMs also make it easier for trainers and teachers to get all VMs ready before class because all the VMS for the same class are identical students can ask the lab to print any vm for them at the beginning of the class once claimed the VM will automatically start up for students to use during the class that test labs also supports creation of multiple identical games for the same VM image and artifacts all at once the only additional thing you need to do is to provide the number of the VM instances where you create a VM in order to make VM cleanup easier now can also set time when you create a VM to expire it automatically at the specified expiration time dentist labs automatically deliver VM by using it together with cream above VMs you can fully focus on creating the right VM without taking any actual effort to manage the VM retirement in the case that a lot of public facing VMs needed to be created in the lab temp test labs provides a solution to share the same public IP address with those VMs it can help you reduce costs and avoid exceeding the public IP oh just call de in you're a sure subscription what you need to do is simply choosing an IP configuration option to use a shared public IP address in the lab will do all the remaining work for you now let's get back to my lab and see how these features work in practice at the bottom of the overview page is a lab user I can see a list of claimable VMs for me to choose I can also view all the claim of VMs through the claim above virtual machines page if all the VM started saying such as in the case of classroom scenario the only thing I need to do to get a VM is to click the claim any button on the top of the page if I need a particular VM from the pool it's also very easy I think please select the VM I'm interested in and click the cling machine button the selected VM would then be moved to my virtual machine list and automatically turn on if it's stopped now let's create some claimable VMs it's also very straightforward what I need to do is to go through the same VM creation flow as creating a VM for myself I start with choosing a base from different types of templates supporting the lab including arm templates formulas custom images and azure marketplace images then I fill in my desired values for some properties such as the VM name username and password VM size and artifacts the only difference from creating my own DM is to specify some advanced settings here what I need to do is to switch the claim options toggle I can do more things in advanced settings let's say I want to create 5 km of VMs with the same configuration for a small group of people and those VMs cannot be used after the end of next week to achieve that I give the number of instances as five instead expiration date for all these lives it means that the midnight is next Saturday all these VMs will be automatically deleted regardless whether they've been claimed by buddy or still in the claimable pool here you can see that the default IP address configuration is shared which means that all these five VMs will be created with the same puppy IP address if the share public IP address has already been created in the lab these VMs will use that one otherwise the lab will create a new public IP address for them at this point I'm good to click the Create button and kick off the creation for these five years that share the same puppy IP address it will be expired at midnight of next Saturday once created these claimable VMs will be automatically shut down and wait for lab users to claim it now let's talk a little bit more about the shared public IP address well understand that not all the organizations allow the VMS accessible through the internet there are also cases where shared public IP address is not desired in your scenario at all so left has Labs provides flexible settings for level means to define which IP address configuration is allowed in the lab in the lab version network settings leather means can select the virtual network in the subnet to change the options they allow their lab users to use including whether the subnet can be using this lab for creating VMs whether shared public address is allowed and whether each lab VM is allowed to be created within exclusive public IP address once the VM uses a Sherpa VIP in the lab it will be automatically assigned to a unique port number which will be used together with the sheer public IP address when you connect to that VM you can see which IP address and port number to use from the essential section on the selected lab VMs page or for Windows VM just click the connect button on top of the page to get a RDP file that contains all the required info directory it's a quick recap in this video we've talked about the new features available in that ASAPS and how it can help you in multiple scenarios to enable a secured self-service experience with fast easy and agile dev tests or training environmental adjure hopefully fun and helpful if you want to learn more please visit our service introduction page at Alcott ms / DTL and subscribe our newsfeed to get a latest service update thank you
Azure DevOps Azure Pipelines, Azure Boards + GitHub
hi my name is Abel and I'm a senior cloud developer advocate specializing in DevOps I am so excited to show you what's new and Azure DevOps we've always said Azure devops is everything you need to take an idea and turn that idea into a working piece of software in the hands of your end-users for any language targeting any platform and now we've made it even better in the name of the game has been all about integrating with github so let's go check it out alright so here you can see as your boards where you can track any unit of work in your software project now wouldn't it be cool if we could link Azure boards up with our github repos Oh guess what now you can and it's as easy as this if you want to set up that linkage let's first go into our project settings and from here we're going to do some integration integrations with our boards now the first thing that's going to ask you is which github repo do you want to integrate with now I'm gonna go ahead and use my personal access token to connect up to my github repo and let's see if I can remember my token I think it's that and let's go ahead and authorize that and now it's going to ask me which we po do you want to connect to so let's go ahead and connect up to my able tailwind front end so we'll select that we'll save it and that is all we need to do to connect up as your boards with my github repo so let's jump back to our boards and you can see my Kanban boards alright so notice I have this super duper important bug that needs to be fixed immediately right so it sure would be cool if the changes that I did inside my github repo would automatically link to this work item so I could track all of my work and you totally can now because we linked up our Asscher boards with github so let me show you what I mean let's jump into github and make a change so here's a demo comment and we'll go ahead and save this and when we save this we'll go ahead and create a branch to start a pull request so we'll go ahead and create a new branch and we do need to leave a good comment so let's leave a comment that say this fix is as your bug number and what number was that I think it was 64 and now let's go ahead and create that branch for myself to fix so what am i doing I have now created a branch with my code fixes now it's ready to start my pull request now if I jump back into my add your boards check this out if we look at the details don't--don't done BAM there's a change that I just did inside of github and if I click on this this is a deep link that will take me directly inside of github to see what branch it's in as well as what my changes are so now let's go ahead and jump back into github because what we want to do is we want to create a pull request so let's go ahead and create a pull request so now my teammates can review my code changes to make sure everything that I'm doing looks good now let's jump back into Azure boards again because if we look at the development details check this out here is where we initiate the pull requests so everything that we do inside of github is now tracked inside of Azure boards pretty cool huh the only thing left that we need to do is go ahead and finish this particular poll request so we'll come in here let's merge the poll requests in the master so now we've finished up that particular pull request and bam did you see that just happen automatically the bug because we resolved it inside of github it automatically resolved on our work item board as well this right here is so incredibly cool github issues they work great but if your project gets a little bit more complex having the power and the flexibility of Azure boards it's awesome and now with the github repo and Azure board's linkage you can use both so great tracking all this work is awesome but we still need the ability to add si ICD for our repos even for our git repos and how we can do that super easily and let me show you what I mean let's jump back into our github repo and what we're going to do is create a CI CD pipeline into Azure pipelines directly from github so what we need to do is we need to go to the marketplace and from here we need to search for the Azure pipeline's marketplace extension so both go ahead and jump in here we'll do a search so this is currently already installed so I won't go through the whole install process but I will show you how easy it is to configure it we'll go ahead and say let's go ahead and configure a short pipe lines and it's gonna ask for my password let me go ahead and enter that in and now it's gonna come in here and we're gonna say you know what let's go ahead and add a CI CD pipeline for my specific repository we'll go ahead and save that and now it's gonna route me back into Azure DevOps and it's gonna ask me to log in so let me log in with my credentials and now it's going to ask me which organization do you want to use now I have a million organizations and I'm in hopefully you guys don't have nearly as many as I do so it'll be easier to find but let me find my demo account so it's going to be called as your DevOps demo a and the project is going to be my connect 2018 project and we'll go ahead and continue and now it's gonna walk me through a wizard to create for me my build pipeline so we'll go ahead and choose my github repo and notice it analyzed my repo and it figured out what technologies is being used inside of that repo this repo is holding a node.js app so it's going to provide for me a no J's template that I can just start using and immediately it creates me a build pipeline written in Yammer this is pipeline as code so as a DevOps person this makes me super excited because I can check this file in and now any changes I make to it to the build pipeline it will be version right alongside my code if you need more information about it we have a handy link that will take you directly to the docs pages as well so here you can find everything that you need all right so let's go ahead and jump back into our build pipeline we'll go ahead and save and we'll run this so we'll save it and we'll run it and so what is it doing right now it's taking this yamo file and it's taking this particular yamo file and saving it in my github repo now after it saved it to my github repo it's gonna kick off the build and the very first thing that's gonna do is it's gonna go to github and download all of my source code including this camel file it will then load this build up and start executing all the build steps described in the yamo file this right here like I said before as a dev ops person this makes me ridiculously happy pipeline as code so this build system right here this is no different than the visual editor that we used to use before and in fact it's still around and you can still use it it's the exact same build engine underneath doing the exact same thing it's just a task runner doing one task after another but with the Gamo build it describes it using a yamo file instead of using the visual editor let me show you what that visual editor actually looks like so here's my build and I created a build a custom build that uses this particular editor the visual editor and you'll notice it does one task after another after another after another so customizing a build is super simple with Visual Studio with Azure DevOps because this right here is a task runner just does one task after another so if you want to customize this all you would need to do is add or remove tasks now out of the box there are hundreds of tasks that you can just download and start using but if you want to do something that doesn't exist out-of-the-box go to the marketplace in the marketplace our partners have created over 500 build and release tasks that you can just download and start using pretty cool and if what you want to do doesn't exist out-of-the-box and doesn't exist in the marketplace you can write your own custom tasks as well custom tasks nothing more than PowerShell or no js' so what that means is anything that you can do from the command line you can easily get this build and release system to do as well all right so now if we go ahead and look at our build it should be finished and that's great right it's a pretty rudimentary build it doesn't do a whole lot it just kind of packages everything up but what I really want to do is I want to customize that build Yambol file right I want to make it do exactly what this visual build is doing I want it to install NPM I need to set up my eat my database connections I then want to build my app this is a no js' app that we compile into static web pages and then I want to take all this up bundle it up as a zip file so that's ready to be deployed and check this out if you have a visual editor you can just save you as yamo and it'll take this visual build and create all the gamal steps for you where you can copy and just make those changes so let's jump into the build Yama file to make those changes so let me jump in here let's pull our changes down from our repo and now check this out here's our ashore pipelines demo file and here's what's in the repo right now if we want to make changes guess what we can just go ahead and start making changes all right so let's customize this and let's add a new task and notice we're getting autocomplete and we're getting syntax highlighting and if we do a control space we'll actually even get intellisense so this right here makes editing the gamma file so much easier we have in Azure pipelines vs Cote extension that gives us intellisense syntax highlighting and autocomplete so we're going to add a new task let's do something like I don't know maybe we'll add a new get task and we can do the inputs and we can see what the input can be right and notice it even gives us red highlights or red squiggles so this is fantastic intellisense syntax highlighting and autocomplete makes editing these yamo files so much easier alright so what I wanted to do is I really wanted to customize this with all of my steps above so here is all we need to do let me paste that in here and we'll go ahead and save this and we'll upload that code and we'll commit it and what did we do we customized or build and let's push those changes back in to get help now as soon as my code hits github it should kick off my build so let's go ahead and jump back in to Azure pipelines to see if the build has been kicked off and there we go we customized the build and it's kicking off the build so what is this doing right now this build its gonna go ahead and download the latest source code from github including the build ml file now it's going to load that Gama follow-up and it's going to execute the build steps described in that build a mo file oh this is awesome so there's going to go ahead it's gonna get my sources it's going to install NPM it's going to setup my database connections it's gonna go ahead and build my app turn my node.js app into a static set of files and it's going to archive all of that so now it'll be ready to be deployed all the way out into production all right looks like the build is finished if we jump into a summary we get a nice summary page that shows everything that's happened during the build but notice we haven't created a release pipeline yet all right so let's go ahead and create our release I'll click on the release button and what this will do is it will take us to our visual editor now the very first thing it's going to ask us is do we want to apply a template which makes our job so much easier now for this demo I'm gonna go ahead and deploy my code into Azure app service so I'll just use the app service template now the way you set up these releases is first you describe what your stage is going to be so my first stage is going to be for my staging environment so we'll name it staging and after we define what the environment is going to be we can go ahead and go into that particular staging environment and now we'll describe all the steps that we need to take to deploy our application into this particular stage now since I'm just deploying an azure app service it becomes super simple it's one task so the first thing I'm gonna do is I'm gonna pick my subscription here's my Azure subscription and after I pick my subscription let's go ahead and deploy this into the correct app service so let me bring up the list of app services and from here we'll go ahead and deploy this into my staging environment which is right here and that's literally all we need to do we can jump back into our pipeline because we've just described one environment you describe your environment you want to deploy to you describe what tasks that you want to use to deploy your application and now you get to define who are the approvers so before and after each environment you can add a set of manual approvers so I'll go ahead and add myself as an approver and you can add a list of people where every single person in the list has to approve before it can flow through the gate or you can add a group of people where if one person approves then it will flow through the gate or you can use a combination of lists and groups as well so I have a staging environment I do need to have my production environment so let me just go ahead and clone that and let's describe this correctly so we'll call this my environment and we have to go in and update the tasks that we're going to use to deploy my application into my environment so instead of deploying this into staging let's deploy this into my production environment so of course some of you are probably asking what do I need to do if I need to customize my deployment and do special tasks well guess what this right here is just a task runner exactly like the build so what that means is to customize it you would just add or remove tasks that you need and just like the build out of the box you get hundreds of tasks if what you want to do doesn't exist out-of-the-box jump into the marketplace and if what you want to do doesn't exist in the marketplace write your own tasks tasks nothing more than nodejs or PowerShell so anything you can do from the command line you can easily get this build and release system to do as well so we've just completed this let's go ahead and save this and let's go ahead and kick off our release to see what that will look like so we'll come into our pipeline let's go ahead and create a release and so now what is it gonna do it's gonna grab the latest build that we have and take those bits and start releasing it through our dev environment and it will go ahead and execute the steps that we pimped so here it is queued everything up and now it's going to go ahead and deploy my application into my staging environment and grave that looks like we just deployed into our staging environment let's jump into our staging environment we fresh that to make sure we deployed and voila here's our code deployed into staging fantastic so we can go ahead and approve this looks good and staging and after approving it now it's going to go ahead and flow into our production environment and there you go there's our app deployed all the way into the production environment so as you can see creating a full CI CD pipeline that will take your code from github and deploy it all the way out into production super simple to do so there you go as your DevOps we are the only cloud vendor that makes it so simple to go from nothing to a full CI CD pipeline for any language targeting any platform and yes this is for your code sitting in your repository of choice deploying to wherever you need it to be deployed of course it can be a sure and man we've made it so simple to deploy to Azure but it can also just it easily be behind your firewall in front of your firewall remember any language targeting any platform and not only that if you have an open source project guess what you get all of this for free you get 10 parallel pipelines out-of-the-box and if you need more just ping us and we'll give you more so what's that Donavan Allah says go rub some DevOps on it no man all you devs out there go to dev Asher comm and let's drop a bucket load of dev ops over all of this using at your dev ops thank you
Azure App Configuration - Making Centralized Configuration Easy
so my name is Jimmy Campbell I am a developer on Azure app configuration team I'm excited to be here today to talk about our service and also to celebrate net core 3.0 I've been a dotnet core developer since beta 8 and definitely a lot of change since then and I think that a drive configuration is a great tool for a Donette core developer to add to their arsenal whether they're developing modern global cloud applications micro services or maybe just sticking in a DevOps pipeline whatever configuration is all across the stack so a centralized configuration service really makes a lot of sense so what ended up happening was we saw a lot of problems with configuration the way applications are moving today so some examples of some of these problems might be how do I centralized application a centralized configuration when I'm running on an agile function I'm also running on kubernetes I'm running on some VMs that I own and I kind of need to share settings between them or maybe something like I'm running apps in North America and I'm running in them in Europe I need to share settings but I also need them slightly nuanced because the application just needs to behave differently in North America or Europe to more advanced use cases like wherever I'm getting my configuration from how do I dynamically update it during runtime and so configuration is a very fundamental piece and there are some common problems we saw people trying to develop their own solutions that comes with a cost we also saw things like people try to use things that weren't necessarily meant for configuration and then they would eventually get to a point where they got stuck because the solution they were using just wasn't designed for that so it really made sense to make this service a drop configuration which is then in preview now since April I've yes April and we got on this and now it exists so a centralized configuration service for.net core developers specifically we offer things like a configuration provider simple similar to the JSON file provider and dotnet core things we have a STK a configuration client where you can write read settings but I think first of all what I should do is get started saying what is a Drac configuration it's a natural resource what happens when I create it what do I actually get when I start using it and so what kind of do like I getting started right now so I'm going to go into my command line and get started with a draft configuration from the CLI dotnet core has a pretty good CLI and we're all developers here so I think we can kind of enjoy the automation opportunities that come with the CLI so I'll go ahead and get started creating my first Azure app configuration so I'm using the add your CLI now as denoted by a Z and then app config is our command group and I'm going to create an azure app configuration dotnet Contin demo my resource group is going to be Jimmy C a config when I already have configured and I'm going to have a location of central us so what am I getting when I create as your app configuration so it's an azure resource and I'm going to get a place where I can store settings settings in our model are stored as key value pairs so you may have a message which is hello world or something like that just a simple key value and that's really what we stored the foundation we do offer metadata on top of that so you're storing your settings and they're available to you through a web endpoint so if you look on the configure 8 that app configuration instance that I just created my endpoint that has been allocated to me is https dotnet conf demo that AC config die oh so now I have a REST API listening on this endpoint that was allocated just for me where I can start creating settings in a central manner start consuming them and all my applications my dev anything that really speaks the rest API can start writing and reading settings from this app configuration instance and of course the CLI is one of the things that can do this we can go ahead and create our first setting here now that I just booted this up easy app config kv-4 key value set I want to set a key value so the name of my store is dotnet comp demo I have a key online create color pretty typical setting name and a value of blue all right so now we just use the CLI the azure CLI to create a app configuration instance and create our first setting alright this kind of shows some of the automation with the service so you can kind of run these things in a script or whatnot but now we're going to go into the portal and we can show the UI for this thing and we can kind of get the best of both worlds so I'm going to go into the portal here then they refresh the page we're going to see this dotnet comp demo now everything I've done in the CLI can be done through the portal and also the things that I do in the portal can be done through the CLI we look for feature parity across both and so if I wanted to create my app configuration through the portal I could have created it to create a resource and I create settings through configuration Explorer alright so here we see the setting that I created color and then blue simple sea key value pair to represent a setting and then we see some metadata on top of it label last modified content type the one I actually do want to mention before we get too deep here is is label so key value are definitely important because you need those to have a setting but label is something important to our service because it can be used when you're querying settings and it gives you a way to add a new dimension to your configuration for example I may have an application that runs a premium and a standard SKU and I might want the color to be green and standard and I might want it to be red and premium or something like that and so I can kind of model this with label it's not just a metadata it's not just like a tag that when you get it it's actually used in queries so when you query configuration you can say give me all the settings for the standard label or give me all the settings for the premium label so this is kind of what I talked about before where I have nuanced configuration maybe like a West US or North America and Europe stuff like that so label is something important for our service layer so now we have the ability to create settings we know what it kind of means to have an app configuration instance how I can create settings for it I want to go a little bit further into the portal here before we leave it just kind of get the the coverage we see some other things down here and operations such as feature manager feature manager is a value on top of just simple configuration I could probably go into that into another time but we also have some configuration utilities down here we are storing configuration and where a configuration service so it makes sense for us to have utilities like for example I need to restore my configuration to what it was yesterday because it worked yesterday but doesn't work now you can do that through the restore tab so you can select a day of what my what I want my configuration will look like for example on September 11th I didn't have any keys so it's saying hey do you want to delete these keys I can compare settings I can compare across app configuration stores I can compare across labels so like I said I have a premium and a standard app I want to compare these things I can see o of red and green and I can also do import and export import and export is really valuable it's actually my favorite thing because especially when you're bootstrapping app configuration from a dotnet core developer point of view you probably have app settings dot JSON something along those lines and we support the ability to comment from a configuration file import settings we also allow export of settings to a JSON file and this can also be done through the CLI that's that feature parity I talked about all right so that is kind of the background for app configuration the portal CLI interacting with it and now that we know how the settings are represented and how we can kind of get started it makes sense to move into a dotnet core app that's actually utilizing this and so before I do that let me go ahead and use to another app move to another app configuration that I already allocated this one doesn't have any settings yet but I'm gonna show the import I talked about from a configuration file I'm going to import some settings app config web demo Jason I'll actually show that file it's just like appsettings JSON file if you will and I imported it into my configuration store and now you can see I have all these settings here they all start with web demo : that's kind of a prefixing practice I may have multiple apps configuration set stored in my single app configuration and one way to separate them is by namespacing them so all these are from my web demo app and they all start with web demo and now I have these settings here I can start consuming them in a dotnet core application so let's move into an asp.net core 3 application that I have this is a ASP nightcore 3 razor pages application it's doing very little actually the main point to get out of this app is that it's pulling the configuration from app configuration and the way we're doing that is we're binding our configuration to a model called settings and you can see there's kind of a one-to-one mapping here refresh rate languages these these all map to settings here and we're binding them to that model and we're using those properties in our razor view so essentially we have like a one-page app pulling configuration and just using those settings to show what we're seeing on the webpage the very simple way to demo the configuration now the typical practice and dotnet core for configuration is to use a configuration provider dotnet core comes with a few very common ones like JSON file configuration provider environment variable configuration provider command line etc we offer a configuration provider it's the azure app configuration configuration provider and so that is what's going to be showing right now on my program CS on top of the one on top of the environment variable and JSON file providers that come by default and default builder I'm wiring up as your app configuration so it's these lines right here this API add a drop configuration is exposed by the nougat package right here Microsoft Azure app configuration asp net core so i just need to add a reference to this to my asp net core project and that i can go ahead and start using this API okay so I go in I call a - your app configuration and then I need to do a little bit of configuring to actually set up the app to pull the settings from my app configuration instance the most important thing is I need to connect now what I'm doing right here is called connect with managed identity this is a feature that we utilize on Azure platforms that are running applications that support managed identity these identities can be assigned to these agile platforms in this case I'm running an app service so I assigned an identity to my app service and I granted that identity access to my app configuration instance so I can actually go into my app configuration instance and I can look at the role assignments and I say oh I granted access to my app service and so using this flow allows me to short-circuit the other way of connecting that I'm going to get to it allows me to like I can short-circuit connection string basically and I can take advantage of the fact I'm running an app service I'm running on dotnet core up there but if you don't want to do that that's perfectly fine you can just use connect and you pass a connection string the connection string comes from our portal or our CLI you can list it there and then you would just provide it in to bootstrap your app but since I am running this app for the demo in app services I can utilize this way of connecting and one of the great things about this is I don't need any configuration to bootstrap my configuration because as you can see I'm not using a connection string all I'm doing is specifying the end point of my app configuration instance ok moving on to some other options used in this we have a little bit of filtering here this use is just specifying a key filter because I mentioned that I kind of wanted to segment my applications and in this case I have them all name space by web demo : all right and so I'm selecting only those then finally we have this configure refresh and this links back to what I talked about before where we have a notion of wanting to dynamically update configuration during the runtime of our application because some application designs depend on this behavior and so before I go into configure refresh I actually want to talk about where the Refresh is triggered and so I'm going to go into program or startup CS and we see this use Azure app configuration this is the only other place where any a track configuration code is found in the application and what this does is it wires up a middleware inside of your asp net core app that uses requests to actually trigger a refresh of the configuration if you are using our configuration provider previously you may have been aware that we were using a polling model before and now we switch to a middleware model and the reason for this is that when you're polling for configuration especially in a micro service world you end up maybe just using a little bit of unnecessary resources if you're doing that continuously even if the application is dormant with a middleware based approach we can be smart about when we want to refresh our configuration if you have 10 apps maybe not all of them always getting requests your load balancing or something like that only the ones that are getting requests need to really be triggering configuration refreshes when the other ones start getting requests then it makes sense for them to start triggering refresh as well and so that's what this does right here request based refreshes now we can go back to we're actually configuring the Refresh because we know that refreshes are being triggered but what actually hat what does it mean to trigger a refresh and that's what we're configuring right here essentially what we're saying is what do we want to keep up-to-date what's setting so we want to refresh every setting maybe one or two settings that are really important that need to be dynamically updated during the app that's what's configured right here in this case I'm watching a setting called web demo Sentinel and not only am i watching that setting I'm specifying something called refresh all which means when that setting changes when I noticed a change in that setting I want to refresh my entire configuration just like I did when the application started up so I want to go back to app configuration and just get everything again that's what's happening right here and so with that that's the full set up of app configuration in my dotnet core app now I can actually see it in action so I have this application right here it's blank right now because I didn't have any settings before but I uploaded some JSON settings and if i refresh the page you'll actually see that I have some configuration form as wrap configure some settings some data that came from the settings it came from my ad hoc configuration came because I uploaded that JSON file but to kind of give a better view of that we can go in and edit some more things right now I show the values for these let's change the background color to green maybe increase the font size just kind of do what we can to make the changes very apparent I also make better message alright so now what actually happens if i refresh the application now nothing is going to change because we're only watching that sentinel value like I mentioned but as soon as I update the Sentinel value I just need to change it I don't really it doesn't matter what I change it to the application can start picking up the changes to all the settings that I updated so we're going to start seeing the change to the green color hi net comp bigger font so this kind of just shows dynamically updating settings during the runtime of the application so to get started all you really need to do pull in the nuga org the new get package Microsoft Azure the app configuration dice B net core that's if you want to build an asp net core app if you're just building a dotnet core app a screen at core is and involved we also have another package called microsoft of extensions that configuration dialog configuration it uses that common configuration provider namespace that one doesn't pull any ASP nets our core stuff into it so if you're just building a console app or maybe a hosted service makes sense to use that it's still going to give you the ability to do refreshes it just doesn't give you the request based refresh middleware but you can refresh the configuration yourself on demand all right so that's the dotnet core seen but for dotnet core developer just developing applications isn't the whole picture there's also you need to build and you need to be able to release your applications so we've been seeing a lot of mention of Azure DevOps for this these kind of needs and we actually have a DevOps build and release task it is on the DevOps marketplace you can go look for agile app configuration and you can add it and right now to your organization or project to start using it and what this does is it utilizes all the settings we put in our app configuration and injects them as variables into our build into our release so I can actually go ahead and create a new build pipeline to kind of show off using this so create a new build pipeline here delete all the steps just to add in a girafft configuration my subscription my configuration instance name so now with this task every setting that's present here is going to be a available to my build pipeline and if I use it in other builds it's going to be available in those build pipelines so I can share my settings across builds now very easily if I'm centralizing them in my app configuration and I can also put my app settings there and so it kind of makes it easy to manage them in one place and have one interface that you're working with for settings one set of tools one see a lot one form of automation and now to demo this I will add in a PowerShell task right here and I'm just gonna echo a setting from Azure app configuration message I don't have that yet but I can create it message hello DevOps cool and now when I run when I save and run this build I don't want to commit to master but I'll save and run this build and then what we'll see is it's going to pull very quickly pull the settings put them in as build variables and then say hello DevOps and we'll kind of have that and like I said what this allows us is we can easily have one interface for managing our settings for the applications we're building we can share these settings across all these builds all these releases just make sure to bring them in through this one build task and then we can kind of keep with the semantics of how we want to add dimensions to our configuration with label things of that nature and I even want to go a little bit deeper into the DevOps and travel ability without configuration I mean configuration is really all across the stack so applications using configuration DevOps is using it and there's even more room to talk about it here because as your DevOps is very easy to interact with the azure CLI you can spin up very quickly as your CLI and line script to start doing something and so this kind of ties in to a scenario where you may have an application and you can't afford to pull settings at the runtime of your application you can't make a HTP request to pool settings you can't talk to the service possibly as a requirement well if you still want to use as your app configuration it's perfectly reasonable to have those settings pulled at Build time or release time package them in app settings JSON file and deploy them with your application so I can go ahead and show kind of what that might look like right here and also show using the address CLI to talk to app configuration so let's hook up an address CLI tasks let's do a [Music] inline script and we're going to use a functionality you saw import on the portal but now let's do an export on the CLI we're going to do export all the settings in our app configuration to a JSON file so that's what we have in this right here app config Cavey export we're saying to a file we give the file path settings the azure app configuration not Jason it's a JSON file the separate word separator we want to use and it can fixed where it comes from finally let me go ahead and publish these artifacts so that we can see them at the end of the build and it demonstrates as I mentioned you want to pull settings during build you don't want to pull them during the runtime your application you want to kind of have that very consistent or it's just a requirement for when you're running your apps so let me run this build and then so this will take just a second for the addressee allied to login that's probably the longest part of using the address CLI and this build but it will produce the Azure diet can app as your app settings that as your app configuration JSON file and if you were doing this in a real scenario you just put that right next your app settings Jason and then BAM you now have dynamic settings but they came from during build time so that's pretty much all I have right now for Azure app configuration centralized configuration management solution we have utilities for managing your configuration a way to share your configuration across all kinds of different platforms DevOps it doesn't matter where in the stack you are Azure app configuration can help out provide the configuration there and I guess real quick I do just want to show the build artifacts of this did say published build artifacts okay well there was supposed to be adjacent there I may be typed something wrong in the build pipeline but I think the idea is there it basically produces the exact same file is this and it would be present and the build artifacts I mustn't this types of thing but yeah that's pretty much it for me all right this has been a pretty amazing Jimmy like look and I'm gonna tell you this because matheus I think I said if I say it wrong I'm so sorry I thought this presentation was going to be about appsettings Jason as your app configuration is amazing it's cool to have this other place to put that stuff and manage it was about I'm saying so Jason kind of find them and then the other one which was interesting which you answered there at the end but I'd love for you to reiterate what's the best way to do a fallback to offline settings you kind of showed this a little bit in your demo why don't you see what method maybe he's gonna tell me how to say his name I'll say Matthew American nice so how do you do a fallback to offline settings that's a good point so there are multiple different considerations when you're talking about fallback to offline settings there's what I just talked about about putting your settings there during build time and release time so you don't have to make a query during runtime so I just demoed that that's exactly how you do it I don't know I'd like I said I probably miss type something in the build pipeline but there would have been a JSON file there that could have been used as absolutely Jason another aspect would be something that we have in our configuration provider which is called a offline file cache which if you're running on the same VM or something and maybe one time when your app is starting out it doesn't have network connection you can use offline file cache in our configuration provider library and it will pull the last retrieved settings they write them to a file encrypt them and it will pull them in case it doesn't have a network connection so kind of two different practices for offline so probably met the first one but the second one is there as well that's right that's cool cuz I thought maybe you just pull it at Bill but then you also have a cache to fall back on as well yes that's cool is as your app configuration recommended for secrets like connection strings another good question all right so as your app configuration is a completely secure way to store any key value encrypting things I mean there's no worries there authentication authorization all however there is another shirt service named kee volt which is more which is better for management or management of secrets they have things like if you're managing things like certificates Auto renewal of certificates or if you have things like connection string they'll expire your connection string and they have very granular access policies so they are the one like the best place to store a secret so there's nothing wrong per se with storing connection string and app configuration but ultimately for secrets that's exactly what key vault was designed for whereas we were designed for just configuration extensive querying mechanisms things of that nature and one of the things that we're actually gonna be coming out was soon is a way to reference key vault secrets in the dotnet core configuration provider so we'll go through the key ball for you in your app it kind of abstract skeeball but your secrets can still live there and that's cool because Nick had the same sort of question what's the difference between this new app config and key vault so keep all this four secrets app config is for how would you finish that sentence yeah key ball is 100% of that designed for secrets as wrap configuration is done designed for configuration there's nothing limiting you from putting anything you want in app configuration but ultimately the like as we have configuration management utilities key vault is going to have secret management utilities the expiration secret rotation or certificate rotation things like that so those are values that we're not gonna be able to give because that's not what we were designed for that's also does this configuration service integrate directly into Azure function so I don't need to manage that config there okay so two things our dotnet core configuration provider is net standard you can use that in app function and pull it right when your app function starts off the second thing is I exported something to a JSON file in the last presentation you can export it to a app service through the CLI or through the portal and so other app other platforms with an azure we want to integrate with to be able to push our stuff there add your function aks you name it on our roadmap is the ability to do this automatically via sync tasks and to just have your configuration live there still manage it centrally in a configuration amazing last question is there an app configuration nougat package for the.net framework so there is yes there is net the one I just mentioned is net standard so you could use it in the.net framework also we do have a configuration builders and you get package the configuration builders was introduced I believe in four seven and it's kind of a net framework way to do configuration well built into the framework there and we do ship something for that so it's a drop configuration specific dotnet framework configuration builder amazing thank you so much assuming we have some feedback coming in on may I say there Mekas jokes that I was asked to read okay the joke's on dotnet Kampf I I told her that they may not work but she was adamant so maybe we should have a talk with her afterwards
Ava Lee Scott Is there a role for tech in building communities
My name is Ava Lee Scott and I am an actor, a creator, What exists in me is pure story. What our technology does for someone like me is it allows me to create the worlds that I have always seen, but I had limitations. AltspaceVR is a virtual reality social platform I'm excited about AltspaceVR because of the simplicity of bringing people together. Giving people the power in their own hands. Having people from all over the world come together for free, speak of things that they can't speak in their country. Have the freedom to talk about their preferences of the way they want to live their life And that AltspaceVR actually provided a sacred platform where people can come together And have these beautiful experiences So I think it's a very safe space for people who are vulnerable and are trying to find a voice. This is an exciting time for creators in technology And I feel so honored to be amongst the group of people that see outside the box. With AltspaceVR I felt that I can open their hearts.
Autoscaling with virtual node and Azure Kubernetes Service (AKS)
hi everyone my name is Yuri Bhatia and I'm a program manager in the cloud native compute team and today I'm we talk to you guys about how to auto scale with aks and a new public preview feature we have called virtual node in the agenda we have first the background of Azure container instances and then I'll go through an open source project called virtual couplet and finally we'll talk about the virtual node in public preview with a couple demos to show you guys what it's all about so the first thing is containers so sometimes all you need to do is just run a container and VMs just take up too much management for just trying to run a single workload and that's when we came up with as your container instances it takes away the need of VM management it starts in seconds and we support Windows and Linux it's also hyper-v isolated so that means you have the same level of isolation that you get in VMs today it's just at the container level you can also configure the amount of memory and CPU that you want so you can say you want four cores and maybe 14 gigabytes you really get to choose which is pretty awesome our virtual cubelet project in the open is something that we released last December and it's scart it's gained a lot of support since then basically what we've done is we figured out how to extend kubernetes and connect the api's of kubernetes to api's of any other kind of service for Azure we're connecting it to outer container instances but we also have another provider for the IOT edge which is pretty great and we also have support from the rest of the community so not only Microsoft but providers from Amazon hyper SH VMware have all joined the cause of helping us build virtual couplet and the github link is on the slide so with a CI and virtual cubelet and aks we've basically come together and built a preview within a short called virtual node so now today we're announcing that it's in public preview and you guys can basically get this virtual node within your cluster through the portal or the CLI this is the way it works the virtual node architecture is basically you get the management of a chaos and the masters are already controlled for you it's a managed control plane but then you also get an extra burst capacity through a CI and virtual node so now you can have one to X amount of VMs in your in your cluster and then you can install virtual node to be able to scale out basically infinitely into a CI and there's no VMs to think about so when you're scaling you don't have to scale VMs and then think about the workloads that go on top of them all you do is just scale out as your container instances and you don't even realize it the management plan is still kubernetes which is pretty awesome so now what I'm gonna do is take you through a demo of first how to install virtual node in Azure and then how to actually use virtual node in your own applications and how to auto scale from your cluster to virtual node itself and to add your container instances so now that we've already installed virtual node in my cluster I have went ahead and installed an entire application it's basically just a simple front-end that simulates a Black Friday event so we're selling service books we're selling X boxes and it's just this simple website from here what I've gone ahead and done is I've started a big amount of load so I have this load tester basically paying this front-end a lot and we're gonna see how our cluster scales would that demand and with that customer traffic so what I'm gonna do is head over to application insights and they have this thing called live metrics stream and from here we can see the amount of incoming requests how long the requests are actually during it for and we can see the amount of servers that are coming up - and if you look at this we have a couple coming online we started with just one of these and now a couple of them are starting to show up which is pretty nice I also have another dashboard to show you guys what's going on so this was a sure's on live metrics stream but I'm also using Griffin ax which is an open-source dashboarding tool and over here we can see that the RPS which is per second per pod is going exponentially up and so the RPS per pod and RPS in general is going up the response time is actually going down because we're getting a bunch of more infrastructure starting up here and they're all starting up in pods in ACI so we have eight already there's two on the actual VMS in my cluster so two pods in there that are helping this cause and they're all working together to get the request per per second down per pod so if I go ahead over here we can see the amount of containers that are pending so this is where kubernetes is stepping in and helping us a lot to Auto scale out I'm using the horizontal pot on a scalar which is an unknown thing in kubernetes that allows you to horizontally scale out your pods and I'm scaling on request for a second so once you hit ten requests per pod it says oh now we need another pod so anytime you get 10 requests per pod that's why we're spinning out so many different containers and if I go over here I can refresh this page it's my resource group and now we can see all of the container instances that are actually spinning up and they're all spinning out in the same resource group which is pretty awesome we have so many that started up within a couple seconds now if you think about if you did this with just VMs in your cluster it would have taken you first of all a couple minutes to start up the VM and then another another minute to start up all of those containers but for this amount for this amount of containers you would need probably 5 to 10 VMs all starting and starting up one after the other in this case we just had I don't know 20 30 thing pots start up in tandem in parallel which is pretty great so you can use virtual nodes to auto scale out from your cluster into a CI and hopefully this gives you an easy solution for scaling in kubernetes so that's how easy it is use virtual node and if you want to get started check out these links we have the demo repo which is right there for you to install all the different bits and we also have the feedback form so if you have any feedback for us please reach out thanks for watching
Autoglass (Satya Nadella 2019 Inspire + Ready Corenote Video)
[MUSIC] >> My name is Martin Lee, I work for Autoglass. I've been with the company for about five years. So when I first started at Autoglass, I started as a dispatcher. I did the reporting side of it. I'd do all these reports every day, and it's just time consuming and that was making most of my day. I thought if I can shorten my time, I can get on with other things. That's where PowerApps come in. So I started looking into it. I thought, "Oh, yeah, it's quite easy." I was actually started to build an app and it was actually really great. I built an app called Technician Weekly Vehicle Check. A technician used to have to fill a form and take a picture of it, send it to his Operations Manager. He'd have to put it on an Excel spreadsheet and it was just a long process. Now, that's just put it in an app. Technicians love it. It just literally save their time from half an hour per job to 10 minutes, saving us $1.6 million a year in potential revenue. I felt excited. Everyone's using this app I created, and I'm like, "Oh, wow. I've done that." People just kept coming to me to build these apps. Now, I'm going into IT, which is a different role. This is amazing where my career has gone now. I've built about 40 apps now deployed in the company. The apps are working so well here in the UK. Safelite now wants to deploy our Technical Helpdesk in the USA. Just the thought of my apps being used around the world gives me such a proud feeling. [MUSIC]
Building Bots Part 1
it's about time we did a toolbox episode on BOTS hi welcome to visual studio toolbox I'm your host Robert green and jo...
-
hey everyone welcome to Microsoft Connect my name is Nina Zakharchenko I'm a senior cloud developer advocate at Microsoft ...
-
It's lunchtime, and this is Brad Anderson's lunch break. Here in Redmond we're visited by some of the smartest peo...
-
[MUSIC]