Read the show notes and download the full episode here.
Michaela Light 0:02
Welcome back to the show. I'm here with David Tattersall from integral and we're going to be talking about the amazing new features in fusion reactor nine, for making your cold fusion apps run fast and not have crashes. Or if they do have slowdowns or crashes, you can diagnose quickly, what's going on. And there's a lot of new features in version nine. So we'll get into that in the episode and we'll go through some demos for those of you on video, you'll be able to see the demo for those listening on audio, we'll walk through the eight cool stuff that you're seeing. And if you don't know, David, he has been in the cold fusion world forever. I don't forget what year you started in cold fusion murmur seeing it some early cfunited conferences, and 8790 97. Wow. Or at
David Tattersall 0:52
the end of 96? I think it was. So it was CF two, and we were an hour. And we were a Macromedia partner. And now we're in Adobe partner. So it's been around for the long haul.
Michaela Light 1:08
You have. And fusion reactor is used on 330 1000 production servers. So if you're not using it, we certainly use it a terror attack, recommend you check it out, they have a free 14 day trial, you can try it out. And they have some low price developer versions, or they have Enterprise versions of all versions in between. So welcome, David.
David Tattersall 1:28
Thank you. Thanks for having me. Yeah.
Michaela Light 1:32
So for those few people who have never heard a fusion reactor, maybe you should explain what the heck it is, what the heck is fusion
David Tattersall 1:41
reactor. So fusion reactor is an application performance monitor. So monitors essentially do two things, they measure stuff, and they alert you if something's going wrong. So with measurements, we're talking about telemetry, so it measures things like CPU measures, memory measures, transaction throughput, it measures what you're doing on the database. And if it detects that something's gone wrong, then it can alert you. And it can also help you to pinpoint where the problem is. And it does that in a number of different ways through analyzing the data. So the metrics and telemetry, it also does it by automatic error detection. So if something if it detects that some error has occurred, it will pinpoint that error for you. And you can also do things like like production debugging, so you can actually go into your code, set breakpoints, or set trace points to look at variables and actually analyze your code as it's executing. So a whole range of capabilities. And we've also got some new stuff that we've just released. And we're just releasing right now. And I think I'll go through that in the demo.
Michaela Light 3:13
Yeah. So maybe it makes sense to look at your mission slide. Because I think that relates to newer Yes.
David Tattersall 3:19
So what I was going to talk about
Michaela Light 3:23
what we're going to be covering in the whole interview, right, Mission applicate how the how applications have changed and how that affects monitoring, with modern cold fusion problems developers have with monitoring how fusion reactor is different, your new unified observation platform where it can slurp in logs and other cool stuff. I'll go into detail on that, because that's one of the new features stability issues and revealing what's coming out in fusion reactor 10. Whenever that comes out, we don't have an exact date, folks, but I hear it could be next year sometime.
David Tattersall 3:57
Could could could be can be coming soon. But we're literally we're releasing things all the time. So the sort of, I'd say four to six week intervals we are releasing. So whether true SAS were a true SAS Yeah, we were building, building deploying all the time. Yeah. Okay, so what's the mission basically, to help developers gain better insight and transparency into their apps and speed up the task of finding issues? So you know, we're talking before about, you know, what's fusion reactor all about? Really, it's about helping you to find problems. And you know, that problem may be related to resources. It may be related to your code, it may be related to a database, all kinds of different reasons, but the whole objective of React So is to speed up that process to help you. And we think we do that around about five times faster. If you're using fusion reactor than if you're just trying to dig through the application directly.
Michaela Light 5:16
I would say sometimes it's infinitely faster because some, when I talked to coefficient developer, sometimes they just totally can't figure out why their application is crashing or slow. So
David Tattersall 5:26
I mean, we, yeah, sorry, go ahead.
Michaela Light 5:30
And the other thing I would say is the way we use it, we like it to proactively head off having the problems in the first place, if we have an alert set up and CPU is getting high, we'll go dig into the application for our client, and hey, what's going on here. And so they don't even have the crash happened in the first place?
David Tattersall 5:50
Right, yeah, that's also a capability of reactor, we call it crash protection. So that was a very, it was actually one of the first capabilities that we built into the product. The whole idea was that as we're monitoring what's going on, if we do detect that there's a problem occurring, we can try and take action to to remediate that problem. So for example, if we see that you've got a long running request, and that request is maybe it's blocking other requests, or it's eating up resource, we can actually go ahead and try and kill that request. So this is all configurable. And normally don't start off, you know, by configuring it to kill you. Normally, you configure it to email you with the details. So we email out the transaction details together with a complete stack dump. So all the different threads, we perform stack trace and all the different threads and send that out to the email, which very often can help you to pinpoint the problem. But fusion reactor can also take corrective action. Sorry, yeah,
Michaela Light 7:16
I got a bit nervous when he says gonna kill the threads, you know, it's almost like you're in a
David Tattersall 7:20
world where they do it for you, we only do it when we can. So obviously, you might think, Oh, my God kill in a thread. That sounds great. And in some cases, it could be I mean, you could certain cases, if you kill the thread, you could destabilize the JVM. But we check beforehand, and we would only allow you to kill a thread, if it's actually if it's okay. So it's not sort of we, you know, fusion reactor kills all threads. That's not the case. But if we detect that we can help you and you've configured it, so attempt that, then, you know, we would take that action action, you can also configure it to say, for example, cue threads. So if you were being, you know, overloaded by threads, and you weren't able to surf those threads, then we can also detect that and we can buffer them. So that's, you know, again, the whole concept of this is, are we able to do something which enables you to, you know, keep stability of your application. That's, that's really what that's all about. Okay, so a few highlights react has been around a while, since 2005. We've had well over 5000 customers, around 35,000, production servers running running reactor with the global market leader for for CF, of course, for Adobe server monitoring. But we've also got many customers who just use fusion reactor for monitoring Java applications. And we hope in the future that we'll have customers monitoring all kinds of different sec, but I'll come to that in a moment. We're also very proud the logos that you see the the G two logos
Michaela Light 9:32
who is G two, for
David Tattersall 9:35
those who don't know jitsu is it's a review site, and G two is the review site. It's the I believe it's the biggest in the world. They review everything so any type of software product that you can imagine, and she do will review it. So if you've not heard of it G to dot Come. And we've received a number of awards this year, we're actually a roundabout, roundabout fourth in the world for monitoring. So if you go and look, we've got a category for application performance monitoring. And last time I looked, which was I think, last week or something, we were number four in the world for APM. And this is out of about, I think there's about 220 225 different monitoring products. So something we're very, very proud of. We really do get great feedback from our customers for for fusion reactor. So yeah, very, very private about.
Michaela Light 10:48
Cool. Let's have a look how software developments changed in ColdFusion. In the last few years, right? Yeah. Performance Monitoring.
David Tattersall 10:58
Yeah. So I mean, in general, software development, I think has changed full stop, you know, if you think of the good old days, especially with CF, you know, everybody had the pet server. And that's changing, you know, companies are moving to the move into the cloud, they're moving to Docker containers, or Kubernetes. And with, with the advent of ColdFusion, 21, Adobe introduced support for micro services and even lambdas. So, you know, the, the the Adobe's ColdFusion world is changing. And as that change has taken place, there's essentially been a shift in observability, to be able to support the measurements, and to support monitoring in these new new environments. And sort of what came out of that is this concept of metrics, logs and traces, these are the so called the three pillars of observability. And where things are going in the future is more towards AI ops, AI operations, and machine learning. So the future of monitoring really, is going to be going into automation, where, you know, people are no longer sort of, you know, struggling, going through logs, trying to figure things out, but actually analyzing that data, and making informed decisions based on what the machine learning algorithms are actually able to analyze. And I'll be able to demonstrate some of this to you. As part of the, as part of the demo.
Michaela Light 12:55
Very cool. We'll talk more about the impacts of AI on performance monitoring later in the show. But you know, I think there is a mood more modern development practices, not everyone does it, there's plenty of monolith apps still out there. So just to reassure people, if you have spaghetti or some other root name for your code, because you inherited it from someone else, probably, you know, fusion reactor still lets you monitor that.
David Tattersall 13:23
Absolutely, that's, that's not going away. And, you know, not everybody wants to go to the cloud, not everybody is able to be able to claim. So,
Michaela Light 13:33
ya know, right, it may not make sense for their use case, or they may have concerns around cloud, particularly as AWS has gone down quite a few times over the past few years. That's where that multi cloud maybe comes in handy. Anyway, let's let's have a look at how other carriers have trouble with this slows
David Tattersall 13:55
down developers they're they're having to push push huge stones around so that they don't have it easy. And you know, what, why don't they have it easy? Well, 32% of developers who were surveyed, told us that they spend at least two and a half days to isolate production problems. And very often when I'm talking to people, I'll ask them, you know, does that number fit? And very, very, very often it does, you know, some people say, yeah, sometimes it takes us a week or a couple of weeks, sometimes it goes faster. But I think on average, I think two and a half days is a good is a good sort of variable. We got this information from those a Diesel Performance survey, where we got this and from that two and a half days the majority of time, so around about 75% of that time is spent on this MTT K which is so called meantime to know. And that's the portion of time where you're actually figuring out why you've got a problem. So usually pretty quick to know something's wrong, you know, something might crash or, you know, somebody customer might say, hey, you know, you've got a problem here. And very often the fix is pretty quick. Once you've identified what it is, once you know what the problem is, you can usually fix it and deploy it pretty quickly. But the majority of time is really focused on this Meantime, to know, and that's the area that fusion reactor addresses. That's why we can really show them, you know, this whole sort of end to end time of being able to identify a problem, fix it, deploy it. So that's sort of the the total time and that's really what we focus on reducing. And then so the last statement, though, 94% of developers still use logs to identify errors in production. And yeah, that's, I think, pretty amazing. You know, when when I was developing, and this is back in, you know, back in the stone age, you know, we were also using logs to identify errors in production and, you know, not a lot has changed.
Michaela Light 16:25
You'll be telling the Yorkshireman for for Yorkshiremen when I was a lad story next.
David Tattersall 16:31
Well, I did careful cut steady. I'm from Lancashire.
Michaela Light 16:34
Yeah. So we have to be careful with Yorkshire story. I know. For those not aware, those are two warring,
David Tattersall 16:42
warring back sort of 600 years ago. Yeah, but for a Southerner, any anywhere north of Watford gap is, you know, you don't really know about, I guess it's old. They're old northerners? Yes.
Michaela Light 16:59
But the amazing thing is a lot of people still use locks, they don't know what to do any better, you know, and fusion reactor makes it really easy to pin things down. And I think part of your I think you're absolutely right, David, that once you can see the lines of code, or the database statements that are causing the problem is usually moderately straightforward, fix it. What the problem is, sometimes, these memory problems, you know, they start off somewhere on it, you know, the actual original cause is not always immediately obvious without a tool like this.
David Tattersall 17:29
Absolutely. It's very often hidden in the details, or it's a collection of things, you know, you look at something, and you'll think, oh, you know, what, why is this transaction slowing down? And it turns out, you know, it's some database that's calling or, you know, some remote call that's going into some socket, or some other service, and that service is having a problem. And, you know, it's not even inside your code. But, you know, the, the trick to this is having the insight and the depth, so that you've got all the information at your fingertips. And that's really what what React is all about.
Michaela Light 18:16
Yeah, I mean, just to clarify that the problem with looking at logs is the so many entries in logs. And it's like finding a needle in a haystack. Where's fusion reactor? Well, you know, surface all needles that the top so you can just look at the needles, not all straw, right? Yeah, that's
David Tattersall 18:30
what we do. And also with an I'll demonstrate that as well. With fusion reactor nine, a big part of fusion reactor nine was about integrating logs. So fusion reactor, actually was always, we always captured logs. So we captured logs. From all the telemetry that we that we instruments on the metrics, everything goes into logs. So if your connector was, you know, we always created logs. But we didn't really have the capability to ingest logs, and then to link those logs to your transactions or to other to other metrics. And that's what changed with fusion reactor nine, as part of this all, you know, unified observability platform I'll come to in a moment. That was really the big change. So I'll show you that and demonstrate it very soon. Yeah, let's have a look at what's in fusion reactor then. Yeah, so real quick, once ranked to deliver basically, it's developer focused observability. So fusion reactor is really, you know, very much a developer or a DevOps focus tool. We combine these three pillars of observability. So metrics, logs and traces together with very detailed profiling, debugging and all semantic error detection. So you can sort of think of it that we're, we're watching everything. But at the same time, we're providing developer focused capabilities like profiling. And by profiling, I mean code profiling or memory profiling, CPU profiling, plus debugging, and the also early detection. So
Michaela Light 20:24
I mean, the way why I think that for a lot of developers, the cold fusion engine, whether you're using Lucy or Adobe is a bit of a black box, you kind of your code goes into it. Hopefully it runs. Sometimes it goes slow, and you don't know quite why and what fusion reactor is it kind of like is an x ray machine that lets you see inside to the important problems going on inside cold fusion.
David Tattersall 20:44
Exactly. That's what it's that it's funny that you say that. Because very often when we're talking to when we're talking to people who downloaded the products are, you know, I guess new customers? And they ask us what, what does it do, we sort of say it's like X ray vision is X ray vision for applications. So it shows you exactly what's going on, and why things are occurring. So that's interesting that you pick that analogy. Very comfortable. So unified observability. What What's this all about? So what we've been doing for about the last 1819 months now, is we've been re architecting fusion reactor. So the nine release was the culmination of those changes, and we re architected the whole platform. So what we've done is we've embraced open source software, before form of, of Prometheus and components from the Cloud Native Computing Foundation, so cn CF. And we're using Prometheus on or cortex to capture metrics, we're using a tool called Loki to consume logs and process and index logs. And we're using a component called tempo to manage the traces. And we've put all this together with a new user interface, that user interface is based on Grafana. So there may be people out there who are already using Grafana. But that will enable us as well to be able to offer the possibility that you can integrate your own Grafana dashboards into fusion reactor. So it really will become sort of a single pane of glass. And we're also doing that in conjunction, although these changes enable us to to have hundreds and potentially in the future 1000s of integrations by opening up this this open source platform. And what we're also doing at the same time is we're embracing something called Open telemetry or OTL, as it's known, and OTL will provide a number of agents for us so that we can actually support other languages. So right now, you know, we've got our, our agents, if you like, if you go and download fusion reactor, you get the fusion reactor agents, and that fusion reactor agent is a Java agents. That's essentially what it is. And, of course, it supports cold fusion. But with the integration of alltown, supportive Alltel, that will enable us to all sorts of support other tech, like dotnet, or C++, or node or Python. So there's a lot of a lot of changes there that are going to be opening up, because, you know, we also see that, you know, confusions gray. And you know, we we love cold fusion, but what we're seeing is that, you know, some customers are saying, oh, yeah, you know, I'm using CFX to do this, but on my front end, I've got some node. So, you know, they're combining tech, and we don't want people to, you know, if, obviously, that's, that's people's decisions, and they want to do that. But from a monitoring perspective, we don't want to hold you back. You know, if you if you're, you know, if you choose in different technologies, we want to be able to support you with that and give you sort of a unified observability platform. So you're going to be able to see all this information, whether it be metrics, logs, and trace He says, also infrastructure related telemetry, I'll show that to you as well, plus other technologies. So it's really, you know, we're really sort of creating if you like, sort of an umbrella platform here, so you can get insight right across your whole solution architecture.
Michaela Light 25:25
Very cool. So just for people listening, just to clarify metrics, it's things like the CPU use memory use other things that you can get from the server, that kind of their healthiness. The logs is more of an historical thing, here are events that happened, either they're errors, or they're just a page was accessed or you know, was probably about 10 different log files, you can turn on if you want to for ColdFusion. But it's all historic, but you could suck that in and correlate it with events that are happening. And then traces are where you insert, you know, some call into the code to say, Hey, this is going on. And tell me you know, how it's performing? Is that about right or right misunderstood?
David Tattersall 26:07
A bearer? Trace, really, a trace is a transaction. So whenever you do something, if you call it home page, or got some database transaction, that's what we call it a trace. Okay, I'll show you an event.
Michaela Light 26:24
Okay. It's all look at that in the demo. We'll have a look at that in the demo. Yeah. But you'll see, but isn't it an important event occurring in your app that prob possibly could cause the slow up?
David Tattersall 26:35
Exactly, yeah, that's, that's a trace and traces of God, the components that make up a trace are called span. So if you think of a, you know, some transaction, you might have a bunch of database calls, you might be calling out service. You might be I don't know, calling to some Java components, or something. Might be calling out some node to render something. And all those things make up the trace. But each individual components of that is what's called a span. And you'll see that I'll show you that in the demo. Cool. Okay, so without further ado, I've got a few things that I wasn't going to go through. Basically, we're going to sort of take a look at how we can identify some performance and stability issues. And these are common sorts of problems that you might be faced with. So you might have resource bottlenecks, maybe due to some Socket IO, or a caching issue. And we can analyze that using using metrics and using the built in profiling capability, then you may have sort of external applications, such as databases, or API's, and we can see that through the distributed tracing. You may also have a lot of our customers, probably about 60% of the performance issues, a DB related could be, you know, so many queries in a transaction or a page, maybe poorly written JDBC, maybe, you know, you're missing an index off the table or something. Or, you know, you need to reorganize tables or reorganize keys, that could all come up. But fusion reactor should should highlight that for you, then you've got memory problems. So potentially, you are allocating too much memory on a transaction that can occur. And even if maybe the transaction runs quickly, but you're you're allocating that sort of memory, that can be a problem. And then you may also have a memory leak, and I can show you some of the tools that will help you analyze that. And then you know, this production area where you've got the elusive corner case. And that could be a number of different issues. But we'll take a look at a few few things there. And I'll show you the event snapshots and the debugging capability.
Michaela Light 29:22
Okay, cool. Well, let's have a look at that. I don't say the most of the ones we see where we're helping clients. It's slow queries. Occasionally, its API calls are slow. Sometimes it's badly written ColdFusion code. Yeah, I'd say the number one thing is database.
David Tattersall 29:37
Yeah, yeah. Very, very, very often. It's it is database. Okay, so right, I've got fusion reactor here for those people who've not seen it before. fusion reactor is a hybrid. So what that means is fusion reactor is you've got an on premise user interface. And we've also got a cloud based user interface. So if I say one of my servers here, this information that you're seeing here, this is live, this is essentially the same information that you've seen. So
Michaela Light 30:19
let's just go back to that, David, because not everyone, some people are listening in their car or wherever they listen to podcasts. So we've got some graphs showing how much memory is used server throughput CPU, and then a bunch of other statistics that the memory heat thread, state and so on. So you can see them changing in real time.
David Tattersall 30:39
And I think the the, the, the the interests, all the points and notes is that, like I said, right at the start, we're, we're measuring telemetry, so we measure, we're measuring metrics. And what we're showing here is that we've got access, if I click on the graphs here, these are a bunch of different metrics, which I can visualize. So you see that there's quite a lot of metrics available. Here, we've got many more that we that we don't visualize through here, but you can access in different ways. And with the on premise UI, this is sort of fairly rigid. These are the main things. So the main things are web requests that people want to see it's JDBC activity. And it's the two main resources, which is memory and see you. So that's essentially you know, what, what you what you see here, and if we just take if I just drop into requests,
Michaela Light 31:48
then the screen we saw earlier listed all servers you're monitoring, so you can monitor multiple servers. And it seems like you've you've got a collection of badly behaved apps for demo purposes, like as I do dangerous, fusion animals, so to speak. And so we can see them gobbling up memory or running out of CPU or
David Tattersall 32:09
whatever they're doing writes Yeah, so we've I've actually got a number I've got cf 2018. I've got some other servers running cf 21. I've got some some Java, I've got a Spring Boot application here. I've got a struts application. So I've got a bunch of different sorts of tech running and
Michaela Light 32:31
you get for those who are watching this on YouTube when you bump up the font size so we can actually read your read what your wonderful things you're showing. Spit like you're the zoo keeper here. Yeah, keeping an eye on these dangerous confusion out
David Tattersall 32:49
there cages. Dangerous, dangerous animals as dangerous. Yes.
Michaela Light 32:53
After the after using fusion reactor, your ColdFusion app will no longer be a dangerous animal. It will be a nice pet that will be
David Tattersall 33:02
it'll be attained hamster. Yes, yeah. After you put fusion reactor on. Okay, so what we're looking at here, this is I'm just showing here, some transaction details. So everything that gets that every transaction that gets run our every web request that gets run, we get transaction details, which show the URL where that was cold, we can see the status codes, whether it returned a 200 or 500, or four or four or whatever it was,
Michaela Light 33:35
how do you get managed to capture five hundreds, that's where there's IIS or whatever you're using if your web server gave up, right?
David Tattersall 33:42
Yeah, there's various different ways to do it. I mean, there's you may have a handler that you've got built in, in which case you need to as a call out to capture the information for reactor or if you don't look will detect it, we basically we get that out of the JVM. So in my a little bit about how reactor works reactor is a so called it's a Java agents and it uses something called ALP, Aspect Oriented Programming. And what it's doing is it's, it's embedding itself, it's injecting itself into bytecode at runtime. So now that we instrument so we're altering bytecode at runtime okay? So to get this this instrumentation data that so all sort of all the grown up monitors, that's more or less how they all do it. That is the way to do it's obviously it's tricky. I mean, if you get this wrong, and you don't you know, you get your point cuts wrong there. You can do a lot of damage but we're we're obviously you With so many production servers, we would know very, very quickly we've done something wrong. So
Michaela Light 35:06
the good news is this isn't a high level thing, it goes right into the details of the application and can even find stuff where you don't even get an error message. Right? Absolutely.
David Tattersall 35:18
Yeah. And you can see here, I was just gonna say you've got, we've got some queries, so we can see. We've got JDBC stuff going on. So there's a very simple select. But you get the idea. So you can see how much time
Michaela Light 35:36
yeah, now this is the detail screen. I'm assuming you have like a summary screen where you can see all the pages run. Yeah, or Yeah, tasks run, and then you could pick the one to drill down into the detail. Yeah. So it's slow or whatever, or the result code it was giving? Yeah,
David Tattersall 35:54
absolutely. Yeah. And you can you we've got a number of different pages to show sort of collections of long running transaction, database problems. And what we also do is just sort of try and describe what you're looking at here is basically here, you've got a visual where you can see the hotspots in this particular in this particular transaction. So I can see this was actually this was a struts one. So struts is a Java framework. But I can see that it spends around about half half of my time in the struts transaction of the total time. So it was like 61 milliseconds, this ran for 33 milliseconds was spent in this struts transaction, and 26 milliseconds was spent. So just over a third was spent in this JDBC request. So we sort of, you know, give you give you all the details. But what I was going to do so thinking about performance, one of the first things that I wanted to sort of take a look at was was performance. And I'm going to show you I've got some some ColdFusion examples here. So these I've got a number of servers running. I've got a number of applications which are running. And this is, so this is our cloud UI. And I can see here, not just individual transactions, but I get a complete holistic view of my application. And if that application was running across multiple servers, I'd be able to see the, you know, the total performance of the app, so not just individual server instances, but I get a complete holistic view. And that's important, because usually, when you're analyzing an application, you really want to know, what's it like, you know, what, what's the performance of it for everybody, I mean, the you might have, you know, six, you might have some setup, where I don't know, you've got half a dozen servers set up in a cluster, and you just taking transactions across all those different servers, but it's all running the same app. And for that reason, sure, you want to look at the individual server instances. But what you also need to see sort of what's the what's how's my this application performing, and what you're seeing here, and I can see, if I click on slowest, I see I've got to, to sort of ColdFusion pages here, which are slow this top one, this Products dot CFM. This one seems really slow, and some some pages run fine. So sort of sub seconds, I can see 575 milliseconds, but some of them are crazy. So crazy, slow, you know, almost 50 seconds, I can see that in the view here. So if I just set the minimum duration, let's just set it to 10 seconds. And I can see I've got a number of looking at a number of pages here that ran 3736 seconds. And I'm going to drill into one of those. Now when I when I look at this. If I if I look at the trace of this. This doesn't tell me very much. I'm looking at this. I can see I've got a CF HTTP Cole. I'm doing a little bit of database work but the database You know, ran very quickly was like one millisecond, the CF HTTP either http get that ran in 94 milliseconds, but the whole thing took 37.69 seconds. So why is that, and how I can find that out is to the profiler. Now, when I click on the profiler here, what just happened there was fusion reactor brought up the complete profile for this transaction. And I can see here looking at this, that over 99%, of my time was actually spent in Arras dot CFC. So this, this particular page actually, normally runs pretty quick. But something that I'm doing here in this errors, dot CFC is actually causing it sort of causing a problem. And what I can do from there is I can actually drill into, I can drill into the code. So for people who are listening, you know, if you're listening at home, or listening in your car, or wherever that profile is, is basically it's it's live, I can, I can click on individual classes and individual methods, and fusion reactor will instantly decompile the code and highlight where in the code it was running. So what I'm looking at now is, I can see the reason actually, why this thing takes so long is because I'm doing a dump, you know, much I'm running through various different directories here, capturing and recursing through directories, and I'm capturing error information. And I'm dumping that out to a final. And this is taking a long time in this particular case, so actually the
Michaela Light 42:09
problem, just to be clear, is this the actual ColdFusion code? Or is this the Java bytecode? decompiled?
David Tattersall 42:16
This is the this is I mean, this is actually Lucy, in this particular case, but this is this is decompiled it so this this is what
Michaela Light 42:28
is decompiled. Okay, because I'm just wondering, because that what I'm reading is it's got variable for variable six variables. So like good variable names?
David Tattersall 42:36
No, it's not not good variable names. But basically, you know, the, what, why do we do this? So why do we do it very simple. If you're trying to investigate something, as a developer, the faster you can get inside the code, the better. That's that's basically what this boils down to. So I'm this capability, this also, this is unique to fusion reactor, being able to decompile the code on the fly, and present that code to you. And what we can also do, I didn't do it in this case, but you can, if I provide the I can tell the fusion reactor, where my code is located. So I can basically pointed my repository at my local repository. And if you do that, fusion reactor will actually go and get your code and render it. Glow. It works
Michaela Light 43:39
either way, if you have a production server, and it has only compiled code on it, it can decompile it, you can see something. But if you set it up a bit smarter, it can show you your actual code and lines of code are slowing it up.
David Tattersall 43:52
Yeah. Yeah. And that's, yeah, not everybody is as familiar with the with the Java. But it's actually you know, when you look at it, in this particular case, it's pretty obvious. It's you know, it's running through, it's basically recursing through a directory list, and capturing, capturing our information, and it's writing it to a file. And that's what's taking it so long.
Michaela Light 44:19
Yeah. So common, we had an engagement a year or so ago, the app ran fine, except when it threw an error and their error handler was dogshit code. Sorry for the impolite there but I mean, they were doing so much in there our handle we just made it a really simple error handler and the whole problem went away.
David Tattersall 44:36
Yeah, well, this is this is what we're demonstrating here. And this is not an uncommon problem. I mean, this this happens right you know, you've had it yourself. This is this was calling an error handler. So errors dot CFC, when it had an error, the actual the code itself runs pretty quickly. I mean, the regular you know, we saw before or when it normal rain, it's sort of its sub second. But when it's got an error, that's when it goes bad. And you see that very clearly here. Okay, so think
Michaela Light 45:11
the other approach we took was to kind of do all that, if you really had to do heavyweight processing, do it in a scheduled task separate. So it would pick up new errors and grab out all that stuff that takes, you know, 30 seconds to grab, but it isn't slowing up the actual page. Right?
David Tattersall 45:31
Exactly. Anyway, there are different techniques to do that. So okay, so let's take a look at this other one. So we've got another performance problem here, I need to
Michaela Light 45:42
change this is a baby problem. It's only takes a second,
David Tattersall 45:45
the baby problem. But this problem all the same. So I've got some transactions here. They're taking just over a second. And this is all, you know, a lot of this, when some people look at it, they might say, Hmm, you know, a second there's nothing. And other people, it's on
Michaela Light 46:03
their, their shopping cart checkout page by looks of it. Right? Yeah. So it's probably costing them big money, because some people
David Tattersall 46:11
abandon Yeah, it could be but you know, different things are different to two different people. And somebody might say, okay, you know, one second, totally unacceptable. Other people might say, oh, you know, second was fine.
Michaela Light 46:27
But anyway, if you're running an e commerce Store, you're comparing yourself to someone like Amazon, where they have things really snappy, usually. Yeah, you know, I think they tried, I think that goal is 200 milliseconds, I want to say for page rendering
David Tattersall 46:41
on it. Yeah, that's, I mean, Amazon did a lot of work in that area. So identify, you know, if it takes another 500 milliseconds, how much does that cost them, and
Michaela Light 46:51
it cost them millions of dollars, million dollars, it's million rent. I mean, it's I used to pay pay the 1919 $99 a month to get fusion reactor to save yourself millions.
David Tattersall 47:03
Okay, so let's, let's take a quick look at this one. And I can see here, again, I've got some CF HTTP POST, it's calling this thing, this audit process. But I've got no visibility in this. So this one, you know, I had a duration of about a second. But let's take a look. And this is an example here of what we're doing with distributed tracing. So this is only part of this new capability, I can see I've got this trace ID. And I'm going to copy that. Just copy it, but I'm going to click on it, as well. So when I click on it, what happens is we're in we're now basically taking that trace ID. And this you asked before, what is a trace, this is a trace. So I can see here, that
Michaela Light 48:03
I've got this trace, and you make the font a bit bigger on that kind of ring the phones or whatever. I mean, I have a really big screen here, and anyone on YouTube probably doesn't. So we can see all the different things being run inside this ColdFusion page,
David Tattersall 48:17
right? So that the app or the there's more to this. So the the lines that you see here, these are what's called spans. So a trace is made up out of spans. And I can see I can I've got my CF store from the CF HTTP Cole. But then fold out into this order processor. And actually this order processor, then it generated an invoice and all it called out into a database. I've got some inserts and some selects. And then finally that went into I'd actually, it's called out to Kafka. So I've got a cold Kafka bus. And then I can see here, I've got my, that then called out to the shipping processor. And the shipping processor is actually in, in node. So I can see for, you know, this whole transaction here, unfolding, and I can see all the components of it. We've never had this in fusion reactor before. So this is not inside CF. Yeah, this is
Michaela Light 49:35
amazing. So you've got some bits in CF, and then you've got other bits.
David Tattersall 49:40
I've got some bits in Java, I've got some external database that we're instrumenting I'm going
Michaela Light 49:47
is the length of these bars show how slow that process was. And it shows some are running in parallel and some runs sequentially. Is that Yeah,
David Tattersall 49:56
because you could also if you think about it, you may have some acing critics call. I mean, very often, you know, when you write stuff in CFX, it's synchronous. But, you know, if you've got an asynchronous call, how's that gonna work. And that's what we're also able to support that this whole distributed trace, what we do is we've pulled, even if it's a synchronous, we pull in all the spans together. And we'll visualize it for you so that you see the complete transaction end to end. And I can also for this, you know what, when I when I go and look at this thing, if I open one of these up logs for this span, so I can make
Michaela Light 50:38
David Tattersall 50:41
So these are the logs that were related to that. So I've just linked that now directly. And I can jump back, if I click on the trace, that's going to take me back into the trace. So, again, a big part of what we've done is, is this linkage. And what I'd also like to show you real quick is, if I go into the Explorer screen, we've not got this all built into we've not linked it all completely, but we will do. But that this was the trace ID that we got before. So this was the trace that we were just looking at, look at this, if I click on this node graph, this is visualizing now the complete transaction. So I can see that I've got my ColdFusion my storefront it was doing a CF HTTP call, that was a an HTTP POST, it went into this older processor back cold into here to process the order this cold my database, so I've got some selects and something. So it's going off here. And then finally, that went into the older processor, which was Kafka, Kafka called out to the, from the order processor, to the shipping processor, and the shipping processor did some screen rendering. And this is in Node. Suddenly blasting. So for
Michaela Light 52:25
those not watching the video is this is like a map of all the processes together with performance numbers that you can click into and see how it's doing. And it shows all the stuff running sequentially or in parallel, it's Yeah, I haven't seen this kind of view before. It's really cool,
David Tattersall 52:40
ya know, that this, this is all new, this is all part of fusion reactor nine. But the important thing here with distributed tracing is you've got the end to end breakdown. So before, you know, you might just say, Oh, you're cold fusion page. But if you've got call out your common some service, or maybe you know, calling something in Java, or you know, calling a database or something, it was sort of still you got the total amount of time, but it was still a bit of a black box. And that's what we've addressed here. And of course, being able to visualize that is phenomenal. Because you know, when you when you're looking at it, and you can see the inside the node graph here, it's very easy to follow. And that you've got that combined with the trace view, so that you can see, you know, each individual, each individual span within that trace. And within here, you've also got, like I showed you before, you know, the the links to the logs. So everything combined everything together. And you can visualize that. So it's, it's, it's a big, sort of it was a big deal for us being able to provide that capability. Any questions about that?
Michaela Light 54:11
Now, my mind is blown, David,
David Tattersall 54:13
your mind is blown. Okay, so let's look at some more. So another one on. Yeah, that we're that we talked about was being able to analyze databases. And if I go into here, and this is also in the cloud here, I can see this my database view so I can see I've got a bunch of databases here. I can see throughput, and this is per application. So I can basically I can break this down and say okay, you know, just show me my spring shop. And if I do that, then it'll just focus on on slick
Michaela Light 54:55
and see see the effect of each application in the database. Absolutely. You can see somehow knows the queries that a particular application is running. Because usually, when I've looked at database performance, you see all the queries from all the applications or mingled together?
David Tattersall 55:09
Yeah, no, well, we can, you can mingle them if you want, but you can also, you will break them down. And, of course, what you can also do, you can look, if I go back into my applications view, I can also drill into individual transactions, or let's just go back into the into the on prem. Here, I see, in this view, you mentioned before that, you know, it was useful to get sort of collections of information. And this is one such election, these are all our JDBC requests.
Michaela Light 55:43
So I can, and then you can sort them by the ones that you use the most CPU or the most memory or whatever you like.
David Tattersall 55:49
So you can solve them. Basically, I can say, show me the show me the slowest. Yeah, I want to say all that these are all the slow ones. And these were drived, because they're sort of they're all selects, or there's a long sleep eight seconds, but we've got the ones in there as well. And so you can see those ones, what is also really interesting transactions by memory. So I mentioned before, one of the issues is related accounts here, you know, some of the this guy up here. So look, you know, a lot of times 7072 megabytes was basically used on that particular SELECT statement. But sometimes you may have something that is, you know, runs really quick. But it consumes a lot of memory. And you can see that as well for a transaction. So going back into the transactions view, if I go here and look at request by memory, this one is actually this top one here, we're using almost seven gig
Michaela Light 57:03
of a bit of hungry process.
David Tattersall 57:07
This is this is a bit of book, there's a reason for that never drilling, one we can say. And this one is actually building a database. So this one ran for 23 seconds. But I've got a bunch of CREATE TABLE statements here. And you can see all the individual SQL statements, and then I've got a load of inserts. So the for every single one, what the total time was what the times B was and how many rows were returned. That's also, you know, another great feature, because you might, you know, you might be selecting some data from a from a table. And when you wrote that application you didn't have done. So you just start from wherever you didn't really qualify it. And you know, for the first few years, that's all run great. And then across time, it gets slower and slower and slower. And one day you wake Ethan combines this thing, so slow down, and this data, and very often, you know, that's linked to databases, and, you know, poorly written queries,
Michaela Light 58:26
and a lack of an archiving policy where you get old transactions moved out if you don't need them in the main app.
David Tattersall 58:32
Right? Yeah. Okay, so we've taken a look at the database, sort of memory issues, I can drill into here and get a picture of my current memory. So this is this is live, these are all the different memory spaces, I can also go back and look at that across the last hour. I can also see that in here. So in the cloud view, if I look in if I take Java memory, I've got all the same information, I can look at that again, line or the last 30 minutes or hour or any time, you know,
Michaela Light 59:10
wow. And it all data is saved off into the cloud. So you can keep days of data there are well,
David Tattersall 59:17
we are right now. Today, we can keep up to 90 days worth of data. But so we're going to actually offer we're the next phase will be 180 days or half a year. Very likely we're gonna go go up to a year.
Michaela Light 59:38
Yeah, because sometimes these you can see trends over time. So it can be useful to have data. Yeah. I can't see it in this view. But some of the other graphs you showed, you can see the memory creeping up and you can see the garbage collections being done in the JVM. Rather it goes down and
David Tattersall 59:57
while we're here, you've got garbage collection. So If I can, I can show you that in here as well, if we go and look at the GC, so this is a garbage collector GC app. Yeah. So this is the garbage collector. Okay. Very typical sort of graph, you can see the GC regularly. But yeah, sometimes that's good. But sometimes, you know, we've talked to customers in this our whole, you know, my, my application is crashing, and then when you start looking at it, you realize that it's just running out of heap. And reconfigured, they've sort of tuned the GC got the kick in too late. And then spikes, they're running out of heat. And then he's cutting in right at the last
Michaela Light 1:00:47
moment. Right? That and then it takes a long time to clean up
David Tattersall 1:00:52
the right, yeah, and when the GC runs, it's a stop the world moment. So you know, GC runs, everything else stops. And then they're saying, Well, you know, my application, for instance, yeah, to true, that, you know, that's what it's gonna do, because the GC, the you know, the garbage collector is killing itself, trying to free up memory. And it's because you, you know, you've you've tweaked it.
Michaela Light 1:01:18
I mean, for people listening, what I'd say is that, you know, the way Java virtual machines run, they don't, when they finish with a piece of memory, they don't automatically clean it up, it's garbage collector comes in periodically to clean it up. And it's almost like you're, you know, you're imagining we're in an old style home office, and you've got lots of pieces of paper, and then you kind of, you're throwing them away, and you've got this big pile of garbage. And what I think David was saying is if you clean it up regularly, your office stays tidy, and everything works good. But if you wait until the last little moment where the garbage is up to the ceiling, yeah, then it takes a few seconds to clean up all that old memory that's no longer used. So so that's one of the things we see. And then the other thing, sometimes the garbage collector doesn't reclaim all the empty use memory, you know, there's a memory leak, and it can't get back everything. And over time, it goes up and up. And then eventually you run out.
David Tattersall 1:02:12
Right? Yeah. So if you've got that scenario, then we've got a tool for that as well. And this is the heap histogram, or the memory profiler, as I call it. And what I can see here is this is the heap in real time. So again, for those folks sort of listening from home, what I'm seeing here is, is a screen which is showing me every single class, which has been instantiated on the heap, together with how many objects and how much memory has actually been,
Michaela Light 1:02:52
can you bump the font size up there for the people who are watching on YouTube? Yeah, I can try. So we've got an object, the class at the top, that's gobbling up nearly a gig of Neerja. Is that a meg or a gig? It's 26% of the memory.
David Tattersall 1:03:07
Yeah, that's actually it's 285,000 bytes or not tune? Yeah. No.
Michaela Light 1:03:18
So two quarter of a gig. Yeah, a quarter of a gig. Yeah, yeah.
David Tattersall 1:03:23
So yeah, but that's, that's char that's character. That's probably not too not too bad. But you might have some I've got a HashMap here, which seems hungry. But what you wouldn't do in this particular scenario is you would take a snapshot. And what we recommend is that you take a snapshot when you when your applications in clean states, so when it's just stop it or when you know, you know, right. And then you take a snapshot when you think you've got an anomaly. So when you really run with memory, and then what you can do in there, I can take those two points in time, and I can do a diff, and the diff compares everything at that point in time. So I can see all the different classes I can see for instantiated and I can see the size of that. So I can get really in depth picture here of exactly, you know, how many in use, and this is this is a sampling profiler. So what that means is you're actually you're the the impact of it is very, very low. So you know, fusion rates are still around about 1% impacts. Obviously, if you You'll remember from you know, from high school physics classes, if you measure something, you have an effect on it and And obviously, there's a monitor, you've got an effect on, on the application that you're monitoring, but that that impact is very, very low. So
Michaela Light 1:05:11
that's very important. That is only because otherwise, if the monitor uses up a lot of resources, the monitor can slow down the app. But if I'm understanding correctly, you have some really cleverly written fast cloud that grabs the the telemetry and the traces and everything. And then it's all sent off to a different server out in the cloud, where it does all these clever graphs and reports. And what happens
David Tattersall 1:05:33
is, we've got it with you can have it on prem, and you've got a lung capability. And if you've got cloud, then we're capturing it, we're actually compressing it every minute and encrypting it, and encrypting it, of course, it's all sent securely in a secure channel, up to the cloud. And then it's also it's encrypted at rest, as well. So all your data safe. And yeah, we're sending that information compressed, actually, the packets are pretty, pretty small, actually, I think they're similar. It's about 11 megabytes in a packet, I think. Which is, I know, it's about 11k. In a pack, it's even smaller. It's they've been really timely. The package that gets sent. So
Michaela Light 1:06:34
you have one more important feature you wanted to show from fusion reactor nine, four, we talked about the future.
David Tattersall 1:06:42
Actually, yes, one, one thing that I did want to show is I want just wanted to show you the debugger. So I've got a yeah, I've got a little bit of code. And what this does, it's actually it's got a random number generator, I need to run it a few times. Right? There you go. Got it. So I just need to divide by zero. And I've got a random number generator between zero and three, and a cold state. So let's take a quick look at at that. So I can see here. This was the error that occurred. And when I drill in, I can see a few different things I can see this is the stack trace here. And I can also see the events snapshot. Now the event snapshot, this is this alter automatic error detection. And I can see this is highlighting the line in the code where the error. And obviously this is a very, very simple example here. But I can also see my variables. So when I when I click into here, the the Y was zero. So that's why this this or occurred, but I can also see all the variable scope. So I can see the whole context
Michaela Light 1:08:03
of this is like doing a dump in your code. But without
David Tattersall 1:08:07
doing that, yeah, this is this is the you know, the crime scene, this is the CSI is having the gas that the error occurred. So it's taking a picture of the whole car. All right, issue. And what I can also do is if I go into my URL details, you remember before I said, you can actually you can tell fusion reactor where your code is, that's exactly what I did here. So I told him where I was. So you can see this is the file Mon. So it here and I can set a breakpoint. So I'll do that. And then I run that again.
Michaela Light 1:08:50
So you're setting breakpoints near where you think the problem might be happening. And this is a toy example. In real case, you know, the error might be far more complicated.
David Tattersall 1:08:59
It may be Yeah, it may be. But if I if I run that you can see out that no spinning it didn't complete. Back into the debugger. This is the thread. So I've intercepted that thread.
Michaela Light 1:09:14
And before it had the error before it had the error. And so now you can look at the variables so I can single step.
David Tattersall 1:09:23
Yeah. So if I click on the debug icon, now I'm inside the debugger. Yes, I'm fusion reactor inside production. Wow. So and this is a full blown debugger. So I can step into step out step over you can see you've got the different commands up at the top. I've got all my stack frames here. I've got access to all my scope variables. So I can see that in this case, it's captured it y is equal to two. So if I if I change Now, if I change now you can change the variables, right? Because this is a debugger. Right? So if I change, and you can see on the right hand side, I've got a watch set, just like a regular debugger. If I change that to zero, you see the watch changed. Yeah. So that variable now is zero. So if I resume this now, yeah. What happened now the page, the the elusive demo effect, it didn't know that. That's the combat. I don't know why that was one.
Michaela Light 1:10:37
But worries, oh, no worries,
David Tattersall 1:10:39
okay. 30 days divided by zero. Yeah. It normally would have changed. I think what I've got actually, I think what's happening here, I just noticed that before, I've got this running in the background, and it's picking up that URL when it's executing it. And what's important to point out here is that that debugger is only it's on a single thread. So you can come out, okay, the firearm multiple, but of course, it'd be you, if you're on a on if you stopped every thread, your patient could stop. So right by default, we only do on a single thread, but I've actually, I've got other threads running in the background. So it was firing it. So it just, you know, it was just the luck of the draw, though. It just fired it. And you can see,
Michaela Light 1:11:31
this is a this is a feature that's been in fusion reactor for a few versions. That's been
David Tattersall 1:11:35
in since six. Yeah. So that's been in a long time. Not a real quick, just like, let's take a look at some of the new stuff. Other than what I've shown you so far. So we've got the logging capability. So this is going so I've got I've got my logging dashboard here. So I can basically see, click on fusion reactor logs, so that these are all my logs that I'm pulling out of being captured by fusion reactor. And I can see I can look at various different jobs. So you know, I've got my store from here. If I select that, then it'll just show me you know, logs from my store from and you can see and sort of German, you know, I'm looking at those if I change that to all. And then I say okay, I want to look at the last hour of logs, then it will go and it will render. These are all the different logs that are being captured. So I can see this is throughput that you're looking at. And down below, these are the actual logs themselves. And not all these logs of gods. They've not all got connected traces. But if they did, you'd also be able to jump from one of these log files into a trace, obviously, some of the logs, you know that they're not linked to a specific trace. But if they were, then you know, we'd be able to sort of join the dots there. So you've got logging, I can also ever go back into my dashboard. At can see here, that command command command log dashboard, I can also look at errors. So if I click on the loan, again, this is pulling up, but I can I can filter these. So if I said Okay, show me everything with an exception. So these are all the exceptions and I've been throwing again, the logs are automatically filtered down at the bottom. So these are only logs which were related to some exception.
Michaela Light 1:13:53
Yeah, I mean, that's the problem with looking at raw log files. It's all mixed up together and it's hard to find, right but
David Tattersall 1:14:00
the but the beauty of this is that you can filter all that stuff sorry, no, we can also as well as doing that. If I use my my log events here, I can basically I can add filters into this so what we've introduced now is the ability to filter these so here I can see I've got various different I've got my application name or file name or host or instance or job so if I take job and then I say okay, just show me my CF store for one and actually just show me earth so I don't know whether I'm going to have any in here looks like looks like I do but these are just CF storefront one errors. So all the all the all the you know all the log files shown here and I've saw the average Use the RF increase the font size, so that people can see. But normally, it's pretty, pretty large at the moment. But normally, you've got, you know, more real estate to be able to actually see the logs. And these go very, very quickly that you can render this information. Let me just show some of the other dashboard capability that we've got. So some of the other sort of new stuff, show you request performance. So here, you can see these are these are transactions that you're seeing here. And I can see that based on average duration, so how long those transactions are taking, also for the different traces what the throughput is, what the request status was. So I could take something here. And if you notice, with a mouse, when I mouse over this, this is giving me all the telemetry. But if I click on one of things, I've got some options here, I can add a notation. So this is another new capability, let's say no situation, you can annotate it. So if I annotate that, I'm just going to say, I don't know, hi load or something, due to whatever. And I'm going to add a tag for this, let's say, you know, this is, I don't know, lots of users, I don't know, whatever it is. And then I've tagged that, and you can see that still highlighted and that annotation, it will appear now, everyone. So what you can do by doing that, you can use that to correlate right across your, your your application to see, you know, some potential incident that was happening. And we're going to add these annotations, we're actually just working on that at the moment, we're going to add these automatically. So you might have, you know, a server crash or some other events, and we'll just automatically annotate it for you. But what I can also do is just do that, again, just sort of right mouse click there. If I click on Show events, then automatically for that particular, that issue that I've got, though, it will show me all the correlated log events for it. So just basically, you know, we've just, we've just linked all that, so that you can, you know, if you had some spike, you want to say, Okay, well show me what's inside the logs. And rather than you know what you said before, that you you know, you're searching through the logs and trying to correlate it, we've done that automatically for you. So here, I'm seeing all the all the correlated logs. So that's that, I can also see things like, resource usage. So here, this is CPU memory, utilized, very, very visual, very rich, rich graphs that we've got here. This is showing all old resource usage for all the different jobs that I've got running. But of course, I can also I can break these down. So if I said, you know, just show me. I don't know, show me what's happening on storefront one, then it will just take that, and in that particular case, there was there was no data on that one, but it will take a different one. Let's let's take that one. Yeah, so that one, we do have data for that one. And then you can just basically just drill into a specific application or a specific job. So that's some of the fusion reactor related stuff. Let me just show you some of the you know what's coming in the future.
Michaela Light 1:19:09
When you said job there, does that mean a page running or scheduled tasks?
David Tattersall 1:19:13
That particular thing was actually that was an instance. So jump in that particular case is that's referring to an instance. So that was the workflow instance in that particular case. Let's show you some of the stuff that's coming up. So I mentioned before this sort of observability platform and if I'd gone look at this, let's just take the last hour here. So this is I wouldn't node exporter. So if I'm just going to make this a little bit smaller, just just to give give the effects of what you can see here. And as I scroll down here, and this is this is hardware, right so This is not application telemetry, this is hardware, telemetry, where my application, one part of my application is running. But I can see here, I can look into CPU memory, I can look into system processes, I can look into disk utilization. So I'm now looking at disk i o ops. And there's tons of information here, I can see readwrite on the disk that's going off, I can see network traffic. So I can see how many packets have been sent, I can see whether I've had any network errors. So that this is I'm a true, we've never had this infusion rates before. But this is all, you know, all available now. And more and more of this stuff is going to be coming.
Michaela Light 1:20:59
Almost like you can be physically on the box. But these days, so many quotes, boxes are running in the cloud, you couldn't physically get there anymore.
David Tattersall 1:21:07
Yeah, but you will be able to, you know, you're definitely going to be able to have that this is this is an exporter for MySQL. So there's a MySQL and I'm not using this in, in actually in any of my my applications, but I've gotten the database available in my infrastructure, and I'm just instrumenting it. So I can see, you know, when the thread cache walls, I can see how long it's been up. So this has been up for almost an hour, I can see how many operations are being performed. I've got a ton of telemetry here that, you know, normally, we would never have this available. But all you know, all fair game now with with this new architecture. Cool. So yeah, so that's, that's some of the new stuff, what's coming up in the future. And while that's certainly that's part of it. Another thing that's coming up that I mentioned before, is the machine learning. And what we've been doing here is we've been working on, on on using various different machine learning algorithms, we've been using a couple of different ones we've got from from Facebook, it's called profit, we've been using that and another one called K means for for clustering. But what you can see here is this is analyzing CPU information. So I can see across the last 12 hours. This is, it looks like I didn't trigger any anomaly flags. And this is all live data, or you know what's coming out here. But if I increase that up to 24 hours, let's take a look. It's it's analyzing this in real time. And now you see across 24 hours, now it started finding anomalies. And you can see the spikes and the anomaly flings these are basically were the, the machine learning algorithm has said, hey, here, wrong, and open that up to two days. So I'll start looking a little bit further. Interestingly, the number of anomalies dropped. So when it took, the more data it takes, the better it gets. And, of course, I mean that this is for now this is just experimental for us. But you know, the power of this is going to be when we you know when we join all the dots, so that you can say okay, well, I'm looking at my, my CPU in combination with my memory in combination with what's going on, on the database in combination with with transaction throughput, and bakes them all different pieces of information, I can actually determine that, hey, I've got a problem here. And it's, it's that ability to join the dots sort of right across your application architecture, that's what's going to, you know, that's where you need something like machine learning to, you know, to enable you to really analyze the data and, and spot, you know, spot potential issues. So, yeah,
Michaela Light 1:24:41
so at this stage, you've got the machine learning, helping you spot areas where problems are happening, you might not have noticed, right, yeah, maybe in the future it does more a bit more activity to
David Tattersall 1:24:53
Well, I you know, like I said, right at the start that this is going to go in phases. So I think phase one is going to be alerts. You know, we've actually we've started using this ourselves on our own month. And it's amazing. It's amazing what it can spot. You know, when you think, you know, why is why is that? What then it's not something when you start digging into it, you're going wow, yeah, that answer that is a problem. But you would have never seen it. Just because you know, you just didn't You didn't join the dots. Are you doing that? Oh, actually, that's that particular thing. That's an issue. So,
Michaela Light 1:25:37
because maybe it's a lower level thing before it becomes crazy. And crash servers? Yeah, a precursor to something happening.
David Tattersall 1:25:45
Right. So yeah, so that's, that's sort of the cloud. So we've took a look. So just going back onto the slide. So with it with a long See, I don't know we're doing for time, we probably, we've probably blown blown our time frame. But I just wanted to say here that you know, reactor can now capture logs, you can filter them very, very quickly, you can visualize them and put them in graphs, it will join the dots for you. Obviously, the advantage is you can diagnose issues faster. This is sort of a little diagram of how it works. So I've just shown this with CF 21. And you're basically you've got this logging Ganeshan, where you can use different open source components here. So we can scrape any logs, doesn't have to be a ColdFusion log, you may have some other application logs, or you know that the IIS logs, whatever it is, we can capture the logs. And then we're ingesting those, and we're storing them and making them available in the in the cloud. So you may have some other you know, we used to use paper trail, but we've stopped doing it now it was really expensive. And it was like we were spending I don't know, three $400 for 16 gig of, of logs in captured. And then you know that it wasn't that much. You know, it was a lot of money. But it wasn't that that you know that many logs that it was actually capturing so if you've got a separate, you know, logging application, you know, really think about moving that on to onto a reactor and, and basically getting the benefit of having everything in a single pane of glass. And then
Michaela Light 1:27:47
the last room, new things coming next year, new things coming soon.
David Tattersall 1:27:51
So I showed you some of this stuff. So we've got this infrastructure monitoring, where I showed you node, but we're going to also have Kubernetes, Kafka, AWS dashboards. And we're gonna have lots and lots of dashboards. So you saw, I think, when I was showing you there was a lot of different dashboards, I think God showed them all, obviously. But the concept is that we're going to render these automatically. So we're going to detect what you've got in your, in your architecture, and then we're going to provide the dashboards to you automatically, so that it will automatically render the, you know, your information. We are, you know, embracing alltown, this open telemetry standard, so that we can provide fully distributed tracing across different languages and technologies. So we saw that earlier, we've got ColdFusion, calling Java, calling an external database calling Kafka calling some more Java and then calling to some node to do some some client rendering. All that was visible, all basically showed in the in the Distribute distributed trace. And then finally, you know, this machine learning stuff, and this is the future. And that's why we're sort of looking at that now. We're putting focus in Savannah, because that capability that's going to be a game changer, you know, just having the data, being able to analyze it, and then make recommendations or set alerts. And in the future, you know, who knows, maybe actually automatically fixing your applications you know, using the power of machine learning, you know, it's funny when we started with fusion reactor, we the one of the first concepts we came up with, we set the big green button, and the big green button was what we envisaged pushing and that spotted the error and fix it for you. And, you know, we've sort of I mean, we're, you know, we're 17 years on now. But that big green button is very tangible. And, you know, we're almost learning. Wow.
Michaela Light 1:30:23
So if we know, the machine learning, we'll be writing the code.
David Tattersall 1:30:27
We know, well know the machine, no, AI already writes code, you need to take a look at that. The, if you imagine, you know, Google's got access to the whole of Git. And
Michaela Light 1:30:41
that's Microsoft, not Google. Microsoft owns GitHub. Yeah. Well, and they have Copart,
David Tattersall 1:30:49
Google's indexing everything. So yeah, so Good point, you know, that they they've already got engines, which will you can get you can write it a spec in English language, and code for it automatically. Wow. This, it's an it's phenomenal. And it's, it's analyzing all the different algorithms that people are using, and basically got, it's got it all figured out. So that's that's reality. I mean, what what, you know, what will happen in five years? Who knows? But we're certainly we've, I think we've lived through interesting times when I started my degree, my major in artificial intelligence, and a lot of the concepts, a lot of it's all the same stuff. But it just wasn't possible, you know, back in the A, is because of the compute power, and we didn't have the access to the data. And that's all gone. Now. Now, we've got, you know, unlimited compute power. And we've got, you know, pretty much unlimited data, the maths behind the AI solver, say? Yeah, so to summarize, react, you know, it'll find and fix errors in your code up to five times faster, and lets you know, when, where and why issues occur. It's very low overhead. We've got this full observability platform. So it's not just ColdFusion. It's going to be other languages, we've got logs, we've got infrastructure, other integrations, you can use it in development and production environments, dead simple to install, literally minutes, but a 14 day trial. Licensing, you can reserve servers or hosts. And we've also got on demand pricing. So you can just pay essentially, for what you use. And pricing runs from $19 for a developer license per month, up to $99 per server host per month. And when a deal, what a deal. Yeah, what a deal is made for well, for for the time that you save, you know, you imagine if you had one issue a month, that took you two days, and you've got a couple of engineers working on it, how much does that cost? 1000s of dollars.
Michaela Light 1:33:28
Yeah. And the cost of the organization or the site being slow or crashing? You know, way more than that.
David Tattersall 1:33:35
There's the knock on costs. There's the you know, what, what effect is that having on my reputation as a company, because customers are experiencing pain, that you know that all that cost is that that's difficult to quantify. But if you just look at it from a developer perspective, what the developer costs, and then so Okay, well, you know, we're going to it's, you know, rather than spending hours or days, you're going to spend minutes or maybe an hour to find it, but you will find that it finds everything and that's where you save money. So Right.
Michaela Light 1:34:14
Well, everyone listening if you haven't tried out fusion reactor recently worth checking out fusion reactor nine free trial to try it out. And we use it a terror attack, it helps pinpoint problems with customer sites. So I think it's worth worth the investment. There you go. Now, I noticed you were pretty big CF summit in Las Vegas, you know, you had a nice response. Right? Yeah. Plan. Are you going to any other conferences in the next year or so?
David Tattersall 1:34:54
Yeah, well, we'll certainly we plans to go to confusions We'll meet again next year. And I'm sure that will imply some sponsors again, and it's just been announced today that CF camp is coming. CF camp is bank. And yay. The Munich Airport is just down the road. For me. It's a couple of hours away. So we will, June. Yeah. June next year. So Munich in June is fabulous. The beer is cold. The cake is sweet. And, yeah, Munich is a lot of fun.
Michaela Light 1:35:40
And for those who haven't been to CF camp, there, they hold it at a hotel was right at the Munich Airport. So if you're elsewhere in Europe, or even the states or India, you could fly there. And you don't have to travel around Munich. If you don't want to, obviously, you can stay on later. If you want to enjoy that site.
David Tattersall 1:35:58
You should if you if you fly to Germany from the States and you fly to Munich, there's a lot. You know, the country countryside is beautiful around there. You've got the Alps. Very, very close. Munich itself is a phenomenal city. Loads of culture, very international, very cosmopolitan. It's brilliant. So definitely recommend, you know, spend some time in Munich. I'll spend some time in southern Germany. It's fantastic.
Michaela Light 1:36:34
But it's a great place in the summer. It's a little colder in the winter.
David Tattersall 1:36:37
We they get snowed down there. And sure it's, you know, it gets cold. But it's weird at the moment. I mean, it's November. I've never known a November like this. It's so mild. Wow. It's weird. Absolutely. Normal. It's very, very cold. I mean, very often in November, we've we've got snow. What was no sign at the moment? Wow,
Michaela Light 1:37:03
crazy. Crazy. Yes. If people want to find you online, David, what are the best ways to do that?
David Tattersall 1:37:10
Yeah. So best way is, if anybody wants to mail me that they feel the urge. They can get me at David at fusion, dash funeral fusion minus reactor.com. Or you can email the sales team at sales at Fusion dash reactor.com. I'm on LinkedIn. If you need anything, just reach out. If you'd like a personalized demo of reactor, if this you know, this wasn't enough for you, then yeah, if you sign up for a demo, I can also do a demo for you. Then you can ask questions. Very cool. Yeah. We were here for our customers. We we are very customer focused business. Wow. Cool.
Michaela Light 1:38:08
Well, thank you so much for coming on the CFI podcast, David, best of luck with fusion reactor nine.
David Tattersall 1:38:16
Yeah. And we've got fusion reactor 10 coming. I think you've mentioned at the start, but that should be coming probably. q1 2023 with even more capabilities, and lots more stuff.
Michaela Light 1:38:33
Wow. I look forward to seeing it. Well, thanks for being on the show.
David Tattersall 1:38:40
Thank you for having me. Yeah, it's been it's been great. Hopefully I didn't talk too much. But yeah, it's been great. I always love showing the products and yeah, it's all good. Thank you.