 By the way, where's your base? Pardon? So where's your base, you know? Which country and then which he stays I am in Florida Wow Nice Where are you turning in from? Yeah, I'm east coast side in the Boston. Yeah So you on the Boston tour yesterday. Oh, yeah That's So places. Yeah, cool. And then this is already almost all so today, I think 70 actually in this morning 54 The weather is a 54 degree in this morning. And that's why I put my hoodie back on So this is actually the outcome check we probably Just two years ago just more for COVID-19 thing And then when we can come back to in person event like a dev company us It will be definitely Boston area so So everyone else can wake up to 54 degrees Yeah, you cannot imagine that right? Yeah You definitely need some foodie and it's a long-sleeve not short pants absolutely not I wouldn't be out there with just a blanket on. Yeah, but you know, I saw a lot of the New England people like a specifically Boston people the man really tried to Showcase I'm the man. So even the freezing cold out there You got a some hoodie and the padding, but you still wear short pants That's weird Gotta show off that you know, you don't need that. Yeah All right, it is 1 31. I guess to everyone tuning in Welcome to Cork is hands-on practices for spring developers. This is Daniel. Oh, and I will pop off and let you take it away Thank you so much is about and just a coin once again. My name is Daniel and Welcome to joining the focus engines practice for spring developers So, first of all, let me share my screen and that is a hardest part to find the sharing button here All right, here we go And then all right Hopefully you can see my screen All right, so so today we're gonna spend almost two hours to Play with the hand hand job stuff for caucus application development rather than I'm not gonna drive with the bowling slice there. Of course, I'm gonna just bring the quick overview of What caucus is and what is the main goal of this? Caucus hands-on workshop Pacifica spring developer just a quick introduction by myself I am tech for marketing major and developer advocate at the head Specializing clown every runtime like a caucus bring the node. Yes, and then I spent a lot of time to integrate the clown every application with the Platform like a sub release and a service matching practices So I'm also responsible with CNCF and DevOps incident investor for few years and try to give us some more Tangible architecture and the more practice for another project application environment and Here's my boo. I recently part of the co-author of the caucus for spring developer You can actually download for free when you go to Developer redhead.com side or let me bring that up. Just end over the session. Okay. Here's my Twitter Follow me and then ask me anything you want and here's my YouTube channel subscribe to that and then watch you run and around the cloud every application development and practice and DevOps and like a ham Kubernetes and Ansible and workers and like a lot of the technology stuff and of course I you could just work on my duty part three and then Play with the interesting cloud every application development. All right. So here's a wrap over you. So Maybe you I think so you got a lot of experience of a spring development But don't worry if you don't even have any experience of spring, baby Just developer or even you are interested in application development You could go through this workshop smoothly and here are just some few challenges for even just spring developer I just bring up so full Characteristic here the first of all the lack of control and flexibility So in general a lot of spring developer have to Decide the upfront underlying architecture of applications such as in pattern they will react even for example When the spring developer needed to develop reactive application they needed to use a totally different technology and different application architecture like a spring reactive is and and also spring Integration stuff is totally different than General synchronized application like a just spring boot and also if you want to integrate I mean spring developer wants to integrate like a sub list function or like a public cloud native service like Amazon lambda and Developer cannot use the same technology across the spectrum Instead the corpus actually allows developer to build the cloud application Just one time and then deploy multiple sub list platform and also there are native dependency and integration Extension you could actually use the same capability on multiple Application architecture like a reactive but also in parody and And another challenge is complex ecosystem if you're not familiar with the spring ecosystem as an example spring cloud spring security spring MQP and spring integration, etc. Using them with the spring boot will Make you miss many Concepts maybe that would be grassy if you had a starting using them independently, so if you want to Integrate your reactive application with a back-end Kafka system and you have to bring some spring integration as an ecosystem Into your spring boot application. This is another hurdle to catch up new technology not just core spring boot capabilities and Also, there are some lack of developer experiences for example remote Container development if you have some chance to attend the spring one last few to two days I actually read what they're so it's some guy from VMR actually showcase the inner loop development using spring boot and A lot of tools like a telepresence and scaffold and a nix so you can actually have inner loop development With the remote container platform like a Kubernetes or a nix the small package container environment Which means that you could change your application and that immediately deploy to remote container platform automatically just like a debugging on your local machine like a live coding hot swap stop but in order to use that and enable that feature spring boot actually is required to use third-party tools as I said telepresence or Skaples something like that but Caucasus actually already built in the native feature like a remote dev or just step I'm going to showcase some Real quick demo in the middle of the workshop The last thing is native limitations. So based on ground VM compatible So spring neighbor still better and then there are a bunch of Feature needed to add to own spring native for example You cannot capital coverage all spring ecosystem when you're building a compilation and Also, you have some different approaches to develop your application on spring native for example Lava developer already formula with the using annotation approach when you develop application But you need to more consider to function functional approach rather than annotation approach to Make that application as a native compatible but Quarkus actually built on and was born on Native comparison as well as your JDK hotspot, which means no limitation almost no limit is almost 99 percent same capability with the JVM Application so these are four things to develop a challenge, but it totally depends on the your use cases if you Not considering a native comparison, maybe you don't have any challenge for that if you're not Considering about the reactive application programming or security or integration stuff Maybe complex ecosystem isn't not your concern at this moment. This is it Most likely general challenge Challenges for spring developer in this era. So here's our purpose for spring developer Hands-on experience today You're gonna get starting application development based on one of the most popular spring example Packeting application which is a bit on MVC pattern Even is we're gonna use a spring boot as you see in the left side. You can see the view control repository Like the embassy pattern application And then we're gonna convert this spring with application to corpus in the end We're gonna strangle this application Little more a microservice architecture in the deploy Kubernetes cluster We're gonna use up with the container platform today. So a little bit drill down Each step The first lap we're gonna just Check up how the spring package Application looks like you don't need to change any application code. Just run that application on your web IDs web-based ID to Core ready or spaces which is a bit on Eclipse chair Which means you don't need to install any software like a maybe Java or even JQ and even Q command line OC command line because it's all beating in this a web-based ID to you just need to open new web browser and accident I'm gonna give some the URL and end of this Presentation so this is a just a quick overview of your Packet in the application in the second lab You're gonna break down each Layer to convert Quarkus application the first of all we're gonna try to Convert a presentation layer using the queue template, which is a short name corpus template engine So it's a design specifically to present and render your web application like the HTML and JavaScript Etc. And then the one beautiful thing of a corpus. You just want corpus a demo Also name is a live coding once you run the corpus application You don't need to even Recompile reveal restart we repackaging your application. You just keep changing application and the corpus Detect the change code automatically and then we compile and the restart and stop and restart your runtime So this is a definitely a wonderful great benefit of the corpus for developers and move on next we're gonna Convert the other layer is a control layer So spring basically provide the dependency injection DI container and then the corpus Provide the same thing even better like a IOC CDI the context of the dependence injection by default So we're gonna run how to effect the spring DI to corpus CDI and Then the last layer is data transaction. So we're gonna go through Refactor from spring data JPA to Quarkus a hibernate ORM with a panacea So you can run how to make it reduce your line of the codes from spring with the corpus and then you can get rid of like a get a setter and also the panacea and hibernate ORM automatically all the wire actually your Data field and attribute in a table schema, etc And the next thing is the let's say, okay, we got a zone Modernized spring boot to corpus, but still you got a same architecture like a model view and Control like an MVC pattern. Now. This is not perfect architecture to deploy Kubernetes cluster for considering high scalability and then usually couple and the lazy bind something like that So we're gonna try to strangle spring monolith to corpus. Actually, it's to steal corpus application, but we were more Adopt to Monolith architecture. So we're gonna strangle to separate independent Microsoft's such like this high-level architecture and then each Microsoft's architecture have had a small Data store like a post SQL and then we're going to deploy to open up the container platform So the last thing is so we're gonna add a more Kubernetes native feature Such as the service discovery resilience and load the balancing and we're gonna add house check To make sure if your application is ready for receiving the end user request And also we're gonna add the secret and the computer maps some stuff to store your sensitive information in a Kubernetes Resources rather than your actual application So how to get started to this workshop? So first of all Please make sure you want to use your web browser today. We're not gonna install any software on your laptop And then here is the Chrome and Firefox version. If you want to use the Internet Explorer Please just use the Chrome Firefox rather than Internet Explorer. We got some problem with the Internet Explorer and then if you something weird like a hang-up or a stuck in your Keyboard thing just to reload the web browser But if you still have a dead issue Sorry about that Just let me know I'm more than happy to address your Issues and then please turn it off with your VPN or local firewall on your home networking and also Pulse your ad block on your web browser on your local machine your laptop And then here's our gdp3 app to your session. Maybe Just report the application Source code just go to here And then this is a URL. I'm going to just copy Let me let me copy From In the chat. I'll just a bit later. So here's our bini URL bini dev company us 21 dash Quark state lab Once you After this you are you can see This page so you're putting your email address and password is all the same open shift all lower case So you can print your actual email address or you can add your fake email address We not going to verify your email address, but the format should be email address So you can add your email address or you can add your fake email address And then once you sign up You will be Show This page so here is your assigned username like a user one or user 10 and Password all the same open shape and here's the lab instruction click on the forecast for spring developers Okay so just quick Bring some use case and demo here's my youtube channel bini demo Danielo TV and to subscribe that you can find a lot of Quark as demo and then here is the The more caucus resources here reddit IDC Quark's study you can find the performance metrics and compared to eGIS in cloud neighbor Java Frame up like a spring boot and then here just separate some support there are bunch of Steps of support as learning courses. You can just go to using web browser and try the dashy Quark as a bini URL and the code that Quark aside is the Project generator like a spring initializer And then once again, this is a Quark as for spring developer ifu You can actually go to see URL and then just download for free I actually want to call author this book you can find a lot of the example and practice how what what difference between spring and Quark us for example a respo application development In a data transaction, you can persist on an event driven application in cloud environment development so a lot of enterprise already use cases here So I'm going to stop presentation and then I'm going to go quick to do This one in a for that I'm going to copy This one Give me a second. All right So copy this one. I'm going to put on chat All right, and it was yeah, go ahead I was gonna say I dropped the link in chat and I can also Give you any questions that come up. So if you want to multitask. Oh Pretty cool. I didn't know that thanks is a well, okay So let me let me real quick go through when you click on this one And the one new when you click on when you actually be near URL and you can go to here So and then for example my email address and password of the ship when you submit it You can go here and they click on this lab instruction You can find it's actual today seven instruction and then sometimes you lost to your user ID here And then you just click on that and the clean the user name once again make sure all the time you Can see your user ID and top of your web browser because you got a copy from some of the command line or application code which he Should be bound to your actual username and then there are Quick introduction and call ready workspace as you can see it click on call radio space interface And you can find here code radio spaces and then back to the here You want a cop clone the today application? When you click on this source code or the command line just click on and automatically It's already copied to your Creeper you don't need to control see something like that and then back to the Here and then the clone and then paste it and then I just enter in the select the departure location and the click on Open new windows. It's already described in the lab guide. I'm just showcase we are quick how to get started but sometimes people lost because the They don't even have some chance to experience around the code radio space of our web base ID tool So once you got here and the click on your cube icon, you can have a terminal and then also You can log in up and automatically based on your username and then Here we go. So you already log in here and then here is the your application in the back to the Instruction and then You need to change it Get it partly branches. Actually, this is the already There so but just to make sure everything is okay. So here we go. So we have a right branchy open for seven And then the first step you're gonna run spring boot application. You do maybe in command So go to here and the run maybe come in line and it will be start of your Spring boot application. So once you spring boot the application and start and then you just to check it out of all functionality and features are working for packaging Perspective so when you go to here, you want to open your 81 port. Yes, and then open the link You can find the link. It takes some time So ready to get received and you just reload the page in the meantime You got to have some small preview on your side when you click on the open new link here, you have Wonderful web browser. This is actually running on co-ready workspace edge container You can find go to just click through my Interview and then something like that. So this is how to get started and you could just unfold and pull This all menu Okay, so back to the Instruction So this is the how to get started and once you Log in here and then you could just go through all single detail But one my recommendation Don't try to just copy and paste all command line or application code Just try to understand the goal of each section is so okay This is section. I'm going to convert spring data to Quarkus data What kind of Quarkus feature I needed to use and how it works something like that and then so I'm gonna make it available this workshop environment until midnight today so feel free Go on your workshop experience after workshop. So don't worry too short time in a one half hours really more focused on understanding the Quarkus feature in how to convert from spring to Quarkus and then if you have any question around the Quarkus and then please let me know on the chat And I'm gonna put on the more resources in a chat as well So one last one one more lasting It's really too boring I'm just turn my camera off and then I'm gonna give us less of time to go through the workshop for you all guys But maybe after 30 minutes later, I'm gonna just quick Quarkus demo because we release a quarter to that too Just a couple of days ago. So there are a lot of bunch of new interesting for developer like a continue testing and live coding and some of the stuff in WIWCRI that Not part of this workshop. So I'm gonna showcase Little bit of live demo real quick maybe 10 or 15 minutes. So I'm gonna move back to Turn my camera on during the demo in the meantime feel free jump in the chat and ask anything so Let's get started and now time get your hands dirty All right So here I'm gonna put on the chat Now I'm gonna turn up my camera Okay, quick question here. So can you put your progress here on the chat? For example, I'm doing the lap 3 or lap 2 something like that So hopefully you guys already done in the red one go through the spring pet cleaning application so I just want to Check if you are actually doing good. So please put your progress on the chat Like I just left number. Oh Wow Yeah, you are really good at so by the way, I'm gonna Showcase a quick demo around the crocodile 2.x 3 p.m. Eastern time So, oh, you guys are all doing good. Thank you Alright, I think so you guys good way. I mean good progress and then any technical issue So which is good. So I just Showcase a real quick demo around the corpus 2.x version So just feel free go to the lab environment But also maybe you could just purge your workshop stuff and then just focus on What's happening in the corpus 2.x because you actually using Parkus 1.11 which is a redhead build of Parkus the product product already support Little bit behind the race community version. We are planning to raise a new corpus Redhead build support of Parkus 2. 2.22 Little bit October time frame, but in the meantime, maybe You already have some experience to play with the Parkus 2.0 Or you are interested in what happened and what's next and now what's in you in Parkus 2.x All right, here we go. So this is my sample application. I actually put in the sample application based on reactive thing because the Parkus 2.2 Adopt reactive application by default so based on Both of our Burntex engine and then you got all reactive thing on the Parkus application Even when you expose your respore API, it will be handled by reactive mechanism But you can still use the imperative application Implementation based on annotation. So here's my sample application. Oh Just here we go the just reactive thing and then a few applications the first of the first thing first so We're going to start Parkus application as a demo that you already Do we so you actually doing may burn commands, but I'm going to use a Parkus Cli so Parkus Cli is actually you can Generate Parkus application based on the command line and then you can add the extension You can remove that you can and find a lot of stuff Based on Cli. So I'm going to use a Parkus Cli Parkus Cli and then demo to run this application so it will Start off in a second Because the first time you're going to download all necessarily dependency from your palm xml Which is specify your dependencies for any project application capabilities. So so five 005 is a debug port and Here we go Here, all right So once you run Parkus application, you can find a pre-new start here test the post and then you can press R Resume those continue testing you can actually do that in a Parkus dev CI Okay, so here's the version Two to one final. This is a race one and I'm going to open you URL Here we go in our local host 8080 and that's cute So that's cute slash it up. It is brings you to Parkus the devil you are so it's a richie In a phase for graphical way how to handle your perks application and configuration and Dependency like an extension and a lot of stuff here So here's the simple terminal open it and then you can run Test running and then actually all testing pass. This is a based on J unit test so along with Test driven development a lot of developers just try to skip unit has even though your application is working But sometimes you got some big mistake When you work together your developer team because you skip the unit test so you can click on the test result and then we actually Success three tests when you actually when you go back to application and under the test directory And you can find the three tests scenario based on Parkus test annotation so we have a Few less important like a hello and hello gritty and then here is a create number different parameters So this is all Succeed and then I'm going to show a little bit interesting stuff You can actually rerun the application back to the W I and then Here we go Here's a reactive rest and pulling and when you click on the list and pulling and you can find all let's go to Just access the end point real quick. So look close to 8080 and hello And I'm gonna make you do and this is a hello and then another thing is like a Good reading Dan and you can have a reading my names paper named Daniel and then also what else like a stream and Number five something like that. Okay. So this is a reactive thing. We're gonna Return your name like a hello Dan five times. So we did some small a slight latency So your function all application functions features are Totally working and when you go back to our W I and I'm gonna make it zoom out back to the W I and here is the your Endpoints scores. This is a performance dashboard for your endpoint specifically reactive application So there are a hundred percent green mark, but the other two is the red and the yellow so what I mean the yellow and green and Red so there are three different Criteria to fulfill your reactive application first for resources means so functionality. So as you see our Application and points totally working, which is a hundred a percent Even yellow is a hundred percent, but writer is How to return your method how return code on your reactive method and the week station execution How do you create your worker thread based on reactive mechanism? so zero percent there are just some Potential issue your performance perspective and then the other one is there are two performance issue for writing and execution, but still functionality is working. So just imagine that when you deploy this application to Kubernetes cluster and then you have to scale out this application more than Thousands pause on your Kubernetes. Sometimes you got a very low performance even though the Functionality is working on your local machine. So this is a really good benefit and feature Uncorkers showcase your developer. So you don't need it to Maybe maybe sometimes you find this potential issue in production. Maybe it's too great. So So go back to Application let's try to fix the problem. All right, here we go So one is a hello and the other is the stream count name parameter the last one. Okay. I see here first of all There was a blocking annotation which he allows Developer to make this application as imperative But as you know, we gonna use a reactive. Let's see the reactive when you go to pomex ml Here is a rest easy reactivity. So all Let's pull API Treated by reactive application not imperative, but you actually use imperative with the blocking So I'm going to comment this one in a back to here in the reload. There we are and Then now I just fix this problem. So now I fix the execution model based on reactivity not imperative and the go to here and hello and then so three Endpoint method actually you use the uni and multi which is a similar concept mono and Flags in a spring boot reactive, but we're gonna use a uni just return to string type single return And then multi is a streaming return like a collection But the hello is actually not Reactive return like a just object like a imperative way So we're gonna use this one as imperative way, but more specific return time like a string not F-straight object and also we're gonna use maybe I just save the small it's streaming and to fix the rider perspective and then reload this one and I'm gonna change their rider thing, but still I got a performance issue execution model. So because of this is a still Imperative application not reactive thing. So I'm gonna Needed to leave with this method as an imperative way to do that I'm gonna add a non-broken annotation So I just save a file and a back to the here and I will load the VUI to check it up our performance dashboard Now I gotta fix the old performance issue on my quirks application and there's still the application like a Daniel and I can change that Stream times or ten times Daniel. So functionality is still working But I fixed the performance of problem. It's a potential in production environment. So this is a really great thing all of your Quarkus application showcase WI since it's a Quarkus 2 and another interesting is Quarkus. This is not just a Quarkus 2 It's Already we have a Quarkus 1x version. So you need to find the configuration as a general practice a lot of developer regardless of spring or even Poster Java class you needed to consider multiple target environment deploy the application to do that You have a multiple YAML file or a property file or you need to refer to metadata database to distinguish this application should be deployed test environment and Production or pre product or staging etc but Quarkus actually Provide the single application property file like application profile or application YAML file and Unified one and then how to handle multiple environment to do that actually Quarkus Give some prefix for example here With the ampersand and then you can find the depth product test you can actually Define custom prefix like a pre product or a stage or a QA something like that when you use the Pre-defined prefix like a depth which he Report to Quarkus a dev So when you run the Quarkus a dev mode the Quarkus automatically pick this all configuration with the prefix of that and when you package it want install application which you only Pick configuration with the prefix of product Maybe we'll verify report to prefix of test configuration. So I'm going to add the dev and the user like a user name like a Daniel Save a file and back to here and let's try to add Configure properties here Name equals User name I'm going to add one user name The same file and I just removed unnecessary blocking And let's try to add this one like a hello User name as a file and then back to here and local also 8080 And I just run it and then you can see hello Daniel You know when I change that So this is a really interesting and then back to the W. You are And here's a configuration editor you can actually Visualize all computation not just application side, but also all The runtime Particular Confirmation like a built-in compute. So let's try to search Username. I just made one this one Daniel. I'm going to change Isabel and I just Save a file and you can find the green means you just save file and then back to the local in the reload this application and It takes time sometimes to go to here Okay, that's one. Oh, yeah. Oh, yeah, we got to actually fail the continual testing here the meaning is hello, but The actual return is about this is the one of a great thing in a continual testing So back you can actually find that It's about Okay, back to here. You can find it and terminal something like that. Let's change it to Fix the continual testing problem. You know once again Open the terminal window and then here we go. Hello and Let's save a file save a file and You're back to the terminal and it's automatically testing and all testing passing and the back to W. You are and Then you can find all testing song and then you can open that series old Then you got all just a fixed to continue testing still application working So when you open you terminal window, let's try to using one of the call commit Oh Let's I'm going to use my HTTP pi tool and Hello, and here is our in your and then back to the WI Okay, oh Yeah, we just changed it. We just added this one. Okay, so I'm gonna save this file and Here we go. It's a well, you know back to the terminal though There will you I and the computation and the clothes one They use your name Yeah, change that my Daniel and save a file Here and the reload is changing the Daniel and then when you go to our application code You can actually change that Daniel and then you can actually change it come application property itself Or you can change that in a W. You are something like a Justin and save a file and Then and reload here and it just so So one of a good thing on the devil you are you can see The performance dashboard like a less easy react to the application But also your compuration editor on your W. You are you can Find all compuration with the graphical UI to change them. So This is the really good thing. So and so Only you means to my ID tool so my ID to VS code and I'm going to use your parkers theme You can actually add the parkers theme on your VS code So this is just pretty interesting you might have for Parkers to that X to and Compuration editor and the performance dashboard and actually go back to one Compuration editor so back to the here. So maybe there are some Small ball to prefix thing with your compuration. So So if you I change that Back to do Daniel and then I'm going to add other username is James have a file you know Back to the terminal window and I just stop And then I'm going to try to maybe Bring package This application So once I package this application And then I'm gonna run this application. Oh We got some error. Oh, yeah, so There are testing fail, so let's try to skip the test So you can actually change the text on your The test case here, so we already fixed our problem your continue testing But in the meantime, I actually changed one more time. So that's why you got an error so when you go to target victory and then Corpus app You can find the corpus faster here and then using the run Corpus a faster here target victory App and the corpus run the file. So as you see the product Profile activated but previously in devil that you can find the live coding activated and then the Developer profile activated. So what that exactly mean and they go back to Window and then hello 80 80 now you can hello James. So not Daniel Now back to stop the here and the corpus that once again and then Let me Bring this up real quick And then now you can see the depth activated in the live coding activated. So this is how it works to Pick up the right Compilation on your the packaging or a developer mode So this is a really convenient way Distinguish your application proper in the same file with different prefix All right, I think I'm almost done and it's maybe I'm gonna showcase the one more thing So the other one is grab QL, so let's try to add Just try to change the command line and then Quarkus EXT extension and list and then you can find the work tension is already installed your project and you can actually find Like a reactive one and then you can actually Parkers EXT and Instalable in the 30 like a Amazon and you can find all Available extension and you can actually go to code the corpus IO is a project generator and you can find everything here and you can generate the application like a Spring initializer. Okay. So back to the here. So let's try to add a few Extension and first of all, we're gonna add Let's say What about the corpus template like a cute you actually using that cute on your project? So here's a corpus cute. So I'm going to add Quarkus reactive acute because this is a corpus reactive application in a third corpus EXT at The corpus that we have the cute engine. So I just succeed and then when you back to our VS code and just make sure it's pulled down here as you see here's a corpus cute just Here we go. Okay So now we Back to the UI And I just reload that Now we gotta have a new Cute template and then you can actually click on template version. There's no template So let's try to create a new template here the template you already should bend there here. It's a lap three. So let go just Hello HTML just like that And I just copy from my jj here's a simple cute hello world and the name here we go Okay, so this is just html. I don't have any resource file to render this html to Web browser you actually implement some kind of resources like a Bad resources and a visual resources in a workshop environment But I don't even try to create the resource Java class here But when you just create the html template or text file, you know back to the our There we are Here And then go to template here It should become here the template html All right, and My corpus workshop. Okay, so let's try to Start my corpus application Okay, it's almost running and Back to there we are And now we got to have Uh template Hello, and then This is a really good feature you can select your template and then you can uh json like a hello name And then actually Back to the here. So name is a hello. So why don't you try to add Uh, okay Jason Then render and now we hello Danny you don't actually Even implement the resources Java class, but you can actually render. Uh, this is one of the good feature for developer to render Your html resources is here. So then after the day, okay, uh, this is a look good Even though I don't have any, uh, hello resource file. So And after that, uh, you can actually create the hello resource file as an example here And for example, you can actually implement some kind of application like a hello queue And different path because I already hello endpoint here and I just Go back to here and Of course 8080 and then hello cute And just default is a name and then we could parameter to call param like the name Is Any and you kind of have the same result here so You can actually uh render as a preview in a w i So this is one of the good feature of the parkus application so I think it's any question around this demo or workshop environment Okay, so I'm going to stop demo and then I'm going to back to Maybe a 10 minutes later to showcase another demo a little bit interesting Okay, so oh, yeah, I got some oh, yeah, thanks Diego and then Really appreciate you joining this session and then yeah, please let me know of my twitter or my youtube channel If you have any question around the parkus in the cloud and everything That once again, thanks for joining though. Have a good rest of the day Okay, so I'm going to showcase another interesting demo around the parkus 2.x and a little bit more developer perspectives so first of all Some people already know the graph ql Which is a similar thing in your rest pool api, but sometimes the rest pool api Give some burden for over fetching or under fetching which means that you just retrieve a whole data and because the rest api is a several size driven so you got a bunch of the data and then you need to Change that like you need to get rid of some of the data using the you know, Java base Well, sometimes you need to call several time to api to get The result or whatever you need. So this is we call the under fetching because you need to call several time and then over fetching you Needed to you just got a lot of data more than you expected This is all based on rest for api But graph ql you don't need to actually call multiple time because you actually change the data set Based on graph ql schemas. So parkus Luckily provided that graph ql feature. So you can actually use your parkus tool in ID tool for example vscode already I already added the parkus tool like add extension and then let's try to Graph ql here. So here's the graph is several graph ql things. So I'm going to add the graph ql Small write There we go. I just edit it Then It will come through There we go. Okay, I just file And then it automatically restart your parkus application stop and running automatically This is the beauty of the live coding Okay, so we'll see it up and back to the ui In the reload here and now you can see a new extension like a small write Graph ql click on schema. There's no schema at all and then Graph q ui, but there's no schema. So it doesn't roll. You got to matter So back to the here, let's try to add a new schema And actually I added some of the schema here like the star Roger theme With the director name and the movie title and the character name, etc But I need to expose the resources to This schema, let's say theme Source to Java file here Oh, I actually already there. So here is empty Java file And I'm going to add The The famous some of my from chit chat and back to do here in the meantime The parkus app automatically restart And then go to schema Click on schema. Now you got a schema here. Oh and back to the ui and the graph ql ui already Integrate your corpus step ui As you see here So localhost dash slash q and slash Graph ql dash ui and then let's try to Call some of the schema Uh, something like an old theme Then what else like a director name and episode id And what about the title and then I just call and then you can find it's a star Roger series. So Definitely director george lucars and the title new hall of an empire and start like a bag return to jedi And so what else let's try to add like heroes and then heroes like name and surname And then what else like Uh Saber Just running so now we got a some uh the hero names like uh Luke sky worker and doc spader and then as you see like the same name It's a red and a green is so your life saber the color and you can actually add anything else like a dark side And then you can have dark side Absolutely not lucas are lucas sky worker is a superhero not villain. So dark side force force and it's true so this is How to use the graph ql on the cork as a pre integrated graph qi capability onto your cork's application Pretty awesome, isn't it so I just to uh One more thing showcase so once you develop and finish the application development though What is the next move you gotta just push the application to get it partly and then just send the email to your pipeline or qa Fox hey, I need to Promote this application to staging or testing environment using Nice cicd pipeline, but once you application arrived in a Specific environment like a testing environment say and then you need to quick send any test You know, what if you could find? errors or a bug or some of the Additional Business logic you missed that during the development live How to do that? You just go back to your id tool and fix the problem and add the new business logic and just push that application into Get it for and just make the phone call to your cicd pipeline or signer it's a pretty general thing and Known knowledge, but what if you could Doing same thing just like a live calling on your local environment from local to Remote to kubernetes cluster. So here's my kubernetes cluster open ship the cluster just like you are using today so here's The sample name space park's remote, but you cannot find any topology any Resource here because I didn't deploy any application for now in a back to the The application here. So now i'm going to add this application's few compilations here so let's try to Add to Compilation file here we go all right So we're going to add some few compilations to do that. We actually add Another extension to deploy this application open ship here So this extension actually deploy Corpus application from local to kubernetes and open ship the cluster using maven and grad command Not going to use third party tool like a scapegoat Teleprison so what? Customize something like that. This is one of a good way for developer Avoid learning new technologies there so I'm going to add the packaging type here package type Percuss package type which is muleable muleable jar because before is immutable when you're packaging application It will be immutable On linux container and deploy kubernetes So i'm going to set up the parkas package type is muleable and also i'm going to need to library load password which is here library load password You can set up any path. So this is only for security communication between local to remote kubernetes cluster And that's it and also i need to add A few open ship configuration as an example like a kubernetes kubernetes Like a client client and first to serve True because we actually use The official ca so i need to use trust certification to access our endpoint and also i'm going to add a deployment Wait a minute target Is open ship you can actually use the kubernetes container before your serverless application development and deployment and then i'm going to Upload the url expose true which he created loud url endpoint to access from external user And the last thing is the uh, i'm going to add Uh, that mode true here. So that's it. So i'm going to uh, in bottom valuable quarkus launchy demo true So this that's it. So maybe you can actually explicitly add the prop but if you do not edit Pre-picks it automatically picked up Whenever you add running demo mode or packaging. So this is all common configuration So back to the here. I'm going to stop the demo mode here And try to packaging bring Packaging i'm going to give you any test here And then i'm going to one more path down like a quarkus uh kubernetes Probably equal true For that, let me uh make sure I mean looking the right project like a purpose remote, okay, it looks Fine And it's wrong this application So what happened behind the scenes? So it will package your application like a maven uh command line using Created your job file like a faster and after that Try to package a container image Based on open jk 11 and then push the container image into container registry which already Built in up with the container platform not external one But you can actually specify external container registry like quay.io and dark hall or Google container registry and and then lastly up and shift s2i processor trigger uh deployment which means to try to find the available worker node on Up and shift the cluster and then pull down the container image and running off So there are five or six steps behind the scene when you just run maybe command line So you don't need to use Third party another tool like a skateboard customize or teleprisions or Another command line you have to do that because you just use maybe the command line So we just packaging application and containerize this application And then lastly deploy that application So this is the how to packaging mutable application because and then just deploy success And then go to web browser and then oh here's your open shift the cluster and depth console you are now Your cork's application still try to start up And then oh we got us a matter. So There were no certified extension. Oh cork's endpoint. Okay. Go back to the application here. Let's try to make us some simple So, uh, why don't you try to uh cork's packaging mutable jar and the cork's packaging time Packaging time. Oh, yeah, there was one typo You know, let's try to One more time okay So once these packaging to say application to Open shift or just general kubernetes you can find uh The cork's runtime loads not production profile activity It's activated depth profile, which means you got to have a live recording capability So this is what i'm going to do showcase today Okay, I got a some chat here Oh Is there my voice is okay. So isabel said My audios are just a little bit cut out. So everything is okay. Oh, yeah, it's good and Oh mohamad you already finished the work and reached the lab congratulation and then Oh, it was long. Yeah, but I actually this workshop Is supposed to finish three hours or half a day because there are a lot of contents there and a lot of stuff to run about Not just cork's but also spring how to implement your spring and cork's Specifically some use cases like a data transaction and presentation layer and also a representation layer and also, uh, how to add cube d and how to Strangle your bonus application bonus a lot of container a lot of contents there Technologies there, but I hopefully I hope you enjoyed the lab and then Got us some maybe you need just some time to digest all stuff from cork's workshop Okay, so I just did and back to the open container platform to w i Hope this will be work at this moment Okay, just build on okay, just running and try to build logs So everybody's done. Okay. So we got out here. So now here we go Live coding activity and dev activity. So it's cool and back to the local environment And now I need to add one more thing here So for that, let's try to go back to here in the top of review And then click on the end point url and here's a rendering page Hello, uh, oh, okay. Oh, yeah, it's automatic my web browser actually automatically change the https But this should be uh http. So maybe let's try to use a command right http And here we go Name it go then And now you got to have a hello then you know, oh, it's weird. Okay Let's try to hello Hello then you know, so because you're still a dev environment. Okay. Let me go back to here And then back to the idea to let's try to Add one more completion the library load url. This is the actual target So that is our target http this one and just save a file And then back to the time, you know, and the last let's try to using maven command line the corpus Not that remote dev. It's another command line to run Corpus application with a remote dev capability Uh, it's almost same live coding capability and the running all application But at the end of the starting time this corpus runtime tries to connect the remote Container platform like kubernetes or open ship based on the remote url So let's say Here we go. So you can find here try to access the remote server and just connect the remote server. Okay So go back to our application And resources here, let's try to change that username let's say daniel It'll do and I just change the application property and also Go to java class and then hello and I'm going to change the welcome to uh, corpus And your lab and dev comp us 2021 And I just save a file And then back to the terminal window and I try to run the same hello What happened behind the scene? Let's go back to terminal window and then corpus automatically detects the change code like a resource classic and property And then packaging application and resending to remote open ship the cluster And then it just happening. It just took Like a almost 4.5 second and back to here and then you got the new result So it's exactly same capability live coding on your local machine, but you got to Actually doing a remote cluster Okay, so That's it. So we almost time here. So we got a 4 mini left today and then I'm going to reshare my slide here Back to presentation so anyone have any technical issue or Uh, some kind of question around the corpus and this specifically this workshop So once again, uh, so corpus is the cloud native application platform and java framework Which more focus on kubernetes native thing Is you definitely, uh, have a lot of handed the familiar and also convenient features and tools and Some kind of benefit and try to develop cloud neighbor market service and serverless application on kubernetes and k native. Also, you can have Fun key extension which allows developer to develop one function and deploy multiple serverless platform like a ms lambda Google function as a function and k never eventing you can go to my youtube channel and and then find a similar corpus team Here is a daniel otb in url And also as you see here's the idc report and the bini url try dash corpus. There are a bunch of the corpus Live coding and uh the interactive running or something like the here So how to get started corpus application development and react with application and uh And the spring developer thing, but this is using spring api so today we Try to convert spring with the corpus using The pure corpus extension, but corpus still provides the corpus spring api Comparability which means that you don't need to change any spring with the application running on corpus as long as you have uh spring api Comparability which corpus provides when you go to guise and cork style and then here is Comparability and then here is all Comparability around the corpus with the spring like a spring di spring web api spring data and then spring security and spring cache et cetera, but Just a little bit you might need to change like some of annotation Which corpus not support at this moment and also but without that you just need to change it the The maven bomb From spring to corpus and then you just run spring boot on corpus Which you can have live coding and also you can have a native compilation et cetera, but The reason I we try to use pure corpus extension today because There are no limitation to develop the same capability or cloud-navig application on corpus because if you want to use Spring Comparability spring compatible api on corpus. Maybe you got some limitation. Maybe you need to wait for another spring compatible api from corpus So i'm not going to recommend that movement so Rather than I just try to use a pure corpus api okay so That's it. That's all I have today. So thanks again joining the This session today and then hopefully you guys enjoyed the corpus workshop And now just people reach out to me directly by twitter and the youtube channel And then I'm more than happy to address any question there So any last comment is about to wrap up today? Yep, I was just coming back on to say thank you. This was a great demo I was good to get your hands on something new. So thanks for thanks for joining us this afternoon Hopefully we get to meet in person one day, you know in matching dev comp putties But I don't see any more questions in the chat. So thanks again, and enjoy your long weekend Talk to later and then have a great weekend and hopefully see you soon in person Next is about next everybody. Yeah, bye