Welcome, and thank you for joining us for today's session, Introduction to Azure Arc Enabled Data Services. My name is Dave Kurt. I'm a senior program or product manager for the Edge infrastructure, and I'm joined here today by Lior. Many of you probably have seen him before. Lior, please introduce yourself. Hey, Dave. My name is Lior Kamrat, a principal product manager as part of the Azure Arc platform team. Great to be here. Yes, thank you again for taking the time today to join us for this session as we're walking through these learning modules. I hope many of you are familiar with Azure Arc. If not, we're going to cover some of the basics, but there will also be links in the end if you want to learn more. We have a few learning objectives for today's session, which is hopefully after this session, you are being able to describe bi-hybrid computing as an important technology strategy for many users and businesses. You hear that probably often the quote from Satya, where he talked about that we don't see hybrid as a state in between, but for many companies, it will be the end state. It's something that is here to stay. You should also be able to describe what Azure Arc Enabled Data Services is and why it can be an important part of your hybrid compute and data strategy. You also be able to describe the managed capabilities and benefits of using Azure Arc Enabled SQL Managed Instance and describe managed capabilities and benefits of using Azure Arc Enabled Post-Square SQL. That's for the learning objectives. Good stuff. Good stuff. A lot to cover. But again, if you're new to that scene, don't worry, we will cover some of the basics and not in depth, but we will definitely provide you with some of the links in the end for anything you want to learn more. And feel free also to follow us along. I quickly going to jump back here to this slide. You see the short URL on this side, the AKMS slash learn life with the nice number. And I think you will also see that at the bottom. So I leave that very quickly here before we jump to the learn life modules. Also, if you have questions, feel free, whatever platform you're watching on. We have a nice moderator who will pop those questions or relay those questions to us, and we will try our best to answer them as they're coming in. Yeah. I already see a bunch of folks, so thanks for joining everyone. You know, we'll try to answer all the questions in the chat. So let's go, let's go. Let's have some fun. Okay. So let's switch to my screen. I'll show you the website where you find this learning path. If you are not familiar, the learn or Microsoft learn is hosted on the docs website. You should have seen the AKMS links, which is kind of like has for all kinds of Microsoft technologies here, we're focusing obviously on Azure. And then we have different learning paths. This one is the introduction to Azure Arc-enabled data services, which consists out of six learning units that we're basically covering here today. I've already walked you through the learning objectives on what that is. And when we go here, you see here are some prerequisites, basic knowledge of Azure. Again, you don't need in depth, but we're basically not covering what the public cloud is, or that Azure is part of our public cloud offerings. So we're thinking that you already have that. So we're not going in depth to it. We sure hope so. We sure hope so, yes. And then we're basically having these module ahead of us. We're starting with a bit of a broad introduction into hybrid that why are we doing this? The investments we're doing this area then about more general, that's where we cover a few parts of Arc in general, not just the enabled data services. And then Lee or will be so kind and walk us right through in how we can actually enable those Arc-enabled data services, what you can do with SQL managed instance as well as Postgres SQL. And then we're going to close this out. I am a kind person.  That's for sure. So I'll jump right into the introduction and I'll go a little bit off script, but feel free to read along. But as you know, many businesses are looking today to invest in cloud services. And the reason obviously is cloud services have a lot of benefits, right? Like in the traditional sense, specifically past services, which many organizations look forward to use data past services like SQL DBMI in the cloud because they don't have to worry about the infrastructure below. And just basically can take advantage of that innovation which can reduce or can lead to a lower total cost of ownership and provide more redundancy, reliability and efficiency as you can benefit of the big investments cloud provider like ourselves do in providing that underlying infrastructure. Now, not all organizations are yet in a position to completely deploy databases or the applications in the public clouds for variety of reasons, right? It could be compliance. Maybe you're in a regulated industries or it's a certain workload that has different requirement internal regulations. It's not just external regulatory requirements. You may wanna be able to have more control or you may even have existing infrastructure investment that you made recently that you wanted to take advantage and maybe you plan in a few years to migrate whatever it might be. There is a lot of reasons and I think Leo, you can also talk a little bit to it, right? You talk a lot to customers and a lot of touch points. We're working a lot with our people in the field of like some of the reasons. Maybe you have some examples you like to mention. Yeah. I think that what we're hearing from customers with regards to data services, there are multiple use cases, but the ones that are really keep coming back is what you mentioned is the data sovereignty, right? That's the number one use case that we're seeing a lot of the time in environments that like you mentioned, highly regulated, gotta meet certain compliance requirements and all that jazz. So there is that, but also you can also find those customers that are actually looking for bringing or incorporating their kind of CI and CD practices or leveraging those capabilities that were offered with Azure Work Enabled Data Services and bring those into their own practices and how does that look like because they're looking to modernize their application sets or looking to modernize their deployment models, but a lot of the time they can't do that because they have certain constraints on doing things locally. So again, these are some of those use cases that we're seeing, that's for sure. So yeah, I mean, I'm looking forward for this one today because we're gonna talk about a lot of this stuff and try to connect the dots for everyone. It's gonna make sure that everyone understand the technology here in a nutshell and take it from there. And so you might wonder, it's like, so we talked very briefly about the past services, the popularity of past services in the clouds that helps with scalability, et cetera. And so in those cases where customer are not, they can't move a workload, a specific workload or they are running something that needs to run on-premises for these variety of reasons we covered, these companies still would like to take advantage of that innovation in the cloud. And so when Microsoft decided, hey, we need to bring our past services even like to wherever the customer needs to run, that could be in another cloud platform, could be in on-premises. And you might wonder, okay, why would anybody wanna do that? I had myself the pleasure to once do a demo at the Gartner Conference where we deployed SQL DBMI, the managed instance on AWS. And the reason there is like you mentioned of companies that are big SQL powerhouses, they use a lot of SQL, they may have a merge acquisition or there is another team in that company that uses a cloud because if they have skills or expertise in that AWS. But if you run the compliance team or whatnot, you're like, okay, great, awesome. So you guys run servers on that server SQL that manage and patch everything. You can continue using SQL server, but I gonna use Arc-enabled SQL service. So we're out of that end of life support, kind of like you get always screen on, scalable. I get some of the advanced security features by running it there, but you still use, I'm not forcing you to migrate your application from this cloud provider to this whatnot. So I bringing you the benefits of similar that what I have in Azure to that other cloud or to your on-premises. And that's really what this is about is enabling you taking advantage of some of that pass, let's say goodness, the pass services spring also on-premises, but obviously in on-premises, you would also run the underlying Kubernetes platform as you can see, but you have also here the power of options, it's your choice. So it's not like one flavor of Kubernetes that is only supported again, Microsoft here wants to take that step into your reality and that reality is, not all of you gonna use the same Kubernetes platforms or whatnot to go basically into those. And you know, before we kind of jumping into the weeds here, I think that maybe to kind of wrap this thought because you mentioned like, and there's a very interesting word that you use like forcing. So I just want a level set here for a second. And I, you know, every time I'm doing a session or presentation around this, this is one of the first thing that I'm saying, Azure Arc was always designed with a non-destructive state of mind. That means that the way that Azure Arc was designed is to make sure, and we're gonna touch about, we're gonna touch that later in the next models, but really what we try to do with Azure Arc is we try to bring the same practices and the same patterns that you're using today in your own environments, rather via whatever tools that you're using or whatever application deployment models that you currently have. And what we're trying to do with Azure Arc, we're trying to be non-destructive in the sense that you should still be able to use the same tools, the same tool chain, the same processes and patterns, only with services that are now deployed in an infrastructure that you control, okay? And that's what we're gonna dive deeper today in this session. Absolutely. And so now that we cover kind of like the introduction, talking about why businesses are in that hybrid stage or multi-cloud reality and what Arc provides. Let's get down to business. So with this, let's jump to the next module, which is learning about hybrid computing. Now, here you see the definition of hybrid compute connects on-premise systems to one or more public cloud system. This is where multi-clouds come in. I know different, there's all these words, edge, hybrid, cloud on-premises, but it's basically a application or something that runs in different places but fulfills the same purpose or comes together to make something reality and providing some consistency. And so the goal of hybrid is to provide you that single application experience across with simple deployment governance and management and hybrid gives you the ability to use your current on-premises investments that we covered briefly in the introduction before. And it also allows you kind of like to bring the compute systems to the best performance wherever you need to do those calculations or you wanna run this intelligence over the data that you're collecting. And so with hybrid computing, you get a uniform security, a unified billing and management data collection and reporting system, which goes to when I talk the goodness of past services but on the environment of your choice, choosing. Yeah, and Steve, one thing that I always like to bring up when we're talking or we're having the conversation about the fundamentals of hybrid and what does that mean? I always like to take people down to memory lane probably 10 years ago when people still thought that hybrid means, including myself, by the way, that hybrid really means network connectivity. Like people used to think that, okay, so I have either express route or side to side VPN and that means that I'm hybrid now, but fast forwarding few years and now we're talking about the Azure Arc. We all know that that's not really the case. Hybrid is really about, I wanna say the control plane, the software layer of how a pattern will look like or how an infrastructure pattern will look like, right? Is it gonna be something that is stretch across your own premises and cloud deployments? Is it something that you're gonna leverage in a multi-cloud environment? But it's not really about the network connectivity. Network connectivity is a given. These days it's just like, okay, yeah, sure you're gonna have network connectivity in some shape or form. Hybrid is really about how do you take capabilities that are in one cloud and bring those to the masses in infrastructure and other environment that the same cloud, obviously talking about Azure here, doesn't have any control on. So that's really what this is all about here. This is actually a very good gateway for right into the deployment because you mentioned that a little bit of the DevOps cycle. So maybe I'll let you also quickly just cover that part that talks about how it's a decorative, stateful method of deployment. Again, it's not just the connectivity. Right. But go ahead. Yeah, and you know, Steve, we again, we'll talk about the notion of what is required in order for you to actually go and deploy Azure-enabled data service. We'll talk about Kubernetes as the foundation. We'll talk about all this stuff in a moment here. But in a nutshell, when it comes to a DevOps conversation, without throwing a lot of buzzwords into the mix, right? But when it comes to continuous integration, the deployment methodologies and practices, at the end of the day, what we're trying to do is we're trying to see how we can fit our own past services into your existing deployment models, right? We'll talk today about Azure-enabled SQL managed instance and POS with SQL. We'll talk about all of that. But really what you want to think about is or what we're trying to deliver here and teach the audience is how do you want to think about this for your own practices? Okay. How do I take an Azure-enabled SQL managed instance and include that as part of my deployment models? How do I tell my applications to, okay, this is the database that you're gonna talk to right now. And yes, I know that it sits on-premises and I know that it's not in the cloud, right? So these types of stuff are really interesting and looking forward to dive deeper. So yes, this is what we're covering right now. It's like some of the things that you should consider for your hybrid computing. One is like how you will deploy, which Leor just talked us through a little bit. The other thing obviously is governance is huge as you all know. I can tell you I had so many conversations and discussions on this topic all the way to where some of the CISOs love the capabilities that with cloud services, like even when you think SaaS, like Microsoft 365, et cetera, they can go to a portal and pull the reports and they wished they could do that across all their environments and to what Leor talked about with that, upper layer of management of where Arc in general comes in and Arc enabled services really to kind of like, you have your on-premises systems, you maybe have branch offices, you may use hoster in some of the countries that you're operating in, you may use one cloud, two clouds, whatever it is. But at the end, you need to drive governance across all of this. And often those are independent silos and where Arc really can help. And what is top of mind for Microsoft as we're making this enablement is really like how can you drive governance across all your systems everywhere you have things to make sure that you can fulfill your regulatory requirements, whatever that might be, et cetera. So think of that in your hybrid. How can it help me with governance if you talk about what your hybrid compute needs are? And then obviously the management that brings it all together also like, your IT team, do they have to go to 20 different tools to distribute something or manage the servers or can they go to a centralized place where they have access and can do something at scale, roll out changes to the environment at scales, et cetera. And so that's a little bit the over to Microsoft Azure Arc and hybrid Azure Arc and hybrid computing systems.  The Hybrid benefit is more of a licensing where you have rights for SQL and Windows servers to also run it for free in the cloud. If you have it on premises, you see we have solutions with VMware. Then obviously the product I'm very familiar with Azure Stack, Microsoft Sentinel who can help you with that team needs across any cloud, any environment, any device that you need. And then the network connectivity that Lira mentioned obviously at the heart of everything that is distributed across multiple locations with VPN gateway, express route, and then of course, Arc. And when we look at Azure Arc, it's kind of like in a few buckets or we can put it in a few categories. At the very basics, we have Azure Arc enabled servers which runs for Windows and Linux. This is what I mentioned briefly with like your environment if that is branch offices, host or any cloud, you can basically connect those to the control plane in Azure and then use Azure tooling to kind of like drive the consistent governance management. If I'm IT admin at your company as an example, it would allow me through the Azure portal to do a lot of my daily tasks all through that portal experience, which is awesome. And then the same goes for Kubernetes. And also with Kubernetes, it's a bunch of different Kubernetes platforms where you can then also run the Arc enabled data services which we cover in a minute. And that again, it's like the options is what's the or talk. This is, we don't wanna disrupt you. It's not our way or the highway. It's really how can we enable you and help you achieve your governance goals, your management goals to be as efficient as possible and take advantage of what technology can offer to help you in the end to digitally transform your businesses. Yeah. And then SQL Server and Azure Arc enabled services, that's for SQL Server itself. There is also an Arc enabled server. So if you have a large SQL Server farm, this is not now the Arc enabled SQL DBMI. This is if you have SQL Server, you can also similar to what we do with the servers which are VMs or bare metal servers, connect them up. And then as the grand finale for what we're covering in depth today, the Azure Arc enabled data services which now we talked a bunch of times about it. And with that, I think we're gonna jump over to Leo who will take us a little bit more down into the weeds of Arc enabled data services. Thanks, Steve. So I'll take the screen here and before I'm jumping into the architecture and the weeds and all that, let's again, let's level set. Azure Arc is really a bi-directional thing. It's a set of technologies, but at the end of the day, it's a bi-directional thing in the sense that you have Azure Arc enabled infrastructure which basically means that, and we covered, by the way, we covered all of this in the other learn models, the Microsoft learn models, the live models that we had as part of this series. So I think we had like 12 of those. So covered in, you know, in quite depth there. But just again, coming back to my point is that you have Azure Arc enabled infrastructure. That's really about Azure Arc enabled servers and Azure Arc enabled SQL server, like you mentioned, Steve, right? That's where you are bringing or projecting those on-premises or multi-cloud servers that are deployed outside of Azure and you're bringing those API entities into our own control plane, Azure Resource Manager. And you also have Azure Arc enabled services which is basically the other way around. We have Azure Arc enabled data services. That's what we're gonna talk about here in a second where you can deploy data services on top of your infrastructure with Kubernetes. And then you have Azure Arc enabled machine learning. Same goes for that. You can deploy the machine learning services on top of your infrastructure. Usually people are doing this in order for, you know, running training models on-premises and then using the cloud for the analytics layer where you have, you know, the hyperscale capability, the elasticity, know all those stuff. And you also have Azure Arc enabled app services where you can deploy several app services offerings that we have again on top of your Kubernetes cluster. So just one of the level set. So let's talk about Azure Arc enabled data services. Azure Arc enabled data services really splits into two as of today in terms of the offerings that we have. We have Azure Arc enabled SQL managed instance and we have Azure Arc enabled Postgres SQL. Azure Arc enabled SQL managed instance is kind of the same service that you're familiar with today with Azure. A lot of customers are going and deploying Azure SQL managed instance. What we're trying to do here is we are providing the same deal or the same offering on top of your own infrastructure. Okay. And again, in a second, we'll talk about the architecture diagram that we have here as part of the land model and talk about all these, you know, layers inside that cake. We also have Azure Arc enabled Postgres SQL. So again, if you're familiar with Postgres SQL on Azure, that's the same deal. We're trying to do the same here. This product is still in preview and we are expecting to make some changes in the near future. Again, we'll talk about it. We have a specific model for Postgres SQL. We'll dive deeper into that. So let's just, I think that it's a good segue for us to just kind of talk about the architecture, how things look like. So I mentioned the fact that you have Azure Arc enabled infrastructure, but you also have Azure Arc enabled services. Now between those two, there is Kubernetes. Kubernetes is kind of a funny thing if you're thinking about that in the sense of what Kubernetes was designed for. Kubernetes was designed for, you know, as basically as a container orchestration mechanism or a platform to build other platform, which is exactly what we did, right? So Azure Arc enabled Kubernetes, right? Is a technology that you can basically take on-premises or other cloud Kubernetes distributions and Arc enabled those. Now, at the moment that you're doing that, those Azure Arc enabled Kubernetes clusters are becoming legit targets for deploying those Azure Arc enabled services that I was referring to. And what we're gonna focus on is Azure Arc enabled data services. So let's start to peel out this onion and start with from the bottom, okay? So the first thing that you have is you have your infrastructure on top of your own infrastructure, you control that. You have Kubernetes cluster. Now, the first thing that you need to do in order to make that Kubernetes cluster as a candidate for deploying Azure Arc enabled data services, you need to Arc enable that Kubernetes cluster. The moment that you are Arc enabling that Kubernetes cluster, you have the basically the option to start deploying extensions on top of that. That's the extensibility model. The extensibility model for Azure Arc enabled Kubernetes brings very important capabilities in the sense that you can deploy other services on top of that Kubernetes cluster and basically the pipe to do that or the technology that enables that is extensions. So Azure Arc enabled data services, you have our own extensions for that. And every other Azure Arc service has its own extension. So once you have that Arc enabled Kubernetes cluster, you're also gonna install the data controller. Now the data controller is really what I like to call the brain of the octopus. Data controller is the first piece for Azure Arc enabled data services that you can deploy. That's basically the controller or the control plane for Azure Arc enabled data services via this controller. You can go and deploy other services, SQL Managed Instance and POS with SQL. So really everything starts there. It's also important because the controller is what enable the logging, the metrics and the billing usage as part of the deployment and also responsible for reporting back to Azure. So that's a very important piece. So how do you go by and do that? If you wanna deploy a controller, basically you can go into the portal and I'll show you this in a second.  Now, when you wanna deploy a controller, you need an Azure Arc enabled Kubernetes cluster. That's the first piece, we talked about it. And you can do that via either the portal or CLI or ARM templates, automation, whatnot. And this is a good opportunity to remind our audience here that again, this notion of not trying to be disruptive or trying our best not to be disruptive, I should say because if you today are used to the Azure portal and you're used to our CLI or used to ARM templates and really familiar with the notion of here's how I interact with Azure, we basically provided the same experience. On top of that, because this is a Kubernetes environment, you can also do that via KubeCuttle or KubeControl depends which side of the camp you are. So that's really another very interesting point that I'm trying to bring here because this is another common tool that people are using obviously with the Kubernetes environment. It's almost the fundamental, right? KubeCuttle. So you can go and deploy those services via those interfaces, which again, this is really the notion of not trying to be disruptive or not being disruptive, okay? So we covered that. Yeah, go ahead Steve. I just wanted to add like, even like, when you look at this architecture diagram and the not disruptive, like you see all the different tools, right? Let's say after the deployment, your team is Azure Data Studio. Again, like trying not to disruptive, you're gonna have different roles. You probably have the team that build up the infrastructure that maybe deployed to Kubernetes that goes there. You maybe have the second team depending on the size of the company. And then you have, you know, all your SQL engineers, et cetera, that might be already familiar with the data studio and wanna continue using that. And so again, here kind of like trying to not disrupt your normal flow so that you can use the familiar tools new to get the job done. Right, and there is one important thing that we need to, when we need to mention when you are going by and starting to think about Azure Enable Data Services. Azure Enable Data Services can be deployed in either directly connected or indirectly connected mode. Let's talk about it for a second. Connected mode means that you are getting everything, right? You're getting the full integration with Azure. Everything is connected and you are able to enjoy all the bells and whistles that are coming with Azure Enable Data Services. Everything is happening automatically in the sense of billing, usage, metrics, and all those stuff. When you're deploying in indirect mode, and we'll talk about the use cases, when you're deploying in indirect mode, you're basically deploying an infrastructure that is not exactly connected to Azure in an automated fashion. And you need to take care of the uploads of the logs, the metrics, the usage billing, and all those stuff. So what we're seeing is that customers are basically looking at indirect mode when they have an environment that must be disconnected from Azure, or they must use their own container registry, right? That's the piece that you're seeing right here as part of this. So you can actually go by and deploy those data services, those images on top of the Kubernetes cluster using your own container registry. So you don't have to use ours. Obviously, if you're gonna use ours, that's a fully connected deployment. And obviously we are governing those container registries that you are using. So I just wanted to make sure that we're gonna bring this up. Now, once you have that environment spin up, this is where you get to choose how the application will interact with that. But at the end of the day, it's a SQL server, right? Or a SQL instance, or a SQL managed instance, and pause with SQL, okay? There's nothing weird about this. There's nothing different about this in the sense of it's the same technology, okay? Only the main difference is that now you control the infrastructure that it gets deployed on, okay? So I think, Steve, I think that it's a good opportunity for me to maybe show the audience how does that look like in the portal? Yes, as you switch, just one thing I wanted to add to the on-premise space like the infrastructure. If you scroll down just a little bit so that the people can see, there's like two links. There's like a planning page in the validation program.  In the clouds, right? You have kind of like the scale from the hardware investments from us. But obviously if you run it on your own infrastructure, you wanna make sure you do that similar to what you've did in the past with capacity planning, making sure that your infrastructure can support in the end the needs of whatever you plan to run on it. 100%. And we started to cover all the stuff by talking about the architecture. There's one point that is worth maybe double down on, which is the validation program. At the end of the day, right? We want to make sure that you're deploying data services on top of Kubernetes distributions that are supported. That's why we have an internal validation program when we are actually doing the testing on those Kubernetes distributions and making sure that they're giving them the stamp of approval. So you know that when you're deploying Azure Arc-enabled data services on top of those Kubernetes clusters, those are actually being tested and validated as part of that program. So really it's important piece and I just wanted to bring this up. So let me show you something here. I'll go into the poll and here I'm in the Azure Arc Center. And you can see here that we have data controllers. So this is the Azure Arc Center. If you're not familiar with that, simply go to Azure Arc Center, super easy. Now let's start with data controllers. You can see I already have data controller deployed because I wanted to make sure that we're not spending too much time on waiting for things to provision. But let me kind of show you the wizard without really deploying this. So we mentioned the fact that you have two connectivity modes. So direct connectivity mode and indirect connectivity mode. So this is the first option that you need to choose from. Let's go with the directly connected and look at the wizard. How does that look like? I also wanna talk about the very important notion which is the custom location as part of that.  That's all great. You're gonna give it a name, right?  Let's talk for a second about the custom location and what does that really mean? Custom location is a very interesting concept. Today when you're deploying services in Azure, just standard Azure, one of the first thing that you need to choose is the region, right?  So you can choose the vast of regions that we have in Azure. Custom location is really a region that you control if you wanna think about it that way. And custom location is really a logical construct that is attached to the Arc-enabled Kubernetes cluster that you just Arc-enabled. And that custom location can represent basically anything. It can be floor one in building four. It can be a country. It can be a city. It can be a building. Doesn't matter as long as you know what it is, right? And that custom location is representing the place or the target location to where those services are gonna get deployed, okay? So the first thing that you wanna choose is the custom location. And part of the process of deploying data services is also either choosing an existing custom location that you already have on that Arc-enabled Kubernetes cluster or create a new one as you can see here via the wizard, okay? So this custom location that I already have already got data controller on top of that which I'm gonna show you but I just wanted to make sure that you understand that this is part of the process, okay? Now let's talk about the Kubernetes configuration. So as you can see, we have bunch of configurations here. Those configurations are basically templates. At the back end, there are really YAML files that are representing how an environment or which environment or which Kubernetes cluster you are gonna deploy against, okay? And those templates are a collection of settings that are targeting a specific Kubernetes distribution. And the way it's translated is how do you actually go by and provision storage on those Kubernetes clusters? What type of networking you're gonna use? How the Kubernetes services are gonna look like, okay? So really it's a collection of settings that we bundled for you and you can go and pick what is it that the environment you're gonna deploy against and everything will happen in the backend in the deployment process, making sure that nothing is failing as you are deploying the data controller and then obviously the actual data services that are coming around that. And the last piece for this wizard is the metrics and logs dashboard credentials. Basically at the end of the day, we wanna make sure that when you're deploying those data services, you also have integration to Azure Monitor and Log Analytics. So this username and password will be used later on in the deployment to make sure that this integration is actually jelloing. Steve, what do you think? Is that complicated or is that too much? No, I mean, to be fair, we've shown now the easy part from the cloud obviously, again, like Lee or said, right?  But from here, it's as easy as deploying any services in Azure, right? I said- Is it everything is easy, right? I mean, it's all easy, right? No, but- So, yeah, so you can see also when I basically change the configuration template, I choose the AKS on HCI, which is a target location or I can choose OpenShift, right? And you can see that the data storage class and the log storage class, right? The service type are becoming available to me. So this is another thing that you can choose from, right? Obviously you can choose NotePort. That means that the services will be available or will be reachable only if you have access to the actual node, the Kubernetes node that the services got deployed on. So I would say that this is probably not something that you will see a lot in the world, but it's definitely an option. And you also have load balancer, which means that basically we're gonna deploy a service on top of the data services and that service in the shape of load balancer or Kubernetes load balancer will be accessible from everywhere and you'll be able to reach out to, you'll be able to connect to those data services and start controlling those using the tools, okay?  So let's just type some passwords here. Hopefully my passwords are good, I think they are. So there you go. And let's see what type of additional settings we have there, I think that, oh, you know what? I need to actually create a location here. So what we can do is we can, you know, just for fun, let's create a custom location.  So let's do that. And this will, I have another Arc-enabled Kubernetes cluster as part of this, but I do wanna show you the process. So we're just gonna create that custom location and now I can actually continue with the deployment. So you can see here that metrics, uploads, uploads and log uploads are enabled automatically. So that means that when I'm deploying those data services, metrics for SQL managed instance, and or Postgres will go into Azure Monitor. So you'll be able to look at those the same way as you're looking at other services. And you also have logs upload. So logs upload basically means that, again, same deal. We're using the workspace ID and the key in order for you to go and upload the logs or automatically for the logs to get uploaded into log analytics as part of the deployment, okay? So that's really the way we start. I'm not gonna go and deploy that because I do have an environment to show you that we're gonna dive deeper in the next model. We're gonna talk about SQL managed instance. So, see, do we have any questions from the chat, Steve? What do you think? So far no questions, it seems. At least we couldn't gotten anything related. I'm sure our colleague will send them forward. I think as you're on this, you covered the direct mode and the indirect mode and just as a repetition maybe. So if you wanna take advantage of everything the Azure portal has to offer, obviously that comes with that connected mode. But if you have a requirement that would maybe say this database environment needs to be more kind of like not directly connected for whatever reason. And that comes with a little bit extra work versus where you can take advantage of everything that Azure has to do. Right, right. And we see here, we have an explanation on the data controller, which is basically a set of pods, custom resource definitions in Kubernetes services, all those good stuff that are bundled into a single solution. That's the data controller. Like I mentioned, the data controller is really the foundation. That's the first piece that you're gonna deploy as part of data services. So it's very important to understand that. Then we have Azure-enabled data services, right? And we said that we're gonna have SQL managed instance and we also have POSQUEST SQL. So that's a very important piece. Now, unified Azure experience, we talked about that. Basically, if I'll go here into the tool chain, right?  I'll do my very best. So we have database tools, we have Kube-Cuddle, we have Azure CLI, we have the Azure portal. So the reason that I'm highlighting those is really to emphasize the point that we're trying to make around really unified Azure experience and what you're used to today. So the same goes for Azure-enabled data services. There's no funky stuff that you need to do in order to go and actually deploy these things. So really something that is important to mention. And the last piece before we're gonna go into the knowledge check for this model is connecting and managing data services. We'll show how you actually using the same, again, the same tools, management studio, SSMS, right? And data studio, how do you actually look at those or using those in order to control data services?  So let's go into a knowledge check here and see what we have. Yeah, let's quickly jump over to my slides because here's the fun part, you actually can vote live. So if you go to AKMS slash polls, you'll be able to guess what you think the right answer is. So this is now still all up. This is true for both. If you have SQL DBMI or if you have Postgres. And the first question is, which key component of Kubernetes, Kubernetes does Azure Arc enabled data services use? Is it the native Kubernetes API? Is it Azure command line? Is it the cube control? Or is it the Azure Arc agents? I'm trying to monitor here what some of you guessing. I know we mentioned a bunch of those. There's options, but what are the key components of Kubernetes that the Arc enabled data service is using? So we're seeing Azure Arc data agents. So let's see and reveal this party on what the first question is. And the right answer for this question is Kubernetes API. It basically talks to the native Kubernetes API. Right, right. Then the second questions we have is, which connected mode supports the Azure Resource Manager? Is that possible in the indirect connected mode, direct connected mode or Azure connected mode? Let's see what our viewers think it is. Okay. I like the Azure connected mode, but I don't try to disrupt anybody. What do you think it's the right word to say? I give you a hint. We support indirect and direct connected modes. Let's solve this one. Question two is the direct connected mode. We briefly talked about this as we summarized after Lee or shared the screen with the portal. Obviously that you can take advantage of all the beauty that Azure has to offer. It is in the connected mode that can manage and do everything you need in the automated fashion that you would use. From other cloud services, in the indirect mode, there are a few extra steps you take to basically make it all work. Now, third questions. The Azure Arc data controller requires a Kubernetes cluster to be connected to Azure. Is that true or false? Let's give it a few seconds, see what our viewers think, and the answer is it's false. For the indirect mode, it actually doesn't need to be a connected Kubernetes cluster. And then our last and final questions for this module, what component coordinates the Azure Resource Manager request to deploy and manage Azure Arc enabled data service on Kubernetes? So what's the prerequisite that you can do the experience, that demonstrated to us? Is it the Arc data controller that allows him to do that? Is it the Azure portal that's all you need? Or is it the Azure Arc resource providers or Azure CLI? And the correct answer is the Azure resource providers, Azure Arc resource providers. Yeah, and it's important to emphasize here that the resource providers are really kind of what connects technologies into the Azure or what connects services, I should say, to the control pane, to Azure resource manager. Everything starts with the resource provider. So think of resource provider or think of Azure resource manager, RM is kind of the op to simplify that. Think of that as the operating system of Azure and think of resource providers as drivers, like that you're installing in order to actually use different hardware. So I like to use that analogy because for a lot of people that really clicks, so those are resource providers and everything starts with the resource provider and with Azure Arc, for each and every one of the Azure Arc technologies, we have a dedicated resource provider so you can actually go by and use that technology. So just wanted to emphasize that. That's awesome. And now, so we're about half time of our time we spent together today. We were 45 minutes in on our 90 minutes journey and we're gonna jump right back to Leo's screen where he's gonna take us through now specifically what it applies to the SQL DBMI versus in general all up. Yeah, and we're gonna continue down the path and moving to unit four, talking about SQL managed instance. And we're gonna also come back to a demo real fast here so just gonna show you how things are clicking at the back end, making sure that you understand how really we are making this a reality. So let's talk about Azure Arc enabled SQL managed instance. Azure Arc enabled SQL managed instance is one of the services that you can go and deploy one of those data services that you can go and deploy with Azure Arc enabled data services. You know, Dave, you mentioned at the beginning of this learn model that we have SQL server in Azure virtual machine. So this is not the same. Okay, we just wanna make sure that people understand that SQL server on an Azure virtual machine that's not a SQL managed instance and it's definitely not an Azure Arc enabled SQL managed instance. It's a SQL instance that is deployed on a virtual machine. So we just wanna make sure that, you know, we are covering this. This is part of the overarching concept of infrastructure as a service. Okay, it's not a managed service in that sense. Okay, so let's just make sure that we're leveling on this. Now Azure SQL managed instance has been here for years. Okay, this is basically an at scale deployment option that you have today for deploying SQL managed instance inside Azure. Obviously it's pre-installed SQL, the tweak control, govern, patching, securing and all the things that we're bringing with the notion of platform as a service. So we are the ones that are actually controlling that in that sense. And again, this is basically the start of the conversation around Azure Arc enabled data services because as a segue, what we wanna do is we wanna deploy SQL managed instance on top of your infrastructure like we talked about. So we'll talk about that as part of this. We also have Azure SQL database. Dave, do you wanna maybe cover that? Like what do we mean when we're saying Azure SQL database? So this is an example of the past service like one of the past service we actually had this before we had SQL managed instance in the cloud. That was like the first SQL past service we offered. And it's basically a contained SQL server database that is powered and pre-installed with a version less SQL. So both the managed instance as well as the SQL database is basically a version less SQL which is important and we covered that in more detail down below. US user manages the database while Microsoft also manages the underlying SQL instance platform and infrastructure. And I think the main differences but you can correct me there if I'm wrong but one of the key differences is there is a slight change on the SQL database that's past services where the managed instance allows you to take your SQL server that you're known on premises and basically move in that environment without having to change really the code and architectures like more equal versus if you were to build let's say a brand new website something and you don't have that legacy that you need to migrate. You might also wanna consider it for example if it's the application running in the cloud if the database would actually satisfy the needs that your application has the data needs or in that case obviously SQL database is not yet arch-enabled that you could bring it on premises that's managed instance but basically managed instance is the one that is the same kind of but version less or more similar to the SQL server that you're familiar with. Yep, exactly. And good segue for Azure arch-enabled SQL managed instance, which is let's just highlight something here which is very important, right? So similar to Azure, you know what? Let's try that again. So similar to Azure SQL managed instance while the customer choose and manage infrastructure using Kubernetes platform. That's a very important piece, right? Because it means that it's the same offering only you control the infrastructure and that's a very important thing to highlight. So obviously there is comparison between the features of SQL managed instance in Azure and Azure arch-enabled SQL managed instance core features we can go dive and dive deeper into that. At the end of the day, this is a SQL engine. Okay, so we wanna make sure that you understand that at the end of the day, right? You get a bit more granular control in the sense of your infrastructure but it acts the same, okay? So that's what we wanted to make sure that people understand what are the core features here that we're talking about. When you can see that here, so like Azure SQL managed instance when you deploy Azure SQL managed you get pre-installed versionless SQL server, okay? That's important, okay? We're providing you with the same service and uses container images from Microsoft Container Registry. We talked about that as well because you can also choose your own container registry in an indirect mode. So very important to highlight that. And also we talked about when I showed the option of the load balancer, I showed the load balancer versus the node port. So again, something to think about, okay? And we'll see this in the demo in a second here. Service tiers, let's talk about that. So general purpose is what we had until a week or what we had in general availability until a week ago. And that basically means that you will go deploy SQL managed instance in a single Kubernetes replica or I should say zero replicas on a Kubernetes cluster and you will get basically a general purpose SQL managed instance in the sense of a tier. Business critical, so we need to update that learn model but business critical when general availability last week, sorry, at build and business critical basically means that when you are deploying Azure SQL managed instance you're getting that in a high availability fashion in production grade deployment. It means that you also get in a replica set of two or three replicas depends on what you wanna choose. So that really the main difference here, business critical is really our go to production enterprise grade offering when it comes to Azure Azure enabled SQL managed instance. So it's important to emphasize the fact that you have that. So we'll go over all these stuff here in a second but I think that it's good for us to maybe Steve jump into back into the demo environment. Let's go and do that. What do you think? Yes, sounds good. All right. So what I have here is I have a full blown resource group deployment that is part of that deployment. I also have Azure enabled data services deployed. And you know what? I wanna keep things a bit clean. So let's just choose the relevant resources that we have as part of this deployment. So I'm gonna choose the Kubernetes clusters and also gonna choose SQL managed instance. And I think we're good. So let's go ahead and take a look. So we have the R box, we'll talk about what the R box is but we have the data controller. We have pause with SQL. We'll cover that in the next model. We have the custom location that we talked about. That's the target location that we are deploying resources against with two Azure enabled Kubernetes clusters. And we have SQL managed instance as we can see. So this is the SQL managed instance that I deployed before the session. And I wanna show you how does that look like from a backend standpoint, okay? How, you know, what is that made from? Okay. And then, you know, we'll show the deployment the deployment of this. So I'm gonna jump into my control machine here. And again, we'll talk about what this is all about. What is the jumpstart R box? What is jumpstart? We'll cover that in the in the final model for this, for this session today. And real quick, I'm gonna go into partial. You know, I think that it's a good opportunity for us to start looking at the environment.  And I have everything deployed on a namespace that is arc, okay? So that's the name of the namespace that I have. And you can see here that I already have all these pods deployed and all the data services deployed. So let's focus on what we have. So I'll zoom in and we have the controller, okay? This is the data controller. These are the two pods of the data controller, okay? So we covered that. These are basically the pods that get spin up first in order to control the rest of the deployments. And then we have SQL. So you can see here that they have SQL actually deployed in high availability mode. We have SQL zero, we have one, and we have two. And we also have HA, which is basically the resources that we are deploying in order to control an HA environment, okay? So I'm not gonna dive too deep into that because I think that maybe it will just make things a bit more confusing. So we'll stay at the boundaries of here we have SQL managed instance, okay?  Now, if I'll run now kubectl get services, let's see what we're getting. Because remember, like I mentioned, we also have services that gets deployed as part of this, as part of this. So let's take a look. We'll do this and you can see here that I have SQL external service, right? And we have an IP here that I'm getting as part of the deployment. I also have a secondary external service that also has its IP, right? We said that we're deploying in high availability mode. That's the business critical that I was referring to, okay? So very important to see. But the most important piece that I want you to take out of this is that these are Kubernetes resources, okay? That we are deploying. So again, coming back to the unified operation, coming back to not being disruptive, this is really a Kubernetes environment. And obviously there's so much you can cover in such a short time. And we are gonna share with you more resources in order for you to go deeper into this. We'll try to stay in the overview boundary here, okay? So these are Kubernetes resources. And the last query that I wanna show you is the persistent volume claims and show how does that look like? So you can see here that as part of the deployment, I also have a bunch of disks that got spinned. And because this is deployed on a cluster that know how to use the preemptives of Azure, it also know how to spin managed disks at the backend. Okay, so you can actually use that capability as part of your deployment. So you can see here that we have disks for SQL 0, 1, 2, and maybe to show you how does that look like from the portal side of the house, I'll switch back to the portal, come back to the resource group that we have. And let's also add the disk and see what we have. So you can see I have 33 disks that got spin up as part of the deployment because I'm deploying in HA mode and I have SQL managed instance and I have Postgres deployed on top of that cluster. So that's a lot of persistent volume claims that get spin up. So I just wanna make sure that you're familiar with it. Okay, so I just wanna make sure that people understand that actually, you know, actual resource, sorry, actual Azure resources gets spun up as we are deploying this. Not sure, I think we lost Dave here, but I'll keep entertaining you. So that's really the Azure resources side of the house and I'm trying to see if we have any questions on the chat, not right now, so that's cool. Okay, so I think that before switching back into the learn model, what I wanna show you is also the deployment process, okay? So I'll come back to the Azure Arc Center and you can see here that I also have SQL managed instance. Okay, so remember we started with the data controller and now we have SQL managed instance. So let's see how does that look like real quick and here again, kind of, you know, very similar wizard that we have here. First we're gonna choose the resource group, okay? We're gonna pick the instance lane we'll call MS Learn, MS Learn and custom location. Remember we talked about it, you need to choose a custom location because this is where you're gonna deploy, okay? Service type, are we gonna deploy this in a node port mode or load balancer? I'll choose load balancer and here you can also configure the compute and the storage of the instance. Remember, this is something that is very similar to what you're familiar with when you deploy in SQL managed instance, right? So you can pick between the general purpose tier or you can pick the business critical, okay? So I'll show you how that look like and you can see here the difference here. So if I'm switching between those two you can see here that this is changing, okay? So we have two replicas or three replicas that you can choose to deploy from. So I just wanna make sure that you understand that and you can see that and you can choose the number or you can choose the memory units, the gigabytes that's gonna allocate it into the instance that you are deploying, the virtual cores, what are the limits that you wanna put, those are the caps, okay? And also you can pick the size of the storage classes that will get used, right? You have the data volume as part of SQL. You also have the logs, you have the backup and all these type of stuff are basically part of that. And we also have Azure Hybrid Benefit. Dave, do you wanna quickly touch on that? Yeah, so the Hybrid Benefit is basically what we briefly talked about where if you have already SQL server licenses or Windows server licenses, you can actually use a, that's a Windows server example, another Windows server in the cloud without having to pay another license. It's basically covered with that hybrid use benefits and the same applies to a SQL server which there's also some connection with SQL DBMI. But just briefly you talked about a lot about the high availability and to replica can you maybe also mention a thing or two about around the backup, how that works with SQL DBMI? Yeah, well, at the end of the day, when it comes to backup, we are providing you with point in time restore, we're providing you with that capability that are currently available also with SQL managed instance. And like you see here as part of the backup storage class, you can decide one, what type of Kubernetes storage class that you're gonna use as part of the backup. So you don't have to have one storage class, right? And I think it's a good opportunity for me to show something here, Steve. You know, I'll jump back into my demo environment and let's clear the screen and basically do, let's pick storage class. Okay, so SC will bring a storage class and you can see that right now I only have one storage class on that cluster. Okay, that's the managed premium but managed premium is really a more kind of performance oriented storage class which will spin up those disks. So a lot of the time what you will see in a production environment, you will see people allocating a dedicated storage class that is mapped to persistent volume claims or volumes that will get used for that backup tier. Okay, so you don't need to use a high performance backup tier but we are providing you with that granularity. So I think that pretty much covers that. So- Yeah, no, that sounds good. I think it's almost time then for us to jump back to the next knowledge test around SQL DBMI. Yeah, so there's a lot of ground to cover. Obviously we talked about high availability. We talked about, you know, deployment and configuration, how you go by and do that. We talked about the monitoring. Disaster recovery is another big thing. Again, we support disaster recovery. You can deploy SQL managed instance or Azure I can enable SQL managed instance between two Kubernetes clusters and configure disaster recovery between the two. You know, you talked a bit about migration and how you go by and do that. And before we're jumping into the knowledge checks, just real quick here, Dave, I do wanna share this with the audience. We talked about the tooling, okay? So if you're familiar with the tooling, you have either SSMS, you have Data Studio to interact with the database environment or with an Azure data services environment, okay? So with Data Studio, you can see here that I already have that cluster configured or that DB instance configure. So again, this is the same database that I have that I showed you in a second ago that I have configured on the cluster and the same go for SSMS. So that's the same database that we have. So again, same tool chain unified operation will keep coming back to that very important thing to understand that we're not trying to be disruptive and everything stays the same for you. So I just wanna make sure that people understand that. We talked about all the tools. So I think that we're blazing and let's just go into the knowledge check here. Sure, let's jump back to my slide deck. And then again, if you'd like to participate live, go to AKMS slash polls. I think our colleague also put it in the chat that you all should see. And the first question is right about what we covered in the beginning of this module, which is you have different service tiers and which of the options you have provides you with that high availability with the replicas that Lee urges that showed you with like two or three replicas and using the always own availability groups is that the general purpose option, the enterprise or business critical. Well, let's not have anybody wait for the answers. We go straight here and it's the business critical which is as Lee or mentioned, just went to general available last week during built and the general purpose was always there, but now you have this option for your business critical workloads. Question number two, you can view billing metrics and logs for Azure Arc-enabled SQL managed instance in the Azure portal using indirect connected mode. Remember indirect is the one where you have to upload the information, some information to the portal because it's not in the connected mode and the right answer is true because you are uploading these information to the portal so you can use that functionality of the portal as well. Next question, users can configure automated backup for Azure Arc-enabled SQL managed instance using what options? A, a server configuration setting using the T SQL procedure, SP configure. B, long-term backup retention in the Azure portal or C, configure a desired recovery point objective, RPO and retention period. Let's see and the right answer is C. We briefly touched on as you're walking us through where he mentioned also the storage class that you can define for backup to have not the same premium storage class as you have maybe for where your data is stored. Now, which tool can you use to manage your Azure Arc-enabled SQL managed instance? And I think Lee already did a great job in demoing this just as we closed out before we jumped into this knowledge test. He showed you you can use a lot of different tools but is it all of the above or is it just one of those? I hope we all got this one right and yes, it's all of the above. And with that, we're basically finished module four. We have two modules to go. One is on Postgres and then just the summary. I would say we can go straight into the Postgres. We have about 25, 20 minutes go. Postgres, we're gonna go a little bit faster through because as Leo mentioned in the beginning there will be some changes that we're expecting given that this is a service in preview. And with that, we go back to Leo's screen on the docs page. Yeah, so like we mentioned, Postgres SQL will go through some changes in the next few months as we are planning to launch Postgres SQL into general availability. So definitely we'll go through a few changes. So what I'm gonna do, I'm gonna be a bit faster for this module just because I think that we don't wanna make sure that you will get the latest and greatest one that will go into general availability with Postgres SQL the same as we are currently with SQL Managed Instance. But I do think it's important to maybe cover a few things in a nutshell here when it comes to Postgres SQL. So obviously that's the second offering that we have as part of Azure I Can Able Data Services in Postgres SQL. We're working on the assumption that you already know what Postgres SQL is all about. And if not, we'll definitely can put links in the description just making sure that people understand what Postgres really is. But it's a relational open source relational database measurement system or our RDBMS. So that's what it's known for. And really Postgres SQL has a lot of ground to cover as well, it's a big technology and it's a big database system. But what I do wanna highlight in the context of Azure I Can Able Data Services and again, we'll come back into my demo environment is the fact that this is also the same SQL managed instance gets deployed as a SQL, sorry, as a Kubernetes manifest or a Kubernetes resource at the end of the day or a collection of resources. So let's take a look, how does that look like in my demo environment here, Dave? So we'll jump back into the demo environment and let's just minimize some stuff here. And before I'm showing you this, again, coming back to the portal and let's take a look at what we have here in my resource group. We'll come back to that resource group we'll discard all these changes, go here and let's save some real estate and do some grouping. And let's look for the Postgres SQL in this huge resource group that we have with all these good resources that we deployed. So we'll scroll all the way, there you go. Well, no, sorry. So we know what, I'm gonna do this. So there you go. That's why we have the search, I think, no? Absolutely. Absolutely, so here is Postgres, there you go. So I'm just gonna make things a bit cleaner here. So this is the Postgres SQL that we deployed as part of this learn model. So we can see this is basically an Azure resource. Again, same look and feel. So let's jump into the environment and come back to PowerShell, we'll clean the screen here and we're around the same command that we ran before and let's zoom in here just a bit and whoop. All right, so we can see here that we have two pods. We have the controller, we have the worker node and these are the two pods that got deployed as part of the data services environment that I have. So again, this is a Kubernetes resource that you're deploying on top of a Kubernetes cluster that you control, okay? I do wanna touch base for a second on what you're seeing here. So as part of data services, we're also deploying for you Grafana and Kibana which are pretty standard or common open source tools to either do log management or monitoring on Kubernetes environment. So Kibana and Grafana, pretty familiar if you're part of that space. So we're also deploying that for you. So that's what you're seeing right here with the logs DB, with the logs UI. That's what you're seeing right here. And we also have the metrics pods right here. These are the ones that are responsible for deploying the Grafana environment. So again, a really a breadth of capabilities that we're providing with Azure Arc enabled data services but coming back to POSGRA SQL. So we have the pods we also have let's again clear the screen, we'll run the services query and we can see here that we have those services for POSGRA SQL as well. So we'll try to do this. So here are the services. I think I'm getting pretty good with drawing on the screen. I think I'm getting there. And also I'll show you the persistent volume claims and we are basically here. There you go. So here are the two persistent volume claims that we have. So really the reason that I'm showing this and I know that we are kind of blazing through the POSGRA stuff. The reason that I'm showing this is again to highlight the notion of we're bringing Azure services to you. You are the one controlling the Kubernetes clusters. We are the one that will get you the deployment automations and the deployment methodologies in order to bring those resources. But at the end of the day, it's the same services that you're used to in Azure. So I think that's pretty cool. Dave, we'll look at the learn model here. Obviously, there are things to consider here, but like we mentioned, this Azure Arc-enabled process regal is currently in preview. So I think that Dave, we're gonna skip through the knowledge check for POSGRA just to make sure that people are not getting too confused and we will provide a new learn model for this and a new MS Learn session as part of this just to make sure that you're getting the latest and greatest. Okay, so really just wanted to highlight that. Yeah, so we can jump over quickly to my screen. Yep. So we're pretty much in our last module for today's our time together, but we're not yet done. I do wanna just quickly summarize that you saw in the beginning when we talked about the learning objectives. I hope we were able to address those for you why we're doing this, what are the benefits of hybrid? What are your considerations you need to take for that? I wait, let me see if I can take over. Thanks for jumping to this slide. So that's why we're doing this, the options you have, we talk briefly about the changes. And then here you see under the learn more section, you have a bunch of different resources, Arc all up. If you wanna learn more about Arc, if you see this session today, it's like Arc sounds really valuable. I wanna learn more about this. We have the Arc enabled data services linked here, Arc enabled SQL manage instances, the hyperscale which is in preview or the Postgres that is in preview. But before we let you go, I'd like to scroll down a little bit further. There was this thing as you just saw when he shows you in PowerShell and he runs all these queries, you may notice there's this word coming up quite a bit called chump start. So chump start, what is chump start all about? Why we have seen so many references in demos today from Leo about chump start. And we are fortunate to have Leo actually on the call who is one of the brain fathers behind the Azure Arc chump start. And just in case you too wanna build up a environment for you to play around with, chump start is the place to go. And then Leo, maybe you can spend 10 minutes, we have about 10 minutes left to on chump start and show the audience what this is all about. Yeah, so you saw me doing the demo and when I flipped to my demo environment, the first thing that you saw is chump start our box. So we'll take a step back and explain where does this come in from? If you're not familiar with the project, we wanna make sure that now you will be familiar with the project, now you finish with this model and you know how to get started. So I'll switch over to the Azure Arc chump start. And really the Azure Arc chump start is an open source community driven project that we founded in 2020. And that project was designed to provide our users or customers or partners, our own field and cloud solution architects, customer engineers, global black belts, everyone really that is using our technologies, we wanted to provide them with a way to be able to spin up those environments in an easy fashion, but also doing that, not just on Azure, but also on other cloud providers or on premises. So if you're, take a step back, Azure Arc really is about the IT assets that are deployed outside of Azure, okay? So because of that, we wanted to make sure that we're providing you with an automated way to do this in whatever environment that may be. So the Azure Arc chump start covers all the Azure Arc technologies and basically splits into two main areas. And we also have our YouTube channel, but it splits into two main areas. We have the jumpstart scenarios. The jumpstart scenarios are basically automated individual scenarios that we have in order for you to go by and deploy. So right now we are in a session around Azure Arc enabled data services. So I think that's what I'm gonna click on. And you can see here that we have multiple Kubernetes distributions that we are supporting and the scenarios are split into two. You have bootstrap scenario that are really about spinning up an environment. And you also have unified operation scenarios that are really focusing on what are the things that you can do with Azure Arc enabled data services, right? So if I'll show you some examples here, you can see that you have multiple scenarios here that are really very detailed scenarios on how do you go by and do this type of stuff, okay? So obviously it's impossible to cover all the scenarios. We have more than 100 scenarios as of today. And I think more than 25 just Azure Arc enabled data services scenarios. So that's a lot. So just wanna make sure that people understand the breadth of this. So these are really the scenarios.  And jumpstart Rbox, if I'm thinking about the individual scenarios, they are individual.  Rbox is really the notion of taking multiple scenarios and jello those together into a single unit of deployment and get it and bring in you an automated full blown Azure Arc environment that captures all the capabilities. So with Rbox, we have multiple flavors, okay? We have the full flavor, which is basically will go and deploy everything for you, okay, Azure Arc enabled servers, Kubernetes, data services, everything. We also have IT pros flavor, which we announced back in January. That's a flavor that is focusing only on Azure Arc enabled servers and all the use cases around that. And last week at build, we announced Rbox for DevOps which will focus on Azure Arc enabled Kubernetes, okay? But as part of, and we're also gonna come up with a new flavors in the next few months that will be more laser focused on Azure Arc and maybe data services. But as of today, you can already deploy Rbox full and enjoy Azure Arc enabled data services as part of the deployment. So as part of my demo, what you saw is me provisioning Rbox.  And as you can see, we're using the jumpstart as well as part of those learning models to make sure that we're providing you with an awesome experience and an awesome learning experience. So we will be able to deliver a good quality sessions. So that's really a jumpstart in a nutshell. We also have our YouTube channel where we are, you know, when we have our live ensure we're coming bringing guests, making sure that we are providing you with stories across the industry and a community with people that are using Azure Arc across the board. We also have demos as part of the YouTube channel and many, many other things. And the last thing, Dave, that I will say to wrap things up, like I said, this is an open source community-driven project. So we also have our scenario write up guidelines. If you wanna contribute the scenario, if you wanna work on the scenario, you can definitely go buy and do so or providing you with some guidelines on how to do that, what is the full, the structure, how to do markdown LinkedIn, what are the things that you need to take on a consideration when you are developing this in terms of code cleaness, you know, visual studio code tips, you know, so how to take good screenshots because this is very important to us. So again, really, if you wanna contribute, there is a way to do so. So I just wanted to wrap up with this. Thank you. Thanks, Dio, for sharing that. I think this is super awesome. Again, specifically if you just wanna, you did the learning and we jump back quickly to my slides. So if you haven't finished the learning, feel free to go back and go through the learning. If you have paid attention mainly to all the awesome demos that Leo did today, go and do it. But if after the learning model, you wanna take it to the next step and you wanna get your hands into the technology, then you saw a jumpstart with the Azure Arc Box. Great way to do that without having to figure out everything as it is deployed in the cloud and you can basically take it from there. I also like to point out that besides today's session, there will be more session. Leo mentioned it very quickly in the beginning. It is a series. The next session that is gonna come up is integrate Azure services with Azure Stack HCI and it will happen on June 9th, which is next week. And it will be based on central Europe time, 10.30 a.m. So thank you very much for joining us today. We appreciate you taking the time in your busy days to learn something new and we hope it helped you and it allows you to take the technology and apply it to your business or to your use case as you want. And as Leo mentioned, if you wanna contribute, if you're actually a power user or this is something you really care about, even that the guidelines are there for you to get in touch with the team and to contribute and help us enable even more companies to do great things with data services. Yeah, yeah, for sure. And it's been a pleasure. Dave, thank you so much for doing this session with me and really for our customers, our audience, make sure that you're diving deep into this technology. This is an exciting space. The Azure Arc product is moving very fast and it's a super cool set of technologies. So you'll see me around, I'm sure. Okay, thanks everyone. Have a great day wherever you are. Thank you. Bye everyone.


So some pretty good talk so far, huh? That's gonna be a tough act to follow but So I thought I'd do something really revolutionary here. I'm actually gonna talk about using Alexa and Erlang for telephony application It's pretty funny because you know you go to these these talks in the odd time you'll see it Well, if I'm not talking anyways some about telephony, but I'm gonna actually talk through a Phone server or a soft phone server I'll give you a demonstration I'm gonna first. I'll talk about myself because you have to talk about yourself how we use the looks at work I'm gonna demo the product and I'll go through an overview of it talk a little bit about the architecture the design and then Some questions at the end if we have time So who am I my old age? Goggles on here Okay, so some information there and we already talked about Canada a crapload of experience writing software and in the telephony Area I'm a partner and the R&D lead at a startup company called e-matrotel We've been around for about five years or six years and we provide cost-effective communications We're a bunch of facts nortel people and so we built systems that help Nortel people with nortel equipment Maintain their equipment and give them a cost-effective upgrade to unified communications So how do we do how do we use alexa so? I'm proud to say that we've been developing alexa applications for over two years now I Think I started at alexa row dot seven something My first application was actually had no Phoenix. It was just real telecom stuff. I presented I presented this at the lexicon 2014 so if you want to know any information about this you can look up that video But it was a telephone gateway. It was written in alexa And it's we sell it's a multiple commercial deployments. We're out selling it now and supporting it Road a Notifier application This was an interesting project. I had originally written it with rails Using a product called adhesion for talking to the call server. I'll apologize right now if I used too much Telephony lingo and stop me if you need clarification So some called adhesion to talk to the talk to the telephone switch and Get in there and play play recordings and and get key presses back and I could never get the thing it was it's very concurrent. So the application is you know You load up a list of list of people It was a hospital application. So all hands on deck code orange Call everyone into work. So basically hit a button it goes through about 300 people and one deployment They have about 300 people on staff goes through calls everyone about I think they was configured for 15 calls at a time The answer plays a recording saying you need it at work press one to accept two to decline and there's real-time reporting and all that fun stuff and I could never get it work all the Concurrency I couldn't get it working. Well, so one day I said screw it and I rewrote it in Phoenix and It worked like a charm now It was not an easy job because I used a bunch of stuff that the Alexa Phoenix Community ecosystem didn't have So I had written it with fact of admin So I actually wrote X admin to replace active admin And a lot of the interfacing with the telephone switch wasn't there. So I had to write some libraries for those But that's now we're selling that and we have one production deployment on it And then of course the the one I'm going to talk about today is the web RTC soft phone and it's Currently in alpha testing we're getting ready for beta Hopefully in about a month we should be ready for beta and and then hopefully selling some time before the middle of this year I've got various other prototype applications at elixir conf last year I did a talk on doing a voice survey application so you create a survey and a database of questions and then it someone calls in and it reads out the questions and and choices and then they pick it on their The on their telephone and then you get the summary of that so And that's up on github so The web RTC soft phone. So what were the goals? So I was asked to create a new soft phone for our telephone platform and the requirement was support on multiple desktops so Linux or sorry windows and Mac of course because I run Mac and Also on mobile platforms We're a startup so we have very low R&D budget so and One of the requirements so we have our telephone system has has has phones actually they're The old nortel IP phones and they're very feature rich Much more feature rich than sip clients if you're familiar with the sip protocol So we wanted to use that that protocol for for signaling and managing the telephone I'd had to be able to interface on the system with all the other phones as well as be able to talk Phone your mom so we had to support the psdn trunks, which is a fancy name for Calling everyone else outside the office pbx standing for private branch exchange Features like call logging conference hot desking and Directed pickup and there's hundreds of different features and we also want it to be a future proof for a platform for video Messaging chat rooms presence, etc So we decided to use web RTC so that we could build this phone in a browser And get away get away from having to package it for different versions of windows and Mac and And then separate native clients for all the different mobile platforms. There's just one or two out there So we chose web RTC and for those who don't know web RTC just a real quick overview So it's a new developing standard for real-time communications In the browser without the need for native plugins Or any client software installed So the draft spec involves support for audio video and data And it's supported in some of the major browsers like chrome and firefox natively, I think there's also some plugins you can install on edge and Safari and and so on It's really a set of JavaScript APIs for doing audio video And Media set up it handles the natural verse all we heard about that earlier Has data channels and security It's designed for peer-to-peer communication. So so The media path is actually from from browser to browser. It doesn't require a centralized server But it does not define a signaling protocol to figure out who you can talk to and to Figure out where they are so that you can send them a request to set up a call So before I go into the details actually, let's do a little demo here. You want to give me a call? Yeah, I hope it works. Oh Look at that okay, so I got a call coming in it's up there and I can actually click it and It's all my headset right now. So Let me just test it here Hello No, you can't hear me. Oh, I can hear you now. Okay. Well So now I'll put on speakers say something so so we got a we got a call going there What's that? It's so it works And then there's all kinds of fancy features on here I can put the call on hold whoops, that's you know that's the whole button so Erica it's on hold now so you shouldn't be able to hear me Yeah, yeah, yeah, that's connected. So by the way, this is connected I've got our product our telephone system running in a virtual machine. So Contrary to popular belief virtual machines aren't all bad.  I got a problem with my dial tone right now So any any experts with web audio in the audience in JavaScript. I'd love to talk to you So I can't get my oscillators oscillating Get that problem all the time You know, we've got a fancy directory feature in here so basically it goes into the goes into the switch and pulls out all the extensions and You know favorites Favorites so you can add and subtract them from favorites and Lots fun stuff. So I'll hang up the call, you know, we can go to my voicemail and So anyways, that's that's what we're building If if you're familiar with nortel office phones, you'll actually probably recognize this layout. It's very similar to our to our hard phones All right so Let's talk about the extra at the architecture now that you understand what I built. So we have some hard phones and I don't like most And it's connected to the to our call server, which is basically a limit Linux box And then up on the top on the the client side Okay, so we have in the client. I've got use jQuery mobile for the for Just a general way of rendering the client and that way it's it's mobile ready It's essentially a single-page application it has selectable UI themes and It's the UIs mostly driven by web sockets Hence Phoenix So on the Phoenix side heavy on the channel And then a standard architecture controllers blah blah blah And I also use X admin to as an admin interface for it and Then on the kind of the pure Alexa side So I've got you know, probably the main component is is this client state machine client SM It's a gen FSM I've got This proxy that I'll talk about in a minute And then I have some some modules for the telephony signaling We actually talked to the switch through reliable RUDP connection Software that I actually that that was written as part of a previous project and then a couple of state management apps supervisors and that's about it and then finally configuration and packaging so we use RPM to pack a package it up and deliver it as part of inside RPM. We use the XRM and conform So go through a little bit of the design details Client controller is pretty simple. It's basically got In essence one main action to load the phone do authentication Through a plug in in the router I actually use plug off and I've modified it. I've added a database type authentication mode to it and So when we come in for a request, we check see if the client state machine is running for that that session obviously if we have the session and If it's not then we set up the session We store I store the Mac address each phone has a Mac of kind of a virtual Mac address That's how the how the telephone server identifies it. So store that in the session load up the the models And there's a several different models for for settings themes number of keys the selected audio devices I was using a headset there so you have a separate device for For a headset and and the main hands-free option and render the page The client SM so have one gen FSM. That's hard to say Process per every register client It handles the client signaling so it handles the signaling to and from the asterix Switch call server so our product is based on the open source telephone server called asterix And we do that through a reliable UDP and stimulus-based signaling stack and We also handle the signaling to and from the browser through Phoenix channels One of the things I had one of the problems I had to solve is Since a lot of the state is done through channels and there's there's And if you hit the reload brown a reload button on the browser You basically reload everything, but you don't have all the state all the different messages So the the icons against the keys the display and so on So I built a proxy module So when I when I get a message in or a data in from the switch I actually go through this proxy proxy module that basically saves it And then if you do a refresh in the browser after you've logged in then it basically just re-sends out all the the messages so Pretty extensive watchdog handling. So I've got to handle a case of Did this server go away or did the call server go away? so there's a bunch of a bunch of watchdogging in there and So the client will detect, you know all those different scenarios go into a state where Render server unavailable in the display and then if they come back online it starts up again The state machine is fairly large. So this client SM. It's actually very large. So It's handling the messages from the switch. It's handling the messages from the client and so on So the chance of error in in that state machine is fairly high Protect against that. I actually have a separate process that I store a copy of the the state After each each event coming in. So, you know, if you're familiar with gen fsm There's a tuple you you put at the end for next state and blah blah blah So I actually created a function that that I call and in that function It basically sends the state over to another very simple Agent to store that state and so then if the client if the client SM crashes as part of it Then the supervisor restarts it then I just go I detect that and I go out and I get the old state So it comes back in the exact same state. It was Read about that in a book a whole I think really early on and it was about a year and a half later And I thought oh, I think I've read how to do that So the client channel It's fairly simple basically the message comes in so on the on the Receive side from from the client down a message comes in there's MAC address in the in the message So I extract that out. I Check to see if the if the state machine is running If it's not I send a reload message to the client if the state machine is running I tell it the State machine to update. Oh, sorry. I'm on on join. I got lost myself So if I get an on join, which means you've hit the reload button. So on the first one if state machine is not running I I send it to wait and or I tell it to to do an update Handle in is just a bunch of bunch of clauses to handle the incoming messages So couple interesting things in the project. I have So the administration interface Is I put it on a separate port. I didn't want since you know this And everyone in the office is using that right whereas the minute of the interface is just an Admin person so I didn't want to put it on the same port So I actually have two separate ports and so two separate endpoints to manage that Furthermore the Authentication for the admin interface is different It uses a database table as part of our telephone system and not my application So So I have a different authentication plug-in for that or different configuration for that and I also have multiple repos like I just said there's a separate database for For two areas the admin login as well as that directory feature. I showed you It's actually using a different database. They're both my sequel So I have an end point for either so some of the production implications of building a product for production One thing we like to do when we want to make money is protect our intellectual property So I all my projects have this removed debug info and I just gave him a little example in the pinup here So a couple lines in your in your mix file enables that Plus I had to put a little bit of code in my presentation so So packaging use the XRM to to build the release tar file Like I said, we use RPM. So as part of the build the build part in an RPM spec file I actually run the mixed mix depth scat and then the release and so on in the build section and And Configuration we're using conform Pretty standard stuff except we use a different non-standard config file location I also use syslog so all the logging goes to syslog and I use Syslog package that I wrote a while ago. That's in github. So what's happening in the browser? Most of it so the HTML is pretty basic. It's just a big file that you know renders all those controls But all the logics is handling is handled through the channel. So I've got like 50 or so channel on handlers For all the different things that come in so update the display Update the button texts icons You know the keys are context sensitive Setting up media path playing dial tone DTMF tones Starting a stopping the ringer Switching mic and speakers etc a lot less channel pushes. So a lot less traffic going out Going from the from the browser down to the server Said it's a single page application So all all the pages are loaded. I Loaded in one action using jQuery mobile page transitions Ajax requests. So if I go and go into the settings and do a submit it does an Ajax request and Comes back most of them are like that. There's a couple actions that Require a page reload like changing the theme So some of that forces a page reload which is problematic with WebRTC because it doesn't like a Reload of the page when you're when you have a media path connected So I'd actually put some JavaScript code in there to stop or block page reloads when you're on a call And then I have separate controllers for the different the settings and the properties and etc So design a WebRTC So WebRTC most of work's done in in just a few JavaScript APIs There's a concept of a peer and There's a for every call. There's a not traversal Protocol called ice. I actually saw it on a previous presentation So a couple calls like that Phoenix channels are perfect for this So, you know getting getting a request in and passing the passing the sibling information Something called an STP packet You know Phoenix works great for that The media path is done outside Alexa and Phoenix. So the media path is is from the browser in this case We're not doing peer-to-peer so we actually connect the soft phone to our switch and then our switch switches out to some other phones So so we actually had to build some some WebRTC support into our our Channel driver for our phones This was this was interesting When I first started doing this I wanted to try to do more work in elixir So I went out looking for support for a nice client for you know Phoenix works great Found pieces of some of this stuff, but not a full production implementation that I could find also the media path in WebRTC has to be encrypted with DTLS just TLS for UDP and There's no support in Erlang which was a red herring because there's code in there to do it and Posts out there on how to do it, but it doesn't work And if you read further enough further enough down the road down down the Listings it says oh, yeah, well, we only did about half the stack so Yeah, that was a day So we ended up doing the ice and the DTLS in the asterisk channel driver and so I don't I basically Take the take the information from WebRTC down through Phoenix I get the candidates and the the different information But then I pass that through our protocol to to the call server and it handles the rest of it Believe it or not The headset support was a nightmare. So, you know if you ask me is WebRTC ready my answer is no You know for your basic client-to-client very simple applications, you know, it's great But just to be able to Support multiple devices so a headset and hands-free and it'd be able to push a button to switch between them in call It was a nightmare. I I've spent I don't know. I probably spent two weeks on this and that's a lot of time I couldn't find any good examples So I managed to find about three different technologies and things and mush them together and Got it working. So If you're ever trying to do that, let me know I Also have a link here So I wrote a very primitive peer-to-peer WebRTC example Early on in the project just so I could understand how things worked and I have that up in github So if you are playing with that but WebRTC With Phoenix or elixir, you know, you can go there Just another another little What I thought was an interesting little challenge or thing I dealt with was our product is licensed commercially So you actually have to buy it and and it's it's licensed to a server And the licensing is based on the number of clients that you can actually have registered and using it at a time So So basically You know, I have a licensed manager and I have several elixir projects So so I share I share this or I Built it shareable with this project because I had used I had copied it over twice for two other projects And I thought no, that's not good So I actually built a module for this. I have it built so that in development you can actually Mock it out or configure it out so that you don't need a license in in dev But I built that so that you can't actually configure it out in production mode because we don't want customers doing that and You know to do that because of a separate project You actually on the depths on the depths line. You actually have to pass the environment across As I'm showing in this example Okay, what were some of the challenges? Elixir and Phoenix weren't So they're awesome I wish I could spend all my time working in in Elixir and Phoenix on the project, but unfortunately I have to do some JavaScript Web RTC I talked about some of those challenges already Still have a few challenges. I'm fighting some echo and voice quality issues. I have to resolve Single-page web applications can be a little tricky and migrations we're gonna solve this so Yeah, running migrations for production is I actually ended up having to write some of my own code there so I made the mistake of running running echo migrate in the build section of my spec file only to realize that That's run on the on the build the host and not target so anyways, I did solve that and have a solution for that for for just calling the calling the migrate function in echo directly through an RPC call after After the Project is up nor the application is up during the install questions So the question is have I run into any IVR call trees stuff in all of this The so a couple of the applications I've built are based on that so the call out Application as a very simple one press one to accept to decline. So that's that's a you know a binary choice in an IVR the The voice the voice survey application is kind of an IVR application, right? Because when you call in it's actually going to go through the database read the question Read all the choices and then you get to pick and then it has you know It has options to replay and and all that stuff. So it is kind of an IVR. So Part of that I wrote a couple libraries for at for the asterisks call server so that I can interface from Phoenix Or from a elixir to the asterisks call server. And so what happens is You know when they come in that that call is you know That stuff is directed into my elixir application and I'm able to play it recordings and ask choices and and stuff So that's your question cool Because when you call it All right, thanks very much


Yeah, top secret this week. We have some things that aren't out from the aid fruit vault lady. Ada. What is out For us Okay, so don't ask don't ask about it so last week I picked up a Seed we know shall and I thought this is really cute and it was inspired me to go back to an old design I had where I made a trinket with the stem a qt connector on the end But I never quite finished it because it was like bigger than a trinket and I kind of messed around with it But I wasn't happy and one make it double-sided So this is get the same pin out in shape as the seed shout. It's got usbc a samd21 a regulator It's also got a reset button because I really like reset buttons and it's got a stem a qt connector So you can plug it and it's usbc. It's got usbc. It's a nice cord. It's got a neo pixel So I just got this going so there's a little uh, it's a very tiny but extremely bright Rgp cute runs python runs python It's getting starts. This is like first vision. I just did this right before the show. I put this together It's got castellated pads So I think it'll be a nice addition to the miniature circuit python and arduino samd21 boards And I always wanted a little board that had a stem a qt connector Yeah, it's a good addition now that we've got 50 boards. Cool All right, and with that back to the vault. Okay Don't ask Maybe I'll show it off next week