You can listen to the podcast and read the show notes here
Michael Smith: Welcome back to the show, I'm here with Mike Brunt, also known as CF Whisperer, and we're going to be talking about his upcoming into the box session, Tuning and Troubleshooting Using Cold Fusion Native Tools. We're going to be looking at, well first of all we're going to look at why you should be monitoring your server, and I'll explain why some people don't even do that, and how and why you use the built-in tools in the CF server monitor, the hidden features of CF Stat, and why you should be low-testing all of your CF apps. Welcome, Mike.
Mike Brunt: Hey, good to see you again, good to be here.
Michael Smith: It's good to be here, good to be alive on the CF Alive Podcast.
Mike Brunt: Right.
Michael Smith: Before we get into what you're going to be talking about, the into the box conference on troubleshooting and tuning Cold Fusion using the native tools, let's back up a bit. Because in the recent state of the CF Union survey, 18% of people didn't monitor their server at all, and the people who take that survey tend to be the people active on Slack and in forums, and what have you, so you'd hope they're the cream of the cream of Cold Fusion developers, which makes me wonder of the people who didn't take the survey, probably even more don't monitor their servers. Why should someone be monitoring their Cold Fusion server?
Mike Brunt: Well because first of all, the logging in Cold Fusion is great, and it's the best I've ever come across in any application server environment. There's a wealth of information in there, and it's a great place to start monitoring your server, and I'll sit back and say everybody should monitor, think of production. It was Nielsen I think that had a survey some years ago which said after eight seconds, anyone on the webpage would go elsewhere if they had an alternative. Eight seconds doesn't sound like a long time, but you know I wouldn't still be doing what I'm doing if there wasn't a lot of issues going on with performance on web servers and application servers, and it's not just Cold Fusion. I have other clients, I've worked on PXP, I've worked on .net, and they all have their issues.
Just reiterating something here, espn.net, the logging in those environments, unless you buy a pretty expensive third party tool, it's just not where it's at. Now, I can do my work, and I'm presenting on a tool set for Cold Fusion, I can do my work without any external tools, I can do it by just literally looking at the logs. I've blogged a lot about that to try and help all this, but at the very least, we should be looking at those logs at least once every week.
Michael Smith: Either directly at the logs, or using a server monitor to see what's going on.
Mike Brunt: Right, you know and there is a server monitoring in Cold Fusion, and there has been for some time, but I'll explain in a minute what the best feature of that is, which is better than most others that's out there, the commercial tools. Yeah, absolutely if you're going to put new code out there of any note, you know you need to check what's going on, because again, it's like flogging a dead horse, it's not expensive to do so, apart from time.
Michael Smith: Yeah, but I mean the server monitor that's native to Cold Fusion comes with Cold Fusion.
Mike Brunt: Just reflecting again from here, I'm not being critical of anything or anyone, but and it's not just Cold Fusion, most people do not look at what's going on in the server, you know it doesn't matter what it is. It's a general issue, and to answer your question, well you didn't ask, “Why do they not?”, you asked, “Why should they?”, which I think I've sort of addressed. I mean, it's a very interesting time, and I'm going to just go off into tangent for a minute. The internet of things, which is growing quickly, there are tremendous security issues in legacy, you know sensors and things, and that's because it happened in our world too. The times to develop things are unrealistic, largely speaking, so the business of checking servers and so on is like a luxury that very rare people think we've got the time to do, in my experience.
Michael Smith: It's sort of like the luxury of not taking out insurance on your house, and then wondering what happens if it burns down.
Mike Brunt: Yeah, absolutely, that's a great analogy. There was a thing years ago, which of course it's been documented a lot, that 70% of software development projects fail, and that doesn't necessarily mean they don't go anywhere, it means that they do go somewhere in some cases, and they fail. The other item of course is it's always easier to do things after the fact, but it costs a lot more. You'd rather do them in the first place when we get them working, you know?
Michael Smith: I sometimes think on some projects, they would have been controlling the Titanic, and then after it hit the iceberg, then they would be throwing resources to stop it sinking, instead of steering the course right in the first place.
Mike Brunt: Well yeah, and that's just a quick one on that, there's a Telly London article that says that the Titanic had a huge fire onboard from before she set off, that's sort of another … I mean, I've worked on projects where people don't want to touch the code, because they're frightened of what might happen, you know that sort of thing.
Michael Smith: Right, might be an iceberg underneath there in the code, so yeah. Let's talk about the built-in monitor to Cold Fusion. Why should people use that instead of using C-Fusion or Fusion Reactor, or one of the more expensive tools out there?
Mike Brunt: Well you know, I've had a lot of clients with small setups, and a lot of them, they don't want to spend the money on C-Fusion or Fusion Reactor. I did do a blog piece actually, because Cold Fusion is running on Java, just so we all know, there's a lot of open source tools out there that you can use, and I actually did a blog piece on those. You don't necessarily have to buy a product. Having said that, I worked on the engineering of C-Fusion, so I have a lot of respect for that, and I know all the people very well at Integral, and Fusion Reactor is a great tool too. I just wanted to show what else is out there, because not many people have done, I wanted to do something interesting, I hope, and not many people have presented much on server monitoring.
In fact, it has a bad reputation, and it's marginally deserved, that you mustn't, in production, you mustn't set up memory tracking, because it can interfere with performance, but you can just leave that out. One of the most powerful things about it, which I'll show at the presentation, is its notification capabilities. Now, C-Fusion and Fusion Reactor have that too, so you can be emailed or whatever if your server hits a certain threshold, I don't know what it might be, it could send, “Memory's used up, it's got 15 threads that have been running for 30 minutes,” that sort of thing. The really powerful thing about Cold Fusion server monitoring, it's easy to do in one place, and you can create something called a snapshot.
What happens then is, if you get an email saying, “The memory's 80% used up,” Cold Fusion will dump a file of everything going on at that time, full stack race, all the queries that are running, all the queries that are in the cache, if you've got that going, the state of the JVM, and it's all in one file. I mean, Fusion Reactor has, for instance, has incredible capabilities for logging, but it's a few different logs. The thing I like about snapshots is everything is in one file, and it gets dumped at the time of the problem, so I find that to be very powerful. Particularly speaking, even people who use server monitor, which I haven't come across many, a lot of them don't know about that. It's a great thing.
Michael Smith: Yeah, sounds really useful if you're trying to debug what's going on, what's causing a server to be slow or crashing. Also it sounds like there's some neat features built into server monitor that you might not have in some other monitoring tools, but also the fact that it's bundled with Cold Fusion, so if you want to try out server monitoring without buying something extra, that's a way for folks to do that.
Mike Brunt: Yeah, exactly. It's obviously part of the Cold Fusion. I'm pretty certain I'm right, I think it runs on Jetty, which is a separate server container, because I know there were problems at first with it. A lot of people probably think, and there were performance problems with it at first when, it's micro media actually that put it out there, but they engineered it differently, so there aren't performance problems anymore, because it's running in its own environment, for instance.
Michael Smith: Speaking of Cold Fusion versions, is this on all Cold Fusion versions, you know Adobe Cold Fusion standard, enterprise, Lucid, open source Cold Fusion, or where do you find server monitor?
Mike Brunt: Good question. Up to version nine or 10, it was on all versions of Cold Fusion, it was pre-setting them right there on standard and enterprise. I think on version 10, it got ported just to enterprise, and I talked to Adobe about doing something about that, because to me, for instance if Cold Fusion standard performs badly, that reflects badly on Adobe, and it's difficult to find out. As I say, I've talked to Adobe about it, I'm hoping I can persuade them to put it back in the standard edition. Another reason why, because people aren't buying Cold Fusion enterprise because of server monitor, they're buying it for different reasons, you know.
Michael Smith: Then what about the open source versions of Cold Fusion, do they have any monitoring with those?
Mike Brunt: No, not that I've seen. I'm pretty certain Lucid doesn't have a server monitor capability in native. You can obviously monitor, it's another Java application service, or you can monitor it with C-Fusion and Fusion Reactor, and many of the other tools out there. One thing I'll probably do in the future, but there isn't time on this presentation, is I'll show what, you know I don't want to take you off in a tangent, but the JVM itself comes with monitoring tools, and I've used those, and maybe in a future presentation I'll spell what you can do with those, too.
Michael Smith: Yeah, sounds interesting. Let's move on and have a look at the hidden features of CF Stat. What is CF Stat, for those who don't know?
Mike Brunt: Well, CF Stat is the first monitoring tool that Cold Fusion ever had. Of course, it predates Fusion Reactor, C-Fusion by a number of years, and there's a reason for that, because C-Fusion and Fusion Reactor are actually Java server monitoring tools. CF Stat was brought out, as you probably remember Michael, years ago, I can't remember what version, it's awhile ago, and of course it was when Cold Fusion was running on a C++ co-op, not Java. Then it's sort of a funny story in some ways, when the switch to Java was made, CF Stat went away for awhile, in essence. Just to say what it is and why it's important, CF Stat's a bit like a capability that's been in Cold Fusion since it went to Java, it's called metrics logging, and that basically shows snapshots of the memory and threading state every X, whatever you set it to, I usually set it to 60 seconds.
That sort of also sidestepped CF Stat a bit, because it does similar things, but I had an experience, which I'm going to try and recreate at the conference, I'm going to be doing some testing and looking at the server monitor, and so on and so forth, and then I have CF Stat running too. Server monitor was looking like things were going okay, but then what happened is, when I looked in CF Stat, I could see that quite a number of requests were being turned down, and that wasn't being reflected in server monitor. I'm not certain, I'll have to double check this, whether that's reflected in Fusion Reactor and C-Fusion or not. I mean, Fusion Reactor has a lot of capabilities, so many in fact, that it's easy to get lost in trying to find them. It's a great tool. Yeah, so that was a little thing that I saw that CF Stat showed me something that the other server monitor wasn't showing me.
Michael Smith: CF Stat comes with all versions of Cold Fusion?
Mike Brunt: Yes, yeah it does, you can enable it, and it's come online by the way, you know it's not a Dewey. The great thing about CF Stat is you can port it to a file pretty easily. Again, I think a lot of these things, I've heard a lot of people say, “I'm using this tool, but I don't know what it's telling me,” that's an issue. You know, “I get confused by all these different things,” and like I said, I've had the fortune to be on the server side of things since 1999, and there were no tools, well CF Stat was there, but that's why I learned to live in the logs, basically. It's funny that, now I'm living in the woods, literally in the logs.
Michael Smith: Right. We talked a lot about monitoring and looking at statistics, but what about load testing? Because I know very few people do load testing, why should everyone be load testing their Cold Fusion apps?
Mike Brunt: Well, it's the only way to find out what's really going to happen when you're out in the wild, and you've got more than one developer clicking on one link. It's not just Cold Fusion, I mean again, it's any application should be all tested and all saw, obviously you want to be looking at the database too, or any dependencies. It's not easy to do that if you're just clicking around, and we've never had a better time for load testing, because I use, and I have for some time, J-Meter. J-Meter is very fully-featured, and it's as good in many ways as the really big names were like Load Runner and Silk Performer and those tools. Those tools were, I mean you could be spending upwards of $100,000 to get anything meaningful, you know because you have to buy it out of the box.
Michael Smith: How does J-Meter compare?
Mike Brunt: It's easily as good. Like I said, it's very fully-featured, and it's open source, so it's very widely documented. If you want to do something that's more Dewey-based, J-Meter is good, but it runs in a Java Dewey. There's a tool like that called Blaze Meter, which is web-based, and it uses J-Meter as the engine, so you can really get up and load test. That's a commercial tool, the Blaze Meter one, J-Meter is open source.
Michael Smith: Okay.
Mike Brunt: It's pretty easy to get load testing, you know it's not … I mean, it always involves, just so everybody knows, is what you do, you create a proxy, which is easy to do in J-Meter, and you just browse around. By the time you finish browsing around, J-Meter's captured everything that's gone on. If you'd just love to be simple, you can just run load test from that. You can also do other things like randomizing, you can have multiple users using engine password, you know multiple prototypes, you can use CSV files to randomize data in there. Just browsing around, you've got something you can load test.
Michael Smith: You're basically simulating random load, that simulates hundreds or thousands of people coming to the site, and then you're discovering where the bottlenecks are in the application, whether it's in the Cold Fusion code or the database, or wherever the issues are.
Mike Brunt: Yeah, exactly that, and you know again, using the tools that we've talked about for the things we've talked about, I'll go back again and say this, even if you've just installed Cold Fusion, you've no tools of any kind, just the logs themselves will deliver a lot of really valuable information. Like I said, blogged a lot about that, you know so hopefully that is useful to people.
Michael Smith: Let's switch to a slightly different topic, which I've been asking every speaker into the box, which is, why are you proud to use Cold Fusion?
Mike Brunt: Because quite frankly, for what it does, I haven't found anything better. Bearing in mind, at any point in time, I usually have five or six clients, most of them are still Cold Fusion, some of them are Java, but like I said, I worked on PXP and I worked on .net. Those things don't have anything better than Cold Fusion as for what it's doing, which is providing, the best of what it does is to provide a server mechanism to power front ends, whether your browsers or phones or devices or whatever. None of those other tools are any better. The reality is, there's a lot of fashion in development, and things go out of fashion.
What we must never forget, in my opinion, is without Cold Fusion, the web as we've come to know it, the dynamic web would have been a long time coming. We have to remember, Cold Fusion was around before Bill Gates thought the internet was anything worth thinking about, or at least the web. There's a bit of history there by the way, which you can find on a couple of blogs. Microsoft made overtures to try and buy Allair, yeah it's blogged about by Jeremy Allair. He put it in the blog piece that they're having too much fun. When that happened, the next thing Microsoft did, they went to buy a company in Hawaii, I can't think of their name, and that's what CSV became.
Yeah, I mean you know the other thing is, in my opinion, in reality it's never going out of fashion, because it still does what you need it to do. The other thing about it is, which is fairly unique, I can't say it's totally unique, is you can develop full applications either in script or type-based, or mix the two if you want. I don't know what else you can do that with, you know.
Michael Smith: Yeah, we sometimes forget how powerful it is.
Mike Brunt: Well absolutely, and you know here's a little story quickly, which we blogged about, because people talk about performance. Some years ago, we were cast, there was a client who ran the Indianapolis 500 websites, and they'd never got through an Indianapolis 500, there's always been a major failure. They brought us in, and we had three weeks, you know they were sort of panicking at the last minute, we had three weeks to take the sites from the hosting company they were with, and put them into Amazon AWS, and get them ready for the Indianapolis 500 on Cold Fusion. We worked a little bit with Amazon on that, and for the first time ever, they got through the Indianapolis 500. That's because we load tested the hell out of it inside out, we determined what was actually needed, and we didn't go crazy and say, “Let's have 100 servers.”
We got the right number of servers, we also used, which helped, Amazon auto-scaling, which is AWS auto-scaling. The point I'm making is, that was one example, tuned properly and load tested properly, I've never seen anything that Cold Fusion can't handle. Another thing I saw, just quickly, is an iPhone front end app that had Cold Fusion as a back end, and they were getting millions of requests a minute. There weren't many requests, but you know every time there's a request, there's a threat. It doesn't matter what the request is doing at that point. We're talking millions of requests a minute, and Cold Fusion took that and handled it, it just needs to be in tune and monitored, you can do all sorts of things with it. Yeah, I have no intentions of going away from Cold Fusion, you know it's been good for me.
Just another quick point, I also applaud Adobe, because Adobe are the first company since Allair, they actually have a dedicated to Cold Fusion conference. They're a good team of engineers that care about the product, they're responsive, a lot of people have thoughts on that. I find them to be responsive and approachable too.
Michael Smith: I know for many years, some people have complained Cold Fusion is dying or legacy, so my question to you is, what would it take to make Cold Fusion more alive this year?
Mike Brunt: Well, that's a good question, and it relates to something, I think anyway, it relates to something that I've proposed speaking on at the CF conference, they haven't exactly yet and they may not. It's the API manager, which came out with CF 2016, it's an enterprise-level feature. I'm doing a lot of in-depth on that, the presentation, if it's acceptable beyond the administrator, so the API manager, it's pretty detailed. I think obviously API's are most definitely the core of most of what's going on nowadays, you know the close coupling that we had for a long time is really taking a backseat because of all these different needs, you know I mentioned one of them, internet of things, obviously mobile, and so on and so forth.
The close coupling, at this point in time anyways, has been replaced with API's, and over at Adobe, I have a lot of gusto behind it. Yeah, that's what I think would make Cold Fusion more relevant this year. I think, just as another reflection point, because a lot of people got impact to buy this, this is a mild criticism, but it's meant to be a good one, when Adobe launched Cold Fusion 2016, nobody knew about it. I mean, I'm sure people like Charlie Arehart probably did, but the thing is, I went to download Cold Fusion 11, and I couldn't find it, and I thought, “What's this 2016?”, and that's the first I knew about it, and I'm day in, day out in the Cold Fusion world. It was a bit of a botched launch, you know and that's not a criticism, but I hope if Adobe listen to this, they'll reflect on it and make sure … It was particularly important because the API manager was launched with it.
A lot of people found the API manager by stumbling over it, so I don't know what happened, maybe there was a miscommunication. That's important I think, and I think it's certainly relevant. There are other API mechanisms out there, Alan Tuttle I think created one called Taftfee, which was his version of that. The point is yeah, I think that's going to be important, but I think that we need to get that out there, and that's why I'm trying to do a presentation on it.
Michael Smith: The into the box conference coming up in a little while, what are you looking forward to at that conference?
Mike Brunt: Well, I'm looking forward to my presentation, because I hope it'll be, I always want to get people value for money, you know because they're spending money to get there. Luis Majano and his team are first class human beings, all of them. I've known Lewis for many years, and I remember when I met him at first, he evolved cold box from a client project that he was working on, that he needed something that wasn't there. What was very different about cold box at that time, and still is, is the documentation. The only thing that came close to cold box, which we both sort of worked on in one way or another, was fuse box, in my opinion that was a great Cold Fusion mechanism framework.
The thing is, cold box is still around, and you know in my opinion, my thought is you could sort of turn things inside out and you could say, “Buy cold box, use it for your applications.” Well, that's Cold Fusion inside it, you know and Java obviously, but in other words, I think cold box could be another shot in the arm, because it is current. They keep bringing out new enhancements to it, and it's well-documented. Like I said, the team that's behind it are first class people, and I think that as we've seen over the years, one of the problems with frameworks is that they start with the greatest of intentions, there was a fuse box community and there was a fuse box committee as we know, and it went on for a little while. Some of the others, when it's just one individual, it's great what they do in the fist place for the community, to put out a framework, but it becomes really difficult to keep it current, particularly when there are more and more users.
Michael Smith: Yeah, I mean I was talking to Brad Wood, Ortis and he was talking about how they automate the testing of these frameworks so they know it works on all the versions and different versions of Cold Fusion, so there's a lot of work that can go into that, let alone the adding new features or supporting people who are using it.
Mike Brunt: Yeah, well exactly, that as well. You know Brad I met before he worked at Artis, but I could tell he was an incredibly bright human being and hard-working, and they all are, like I said. Lewis is one of the most genuine people I think, I mean I've met lots of genuine people, but Lewis has a heart of gold and he's very, very genuine.
Michael Smith: If people wanted to find more about you, how would they reach you?
Mike Brunt: Well, the best thing, my blog is the best place, which is cfwhisperer.com. It's funny, I was quite embarrassed yesterday, because I was looking at one of my articles, and for some reason, it's ended up with broken images that were working before, so I've got to figure that out. One thing I like about it, and it's something I've concentrated on from the first time, I've had for a couple number of years now, and the first thing, I concentrate on it still to this day, is it's got the good performance. You know, it's really really quick. It's still running on Cold Fusion, it's not running on WordPress or anything like that, because it's like dog food to me, it's not the most beautiful looking thing in the world, that's for bloody certain, but you know there's a lot of information in there, and it works pretty quick.
My phone and my email are in there too. I've come across quite a number of people like in the field, when my clients have said, “Oh yeah, I got this off your blog.” Yeah, and there's others of course, Charlie Earhardt, I mean he's got some amazing information out there.
Michael Smith: Oh yeah, he's got a whole complete set of information. When he writes on something, it's always comprehensive.
Mike Brunt: Absolutely, yeah.
Michael Smith: Great, well thanks for being on the podcast, Mike.
Mike Brunt: Yeah, it's great, and I hope people can understand me, because you're not quite as broad as I am in your accent.
Michael Smith: Yes, we'll need a translate from the north of England accent, but I think they'll understand you just fine.
Mike Brunt: Well that's good, I hope so.
Michael Smith: Okay, and good luck with your talk at the conference.
Mike Brunt: Thanks Michael, yeah, looking forward to it.