Inner Loop Development with Spring Boot on Kubernetes

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
good morning how are you welcome to spring one welcome to the cloud native platforms track i'm going to be your mc for the morning today and i hope you've had a wonderful morning so far we've got a great track for you uh and we really look forward to uh to giving you guys a phenomenal show here um we're going to begin with uh one of the uh top you know one one great person from the spring community somebody who's gonna talk to you today about inner loop development with spring boot on kubernetes um and really looking forward to this one uh dave syre is uh one of the founders of many of the technologies you probably use if you're a regular spring user spring cloud spring boot spring batch also a lead on the spring security oauth team and there's an active contributor to spring integration uh spring framework spring amqp spring security generally a very important person in the spring he's an experienced delivery focused architect and development manager has designed and built successful enterprise software solutions using spring and implemented them in all kinds of companies and institutions worldwide and so without further ado ladies and gentlemen dave sayer thank you and welcome everybody um so yeah i've been introduced my name's dave um let's get started so um we're here to look at some spring boot concerns and mixing it all up with kubernetes so i'm gonna show my screen um like that so you can see roughly what we're going to be talking about um so i'm i don't have slides it's basically a demo but i'm going to walk through this um repo on github um but uh before we start that let's just uh have a look at um some housekeeping stuff this is the first track in the first session so um you might not know a few things about what you can do and see at spring one um i found out yesterday that there's a slack room that you can visit so if you haven't been there um this is it uh there is actually a slack channel developed devoted to this presentation and i can see there are a few people there already waving say hi everybody um feel free to ask questions there i probably won't have time to answer them but other people might be able to jump in um until afterwards after the talk there will be a q a session in a separate zoom room and you will get a link to that if you haven't got it already um if you need help finding the slack channel i found it on the main spring one website here there's an faq page with a section on slack so that's how you can find it if you need to so the presentation that the demo is um it's about the inner loop and i'll explain what that means um with spring boot and kubernetes i assume that everybody knows what spring boot is and everybody knows what kubernetes is even if maybe you're not completely familiar with it so we'll we'll dig into both of those things um but i will explain what i mean by in a loop um if you want to refer to this uh here is the github coordinates you could um click into this and you know work through it on your own at some point if you need to everything you need to run the demo is here um and this is the readme so we're going to be talking about the inner loop and by implication there there is an outer loop but i'm not going to talk about that today i'm not going to um explain i'm not going to give any demos on the outer loop but i'll explain what the difference is um we'll look at how to get set up to do this um so so we'll run a sample app which is very simple download it from start.spring.io [Music] springboot application we'll look at some ways to improve the feedback cycle so making it run make a change and make it run faster we'll build it into a container deploy it to kubernetes and then we'll start looking at this um sort of new i guess mini industry of inner loop tools so there's quite a lot of people active in this field right now um because it is a problem right when you when you're actively developing an application you want to be able to make a change to your code and then see it happen see it wiggling in the cluster so um see it running as quickly as possible and typically when you're doing that these days you're building a small part of the larger system so you want to also have it you know interacting with the other components in the same system in that distributed system and you want all that to happen as quickly as possible so there's i'm i'm not going to exhaustively show you all the features of all the tools i'm just going to pick a few and the first one i'm going to show you is scaffold which is my personal favorite but it doesn't it it isn't exclusively uh the best or anything everybody has their own preference i'm also going to show you telepresence um from the ambassador people and i'm going to show you tilt and there are other options out there um i could mention a few but i won't um the other thing i'm going to do today is there's sort of a bonus section in this um presentation this demo that isn't in there in the readme which is to show you some new stuff that is coming out of the vmware tanzi team uh right now i mean basically on the launch pad i think if you were in beta programs with vmware tanza you'd be able to get your hands on some of that stuff so um none of none of what i'm going to show you is um in the tanzy box is uh specific to any of the other tools on here scaffold telepresence tilt but i am going to show you it using tilt um so that that will be at the end anyway so moving on um the inner loop term so it's i think i don't think we made it up i think we have used it a lot internally now so it's become part of the sort of day-to-day language i guess the domain language of the tanzi team so we refer to inner leap and outer leap as being sort of dev time and promoting to production basically so at that time you want to make a small change and you want to see it wiggle you ideally you want to be able to debug what you've done and you need to be able to iterate fast so you want to be able to do that in a tight loop um and the opposite thing is the the outer loop you don't care so much about it being fast but you do want it to be automated reproducible you know um immutable those sorts of things and so you end up talking about continuous deployment and possibly also testing in production is kind of a trendy topic these days um so yeah so um one thing actually occurred to me when i was thinking about this preparing for the talk um the sort of uh uh with the inner loop there's sort of a com an interesting analogy here with spring itself right because as you know spring was invented and still serves to um basically reduce the amount of boilerplate code right so that you before spring you used to write a lot of code and spring and especially spring boot has shrunk that down to the point where you sort of do it by convention and you don't have to do as much with the um the stuff you don't care about so you write your business logic and spring does the rest for you that's kind of the motto and with the inner loop um the boilerplate is more of a sort of a process boilerplate right you want to reduce the amount of time that you sit there waiting for compilers and kubernetes deployments and network configurations and you know all of that stuff that you don't really care about it isn't getting your app uh code running it's just fluff basically and you want that boilerplate to go away so it's a bit it's a bit like a analogy with spring and i think the uh the team that's working on this stuff at vmware now is it's an interesting mix of spring and other people right so the kubernetes community the devops community the spring community everybody in the business unit at vmware is collaborating on this and those kind of ideas are floating around and um it's a very productive environment so i'm very happy to be working there in a minute um you will be able to see so that the tansy bits that i'm going to show you later on you'll be able to see them in the uh keynote tomorrow so they put me on before that but i think if you look out for it you'll find several presentations at this conference that are all about um this kind of topic so if you did look for keywords like tanzu and developer experience for instance you'll probably see quite a lot of um interesting stuff that's in along the same lines anyway so if you wanted to do this yourself or you wanted to follow along um i'm going to switch to the ide now so i've got this um same readme here i've just claimed that replay from github and i'm reading the readme um in in the preview in vs code so um there are some tools that i'm using so you will need to uh to do this demo you'll need cue control cue cuddle however you want to say it oops switching to the uh source code there quickly sorry customize optionally i use that in one example um scaffold telepresence until so those are the sort of uh inner elite tools that um that they're not explicit exclusively in elite tools aspects i should quickly say that they can be used and solid basically um to support any kind of continuous deployment continuous integration process but i'm going to be showing you the inner loop features um we're doing it on a local cluster or so we're using kind you could also use mini cube you could use a remote cluster whatever whatever you like however you like to set up kubernetes but if you do want to use kind there is a shell script here in the repo that you can use to set the cluster up if you are able to use nyx which i highly recommend because i like it you can actually install all of that stuff like this you just type next shell and it installs the right the specific versions of all those software so it's like having a your own sort of environment um immutable environment for development i like that um right so we've got an app it's like i said it's a very simple spring boot app and i may do a version of this in the future that has uh i don't know a database or i might do a pet clinic example for instance but at the minute it's a very simple app it's just a spring boot application with a single web endpoint that says hello so if i was to run that using the command line for instance i could do maybe even spring beat run and it would start up in a couple of seconds and then i could let me use curl to test it curl localhost 8080 and it says hello spring fling brilliant okay um so to give you a flavor of what we're going to be doing um if i was to make a change to that application put an extra exclamation mark in it would be nice wouldn't it if something happened here and it doesn't so i'm still looking at the old code and so the whole point of the inner loop is to make this process faster right make a change see it happen make a change see it happen so you probably know what the punch line is here if you've been using spring boot for a while but spring boot dev tools in case you haven't seen it is going to be an essential part of the uh the solution to that problem or the um the recipe that i'm using at least anyway so it's a spring boot feature which watches your code for changes and restarts the app what it does is it um separates the class loader in the java virtual machine into a layer that only has your code in it and a layer that has everything else so the stuff that only has your code in it is relatively small and can be restarted very fast and so that's what we're doing basically restarting spring but not reloading and or re importing all of the class data from the metronate from the jdk from the um classpath libraries um so to do that you would need to add a dependency and um so in maybe you do like this and gradle is a similar idiom it's a one-liner in gradle which gradle people are very proud of but um anyway here it is it's a dependency and it's a spring framework spring boot dependency looks double clicked on it again by mistake i'm sorry to learn not to do that uh the spring group dev tools and i put it in escape runtime just so that it's available at runtime but i don't accidentally compile against it and then um what i've done in the in the demo actually is i've put that in a maven profile so if i go back to my app here stop it and then run it again with minus p dev tools then that will activate that extra dependency and yeah there isn't much difference the one difference that you'll notice is that the thread name here in the logs is now restarted main uh whereas before it was just main can you see so that's going to be important that'll be the signal to us that we've got this right basically whenever we're doing this remotely which we are going to be doing in a minute restarted main means that spring boot is watching this application so at the minute i am now looking at the two exclamation marks version there we go two exclamation marks and if i changed it to a question mark let's watch what happens here save it the id i saved it the ide compiles the code sticks it in the you know directory where it sticks things spring boot then detected that and reaching restarted it did you see that there's the restarted app and so when i fill it again i get the question mark that was fast because we have this special class later in the dev tools um and that's the key to this whole experience so i stop that go back to my script um so this thread id is whoops i keep double clicking on it i'm here to learn not to do that this thread name is this signature that we've uh we're looking forward to that we got it right okay so now let's um move from local development to cluster deployment so the first thing we're going to want to do is build a container and so to do that we're going to use the um spring boot tooling use maven to create a container that's still running tests finish the tests now it's downloading a builder okay so i'm doing this using um build packs pacquito build packs is the uh the group of build packs that essentially vmware um manages it's no it's open source but you um we stick them in this taquito organization in github uh it's slow the first time i've if i'd done this i think they must have actually changed the uh builder base since the last time i ran this that it does change actually quite often um because things um get fixed and new features get added all the time uh because i just did this this morning and i was expecting this to be faster but it's okay it's fine it's only going to happen once i think while it downloads um so we're building an image um it's going to um it's good it's going to uh be a docket image that has basically i don't have a docker file here right there's no input from me the developer into how that image is built if i wanted to i could control it i could add some configuration to this build command so that it would use a different image to build i could create a builder and i could upload it to a docker registry and then i could refer to it in the configuration for the bills command here but i'm not i'm lazy and i like to take the defaults uh somebody else has thought about that problem quite hard so i'm quite happy to take the solution so that's the value of using build packs and this obviously this isn't the only way to build a docker image but it's my favorite because it just it falls out quite quickly basically i don't have to think about it like i said somebody else has solved all of these nice problems um looks like i have a slow network today it's probably because i'm running zoom at the same time isn't it let's see if we've got any questions in slack oh somebody posted the link that's a good idea oh right yeah like twittery yeah yeah i use that a lot i like it thanks scott for answering questions this is somebody those thank you very much and the rest of it should go quickly let's have a look at the structure of this project while we're here it's just a spring break um some dot files dot files um the nyx configuration is what i use to import the tools um there's a setup script for the kind cluster there's your maven stuff and then there's actually evidence here that i've been using telepresence although there's no local configuration for that and then there's a config file for scaffold and a config file for tilt okay it's finished so it successfully built an image and it pushed it to a local docker registry so i'm not using docker herb or um google containers or anything like that it's localhost 5000 so i'm running that as a docker image as well so that i run that that means that i can now run the image itself so here's docker run and i'm going to forward port 8080 to localhost and there we go that's the same app running but you'll notice that it's running with the not devtools so it's running a domain so i'll just prove that it's working and it's the question mark so it's the most recent version um so so to run it in a container with dev tools i would actually need to change the build so that it actually included that devtools dependency might bit better if i'd done that the first time shouldn't take too long now that we've actually got that base image there we go 100 quick okay fine so then when i run it oh it didn't work i still got the main thread not the restarted name so i made a mistake the reason it doesn't is because you also need this all right um so you need a system property that says devtools i really want you i know you're there so the reason that isn't the default is because um spring boot kind of assumes that if you're running a container then you are in production so it it doesn't it thinks that you don't want devtools so you have to switch it back on again so there's a system property for that now i'm running with restarted main and so when i go here i'll get the question marks that if i was to change it back to a single exclamation mark you would see in that terminal there you would see it restart actually it's already done it too quick and it's oh no it hasn't ah it hasn't because i'm stupid and it's not supposed to happen right that's this is the problem with was running uh locally and docker who's going to notice the change and copy it into that running container all right so um nobody's doing that for me at the minute so nobody's actually restarting this application i might have assumed that it was going to just work but of course it doesn't so writing my own demo here um so it would be nice if you could get somebody to notice the changes that you made to the file system when you did a compilation there with the id did the compilation and then copy them into the running container and then devtools would notice it and restart the app you could actually do that with docker you could do that if you could use um you know scp or something docker copy you could docker copy the files from your host machine into the container that would work all right um i'm not going to show that because there are some i want to get to the kubernetes part and there are some tools for kubernetes that already do that for you so the first one i'm going to show you is scaffold and scaffold is it's a generic build automation tool for kubernetes but i'm going to show you just specific features that relate to this in a in a loop um so there's a scaffold.yaml here in this directory here it doesn't have very much in it um really it just says the image that you want to run the way that you want to build the image and figure scaffold will drive that process for you you could use spring boot build image or you could use scaffold has native support and double click again by mistake i'm sorry scaffold has support for build packs natively so i can just say what the builder is and then i can make sure that it gets built with maven with the right profiler devtools profile so to make that work i just need to do this scaffold dev several dev means run in development mode and minus minus port forward means set me up a port on localhost so i don't have to mess around with finding my pod when it's running on kubernetes so it's doing that it's already found the image because i just built it with maven i guess um so there it's deployed it's already started and you can see that magic restarted main thing right uh it's port forwarding a service hello world so let's have a look at what we've done um we have some let's let's look at the full file scaffold.yaml so i've got a deployment section here which says use customize on this path source case demo and source case demo has a deployment essentially so it's going to have a kubernetes deployment with that magic spring devtools restart enable true set in the environment and a service which exposes that application on 480. um so it's running and let's just make sure that it's running well it's so it's not like 8080 anymore scattered by default users i think it said 40 53 isn't it 14 45 03 sorry [Music] right so i've got my one one exclamation mark version let's just do what we do make our change save it compiles scaffold notice that that file was changed and it copied it okay syncing one file it says spring b notice that it had now changed in the cluster in the in the deployment in the cluster and it restarted the application so now i will see two exclamation marks in my output so that's a very fast turnaround from code change to wiggling in an actual kubernetes cluster it is actually in the cluster let me just demonstrate that get all um this is my uh deployment this is my service listing on port 80 cluster ip oh sorry this is my service listing on port okay 180. and there's the pod i could poke around in the ide here as well there's some nice stuff here workloads pods for instance i could look at the hello world pod i would see all the stuff that kubernetes has added to my um pod declaration but essentially the stuff that i i set was this spec right okay great um so that's scaffold and one nice thing about a couple of nice things about scaffolder i'll just um skip over the next section so another thing you can do with scaffold is you can debug um actually maybe i'll show that because it's neat so the first thing i'll do is i'll stop scaffold by just interrupting it and um a nice thing about that is it cleans up after itself so it has left my butts are essentially empty so i've got a terminating pod so that's a nice experience it just gets rid of everything it created um to show you the debug it's a nice thing to do actually so i said this is one of my sort of um touch points for developer experience and inner loop i like to be able to debug things if possible so scaffold debug i have to add minus minus auto sync because it won't do that by default in debug mode um but you can make it just by adding that on the command line so it deploys the same app in the same pro same way this restarts it fairly quickly and the main difference you see now is there's another port 5005 which is the um the port that it's listening to for the debugger and so i could go here in my kubernetes workspace plug-in thing from id from the ide and i can attach a debugger i could do this with you know any id or manually i suppose yeah we like that maybe incompatible i don't think so it could be that this isn't gonna work i did it yesterday and it was fine but i might have changed something not failed huh oh because i restarted the afternoon i just need to restart and that's stupid refresh that view okay we're in business now so i'm doing java debugging and it's not five fifty thousand five it's five thousand five here we go so here's my debugger running and i guess i can prove it's running i could put a break point there and when i do my little curl test 4583 because that's where it's exposed and it stops can you see that so it stops and i can play and it sends me the result how nice okay so um that was the end of the scaffold section basically so there's loads of features and samples i've skipped over almost all of them um but i just showed you how to basically get things working cranking the handle um making changes and restarting quickly um so another approach actually which um doesn't it's sort of almost the opposite it doesn't involve copying resources into into live containers is um teddy presents whoops i wrote double clicked again i have to learn to not do that tell your presence um it's i'm going to show you uh version two of teddy presence you might find that if you wanted to try this out your base distribution of mac or ubuntu or whatever might be giving you the older telepresence 1.0 so this is two point x because it's kind of slicker so if you have that um let's just make sure that we have pushed our um image that we just built into the local registry then we will in this type this time we'll explicitly take control of deploying the application into kubernetes so it's the same thing that scaffold was doing but i'm going to do it manually now create a service and then i will tell telepresence to connect to my cluster for which it will need root access and it's connected okay so the thing that telepresence does is basically it sets up a bunch of tunnels and proxies so that i can run the app on the host and uh the traffic that comes from the cluster gets passed into the host if you see what i mean so to do that i have to tell it which thing to intercept so i'm going to say you want to intercept the hello world service on port 8080 and when i've done that uh it will tell me that it's been successful and it will look like this hopefully there we go yeah so now anything running locally on port 8080 will be accessible in the cluster as if it was in the cluster so anything which is trying to access my hello world service will actually be coming to my laptop not to the cluster and you can do this with any cluster it doesn't have to be a local one it could be a remote one which is why it's so neat and um it also sets up this uh convenient um dns settings so that um instead of doing port forwards you can just curl hello world dot default and that will go to the application in the cluster the application in the cluster at the minute is not running right it's empty because i'm not running anything on port 80 on on this machine so i'm going to do that now go into my um demo application i'm going to debug in the ide so now it's i could have done this on the command line with maven like i did at the beginning as well but i'm running so the main method um and now if i was to do that same thing again oops what happened there oh i just made another window okay i guess i'll keep that then i don't know how to get out of that okay curl hello world defaults there we go now it stops because i'm debugging you see so i can have the same experience developing the application it's all running locally i can debug it i can do anything i want i can look at the jvm um i can dump threads i can do everything i could do with the local jvm because it is a local jvm but the traffic is coming from the cluster um so press play and it'll come back with two two exclamation marks if i make a change it won't restart because i just used the ide to debug i didn't actually um set up the dev tools to um to work because i'm not using that profile by default and the ide but i could do right there's no reason that well that wouldn't work okay so um that is a quick tour of teddy presents there's a lot more to tell your presence than just that feature but that's kind of the the thing that's relevant to the inner loop so then you to finish it you can leave that hello world service oops i need to do it in here not in there because tidy presence isn't installed in that shell that's the effect of nyx shell basically and then i can uninstall everything and tell presence will clean up after itself brilliant okay so there is i think telepresence 0.1 there's a section here on that so i won't i won't go into that in any detail at all um because i want to get to the other stuff but it's there just in case you pick up telepresence like from you know uh apt-get install or something and you can end up with an older version so which brings us to um see if i can get rid of this can i yes good no i can't oh no i just want to get rid of this you window i could just drag it away that doesn't matter um so tilt tilt is another tool that does similar things i seem to be still running my app so let's just switch that off there we go tilt is another tool that does a similar thing a similar set of features um a bunch of people at vmware really like tilt so i took a look at it because of that and i do like it it's um it's got some really nice features um it's also got a very interesting architecture you can ask me about that in the q a afterwards if you want to um so um yeah so you can think of it for the purposes of this demo you can think of it as it's like scaffold but the config file is python okay so that's my simple-minded way of thinking about it at least anyway so this is my tilt file i have a custom build that creates a an image in the same place and to do that it runs maven spring boot build image and then it says i want you to watch the source files essentially and also the compiles files target classes and if any of those changes this is a live update i want you to copy files that change from target classes into workspace beating classes and that's the location that the build pack puts the compiled classes from my application um then i have to tell it how to deploy the app into kubernetes so that's the cube let's use the ammo and i have to tell it which kubernetes resource is being created so it's a service called hello world and i wanted to pull forward 8080 to 8080. okay so let me just uh make sure that works tilt up is what you do and it invites me to stream the logs so i'm streaming the logs there's also a web ui but i think there's a web ui for both tele presence hmm maybe not scaffold there's definitely one for telly presence so you can do similar you know um graphical user interface things with all of these tools as well most of these tools we're seeing the build take place again this is just a spring boot build like i did at the beginning and it seems to be downloading jdk kind of unnecessarily but we'll get there um still got 10 minutes i think that's fine so um yeah we could look at the ui is the the web ui and where is it um i think it told me where it was but it's scrolled off here it is there it is okay so hey it's still open okay so yeah okay i think i know the port it's doing the build it's working its way through so like if i used the t105 i think i was like 30 99 31 oh 80. let's try that no okay does anybody know the tilt port pretty sure it's in that range somewhere i don't use it much it's not it's a nice ui um you can see all of the kubernetes resources in there but i can see them here so i tend to sort of reach for this ide when i'm doing this local development thing um it's doing a build again for some reason which i think is something to do with uh a circular dependency in my custom build i i've been told that i need to fix that but i haven't got around to it it's flexible is the point so yeah it is actually already deployed here we go right so we're running we're running and we have restarted main so we believe that we're probably going to be able to restart if we've got these sinks set up correctly um so let's test it so with our curl command again curl local hose 8080 that's 8080 but it's not running locally remember that's just a port forward into the kubernetes cluster i'm getting two exclamation marks change it to a question mark watch what happens in the tilt window when i save it okay so it noticed the change it copied it over and spring boop restarted so i believe when i start here again then i will get question marks okay so it's all nice and fast and it will quickly brilliant so that's tilt um you just do tilt up and you get let me i will show you the ui because it's kind of neat um space to open the browser there we go ten three five one actually guessed that can i yeah so basically if you had a bigger cluster you would see a box with all of the resources in there um and this hello world one it has it's basically the logs that i was streaming on the in the terminal you can see those you can see the url that it's exposed on that it's forwarded to that you can view in the browser you can see um basically a view into the kubernetes cluster which is nice okay so i'm going to kill that and i'm going to tilt down which will also delete the stuff that it created so when i look again at the key of couple yeah everything's gone okay so that's that's sort of the main demo and then the bonus section comes from um i'm gonna switch windows uh another application i've got another application which is very similar it's just a symbol rest controller with a different greeting but it's basically the same application and then i've got a tilt file which is different so the custom build um is now it's not using the local repository but that's not registry but that's not really all that relevant instead of using spring boot directly it's using a tanzi apps tensor cli um so it's saying tanzi apps workload this workload um is defined in a config file and so the reason i want to show you this is uh because this is all of the ammo that you need to deploy a spring boot web application okay so it's just you need to tell it that you've got a workload you need to give it a name and you need to tell it what image to run basically there isn't much else actually there is in this case because i'm going to build the application in the cluster i don't have to do this but i've chosen to do it for this demo i'm going to build the application in the cluster and i'm going to build it from source file source code which is in itself in a container image and so there's a a tansu component that actually makes that happen that actually um takes the local source code and builds it into it um actually not local source so it takes the source code from a git repository and turns it into a bundle which is a container image and then the build service can use it in the cluster so there's a bunch of stuff in that this is different cluster there's a bunch of stuff in this cluster that isn't in the old cluster if i didn't get all you might see oh you do see some different things oh because it's already running okay so i've already done tilt up here so you have got here running um this uh this controller this application which is being driven from this custom build so it's saying deploy that workload basically it's saying take my code and with a small amount of yaml literally um 10 lines of yaml do everything you need to do so build it work out that it's a spring boot application adds a bunch of configuration to that including the um dev tools switch environment switch that i had to add manually in the kubernetes case so there's a there's a there's something running in the cluster that will um enhance my uh spring boot application configuration with things it thinks i need i'm quite happy for it to do that because i don't really know about them i just really want it to run um so this is kind of the uh the the the tanzu um workload approach it's called the developer experience for tanzania um we call it um we call it a workload and there there will be different kinds of workload this one um is basically as simple as it can be and um the thing that builds the app in the cluster is going just like a build pack does it's going to and just like cloud foundry used to do it's going to recognize that it was a spring boot application and do a bunch of things to make it work um so that's what's neat about it okay so i can make sure that this is working so tilt is running which means that i should be able to curl it local host 5080 uh is it an 8080 maybe it's not 8080. oh no it's not right because it's this thing here look ah yes because i'm running um the output of this uh build is not just a simple deployment service like i had in the first demo it's a k-native service and for those of you who don't know what k-native is it's a cloud [Music] cncf project which basically enhances the service deployment model in kubernetes to for instance take advantage of the fact that um you might want to deploy multiple versions of the same application so this is version zero zero zero one so it's it's a kind of a revision this is called a revision so connected has revisions it has uh roots so this is an ingress and so the feature i'm using here is uh it's a contour ingress and so i can curl that thing i believe and i'll get my result there we go there's my greeting from the hello controller if i switch back to tilt and if i make a change to that code go back to the question mark loads of question marks save it compiles tilt noticed it didn't do a complete rebuild just copied the files okay so that's what happened in the logs there there yeah it's scrolled off already um it recompiled and spring boot has restarted the application so if i just curl again i'm gonna get all the question marks so that basically shows um the tight inner loop successfully running from a tansy tansy workload app and that's basically all i had to show um i will be taking questions there's a q a session uh i'm sure we're going to hear about that in a few seconds and so take yourself over there if you want to come and chat about it um i'll go through the slack channel in case there's anything that's unanswered there and um thank you very much for coming and there's the you know there's there's so much more that i could have shown you today um so if you want to see a bit more or you want to poke my brain ask me questions come into the q a thanks very much thank you very much dave sire um it's just amazing to see how the tooling in spring is evolving um i remember the joy i had when i did small talk development many many years ago and and you could you know make a change and quickly push it out there and then just iterate really rapidly on code and to see that in the java world on these complex distributed systems is absolutely fascinating um so with that let me just uh remind you that there is a discussion going on in the spring one slack uh channel there is a specific channel um which is uh the word session a dash and then the name of the session with all dashes in between but if you the easiest way to find it is to go to the session page for this session and click join the discussion there um and dave will be uh hanging on there for a while i think answering your questions and and taking your comments uh and so with that thank you very much and uh you know look forward to seeing you in the next parts of the show thanks you
Info
Channel: SpringDeveloper
Views: 1,067
Rating: 5 out of 5
Keywords: Core Framework, Kubernetes
Id: akSskYvcmFo
Channel Id: undefined
Length: 51min 30sec (3090 seconds)
Published: Wed Sep 22 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.