 All right, I guess we're gonna have a couple stragglers later, but I want to get started So first I'd like to introduce myself and our window. My name is Steven Gerr. Our window Kenny. We are software architects with Cernar corporation If you haven't heard of us, we're a health care company We use a lot of open source and we tried to contribute back where we can so Here they come Well wait, that's cool So please go to a github.com Cernar check out our projects. There are a lot of people are hard to work at them And very proud of them so you can find this project on github.com Cernar as well So to start I want to talk about the name a little bit because it's kind of crazy name, right? What does Joala mean? So it's actually a Hindi for blaze We open source this during a release named Joala So we thought it'd be pretty cool to name the project after the release and hence the name Joala came out Also, I want to start with giving a huge. Thank you to the dev team. That was part of making this happen a Lot of hard work a lot of dedication You would think a graphics designer made this picture, but it wasn't it was one of our architects who spent nights and weekends because he Just loved doing it So definitely wanted to show it off So a lot of you are probably wondering what is Joala? What does it talk about? And it's really easy to just answer something like that, but I like telling stories and I can use PowerPoints to do so So I'm going to tell a story So at the end of the day we all have a basic problem we try to solve all right We want an application We want clients to use it right we don't care if there are web browsers or their phones at their desktops It's got to be reachable over an internet and it's going to sit on the server somewhere whether it's virtualized or you know In my garage. It's a server. It's hosting some stuff So, you know if you're here, you're probably familiar with a certain set of technology that can make this happen Myself and the team we are familiar with a set of technology that starts with the JDK On top of it. We put Tomcat and now we have a place that we can have applications reside Now that I build my application Next thing I do is I deploy it so I deploy my application To Tomcat now an application loan is enough right because you've also got a set of configurations that go with it So when I have one Tomcat that I'm dealing with it's manageable I write some scripts. I do a couple things and you know, I'm good But we all know that one JVM alone cannot be enterprise right? One JVM can easily get locked up it can go down and all of a sudden your users are getting four or four errors And they're thinking wow this site sucks. I'm never gonna use it again So no one we know we easily fix this by adding a second one You've probably been to many many talks about how that's done here So going forward with it and now we have two JVMs. They're both running our apps They're both configured, but we need users to be able to use both of them So what's the next thing that we do? Well, we put Apache web server in front of it and we load balance between the two So that's a you know Pretty common definition for especially the folks that are here of how you want to set up a topology But at the end of the day two JVMs and one one web server isn't enough right because first you need two of everything so Now we get into more of a picture that kind of looks like this and it's starting to look more and more complex Right now I've got many operating systems whether some are in the cloud some are bare metal doesn't really matter Got many JVMs. I've got many web servers And I probably have some other set of load balancers in front of all them because that's just a typical apology Applications scale differently So if I have two apps and if I'm at a topology like this I'm probably at the point where I don't have one app anymore now. I have several right or maybe I have a dozen Who knows? But they scale differently. So one app might go across 15 JVMs one might only need three one might need two but each app has its own characteristics it needs Traffic load balance to it. You need to be able to manage it You know and once it starts looking like this it starts to get really really really complicated, right? It's still manageable, but it still gets complicated But you know typically this is in the end and eventually our topology blows up and we have something that looks more like this But we have what we wanted, right? We have our clients our clients are hitting us through the internet You know maybe a couple levels of VPNs who knows to our load balancers To a big giant mess that we have to manage is we don't just get to deploy the stuff and we're done, right? Like that's not how it works. It'd be nice if that's how it worked, but we wouldn't have jobs We probably wouldn't be here if it was that easy So this is a problem this problem has actually been addressed by You know several Different ways, but there wasn't what we were looking for, right? We started working on this three or four years ago. We knew we had lots of Tomcats You know we wanted to be able to scale to thousands of servers thousands of JVMs You know hundreds of thousands of web servers, so it's kind of like what do you do? So the bill versus buy question comes around, right? Can we buy something and we look around and there were some commercial products available? But we like open source we like Apache and we didn't want to get locked into a vendor So we started thinking we started thinking we started talking to whoever we could and there was nothing in the open source community That would give me a single pane of glass. I'd be able to manage this topology so being the developers that we are and Having a bright idea and wanting to do something cool. We built Jualla so What is Jualla? This is a This is the UI. This is what the UI looks like Pretty simple. There are three major functions that this app needs to take care of Right first. I need to be able to define my topology, right? So I need to be able to configure it What is my default topology look like? Do I have I'm gonna have JVMs. I'm gonna have web servers. I'm gonna have web apps I'm gonna have external resources You know, maybe I want to override a server XML Maybe my logging dot properties which out of the box doesn't seem to roll on its own has some problems, but Either way, I need to do my configurations Once I create those configurations now I need to deploy them So I need to know what my hosts are what my ports are And I want one place to do that. I don't want to have to log into 100 boxes and run a script to be able to do That I also don't want a giant orchestration engine That's meant to do something completely different that I try to put a couple scripts around do this as well I want something I can manage and something that gives me real-time feedback So I've got my stuff configured. I deploy it using this UI I generate Everything that I have here and how do you play it now? This only shows two JVMs a couple of web servers and stop You know kind of wonder what it's doing, but in other topologies where you have a hundred of these guys It's pretty helpful So I'm to generate to click this and generate about a hundred JVMs takes about five minutes Across many many servers and I'll get into more details of how that works So web servers JVMs and then I'm not done right everything's deployed everything's configured But now I need to be able to operate it What that means is I need to know what's going on I need to be able to start and stop JVMs I know I need to be able to start stop web servers. I need to know if it's working So that's when you know things start getting a little complicated I have a hundred JVMs and they're attached to one cluster One goes down. How do I know? So again the goal being the single pane of glass I Also want some basic support tools. I don't want to have to SSH into a box and do a thread dump from there That's a lot of work. I might want to do five thread dumps at the same time over five JVMs And I could have a bunch of SSH windows open and hope I get my timing right where I could make my life a lot easier And that's what this did. I Also want to audit if someone's gonna go update my heat on one of the JVMs and not tell anyone I want to know who did it You may not go into production and make changes period You will be caught and everybody should know Linux made that very easy with the history file Unfortunately windows made it a little bit more complicated with Joala. You must be logged in and you will be audited So you're thinking this UI looks cool, but I use automation I don't want a UI Agreed the UI is basically our way of testing a full set of restful APIs on top of it That are made for automation So every function that the UI has has a restful API associated to it So whether you like using chef whether you like using puppet whether you use you know use curl It's supported. It's just resting Jason Also, we use SSH a lot Tools similar to this seem to like create like note agents for an in Java the hang that you you know that have some problems SSH is pretty reliable When you talk about you know remoting protocols SSH is a go-to So we made use of it. We made use of it being there. We still authenticate with LDAP We don't go crazy with settings, but when we have problems I still don't remember a single time that SSH was the reason we had a problem So that's this is to kind of give you like an overview What we're doing you know why we did it well, we hope to achieve from it and I'm gonna probably say this a couple times But I just want to give a huge shout out and thank you to Apache Khan for letting us be here. It's a ridiculous honor We open sourced this we know it's not perfect Thought about waiting till it was perfect, but every single open source model says not to so everyone here Please download and play with it. We'll show you the github where you can get it and Contact us the the team can't wait for some downloads. This our Anthony um So Going on the rest of our agenda. We're gonna go through how you configure deploy and manage Using Jualla, so we're it's gonna go at a really high level if you have questions, please ask I'm gonna gloss over a lot of this stuff because it's not until you really get in front of you and start playing with it That you kind of know like you get more questions out of that. So Again, please ask if you have any questions at all So the first thing about configuration is the media By media what I mean is the JDK the Tomcat binaries the Apache binaries Not all my Tomcats might want to run on the same version Not all my JDK's might want to be the same version when I got hundreds and thousands of them Maybe I want to update a couple Tomcats to one version at a time while keeping the other one stable Maybe I want to do the same thing with Java So what we do is we associate a media to a JVM or a web server and that gives you full control of what gets pushed out When you do the deployment Another term I'd like to talk about is groups This is very similar to the word cluster But every app server vendor or you go to and depending who you talk to even within Tomcat a cluster can have different meaning So to take any confusion out of that we didn't want to use the word cluster because we're really not using Tomcat clusters But we wanted to use the word group. So what is a group a group is an application or set up applications? Say you want to end of them? It goes across one JVM or many JVM and it goes across one web server or many web servers It shares common resources. So my group is going to share the same couple JDBC connections It's shares common heap settings shares common characteristics. So when I can deploy a group I expect every member of my group to look identical I really like using Outlook as an example of what different groups can be because this is an example that I've heard about since some so is Again popular, but if you think about a UI that has contacts calendar some messaging And our old world when we used to send a request and wait for a response to come back and something would happen to the server You get a big bat 404 or 500 or something like that and it didn't work All of a sudden so it came around a jacksy kind of services came around and now you can split up your UI to sell What kind of services so if the calendar service is down? Well the messaging and the contact services are still working. So think of a group as one of those logical groupings It could be my calendars my messages my address book And you'll kind of see that repeated within these slides, but to me anyway, it's just a really good way of picturing What a so is and you know kind of even where the next world of microservices is going at a much deeper deeper level So anyway, so now my group's defined the next thing I want to do is I want to create some JVM's It's we tried to keep the minimal content in Jualla We didn't want to have a copy of data that you might have in other places But there was some information that we were just going to need within here You need to know the JVM name you need to know where the host it's going to you need to know some ports Unfortunately, they're just five. We really care about We had a status path because you know in case some a heartbeat fails We want to be able to just check the status of it We also add a username and password down here because you might want your JVM running as a specific user With a specific password Just really common things again We try to keep this as bare as possible and let other tools manage your Yes A Tomcat JVM, which includes a web server. So when I say JVM, I'm really meaning I really mean Tomcat In this case when we say I think at Tomcat The internals of how it gets configured we keep out of the scope of this We somehow tie into it a little bit, but there are other tools that are much better managing that We didn't intend for this to be a property manager We didn't intend for it to kind of take over the whole topology But we intended for it to manage to be able to manage your Tomcat Apache and Java topology So when I say that I know a lot of people use things like Sheff and Puppet and These aren't the only parts of your topology. You have databases. You have you know disk setup You want to use users and Linux and other things. So it's kind of like a separation of concerns And the concerns of this are basically your Tomcat topology and how you're load balancing within it It's just a Go back If you think about it's being used from a UI we typically don't use this from a UI and we use it from automation So what happens is you have a rest call and you pass these parameters into a rest call And if you have something like Sheff or Puppet, you have something that sits or and says you started at 8080 You started 8180 you started at 8280 So it was kind of a challenge when we were putting this together to figure out You know who owns what and how you keep the two in sync But the idea is that you always start from a single source truth So whether that's your source control system or something else, you know, we like source control and that you just make a couple rest calls so Ideally if someone makes a change in this and doesn't change your version control it gets wiped away So next thing's a web server. So again, we want it with a minimal config that we could you have your HTP and HTTPS ports A name and a host and you have the groups, right? So within your web server, you're typically load balancing to multiple groups So if I have like four or five apps Your mod proxy config is going to have all those four or five apps defined using the balancer members And spraying to them you want to define your load balance weights and everything else in there So a JVM will typically be one to one group because you know, we typically don't want to deploy too many apps to one JVM But a web server is a little bit different So at this point you've got your media groups and JVMs and web servers Next thing you want to do is add your web apps The reason you want to put your web apps in here is because you need to know where to load balance and what your context paths are So at this point we add a couple web apps We tell it we give it a couple hints that we're Going to use later. So we're just showing them here Like do I want to load balance across all my servers for this app this group or do I want to just stay local? Do I want SSL or do I want non SSL? That's typically defined by application because one application you might want to be secure Another one for some reason you might want it to be open to the world and not care about it Behind an SSL connection Then the next thing that comes in we called resources so the tricky part when you're doing this is It's real easy to deploy Tomcat and Apache like super super easy, right? You deploy it the defaults are 8080 and it's up and running But when you might have 10 of them on a box or three of them or four of them it starts getting a little tricky, right? Like well, I can't just unzip start and have them all run on 8080, right? Because only one's going to win the first one all the others are going to fail So what we did is we took all of the stuff that we defined over the last several slides all this data Again, think of it being fed completely through REST APIs All automated, but we want it to be accessible in here and we want this tool to own it So what we did is we made Use some groovy templates, right? So we don't want to come up with another scripting language, but we wanted some way to do substitution So that one file can be used across 100 jbms Groovy seems to be a really natural thing for Java developers to understand So we embedded a groovy interpreter in this I think I've done it about 10 other projects as well We also made these properties over here accessible so If you look down here, you have your jbm hdb port Here you can see all your jbms and if you drill down to just one you'll get that hdp port So we have a template and template preview screen here When I go from my template to my template preview I'll see that it gets generated right over here and I'll see the actual values So, you know when I'm setting up my first one I can do the eyeball trick make sure everything's working I'm good to go The guys who wrote this I just want to give a shout out to them You know, we started with well, we're just going to make it quick and dirty and just text I came to work a week later. Everyone's smiling. Look what we did There's also a copy and pasted here for these so you can copy to your clipboard and paste them right into your um xml so uh jet if you're listening great work Um, so we have groovy templates and they do substitution Um, when you upload the template, um, I use I like to use logging up properties as an example of a template Because if you're not careful and you deploy a tomcat you put into production. You don't look at logging up properties All of a sudden your disk is eaten up by a big giant log file Um, so that's one thing that we commonly override across all of our jvms Um, if you guys want to make that a little bit easier for us, it'd be nice if they rolled after a certain A man of uh after a certain size Yeah, we uh, we just went with the default at first. Um, we were going to move to log for j But once we tweak the uh, you know java properties Works pretty well, but that's one of the first things that we add to one of our topologies is make sure the log files roll any uh Go one more slide, but the idea is You upload the file you give it a deploy path The file you'll want locally We also have this idea or concept of metadata that you can see down here Now this is nice, but once you start adding pieces, um that we put into our metadata like where do you want to deploy it to? This is an example Where do you what do you want to call it on the remote end? Do you want it to belong to just this one jvm down here? Or do you want it to go to all of the jvms and trickle down? So, uh You know one approach was to create a database and add a column every time though We came up with the clever use of you know another property Um, another one was just to go with the uh, poor man's approach and go with json And metadata which we really like because it lets us kind of grow and expand dynamically Yeah, absolutely. So when you have automation, you can just upload once you get used to these files You upload a metadata and a metadata preview or i'm sorry hand and preview it Um, but then in your automation, you've got this text file checked in you can look at it if it's changed You know because it's version control Um, this is honestly one of the clunkier parts of the application. We try to make this simpler um, and we've tried several times, but it's like You can never get it just right. So if anybody has good ideas or wants to play around with it, please let us know um so just to talk about this a tiny little bit more um, and you know to give a Go further on that same example. You got your server xml. We all have a server xml We know that this one file must be changed because You have to have unique ports. Um, you have your metadata in the server xml. So Um, the metadata also uses the properties. So my deploy path, you know op jbms my jbm name and the cop directory And then I want to call it server xml on the opposite side So this groovy template is metadata. They go into jwala. It goes to the database engine comes out and look at two unique ports that are going to get sprayed across my topology And now that's not something I have to worry about and I can actually see it working because if it doesn't work After I try to start them, they're not going to start They're so there is Many many approaches to the exact same thing. So we do both Um, this is to make the example extremely easy. But yeah, I know exactly what you're talking about where you can say This is my property file and these are the properties that I want to use Um add variables. There's different approaches. This one's really nice and easy when you're using this tool Because the variable you're not going to see until it's on Where you're using or when you're running whereas this you can like take a quick look at it and see what's going on But using this tool you can do both Well, so that one file Um, let me go back to the slide Where is that one file in this topology? Well, so how many of those files do I have now? um, so Do any other thing Let's me have one server xml right um And like and that goes all over the place. So server xml is the only thing I need to tokenize or worry about I'm not a hundred percent following. We were talking about I um, but yeah, if we um, I would love to catch up after this Talk about it because I uh Yeah, if you have a better idea, please let us know. Um, but it's like, you know, when you've got a thousand operating os's And it's kind of like how do you manage this kind of stuff? All right Jump through these again um so anyway So that is um, that's how you create the resources Um, and that's what resources are for so again We hope people don't go too crazy using these because they are a little bit complicated We prefer everyone just to use the binaries out of the box Um, and whatever tools they're used to But to be able to use one binary across many many many machines This becomes extremely useful and logging up properties. This is where we're going to demo later That's a really good example because we want to be able to download tomcat Um, not change it whatsoever Deploy it and then override the things that we really need to that would you know that are going to prevent us from running In a production environment like a giant log file um All right, so we've got everything configured. The next step is to deploy. All right um, so We have a couple different options to deploy you can deploy everything at once Or you can deploy just one web server. So you're going to see this pattern repeating over and over and over Um, again rest apis for absolutely everything So you can do it from the ui. It's good for troubleshooting But it would be nicer to have kind of like a workflow engine that does this stuff for you so you can repeat um as needed Um, you can also delete remotely too So this not only deletes from joala, but deletes the remote service So when you do the deployment it actually creates a windows or red hat service Cento service and runs it that way um, so same pattern for the jvm to generate all of them Um, or generate one of them Just to go in a little bit of detail about how this works um What joala has a local binary directory? When you actually build it using gradle, we've provided a Way a gradle task that you can point at this jdk That you know hosted on the internet at this tomcat and this apache It'll go download it Package it all together Create a local jvm deploy joala to it and then you'll just basically have everything lying there And we'll show that there in the demo later So we try to make the development of this as simple as possible to where you can run one gradle task And you have a system up and running um, so again What internally we're doing when we do a deployment Is We say i want to generate this jvm or i want to generate all of them I go and I take my local jvm that i've defined take my tar ball. I on tar runs up Do all that good stuff. I take all the overrides. I lay it on top of that Then I zip it back up SCP it to the remote end I also add one more thing I add an agent So we hooked into the tomcat lights like a listener because there are states that we care about tomcat So over here, you'll see started and stopped You guys probably know much better than I do how many states there are but there were about four or five We really cared about so start if it started starting initialized stopping stopped So as the jvm's coming out Coming up it's doing a um, it's actually using jgroups And you can choose tcpip or multicast to send a little packet with a message saying here. I am. Here's what i'm doing So when we create these dudes we put that agent in there and we ship it so that's um That's how this works Now the web servers are a little different none of us wanted to write a um c plus plus plugin for apache So uh, we're just doing a uh pain to an apache static Um, you're all we thought about it Anyway, so you can remove one jvm Again when you're troubleshooting and you're trying to figure out I've got 50 of these and they're having a common problem But I only want to troubleshoot one of them this becomes really really handy like Say you keep getting heap errors and you just want to increase the heap on one versus all 50 You can go in here tweak a setting of v dot that or you deploy it within a couple minutes. You're up and running If you want to add more jvms to your running system you can do that It's a little A little bit of work. You create a couple new jvms generate them regenerate your web server config and then you start load balancing to everything And then resources as well So sometimes you don't want to regenerate an entire jvm or entire web server Sometimes you just want to copy one file over And yeah, you could open an scp could do an scp command You could open a local shell you could send it over that way You could also go over here make a couple tweaks right click and say send We thought that was kind of useful. So again, you can do it to all of your jvms your entire group or you can just do it to One or two at a time The next thing is now that you've configured and you've deployed your environment The next thing is how do you manage it? So that That's kind of the hardest part right because now I've got all these servers and they're all over the place And one of them has been a key for some reason or two of them or sometimes I'm getting any 503 back from my web server And I can't figure out what's going on or I want to add Like mod proxy with the load balancing can't tell you how many tweaks to that You have to make to try to kind of figure out why you're getting 503s How long your retries are supposed to be and it's really nice To be able to take one of those and send it across all of your web servers that are load balancing across all of your jvms So also you can do things at a group operation So if I have a huge topology, I don't want to go clicking a hundred different things I can just start and stop everything from one place I've got a little lights. I don't know the client feature that we thought was really cool. So green Means everything's up and running and it's good yellow means it's hot I thought that was nice and simple um So start stop have that per group and you know per web server again Um Now a couple things that we find really useful, you know, we use the mod proxy balancer page a lot And um when we built this we built this for balancer manager. So um I can't tell you how useful that Page with Apache is we use it all the time and we actually link to it When you deploy you just click this link and go to it and see what your jvms are doing If you want to put a couple on hot standby or disable them or something like that You can do all that from here Again, thanks single pane of glass um, we also link to the hb.conf because You know if you need to figure out what's going on with your web server typically that's the place to go Um, and usually when we look at this it's trying to figure out why the load balancing isn't working the way we want it to No, we use we use just the one we didn't go with like splitting up the hb.conf into many Um, we uh, we went for the simple approach at first Um, but it'd be really cool to add that Um Because I mean that usually you're not looking at this file because you're trying to figure out anything other than why your load balancing isn't working The way you want it to I mean by the time you have this thing up and running your ssl is working, you know, that's going Yeah, you know, you have all your included what your app's functioning, but then you're coming here to troubleshoot it later um Some other things that we thought were really useful Has anyone ever had to go into an environment where you have like 50 jvms and drain all of them? How do you do that? but what if you want to Qs them or uh, what if you want to drain them? What if you want to you know, like give the sessions that are active a half hour before you just take down the server So that's precisely what we did with the mod proxy load balancer But if you use the balancer manager page what you have to do is you go to the balancer manager You click the link for the jvm. You go to another page click drain click. Okay. Do it another 50 times Um, that's one of your web servers Then if you have multiple web servers, you have to do that across all of them So we thought we would make that easier by adding this button And this one giving them rest apis. So if you want to drain All of the sessions from one web server, you can do it right from here and just call a rest api Or if you want to do it across all your web servers, you can do it right from here Um, so we uh, our clients found out pretty useful. Um, and we thought it was a pretty fun quick thing to write So if you use this that just comes with it Um Some things for jvm start stop all the jvms within a group start stop just one of them again. Think rest Um, we also added a couple useful features that you might want from single pane of glass in one place Um, so uh, you can link to tomcat manager You can do a thread dump. You can do a heap dump We'd like to get a little bit further In the tomcat manager to where we can do a single sign on because right now you have to log in twice Um, but tomcat manager gives you so many great things that you know You might need right you can see what your jvm's doing. You can see all your user sessions Um, you have that jmex proxy servlet It opens the window with the thread dump the heap dump stays local on the machine because we didn't want to download like somebody clicks five heap dumps on like six giga machines um That's going further than we have You know, there's tools like splunk or log stash for that But yeah, I really wanted to build that into this but kind of stopped thinking like what is the separation of concerns, right? Like at what point have you gone too far and you know, you can download log stash and it does access log Great gives you like pictures. It's free um It's a good feature um Well, we don't download you don't download the heap dump. So basically we just give you a little message or a response Saying it's saved over here. Go get it Because that would have been interesting the first guy to try to do all the heap dumps And streaming them to one server in a retail environment Good question. Um Because we have ssh here it makes our life real easy, right? So we just ssh and do either jmap or jcommand We are we haven't never tested with IBM Yeah, we thought about it But at the end of the day I am really like ssh so at all Um, so I mean jmx, you know, like I mean if you think about it, right They're probably both doing you know, like I don't know the jvm well enough to know exactly what's going on But they're probably both doing very similar things, but I trust an ssh command And we had a tune ssh to get it to work in here, too I don't know if you've ever used jsh before but when you try it out of the box and you try like 100 connections at once It's not meant for that um So we had to do some clever pooling for that to work um All right, so just to go a little bit further Don't want to totally run out of time. I want to talk about the architecture Just in case anyone here is interested and wants to download it play around with it um, so uh We're using jdk We're using tomcat. No big surprises there The database that we were talking about or like the config data that we store We embedded a little h2 inside of the uh, um inside of the application So h2 starts with the application instead. Um, you know, it's a very lightweight To those of you not familiar with that. It's a very lightweight database. It's very fast It comes with a really nice ui that you can do sql against So we just started as part of the app. It takes like a couple seconds Um All the config data is there and again, you get a console with it so you can do like relational database queries against it Um, we're using sprain So nothing, uh, too out of the ordinary there We use jgroups so that the remote jvms and joala can talk to each other Um, that just kind of hides the tcpip layer for us jsh for all ssh Um, we're not just calling out to an ssh client. We actually did you know full java Um, our logins slf perj log perj Groovy for the templating It's groovy school And the ui was written using facebook's react Um, if you would like to use this with development purposes, please visit our github github.com serner joala At the same time, please take a look at our other open source products. Um within the same space under serner Um, you basically we try to make it as easy as possible Install a couple things that i'm sure you're familiar with get jdk and gradle. Unfortunately gradle 2.9 for right now We're very sorry to anyone that wants to use three um You do a clone run The tomcat zip or a zip joala tomcat creates the full thing for you open it up catlina bat run. You're good to go Um, if you want to contribute Here's a whole page on instructions on how to do so Um, please reach out to me directly or anyone on the team. They will be more than happy to work with you and uh Get um, um get you going Um, this is no different than your typical github for um pull request process And now for a demo before the Anyway, do you want to go? We have just five minutes That's what we test in our work environment and take about five or six minutes to do all 100 Yeah, so think about you've got like so you've got different strategies you can do that, right? You've got two groups You've got a group old and group new You deploy group new and i'll do different workovers All right, and then you bring that up Yeah, and this all depends on what your topology is How much space you have what your operating systems looks like but you can let them go side by side You also do one at a time Everything has a risk API it's critical It really depends on if you want to do an in-place substrate on your firm machine You have a different strategy and if you add like a blue green network and a whole different set of servers If you want to do carry testing You would have a different strategy in that but all the different permutations are supported here So we've been thanks for a lot of time Well, you can take all the groupie there and you bring up the new group You know matter of taste and the new groupie is online and the old groupie is all black please If you want to do that way you can do just one at a time as well You do five at a time This really this this is granular enough Then you do one at a time, but it's also set to work the group level that you can do the whole thing at a time It really just kind of depends on you know, what does your hardware look like? How much free research do you have you know? I might not have to double my RAM on my current server to be able to do both at the same time But I might because we're not that expensive anymore and having to be able to operate all in one place might be what I choose We uh, you know, we've got a lot of different use cases So we don't want to love it anymore because uh, you bring that work to kind of try to get more and more common cloud become more popular But yeah, we still need to bear that a little well Cool Yeah, yes, so if you saw the first configure screen you include a JDK so we You expect a JDK to be local and then you can have different JDKs Geologists test that JDK is in a remote place that it should be if it is but send it again If it's not it does And talking about that you think of the use of this with microservices right now We're just doing tomcats and web servers, but we want you know, you're just running javadash jar with microservice So that's kind of uh, some of the next things we're looking at that would be kind of pretty pretty cool You can just go spray 500 microservices with this which would be like a minus move to the app And then we already have code that adds tomcat as a service So really if you did javadash jar and that typically a microservice doesn't have on a reboot goes away, right? But we've already got the pieces that would make it a service owner as a reboot. So come back up That's not our business case today. Okay, we just have three minutes. Uh This is the group which uh, steve was talking about which is not to confuse with cluster in the group So what I have right now in demo is uh, I have a CentOS jvm running I have one web server and two jvms when I say jvms as steve mentioned, it's Uh, two tomcat instances running Um, so this is the console which uh, you can see there's uh Two jvms have started and one web server started Let me go and quickly show you the load balancer. So if you can see this is the load balancer just directly link It's nothing but It oh, okay And then scroll down and then you Yep, so you can come and drain from here and that's what it does basically Yeah So, um, I have two jvms. So this is my setup right now one All Linux CentOS, uh, virtual machine with one web server balancing across two jvms Um, so I want to show you quickly about the uh resources. So say on One of the jvms I want to change the logging dot properties or added. So right now it is That's what we did already But if you can notice here, you want to change the size for example, it's uh, I think 50 megabits per file You can go and change the actually it's Which this I can go and change it on one jvm Save it and it's saved and I can deploy this It's going to give me message you probably it's not it's running So we restrict the user not to to hard deployment because some files might get restricted and it might restart the jvm There's a we work around to this you can add a middle flag Hard deploy equals true and that would deploy it on the running jvm. But right now i'm going to stop it and You can go here On the operations page Stop it and deploy that that would deploy the logging dot properties to that host Yeah Because we when we deploy we put an agent file there. That's how it talks to this So this status you get you won't get any status We've had a lot of people need to write it. They're really really cool Um, I think so, uh, yeah, so what I do wanted to do quickly is add so we have two jvms running And we want to add one more um To You know for some reason we have a load More load and then i'm going to add a new jvm on the fly sent six I'm gonna just Name it as test This is my local host. I've just given a host name to my local Fall i'm gonna put the port as like said 40 000 It prepopulates the port. I don't want to shut down port. I can give it minus one Status path is where the jvm pings when the jgroups fail. So this is not nothing but a tomcat Give file and then i'm going to add it to this group And hit uh, oh, I can need to select the jdk. This is I needed to run on jdk 1.8 I need one apache tomcat. This is 7055. I think Uh, this is bundled along with this. So when I said apply, so right I hit okay So what I've done right now is saved all that configuration on the file. It's not it on the host I go to the operations page And You see that but this is in the new state What I want to do is Go and say hey go and deploy this to this host What's happening behind the scenes is uh, what? Steve talked about Is we are creating a service on that host put it in nnt Moving all the file like the custom logging that property which was applicable to that group Is the same file all the configuration with this two jvms will go in that jvm And create a service And then again once it's done I can start it and Then like what I can do is I want to balance it across uh now this web server across three jvms. I'm going to stop this jvm and regenerate it To Okay, so the generator so what happened behind the scene is We pushed out the jdk the tomcat in a nice uh instance folder and I'm going to start it and if you can notice it's going to change the states and that's where the jgroups come in So it was stopped before now. It's going to hit starting You see that change to starting And then it's eventually getting started And again, we hooked into the life cycle states within jgam And I made one to go. Yeah Yes, so stop it So I want to balance this third jvm across the proxy more proxy I'm going to stop it regenerate this file. What it's going to do is Regenerate the httpd conf since it's templatized. It's going to add this third jvm into that balancer And push it to the host and it's It's going to delete the service create the service put it in a d and It's going to show up Yep, it's done and So I have a web server Balancing three jvms now I'm just hit started and it started now So I didn't show it. So my application was a hello world app I'm just gonna type it So if you notice So this is I had three jbms one running on 10,000 the other one on 20 and the third one which I added was on 40,000 So it just I've added a round robin. I'm gonna hit f5 It's the 40,000. This is the new one which I added if you notice This is the test instance Okay, do that actually Okay, just yeah Again, thank you everybody. It is seriously an honor. Um, this is our first Apache counter. We get to speak with Um, this is our team. We want to make sure everybody got a chance to say hello to the Apache counter audience Again, thank you. Thank you