SCOTT GUTHRIE: Let's talk about one more company that's using technology to transform their products. Which is Adobe. Adobe is one of the largest and most innovative software companies in the world. And over the last 3 years, they have been working hard to transform all of their products to deeply use and take advantage of the cloud. And I'm really excited to announce today that Adobe is announcing that they are adopting Microsoft Azure as their preferred cloud platform going forward and will be running all of their Adobe SAS-based solutions using Azure. And I'm really pleased to invite up here to talk more about today's announcement the CEO of Adobe, Shantanu Narayen, as well as the CEO of Microsoft, Satya Nadella. Here they are. (Applause.) SATYA NADELLA: Good morning. It's fantastic to be here in Atlanta at Ignite. And welcome my friend, Shantanu, to Ignite and Atlanta. SHANTANU NARAYEN: Thanks, Satya. It's absolutely phenomenal to be here. NADELLA: Adobe and Microsoft have had a great partnership. We have innovated together, we have partnered, to really drive the success of our customers over a variety of different technology platforms. In fact, just two years ago I was even at your conference talking about some of the things we were doing on Windows and the devices front with Adobe. This conference today marks a big milestone today in our partnership. With the leading SAS services from Adobe, your document cloud, marketing cloud as well as your marketing cloud coming to Azure is a massive massive milestone. And to me it marks, I think, at the core of it, the product transformation and business transformation that you're leading. So maybe, Shantanu, you want to share a little bit about what drove this decision. NARAYEN: Happy to, Satya. And again, it's so wonderful to be here today. What an incredible community here for Ignite and here in Atlanta. And as you pointed out, it's absolutely the next phase in the partnership journey. All of the innovation we've already delivered across Surface Pro and Touch and embracing Windows 10 as the platform of the future on the desktop. We've been on this incredible journey at Adobe in the cloud-first, mobile-first environment that you talk about in terms of how we reinvent the company. I think most people here still know Adobe for everything we have done with Photoshop and PDF. We have completely rethought how, in the cloud, we can reimagine the creative process as well as document. So the entire content workflow with our Creative Cloud and Document Cloud. But a few years ago, we started to think about business transformation and digital disruption and we felt there was an incredible opportunity to also target marketers in terms of being the last bastion of people for whom technology was not brought to bear. Sort of combining the art and science of that. And in that journey, we created the Adobe Marketing Cloud which is now the leader in its category with respect to enabling all of these enterprises to deliver a phenomenal digital experience. And as we thought about how we needed to evolve all of our clouds and we thought about the next phase of innovation for this. I think was critical to us that we had to think about things like global scale and what we were doing with global scale or trust and compliance. But perhaps most important, things you have talked about. Machine learning and intelligence. And so we're thrilled and excited to be announcing that we are going to be delivering all of our clouds - the Adobe Document Cloud, the Marketing Cloud, and the Creative Cloud on Azure and it's going to be our preferred way of bringing all of this innovation to market. And I think together hopefully we will be able to leverage this entire IT ecosystem and developers and hopefully even make a tremendous spark for all of the partner ecosystems, systems integrators and digital agencies as they embark on digital transformation between the two companies. NADELLA: That's fantastic to hear. Because this coming together of the intelligent cloud with the transformative SAS applications across Document, Creativity and Marketing I think is a massive milestone. One of the things that is really exciting about our partnership today is that we go beyond that. We go beyond that to bring, in fact, our respective SAS applications around business process together. Again in support of our customer's digital transformation. Specifically the integration between Dynamics 365 and CRM and the Marketing Cloud which I think is at the core of what we together can achieve for our customers as they look to engage customers in a very different way going forward. And I know you have talked to a lot of customers and what they are trying to get done as far as their marketing and customer engagement goes. And maybe you want to share a little of that. NARAYEN: Absolutely, Satya. You're right. I think we both would say that SAS has completely disrupted how enterprises are thinking about software, but as it relates to the entire customer journey, end to end, and building this connected enterprise, we think it's absolutely critical that we provide this integration that we can between sales and marketing and visualization. And so, from our point of view as we think about what you've done with Dynamics 365 and the intelligent business workflows that you are talking about and how you made it modular so we can integrate that within the Marketing Cloud. We just think that there is an opportunity to, out of the box, provide integration for all of our joint customers in terms of having one unified and integrated sales and marketing service. I think perhaps even more important is what we have talked about which is, we process 23 trillion transactions a quarter as people are moving their businesses online. But to put that power in the hands of practitioners and users, if we can integrate with Power BI, then you know the power of all of this data is actually now in the hands of our customers. So we're very excited about this out of box integration between our joint solutions. NADELLA: Yeah, in fact, that richness of things like Power BI, power apps, some of the other new app platform tools we have like Flow and Functions, brought together with Adobe and Dynamics 365 is what customers can then tailor their specific business process. But I know one of the things that's grounded us as we've talked about this partnership, and where we've drawn inspiration, is actually from customers who are already using our products. And that's really what has given us the inspiration to say what exactly is that out of the box integration, how should we even think about extensibility, the data models. Maybe you want to talk about some of these customers. NARAYEN: Yeah, you know, I think there are a number of announcements that get made. But we have demonstrated that the deepness of the partnership only happens when we actually deliver product integration and I think that's what we're most excited about. You're right, when we talk about this customer journey, understanding the definition of how we jointly look at customers and lifetime value and promotions and campaigns. If we can standardize on the semantic data model between our respective offerings, that again I think enables people to out of the box start to use these solutions to solve their business problems and the use cases that they have. And as you point out, customer interest. Already companies like Virgin Atlantic and US Bank and VW are telling us that they want these solutions to work well together. And I think, ultimately, it's about delighting these customers through this partnership. NADELLA: Thank you so much, Shantanu. We're really looking forward to bringing the best in class SAS applications from Adobe with both our intelligent cloud in Azure as well as Dynamics 365 and ultimately really helping everyone in the room with their digital transformation agenda. Thank you all very very much, and thank you Shantanu. NARAYEN: Thanks for having us. (Applause.) END
Monday, 21 October 2024
Add Resiliency to Your Applications with GitHub Copilot for Visual Studio 2022
let's say you're writing an application that calls out to a web API and that web API crashes find out how you can make your application Not Crash by writing some code with Copilot all right so this is the web application that we're going to make not crash it has a bunch of pizza menus on it and what this does we have one web application calling out to a web API that returns well pizzas and when I go over here and I keep on clicking refresh it refreshes pizza's just fine but what I wanted to do now is go through and introduce an error into my web API that Returns the menu of pizzas so right here as you can see I have just a minimal web API that has returning pizzas and so what I'm going to do here is introduce using some co-pilot to help me out an air so I'm going to type in a comment and I'm just going to say generate a random number between one and two because I can never remember how to use the random number generator all right and it doesn't remember for me between one and two let's see if it does it now all right so how about we just do VAR random equals new random and see if it does it here all right so now we have it then if random number is one I'm going to want to return a 503 error so all I'm doing now is setting up my web API so it returns an error every time that it's a random number generator is number one and if it comes back be number two we're gonna return good so just setting things up any copilot help me out writing that by me prompting it just a little bit all right so I'm going to restart my web application and we're going to go over to the Swagger tooling and see it air out hopefully roughly every other time that we call it coming back up Swagger that's my cart here's my pizzas I'm gonna try it out real quick execute go down here and I did I got a 503 execute 503 and now I got the 200 to come back so it's airing out roughly every now and then so we're implementing some transient errors coming back from our web API and so what I really don't want to have happen then is my web application you can see right here has crash it tried calling out to my web API got that 503 and crashed but if I refresh it eventually it'll come back up like right here because it actually got the good response back so what I want to have happen and this is the key what we're all here today to see is to make sure our web app stays up by implementing some kind of retry policy to try that web app web API again keep on going to that transient error resolves itself oh hey back to the code and so what I want to do then is right here this get menu method is the one that is responsible for calling out to the pizza service to return to menu and so the first thing I'm going to ask is I'm going to actually open up GitHub copilot chat and I'm just going to want to say what's ah good.net Library for doing retries of http error and see what it comes up for me and it says when it's done typing everything poly so I'm going to go through and bring in poly for my packages to my web project browse through the little poly you bet and as it brings it all back in I'm going to jump back over to copilot chat for just a second and it actually is going to show me something pretty neat in that it shows me how to implement knows what I want to try or wait and retry async it's already guessing by where my code is and what it what what it thinks I want to do but I'm going to save here and then I'm going to highlight the code I'm going to right click on it and I'm going to say hey ask Copilot how can I retry this code when an HTTP error occurs copilot thinks about it and then gives me a way to do it so I don't like the way that it just gave me to do it I want to actually use poly to do it so one of these things about when you're using copilot or copilot chat is that you want to Trust but verify the code that it brings back and so what it has here let me open it up just a little bit more is that if it fails three times you know go back you know while retries less than three I want to use poly I want poly to do all the work for me I don't want to have to think about it myself so let's actually do that for us let's try it one more time right click ask Copilot have Ollie create a poly policy to retry when HTTP exception occurs how about that and let's see what a copilot comes up with this time make this a little bit larger so we can see what's going on and then I'll scroll up because I want to get the menu and here we go what I'm going to do is I'm just going to copy this in topic comment on what I had and then put the new one in make sure I actually copy it from the copilot chat happy paste is very hard for me let's see if I can get it now roll C TRL V and here we go and so what it's saying you know what we're gonna try a wait and retry a sync policy first time's gonna be three seconds next time is five one second three five seconds five seconds and then retry and it's saying you know what all the pizzas that might be null here so initially I'm just going to say new list Pizza so again trust but verify so let's start it up and see if what copilot gave us works there were Bill Bears what did I do wrong new expression after the type let's see line 35. have to do my parentheses all right let's go again start everything spins up so let's try our Swagger tooling out try it out let's see we should just be getting 200 values back code 200 we should not see a 503 coming back at all but we or we should still see the 503 coming back from here because we're calling directly to the web API web API is still an error what we shouldn't have happen is our web app should be catching those and continuing on assuming that we don't get three errors in a row looks good so far let's refresh good good still looks like we fixed it all right there we go so you've seen now actually a couple good points here you saw that how we use copilot and GitHub copilot chat to introduce well we how we use it to find a random number and then introduce a random error into our code to return a 503 status code and then how we use copilot chat put in the poly nuget Library so we can have a retry policy inside of our web code to retry whenever our web API blew up but the cool thing that you saw is that sometimes co-pilot and copilot chat aren't 100 correct so you have to trust but verify and we saw that oh what a return the first time wasn't what we thought it would do or was so we went through tried it again and it did give us something that worked better so press but verify sometimes everything's great sometimes you're just on the start of it so anyways at the end of the day we got it working and so there we have it making sure our application can call a web API not fail even when web API on us blows up
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]