Servoy Cloud – Viktor Hofstede, Rene van Veen
Servoy engineers Viktor Hofstede and Rene van Veen explain how Servoy Cloud works
Good morning everyone. Can everyone hear me? I’m not used to talking in a microphone like this so hopefully I don’t forget it. Slowly lowering my hand. Yeah, let me know. Okay. Yeah, my name is Victor Jose. I’m a service expert at servoy. The way to be is my colleague Renee Famphen is also a servoy expert but of all he is the creator of the servoy cloud. And Hariel and Robert have asked us to present the servoy cloud and what it is and what they can do. But first of all, I’m curious who has never heard of the servoy cloud before? I was thinking maybe one or two hands but no hands is okay then I’ll keep the explanation about that short. Servoy cloud is a way for us that we have created to get your servoy application live in the cloud without you needing to have any knowledge of defaults or the backend that comes with that. Who is using the servoy cloud currently? Or hands? Okay. Okay, I expected that too. Who is using ng client or titanium client and not using servoy cloud? Okay, that’s a lot. Okay. I expected something like that. Tough crowd and AI and things. But we will show you how the servoy cloud works and we’re going to do that with a live demo and I’m really scared of live demos because you know what happens. We practice it and everything works and then here nothing works. But Renee ensured me that everything will work today. Yesterday it did. All right. And I started this presentation with how we want you to start and that is on the servoy website. There is a button in the top right or in the middle now that says it gets start for free or it gets started now. And this will let you create a free trial for the servoy cloud. So you will get your own namespace and the namespace in this case is your own environment. You will get your own Git repository to which you can commit your code and the servoy cloud will build this code, the servoy application in the cloud so you can see it on a website straight away. So that’s what I did. I created a small sample application and you can show that. It is called servoy camp and it probably looks very familiar. We see the data with total sales. We have some nice sales, some nice orders. We have the task manager with probably familiar data Alfred’s Flutterkista. We see that all the time. And I created a summary page as well. And on this summary page I put three buttons and the table again with all threaded. Three buttons and I have a successful button that works fine. I have a button that is broken. I probably made a mistake in my code here. I’m not too sure. And I have a button that’s as slow and this executes a query and downloads a CSV file. But this is very slow and I’m not sure my MySQL is not that great. So I probably did something wrong here. And now I want to ask Renee maybe we can start with that broken button because you told me that you can fix this using the server cloud. So before you start one more thing, I want to keep questions for at the end. Otherwise I lose track of everything that I wanted to say. So please save questions for at the end. We do have some time reserved for it because I expect questions. Sorry, go ahead. So first of all, say about that. I will stop the instead step when I’m doing and what the output works. So I created an email address to have the same name page. We can create it. I can log in and do that one. Then I end up as one of the dashboards. Of course, the resolution looks a little strange. You see the other dashboards. You see the last activity of the pipeline. So in this case, I have environment and I have prediction with environment. It was built successful. So you can see yesterday evening we were still busy to finish this demo. So that all goes right. Then we have the different environments. So there’s also a prediction environment and there’s a very different environment where you can see the current users, what are currently live login at the time. So there are two users on the development part. There is one on the prediction environment and version health. Then once they’re back, it’s also a nice get help with it. That’s the thing one wrote last they’re talking about. Probably actually raised my resolution. But here, this is the tip what you can actually have with documentation. So if you have any questions like, how do I set up a set up a set up a cloud namespace? It will send those questions to Open AI in this case with our feeded documentation and it will give you an answer. Like hey, you should go to a spreadsheet by the link to the information. No, no, no steps what you need to do. It will tell you what to do. So it will also know something about sample itself. So you can ask like, how do I do a filter found set or how do I use this sample with specific things? It will answer those questions. Then going back to your original problem. It’s the if I go to an application application is that is you can have multiple application but this case fixed with one application. Then what application if you go to the one. Still working. Yeah. We have two different terms. We have two different terms. We have one and one that is for later. So we have five bytes. What is the build suite? So you can go to your job. What is building your application and putting it live. I will go into that one next to the later. And we have a client. What is deployed? So in this case, we have two service or two reading the application. One is the development reading version 50 and one is the production reading version 6. What is the null version? It will live with a difference. So if we go into this one, you get another tells which you can see. So you can see the user count. What will show you a chart of all probably should zoom a little bit or something? Yeah, the resolution. You’re probably zoomed in because of the beam, right? Yeah. You can see the number of users where this logged in in your application. You can filter it. You can do all that sort of things. But you can have to keep it simple. The same for system health. You can see what is going on the server. So you can see, hey, what is my CPU usage of the last hour or today or the last week. Or you can see we don’t have really detailed charts because that is something worse. We make easier in server clouds. What we say, yeah, you should not take care of that one. That’s what we do, but we want to give you some information that you can see what’s happening with your server. That’s the same for them and the same for uptime and done. Then the nice finish, for example, the log of the 50. So in this case, the filter has an edge. The filter is not broken and probably it’s because there is a warning and we should have a look there. Then if I click on that, show more. And the warning that we’re seeing there is the one that was created when you just clicked on the button. Yeah. Okay. So when I click on the button, it passes that log error. It gets the correct button from your repository. Read this file and that highlights line 12 more of this advanced text. But because of the zooming, it’s a little. It highlights the line. What is broke? This one is actually wrong. And you’ll be fixed. Is that you? Is a new question, a new where in new server clouds? And maybe a good time to mention that this is the art development environment of the cloud. So this will be put live soon. Okay. Okay. So the error on line 13, can anyone see what is wrong with it? Okay. Okay. Okay. Okay. So I’m going to see what is wrong with it. Okay. Okay. Okay. Okay. I can’t read the line. Okay. Well, the name knows what is wrong with it, but I was thinking everyone here starts to debug it by themselves now. But the name maybe you can fix this error for us. Should it be country, not county? Yes. Also, just put it in a new error. Let’s fix that error, right? Can you fix that? Yeah. Then there is also what I also want to show you. Like if I start now I start now I start. But you all have seen that walk in window, what then? Oh, that’s what you get with the new always expression. So you’re logging in here with the same credentials as in cloud controls. Yep. So where I log in, it gives me another problem by hey, do you want to check out your Git repository? So I did nothing. So with the website hey, you are already connected with yourself at cloud. So do you want to work on this repository? If I say okay. In the background you see this checking out from self-agglot. It’s cloning the Git repository, it’s activating the solution and doing all the other things. Depends on how fast the internet connection is. It’s mostly very fast. It’s very fast. I’ll check out building, building, building. Yeah. And here it is. So when I go back to my broken buttons on the summary, I have this one probably in the true country. And I don’t know why you build it. I was going to tame the building. I don’t want to wait on that one. I don’t know why it is done on the grouping table itself. People ask, normally you say yeah, just use a found set to produce in this one. The data source, form found set. So I would say the word like this. Yeah, it’s fine by me. Probably no one knows what this button does. Everyone has seen it, but no one knows what it does. It says publish to server cloud. Yeah. So when I press that one, I did it by the city yesterday. So this is the chance. I can enter the commit message. And then enter to server cloud. So that means probably to enter and manage the something to check out, give it a little bit. So then when it started, and it checks the repository every minute. So probably 11, 25, you will see a new build study. And all the better he sees a new kit commit. And I’ll start building that version of the feeding. Really? It might sound sometimes stops, but I think the message came through. So you made from the developer, you fixed the header, and you committed that change to the repository of server cloud. And server cloud should pick this up now, right? Yeah. If I look here, I see my kids, the client, but normally use, and I see this commit with this one, and the other one will start build. So wait for that one. Well, that one is building. We can also have to look to. To the slow query. So that’s a pretty good way to get. I don’t want to finish it again. I can go into query performance. So here I see all the queries, what is reading on that environment. So I see here I create probably this one. I don’t know if it looks slow. It’s not that slow. Shut the data. It’s hard to come up with a slow query. If you only have one, if I go to show more, I see the query. And that looks right because you have not relied there. But I have that nice AI thing there. I like that I can see the robot. Yeah. So let’s see what this one is. So in the background, we now feed it with all information. Like we feed it like what index is does that database have what tables do you have? What are the efforts column type? How does SharePoint work with the type of queries? Like if this is custom one, we know it’s sort of a low sound set as so on. So that actually open AI case back a nice answer. Like hey, probably you do something wrong because the query it tells you the provider is doing a sort of self-joy. What’s the? So in this case, it told me like, hey, probably the query should look like this. Bye. So if you look here into the code, it’s actually right because this one is little. So in this case, like the sample is more like you can use this tool like if you have a query running in your application and you don’t really know how to fix that or how it works, it will give you a spices or it will help you with a spice like this are the needed index and this are the type of index. What do you have? And these are maybe you need to combination of different index. Okay, so we can fix that that’s low query as well. And again, through the same same developer of course, maybe we can check really quick if the build started from your recent moment. Looks like it hasn’t started, but we can start one manually by clicking start. So what do we see now? We see this thing. What does it mean? So now it cues a new build. It means it isn’t a sort of timeout. What it needs to wait for my thing, for example, the something before it starts building, there’s more. When build for people commit to the same repository, you get a lot of builds by a sort of want to group them all in what? So there it is waiting for. And after it’s done waiting, it will start the building process. Yeah. And we’ll deploy the new application to the club. And we should see that live on that URL. Yeah. It’s going to take a few minutes. We could of course fake this and pretend it like it took one second and show the results, but that that will be cheating. So we can wait for this build to complete maybe in the meantime, we can see if anyone has a question now. Yes. So you can have the mic. Just to clarify on the SQL help that you are just getting, is it pulling in the survey relationship? So it’s not using the SQL table relationship, but it’s using serve-wise relationships. It understands the whole database structure from the survey level. Yes. It currently looks into the database, but we’re working on giving like information about different data relations, which is still for the database performance. It needs to be done under the database itself. So what indexes or how you read data, what you do there? Sure. But obviously, you know, if I create the backend in SQL, I may not create joins and foreign keys there, but I’ll do it all in serve-o-y. So it needs that information from serve-o-y. So it doesn’t do that yet. Not like it’s there. But in the end of query, there is executed, shows the relations in there as well, even though it doesn’t know the serve-o-y relationship. I’ve got two questions. First one, the way you pass the information about your database and everything to the AI, is that a private AI instance, or will our database structure suddenly become public through chat GPT learning from it? The API of the documentation is private. The other one is it’s an open AI network. So theoretically, our database structure then becomes public. That’s in the next one. There’s another people’s query where they ask about things. Yeah. It just asks if you can create a word. Well, we don’t use it yet, but that was one of my concerns. The second three is relating to where you check out the code in servo developer. As you know, we use the servo Cloud, but we store all of our code in Bitbucket. Yeah. Will it still work for that? It didn’t work currently enough, because we don’t have some API yet there, but we can have a look there if we can. Okay. But still for you, we guess we’ll make it a mirror and then there’s a host of them. So immediate feedback that we need to make that AI private or at least show a message that is not right. I agree. We don’t feed it without you pressing the button. So we don’t feed it out. I’ll leave it. It is really the use of what needs to press it, and then we generate the context screen. But it’s the risk that the user is pressing it, because they don’t know why the user will become public. All right. Thank you for the question. How is the build going on? Is the waiting in parallel? This is on our own, I’m not that weird. Maybe I have a question as well. What if I want to build a mobile application, or I don’t show it already, but maybe you can show that how we build that? Yeah. So when you go to an application, you can add a new job. So I can say, okay, I want to have a type of mobile, or I want to have an ng desktop. So when I have a mobile thing, it’s okay, so we can hold on. That will navigate you to a configuration page where you can see, okay, what is the name, how it displays, whether it’s in the app store, version, you can upload the logo, all those things like that, and what type of build, or debug, or a Play Store, or the iOS thing, iOS and Play Store needs sort of certificates, where you need to upload. So when I enable this one, all the way down, you see the addition, and the restore, that for iOS, it’s in the difference of the certificate. So when I check those, you need to upload those, and that’s the same for the plugins. If you use certain plugins, then it gets built into that one, and then regenerate an old developer, built in the background, and then you can download your packages, and use them. And these plugins, like Camera is really the camera function of my phone, or the fingerprint function of my phone. So I just need to check that, and then it works in my server application. And that’s for to use that, the reason, back at what you can use, to use those services, or those could have used the developer. So I need to change a little bit of code in the developer to use the fingerprint. And the same thing for the ng desktop then. Yeah. All right, nice. And what about the production environment then? How do I get it on there? What about the production environment? Normally you would say I do and get merge into the production branch. That’s not yet in the IDE, and then for the future, currently if I go to, or what is it, the kit to what I use, I can say, okay, check out production and merge that one. If I do that now, then do that a little bit. Okay, then if I go into pipelines, I see the same production thing. And it can, I can start that one, and then it asks me a question like, hey, do you really want to go? It’s a little bit different than it is on the desktop island, because production normally people are working on it. So at once you’re like, hey, do you want to build it? Or do you want to tag and build it? And in the text more in the background, we create a git tag, so that you have your old versioning in your git repository. So the production environment is listening to the production git branch. And if I commit something on there, I can build the code that is on the production branch. Right. Yeah, if we start to build that, okay, death is starting now, we can start a new build on production, but we probably won’t see the end before the end of our presentation. But I think everyone gets the idea. Is there anything else that we want to show there? There’s many more features in, in Serifocalado we can show now. But maybe I recommend everyone to just click on the start free trial, you get a repository, make a very basic application, or upload your whole application and see if that works too. Well, what is sort of nice, I would you always want, is that we should start testing the new version, and start spending him with cases, something that brought it. So on a job, you can say, okay, configure this job, what comes with a lot of properties. And here you can also select several versions. So I can actually build already the 90 version, this 20, 23.12. We can also do the 90 release, what if there will be a next one, it will be the nine of one. So I can already test those next versions without the new release. I can also use all the versions, like I want to test something like, hey, this was working on the 20, 22.12. Let me test that with it again. That’s something what you can configure here. And the other nice thing, where you get is sort of reports of your package. If I go into these brackets, I see that there is a commit, there is one test post, and there is a code conference. Like, I found code crazy. If I go into this one, I can actually see, like, what happened? So I did commit what fixed the sorting issue. I can download all the artifacts, so I can download the workflow, I can download all the lore files, and also the unit test. I can see my configuration changes, what I didn’t change anything, we post it with the property tags, and I can see the reports. So in this case, it is also a unit test, and there is the code conference. So if I open that report, I can actually look like, hey, it’s simple yet, it does count on how many customers there are. And that one is successful, and it also has a code conference report, but you can see, okay, this one, it is the sample again, and that one has a scope, a custom account, and it hits all the things. So it ruins it once, that goes inside the if statement, and one without the if statement, because that’s sort of what you need to do for code conference. You need to do all different scenarios, you need to test. And that sort of things to make it easier to set up, are all there in self-adults without you doing anything, without providing the unit test. That we cannot really have to make it. I did try it with open AI, but… Not there. So the reporting and the unit tests, you can find that for every build as well. That’s nice. We probably won’t see the end of the death build, but it’s just a function that is repaired now, the results will be put live on that URL that we looked at earlier. Maybe we have time for a few more questions. Just go to the top if we run out of time. If there are any questions. Oh, the usual suspect. And on the AI part of the SQL query analysis, I can see the button we’ve got enabled on ours, and it’s disabled currently, but it says it’s only available for custom queries. That will change. So it will be available for things like user select. This is the same release when I have here. It will be… Okay. Yeah, so the version that you are seeing is a little bit older than the version that the data show it, because we wanted to show the state of the art. The cowboy mobile thing is ng-pack-to-cob-ob-ob. That’s not the old mobile time. Okay. Well, anyone on that side? Only been on this side and neglected that side. No questions? Okay. Then I think we hit our time pretty well. So anything that we missed in a day? There’s probably a lot we have to wait, but there’s a lot we didn’t plan for, but nothing we missed. That’s good. I want you all to try out that free trial. See if it works for you. Give us your feedback on if it works, and especially if it doesn’t work. Because I saw a lot of hands with people with an ng-or titanium application that are involved in the cloud. So maybe this could be interesting, at least to play around with. See how we do things. And I hope to hear from some of you if it works. And if you liked it, or I don’t know. Thank you very much. Thank you.