 My name is Daniel Oh, I'm working for Red Hat as a technical marketing major. So welcome to join the guest, Portasafonki, the next time you hit the subways dance floor. So just who am I? As I say, I'm a technical marketing major at Red Hat, specialized cloud heavy application development and also try to give us some more actual practice for many enterprise developers but also IT operation team with agile and DevOps. And also I am CNC for ambassador and the DevOps Institute ambassador as well. So here's my old contact point. You got my Twitter and you got my YouTube channel and my dear laboratory please feel free to reach out to me if you have any question around Quarkus and Reddit technology but also CNC abstract. All right. So just think about it and let's one step back why we need to serverless and when the serverless came up. So it almost five or six years ago at the beginning time, we have only one serverless platform as say the SaaS service. Everybody say that Lambda and everybody is still really love to using Lambda to address your serverless workload on top of that. After a few years, we have a more serverless platform and offering such as Amazon, Google and IBM and even Kubernetes provides serverless capability on top of the K native. And then what happened at some moment there are lots of serverless platforms and frameworks and tools and even security ecosystem as well. As you can see here, this is it came from the CNCF serverless landscape. There are a lot of tools which means oh, we can address and implement design our serverless application and architecture and the platform even you can have managed services or you can install and build of your own manageable platform for your serverless application. For example, K-NAB services and K-NAB serving allows you make that happen. So one of the concern or challenge with this serverless landscape is too many choices. For example, I am individual Java developer which platform, which framework I have to use for designing new serverless application and develop reactive application on top of that. For DevOps engineers, they needed to make a decision on which platform is a manageable or hosted or the instable platform would be perfect for their next generation DevOps platform as well as addressing traditional microservices but also serverless application. This all new tools framework is too much choices for as part of the burden for DevOps engineer and architect individual developers. Here's a very interesting survey newly executed last year. So as you see, there are only 6% Java developer really love to use the Amazon Lambda to handle their workload I mean, VGC application workload on top of that. More and more the front-end application developer or Edge developer really love to use Node.js and Python. Why they really love to use Node.js Python rather than Java? Even though there are more than 10 million Java developer out there around the world to implement business application also maintain business improvement or bug fix or security problem every single day. But still the language platform framework and the program language is really mobile for the two Node.js, JavaScript-based and Python-related Java. Here is the reason why the Java is not fit in serverless architecture. The first of all, Java was unleashed upon the world back in 1995, almost 26 years ago at a time Java was designed for high network throughput which means it calls high expense to maintain the high throughput such as the big memory and the long start of time and also once you deploy your application in production environment and that should be run a long process such as 24-7 without any download and then shutting down. So IT operation team totally accepted their long learning process and maybe 10 minutes start of time doesn't matter the start of time but should be stable services for a long time. That was the design criteria for developing Java application. But also Java definitely fundamentally have dynamic behavior which means once the developer build your Java application they have a by-code which means that by-code can be running on any application server over the internet technology. So you don't need to rely on specific application servers specific for your machine. This is that was really great benefit and a feature to run your Java application implement web application around the world with the internet technology. But after 10 years or 20 years later we have such a great technology and also their technology allows us to run new application long time such as immutable infrastructure such as we call the Kubernetes and whether this is one of the enterprise already Kubernetes services. So in this immutable infrastructure you have to run one single Microsoft application but you have to consider scalability which means the same application but scale out thousand part on Kubernetes cluster. So we don't need to dynamic behavior any longer it's not a good benefit or even an advantage in this immutable infrastructure at the moment. That's why we needed something different if you still need to Java technology to run an architect with a container slash Kubernetes technologies. So Quarkus was born and designed to overcome this potential challenge. So Quarkus is a hundred percent open source project and allows the developer to implement cloud neighbor microservice as well as design serverless application which he enable to run your serverless application with the event driven architecture and then you can communicate back end or destroying systems such as Kafka messages services. So with the Quarkus totally emphasize on optimizing the your Java technology and architecture. For example, you can run your Java application on open JDK like a JVM but also you can run without JVM just so you could have executable file called a native executable binary. And you can see the life cycle pre shorter such as just you can deploy every, maybe a thousand time in a day or a start of time from seconds to millisecond. And how it works because Quarkus to give you some two options for developer from compiled application and then create your bike code. And then you have a two choices to make the runable in the first one based on Java, the Java file, something like that. And then you can have, take the ahead of time compilation strategy which he allows you have a native executable file. So you can just run that file just like a goal. And the more important thing is Quarkus shipped to all necessarily task when you run time such as the annotation scanning or price descriptor and the enable, disable some specific feature and the configuration. This is always happening at runtime when you run Java application traditionally but Quarkus move that require request and task from runtime to build time. So this is huge impact makes your Java application lighter, smaller really filling in your container plus Kubernetes technologies. So how to Quarkus support the native comparations strategy. The native comparation came from the Grail VM technology and the Grail VM invented by Oracle and then there were two version community edition but also in a project edition. The Quarkus more support the manager downstream project from Grail VM which are aligned to open dedicated technology. And we also keep maintaining the security problems such as a CVE and also we're gonna add more enterprise capability such as a debugging and monitoring, et cetera. So this is the only way Quarkus support the native comparation based on manageral project. And how Quarkus address the function and server less capability for your application. Here's a really interesting and I'm really love this name. So funky, it's a wonderful extension of Quarkus. The extension means it's a wonderful capability. Just imagine that if you have some experience to develop Maven project on Java application you need to define multiple dependency on your project such as the Jax RS or data transaction like a PostQuestScale or MongoDB. This is all capability on your Java application which is specified and defined on your Pomex ML as a dependency. So Quarkus extension is the way specify that dependency and capability. So one of the extension as the name means the funky allows you have a portable Java API to write your function and which deploy multiple fast platform like a Google, Amazon and K native and also Microsoft, et cetera. And this is a cool snippet and just fun annotation make your your Java method as a function. I'm gonna show you quick demo just a bit later. So also you can have a traditional request response Synchronize application function but also you can handle a Synchronize reactive application just easy but still using fun annotation but you just define the return code from just string type but this is the uni or mutiny reactive type in the Quarkus framework or the wire your application method as a reactive capability. And also you can have the context dependency injection like a spring DI by default. This is one of the beauty of the Quarkus framework to have the CDI injection. And here is what kinds of subless platform or fast platform you can use and you can deploy with exactly same Quarkus application as a function. So just you can deploy function as a standalone or you can deploy Amazon Lambda or K native event or Azure function and your Google function, Google Cloud. So you don't need to figure out the syntax or API to deploy the specific cloud platform which means you don't need to change any code just you need to figure it out and then put into your configuration on your application properly such as, for example, target platform is this is Amazon, this is Google, this is Microsoft, this is a Knave, et cetera. And one thing a little bit driven down Knave because everybody is doing Kubernetes and Kubernetes provide the Knave which allows you manage, deploy and implement subless application on top of the Kubernetes. So you just need to Knave manifest using Quarkus because Quarkus is one key annotation automatically generate your Knave manifest YAML file just like that. You just need to put into one Quarkus.Kubernetes.deployment that's target equal Knave. This app, just one single key value configuration make that happen just like the right side your YAML snippet. And then we do this all Quarkus things you just needed to write your code just like a function in the packaging using Maven or Gradle and then deploy like a Maven or Gradle command line just three step from application development to deploy your application to Kubernetes cluster for subless application. So I'm gonna stop the talking and just jump into demo how it works to start my project mode. And then here's my local environment. I'm gonna using the Knave serving command line aka KN and there are some ads on KN Funk it's a depth preview in opposite of 4.6 cluster as part of the opposite of subless operator and capability. So here's my sample local directory as you can see I have some spew experiment in here. The first of all, I'm gonna need to create my function projects so KN Funk and create and the Quarkus, the function name Quarkus Funk and then I'm gonna to use the runtime environment in the Quarkus. There we go. And then now we have a new Quarkus Funk project it's automatically generated and it go to Quarkus project and then you can find that the Maven project automatically generated and let's take a look at the Funk EMO file. As you can see the function name Quarkus Funk and namespace each decision reporting to your Kubernetes namespace or opens the project name and runtime Quarkus actually this function allows you have a multiple runtime like a Spring Boot and Quarkus, Node.js and Go. And we don't build this application at this moment yet. So that's why there's no image, some value in the trigger HTTP and also build an image here. So next step I'm gonna deploy this application but before that we're gonna just use one Java ID to take a look at the little bit detail of this application. So I'm gonna make it a little bit bigger which make you comfortable to see it. And here's a Funk EMO file and then go to source directory in the Pubx.ml, there's a Quarkus version and then you can see here the Funk it can event already pull down your application and go to our Java file, here's a function just like a code snippet. We just needed to one Funk annotation here and then the other method just like a pozo and then it's just input the JSON file, message and then output the JSON file, message. It's a simple, you can get started to add the more business capability on this application on this template, okay? And then go back to Funk EMO and back to the terminal and the next step I'm gonna just deploy this application and I'm gonna need to specify the container registry once I build this application as a Java file and then I'm gonna do a upload and push this application as a containerization and then we'll pull that image when we deploy this application to Kubernetes or up to container platform. For today, I'm gonna use it up to the 4.6 cluster in my registry and then the namespace we're gonna use Quarkus, Funk namespace and Burrbox here. So before the run it, here's my opposite cluster and then the Quarkus, Funk, there's no resources here. There's no part or anything because I didn't deploy anything as a moment and back to here, I'm gonna run this application the first step, I'm gonna build this application like the Java, the Maven packaging, something like that. The basically we're using build pack project to build this application and containerization and the push sheet pull, et cetera. So as you can see, when you go back to IID tool you can find that the namespace is automatically updated based on our parameter in our command line and the image, I just updated it because I put in this as a parameter when I run the KEM Funk command line and the image digestor will be updated soon. Yeah, just like here because when you go back to terminal it's already the push that and we need to KNAP serving become ready and when you go to open the container platform now you can see the, you're able to server is already deployed. When you click the build log, you can find here. Here is a JVM application and then you just need to pull six a second to start up almost four and a half a second to start up and go back to topology view. And then one thing maybe interesting we needed to add a label here that could add a push to that IO and one time equal our quarkus because we needed to deploy one more time today. Now you can see quarkus and then I'll go back to here and here is the rest endpoint your quarkus application. And I just tried to copy and I tried to pull invoke endpoint here the message like a JSON and like a quarkus function and all the end point here. Let's give it some moment. Yeah, so our application already terminating which means the default configuration setting is 32 which means if there's no demand or request to this application serverless function this will be scaled down to zero by default just like a serverless behavior like an Amazon Lambda. And then once it already terminated down to zero and we will invoke and trigger this serverless function using call command like HTTP request and this will be a goal of automatically like a core star one of the behavior of a serverless application. Okay, we just down and back to the here and just trigger your application using HTTP protocol and back to the here your application just started this is the the same behavior your serverless application and now we got the return is a code it takes just two seconds make that happening. So let's try to one more another experiment of things so go back to here and try to using native compilation so just to make sure the default function name native and then image also native and the builder we just needed to here native so this make your application native compilation so go back to terminal window and then phone command line and deploy once again so this will be packaging your application user build pack but as you can see we got a using the native and then packages application as a native executable file based on Graviem and it takes a little bit longer than our previous deploy because the neighbor compilation compact your own necessarily dependency and library etc. just like you see container image is immutable file which contain all necessary file to run that container so it's a exact the similar concepts it takes a little bit longer so in the meantime let's try to open your terminal and what kind of capability the K and funk provider for example K and funk create and I'm going to help command line you can see here you can select multiple runtime for example go no JS Quarkus and the spring boot default is no JS and you can also trigger default HTTP we just did it and then you can also send in the event and then once you use it in the event the your template project will be generated the cloud event source code rather than HTTP request response Java method okay and then when you go to here let's try to switch another project here so this is all about developer standpoint what about operation team and they also care about serverless and function on their on top of their own platform so here's the one of a good way to open the folk six cluster or a later version provided hand chart is the one of the popular tool to manage your software template or maintain like a data operation so when you go to hand chart and then or topology you can actually add the hand chart and there are Quarkus hand chart already there it's a still preview feature but you can actually use that so for DevOps engineer or operation team or SRE they can actually install hand chart for standard Quarkus in one time they can also add some specific configuration so just imagine okay I need to some standard application server like a javasap or patchy web server they need to define based on up to the template or YAML file or operator now they can do that same capability with the hand chart for Quarkus standard just install hand chart and then install your hand chart here okay I'm going to try to new one and then install your hand chart and it takes a few seconds and then you can go to but you got a lot of image full back of a dorm scary about dorm free when you go to hand chart and you can hand you and go to religion now you can find you will deploy real report image full error or image full back because still build is ongoing so when you go to build and then use Quarkus build and go to build menu you can find the logs file here it takes a few minutes to finish your build your application in the meantime as you see this hand chart the clone the image sample application and then build that application using Maven or the Gradle and then packaging just like S2i source to image process let's go back to our terminal window and how did all you are the naval comparator just did it and then go back to opposite to console and now we have a new naval compilation it's already terminating during the dead time okay I'm going to do just trigger one more time and copy here and then echo so I'm going to just delete the endpoint new endpoint and then just try to another message like as a native function and then go back to control and then this application automatically scale up and then just we got a native comparation return but it takes a little bit faster as you can see the start of time here just 32 millisecond previously with the JVM we just the 4.5 second is almost 100 faster than any application this really building native comparation with your server less and to go to here your application almost running up so it takes a little bit more time to finish that so I have another few more slides of the wrap up just today so go back to here and then present mode we have already learning of the time okay so here's four more use case in a demo if you're really more interested in corkers and server less or cloud application development I pretty strong recommend you just subscribe to my youtube channel bini danielotv I put in a tons of video demo and the technical tutorial etc for example here is how to develop the server less application based on corkers funky and then that from and corkers application communicate the back end display data grid on top of the screen to find out how to scale automatically and scale down to zero automatically based on your own demand network throughput so the corkers once again born for Kubernetes native application development more focused on container technology in the live coding for developer joy and you can handle traditional micro service application development but also reactive application but it's still means you can easily integrate a lot of open source project to like a messaging or security or cloud and also a lot of money monitoring and observation tool so here's a more help out your Kubernetes plus corkers journey like IDC report in an interactive portal like try to corkers and you just need the web browser to go through a ton of the scenario and the code that corkers IOT project generated for today so this is all I have and I go to here is now you can see your new corkers application here and I go to hello the endpoint you got a new hello and another endpoint reading in my name Daniel and then you can find here so you are the access endpoint with the ham chart okay so I'm going to I think it's done I'm going to stop sharing any question around there no question means good sign so one thing if you question around the corkers just feel free reach out to me by Twitter or YouTube or I'm going to do keep staying the conference today so you can just chat with me or the discord or your chat room directly I'm more than happy to address your question that's for the thing have a rest of the day Daniel we have one question here okay what is the software you are working with where is the question where can I find it on the Q&A tab I don't see actually any question in Q&A tab yeah can you repeat the question once again what is the software you are working with software yes yeah so mainly I am the technical marketing major at redhead runtimes team so I've been working with the spring boot and corkers and noJS all cloud navel runtime but also data grid single sign on all the runtime related product and software and also Kubernetes as well I have one question will remind everybody they can post the Q&A questions in the Q&A tab we still have Daniel here and after this session Daniel will you be available on discord for a follow on question sure I will be there all the time so just pick me or drag me I will keep watching the session what is the session number in the discord we are session room one okay we will be there so if you can monitor that that would be fabulous so you had a slide that was very interesting where you talked about Knative under Amazon GCP and Azure so what your point really is that you can code once and then run in any of those three cloud providers as well as on-prem are there any changes that you can make to your code to run in those different environments no actually no need and then you just needed to add the target environment your application properly file rather than Java code so when you go to my YouTube channel I actually posted all the video demos how to deploy same application to Amazon Lambda or Microsoft Azure or Kname just like I saw you today so you can figure out what difference between the multiprocess platform to deploy serverless function without any code change and I'm going to put in this slide there in the discord as well excellent excellent and where do you if I can ask you to kind of foretell the future where do you see serverless going in the future yeah that is a really good question so actually I had a conversation earlier this week with a forester analyst around the serverless strategy or vision and the interesting is serverless is still already stated I mean in major technology because people saying serverless is really feeling that just a web application but it turns out more and more enterprise company try to adapt the serverless technology with multiple business domain I mean traditional business domain so in the end you can evolve using all business application with the serverless plus event driven architecture but it takes a little bit time make that happen like a core to start the warm start and what is the rest food or what is your container what so just imagine containers still a little bit experimental thing for serverless technology because Amazon Lambda doesn't use a container technology just so you can upload your application itself and then running on top of just a butcher machine so there are still experimental thing with the serverless with the real application on inner project production but more and more inner project really interesting adopting that thing and in terms of manageability how do you know if you decompose an application to thousands of serverless endpoints yep you know how is managing you know this the application that way or is that a benefit where you can change one thing and have little to no effect on the other application that's another good question so basically all serverless based on the HTTP protocol and also the cloud event so there are serverless workflow project to manage your multiple thousands of serverless at one workflow multiple workflow for your business application behavior but also you can have the API platform to manage handle your request from end user to your serverless application excellent stuff I may have lost my video here oh yeah no worry I can see your nice handsome handsome picture you're too kind Daniel yeah thanks man so if there's no other questions I would invite everyone to join Daniel on discord and thank you very much for an awesome talk next up we will have serverless and adventure in architecture with Langdon White and that will start at the 330 Central European time so again Daniel thank you very much on behalf of Atapio with myself yeah thanks thanks for telling everybody and have a good rest of the day thank you bye bye