[00:00.000 --> 00:13.000] You're good to start. [00:13.000 --> 00:18.000] Okay, so hi everyone. [00:18.000 --> 00:26.000] My name is Mohamed and together with Mikoia we work both at Canonica and today we will be talking about [00:26.000 --> 00:31.000] on the road to managing databases, which is a canonical effort to make open source operator [00:31.000 --> 00:41.000] as we will see for a large, let's say, you know, landscape of open source databases that we will check later on. [00:41.000 --> 00:51.000] So in the presentation we'll start by explaining what we are aiming for, basically the vision of our, let's say, open source operator. [00:51.000 --> 00:59.000] We will go into a bit more detail with Mikoia about the database that we did choose and of course we will focus on MySQL for the story. [00:59.000 --> 01:11.000] We will explain where we stand right now, we will see a demo and then we will finish about, by speaking about the roadmap for in particular SQL databases. [01:11.000 --> 01:14.000] So what we are aiming for at Canonica now. [01:14.000 --> 01:19.000] So we have, let's say, our building block for operators. [01:19.000 --> 01:28.000] So Juju is our operator, by more, is the technology that allows us to build quite easily operator for pretty much anything. [01:28.000 --> 01:33.000] In this case, we are using it to build operators for databases. [01:33.000 --> 01:40.000] And what Juju allows us actually is to kind of abstract the, what we call the backing clouds, yeah. [01:40.000 --> 01:47.000] Meaning that it can work with pretty much, I mean, if there is a list that you can find, [01:47.000 --> 01:54.000] hopefully later on when we will share this slide in, let's say, an internet where we list the exact list of backing clouds [01:54.000 --> 02:00.000] and all of the ones that I mentioned here are supported and including orchestrators on top of backing clouds. [02:00.000 --> 02:08.000] So to build is one of the LSD which can allow you, for example, to emulate highly available setup in a single machine or even across machine. [02:08.000 --> 02:14.000] It's something that you can use as well as your backing cloud or infrastructure provided if you wish. [02:14.000 --> 02:23.000] And on top of that, we are building open source operator for a list of databases, so MySQL for sure. [02:23.000 --> 02:29.000] But Postgres, good to be, the 20 version, open source and more to come. [02:29.000 --> 02:38.000] And the idea is that we would like to automate a number of services or, let's say, you know, operation around databases, [02:38.000 --> 02:44.000] including employing a highly represented, as you will see later, scaling out and in, and ignoring node, [02:44.000 --> 02:52.000] scaling up and down, adding resources or removing resources, and of course doing backups and restores and upgrades. [02:52.000 --> 03:01.000] So this is basically our build-up, and Nicolas, I think, he will talk about the database. [03:01.000 --> 03:22.000] So unfortunately, Amazon has haven't killed all the bases, especially on premise, so we will try. [03:22.000 --> 03:37.000] Yeah, basically what we are building on which text tag we are building our solution for MySQL is for sure not MariaDB, [03:37.000 --> 03:40.000] or what reason we will use MariaDB. [03:41.000 --> 03:48.000] We are using MySQL, and we are using in a database cluster. [03:48.000 --> 03:57.000] Of course it is group replication, virtually synchronous replication of sort of synchronous replication. [03:58.000 --> 04:10.000] We are using MySQL Shell, because a lot of kind of knowledge of Oracle experts have been created, [04:10.000 --> 04:19.000] and it creates a lot of painful things for us, but we are suffering and continue using MySQL Shell. [04:20.000 --> 04:30.000] We are using MySQL Router, Percona Extra Backup, and for metrics node Percona Monitoring Tools, sorry, [04:30.000 --> 04:33.000] on the MySQL Extra. [04:33.000 --> 04:40.000] Yeah, so group replication, why group replication? [04:40.000 --> 04:44.000] Because that's simple, we don't want to lose data. [04:44.000 --> 04:56.000] And we want to have good performance in case of if you compare it to semi-synchronistic. [04:56.000 --> 05:00.000] Yes, it looks like that simple. [05:00.000 --> 05:17.000] In fact, yes, on the top of Juju, it is additional sub-layer in the system, but anyway it simplifies a lot of operations. [05:18.000 --> 05:33.000] Yeah, how it looks in reality, what we have right now, in that concrete moment, [05:33.000 --> 05:44.000] with simple Juju Deploy MySQL command, you can get automatically deployed cluster in a DB cluster, [05:45.000 --> 06:00.000] you can scale it, it has self-healing, meaning that if one member dies, it can be recolored on start, [06:00.000 --> 06:09.000] if data not lost, it can do incremental state transfer, it can do full state transfer, [06:09.000 --> 06:13.000] if you lost the full data or data not recolorable. [06:13.000 --> 06:19.000] It also can self-heal after full cluster crash. [06:19.000 --> 06:25.000] It is not fully automated thing in case of MySQL. [06:25.000 --> 06:33.000] I saw today news from Poland that it is automated already in Galera 4, but not on MySQL. [06:33.000 --> 06:35.000] Full cluster crash. [06:35.000 --> 06:43.000] Yeah, of course, vertical horizontal scaling in meaning that you can add members, [06:43.000 --> 06:47.000] and you can remove members from this old hardware. [06:47.000 --> 06:55.000] We have kind of user management in meaning operator, [06:55.000 --> 07:03.000] operator is application, use set of internal system users for backups, [07:03.000 --> 07:07.000] for monitoring, for administration of cluster. [07:07.000 --> 07:13.000] We have user management for system users, and for Juju native applications, [07:13.000 --> 07:19.000] which doesn't say anything for you, I'm sure, we also have user management, [07:19.000 --> 07:29.000] so when the new application connects to our Juju, it receives automatically MySQL user, [07:29.000 --> 07:35.000] and the user can rotate it, and the user has limited amount of operations. [07:35.000 --> 07:39.000] Yeah, we have MySQL router in place. [07:39.000 --> 07:47.000] We see it as, of course, thing which should run on application side, [07:47.000 --> 07:55.000] and it is designed in our stand to be run on application side, works well. [07:55.000 --> 08:01.000] If you have the same version between MySQL and MySQL router, if you are lucky, [08:01.000 --> 08:07.000] and can update your application servers, that is, database servers, of course. [08:07.000 --> 08:15.000] If that condition is true, MySQL router is a great product. [08:15.000 --> 08:23.000] Also, encryption in transit, and some basic certificate management, [08:23.000 --> 08:31.000] centralized certificate management, and, of course, with several, [08:31.000 --> 08:37.000] maybe we could go already, merge it back of functionality. [08:37.000 --> 08:41.000] Not resource yet, but we are working hard. [08:41.000 --> 08:45.000] That's probably about current state. [08:45.000 --> 08:51.000] So, how this magic works in reality, it looks like that. [08:51.000 --> 08:55.000] Juju is deploying the MySQL. [08:55.000 --> 08:59.000] It runs three members. [08:59.000 --> 09:03.000] If you see something, you are lucky. [09:03.000 --> 09:09.000] Active addresses. [09:09.000 --> 09:13.000] Yeah, it is repeating. [09:13.000 --> 09:17.000] Another, for example, another example of scaling. [09:17.000 --> 09:23.000] Again, if you are lucky and see something on the screen, Juju, you need one. [09:23.000 --> 09:29.000] You can see the stuff, and you need it. [09:29.000 --> 09:33.000] It is quickly because the database is empty. [09:33.000 --> 09:39.000] But, in fact, if you have a lot of data, when a new member comes, [09:39.000 --> 09:45.000] it is needed to make a transfer of data from old member to new member. [09:45.000 --> 09:52.000] Of course, there is in the DG cluster, so the functionality is automatically in the DG cluster. [09:52.000 --> 09:58.000] No worries, automatically, not always works in case of MySQL. [09:58.000 --> 10:04.000] You need, sometimes, to force SST, and we are doing that functionality now. [10:04.000 --> 10:10.000] Yes, Kenny, I'm making notes. It doesn't work. [10:10.000 --> 10:14.000] I can't see anything. [10:14.000 --> 10:16.000] I can show you a code. [10:16.000 --> 10:24.000] That's probably it about live demos and Roslap. [10:24.000 --> 10:32.000] What is it saying? [10:32.000 --> 10:36.000] I'm just making this from addition, so we will talk about what we are planning to do next. [10:36.000 --> 10:40.000] I hope we are back now. [10:40.000 --> 10:44.000] Okay, that is basically what we called the entity before. [10:44.000 --> 10:50.000] We are using, let's say, the naming speed there for the control. [10:50.000 --> 10:54.000] So, the current version that we will be doing, say, around April, [10:54.000 --> 10:58.000] will contain what you can see, of course, already. [10:58.000 --> 11:04.000] But we are, as we are working on phasing the resource, so as I said, MySQL is not yet merged, [11:04.000 --> 11:06.000] but we are working on it. [11:06.000 --> 11:10.000] So, we haven't done a documentation, but it's not so difficult yet, and we are working on it, [11:10.000 --> 11:12.000] making that available for you. [11:12.000 --> 11:18.000] Observability, so give this mention already that we are using, let's say, an exporter. [11:18.000 --> 11:22.000] Hopefully, you will have all the stats, okay, that is provided, actually, by Juju. [11:22.000 --> 11:24.000] Not all of the work is done. [11:24.000 --> 11:28.000] I mean, some of the work is already done by Juju, let's say, and for Shaxx and Beach. [11:28.000 --> 11:34.000] And, of course, the English and English team for our architecture, including the operator, [11:34.000 --> 11:36.000] will probably be snazzy. [11:36.000 --> 11:40.000] But we might be using it for some reason. [11:40.000 --> 11:42.000] So, this is basically where we are operating on. [11:42.000 --> 11:46.000] We have confidence that this should be delivered. [11:46.000 --> 11:50.000] Just to give you, let's say, an impression. [12:04.000 --> 12:06.000] Thank you. [12:34.000 --> 12:36.000] Thank you. [13:04.000 --> 13:06.000] Thank you. [13:34.000 --> 13:36.000] Thank you. [14:04.000 --> 14:06.000] Thank you. [14:34.000 --> 14:38.000] Take a look. [14:38.000 --> 14:42.000] So, that's it about our presentation. [14:42.000 --> 14:48.000] I brought some sweets as well for you that you can enjoy for free. [14:48.000 --> 14:52.000] And that would be even happier if you ask questions. [14:52.000 --> 14:56.000] May I ask a question about... [14:56.000 --> 15:02.000] Obviously, I think you guys raised these happy words. [15:02.000 --> 15:06.000] Group reputation has a maximum number of members. [15:06.000 --> 15:12.000] So, if somebody wants more members, more feedback, that is your system. [15:12.000 --> 15:16.000] Yes, so, basically, that's right. [15:16.000 --> 15:24.000] Juju group reputation has limitation of 9.11 members. [15:24.000 --> 15:26.000] What is suggested way? [15:26.000 --> 15:30.000] We think that we will use cluster sets. [15:30.000 --> 15:36.000] Very soon, we have a design how to make this happen in case of Juju. [15:36.000 --> 15:44.000] So, basically, we will have several energy being cluster sets, if you know what it is. [15:44.000 --> 15:48.000] Basically, it is two different group reputation clusters. [15:48.000 --> 15:52.000] These are synchronous replication between them. [15:52.000 --> 15:56.000] One, two, three, five. [15:56.000 --> 16:02.000] And is this underlying CR exposed to the user? [16:02.000 --> 16:06.000] Or do they have to do CLI? [16:06.000 --> 16:10.000] Dependent on what? [16:10.000 --> 16:20.000] So, if you use teachers of manager database, I mean, you want to scale, you want to enable DLS, [16:20.000 --> 16:24.000] you want to change the class for administrative system user. [16:24.000 --> 16:30.000] In that case, you are using Juju CLI. [16:30.000 --> 16:36.000] If you want doing something with database, you are creating database. [16:36.000 --> 16:40.000] But it depends. [16:40.000 --> 16:42.000] Just to explain this. [16:42.000 --> 16:48.000] What you can say is that, I mean, the operator, our code is really about managing database. [16:48.000 --> 16:52.000] You can get the regular secret connection and do whatever you would like. [16:52.000 --> 16:56.000] Your application does not have to be within Juju. [16:56.000 --> 17:02.000] We can configure it in a way so that your application is outside. [17:02.000 --> 17:06.000] At least, the part I want you to see is that it is a part of Juju's operator. [17:06.000 --> 17:10.000] You can install a CRV that exposed the CRs. [17:10.000 --> 17:12.000] No, no, no. [17:12.000 --> 17:22.000] It is, yes and no, Juju is operator in meaning of what is operator, but it doesn't work to see it is. [17:22.000 --> 17:34.000] You can think of it as an orchestrator that can work with not only, I mean, Kubernetes as the one of multiple players. [17:34.000 --> 17:40.000] But it's a good way of thinking about it as an orchestrator. [17:40.000 --> 17:42.000] It depends the character. [17:42.000 --> 17:50.000] You can place a role as an intermediate layer. [17:50.000 --> 17:56.000] That is, of course, completely my base on the slide. [17:56.000 --> 18:06.000] And at the same time, as a different user, I would guess that it plays the role of an intermediate layer between the user and the system. [18:06.000 --> 18:12.000] Because, well, I see that all the interaction was there. [18:12.000 --> 18:18.000] So, is it true that it's actually a component which plays on both fields and funds? [18:18.000 --> 18:20.000] Yes, let me answer. [18:20.000 --> 18:34.000] So, basically, Juju is kind of automation, a middle layer automation, but we built our operators on top of Juju. [18:34.000 --> 18:38.000] In that case, we don't care what the file system. [18:38.000 --> 18:44.000] We say, hey, give me the disk there, into that directory. [18:44.000 --> 18:48.000] And don't care about multiple field networking and so on. [18:48.000 --> 19:00.000] And it has a lot of patterns for process management, which you can say, hey, run me that process. [19:00.000 --> 19:08.000] But on that privilege, constantly, or run it on sports when I am doing some action. [19:08.000 --> 19:21.000] So, it is kind of operator framework, but operator framework, which uses some unified level of hardware under the hood. [19:21.000 --> 19:27.000] And it equally works well on open stack as on Kubernetes. [19:27.000 --> 19:32.000] So, it is a bit more advanced, I would say. [19:32.000 --> 19:37.000] And not the same plan, it corresponds to the interaction with the user. [19:37.000 --> 19:39.000] Yes, absolutely. [19:39.000 --> 19:43.000] Thank you. [19:43.000 --> 19:45.000] Perfect. [19:45.000 --> 19:49.000] One more question. [19:49.000 --> 19:51.000] Thank you.