This is my third day back from CF.Ojective() ’08 and I think I have almost caught up on sleep. No matter what your purpose, attending a conference is all work. You’re attending sessions, talking with other developers and sponsors, or networking. Not to mention staying up late for social events. Individually, each of these can be exhausting. Collectively they can be overwhelming. As a sponsor who is also speaking you get no breaks. Despite the fact that I still want to sleep through the day, the conference was fantastic. I may be a bit biased, but trust me, Jared put on a good show.
CF.Objective() was the first conference Alagad has ever sponsored. This was a new thing for me, being on the other side of the table. Our purpose there was to help people learn about Alagad and what it is that we do. In particular I spent a lot of time talking to people and informing them of Alagad’s Object Oriented and Framework-based Coldfusion expertise.
A recurring theme was that a lot of companies are really feeling the pain of years of procedural development and they were wondering if Alagad could help them refractor their application to OO and Frameworks and what the techniques for that are. The short answer is yes, and the techniques vary depending on the client’s goals. Overall, I really sensed that ColdFusion shops are actively working to embrace enterprise development techniques.
We also spoke with a lot of people about our Performance Tuning and clustering services. Mike Brunt, our specialist in that area, was on hand to teach a class on clustering. It was really interesting to see how many people are exchanged knowing glances when I asked them about their applications’ performance and stability. It seems that many people are having challenges in this area. However, they are beginning to realize that you can and should load test your applications and tune you JVM to get the best performance and stability out of your application. We are also happy to lend a guiding hand where we can, of course.
Other recurring topics were, as would be expected, training and the various Alagad products. I think the community really understands that Alagad is much more than just the Image Component.
We handed out quite a bit of schwag. We handed out about 50 or so Coffee mugs and couple hundred pens. In addition to that, we had a drawing where Andrew Gscheidle won an iPod nano and Mark Mandel won a Wii!
Lastly, it was fun having everyone by the booth. Here are a few more photos for good measure.
Ok, so that’s not true. But, whether you know it or not, Alagad is teaching two full-day classes before the CFUnited 08 conference. Jared is teaching “ColdFusion’s AJAX Advantage,” a class on ColdFusion’s AJAX features. I’m supposed to be teaching “Introduction To Model-Glue,” a one-day crash course to help developers new to Model-Glue get started.
Unfortunately, though Jared leads the rest of the classes in registrants, my Model-Glue class has no registrants yet. (Thus everyone already knows Model-Glue?) At this point it looks like the class will be canceled. This is bad and good. It’s bad because I apparently did a bad job of marketing the class. But it’s good because it frees up an already-committed room at the conference where I can teach you whatever you might want to know about ColdFusion and most ColdFusion frameworks.
At this point I’m wondering if there are any companies who would like customized training on any particular topic for their team? I’m happy to take a class of, perhaps 6 people and teach them the Model-Glue content and tailor it to their needs or to teach them something else entirely.
We’re also evaluating changing the topic and having Mike Brunt teach a full day class on load testing and performance tuning applications.
I’d like to get your feedback on what you or your company might pay $450 per person for. What’s does your company need help with?
I presented at CF.Objective on the subject of clustering and distributing ColdFusion applications. During the presentation I pointed out a “gotcha” I have encountered many times; where I have been asked to review existing High Availability (HA) environments. It has been mentioned before in previous blog posts but I wanted to amplify it, as I believe it is very important to avoid this pitfall. Hardware clustering devices can and often do, perform two distinct functions.
- Failover – The device watches all members in the cluster it manages to make sure they are available. If one member fails, the hardware clustering device will stop sending requests to it.
- Load Balancing – The device sends requests around the cluster members based on whatever algorithm is chosen; RoundRobin, LeastConnections etc. The idea being to spread the load in an even manner across all members.
In the first of these functionalist (FAILOVER), the clustering device needs a way to know whether members in the cluster are available. Typically this is achieved by the clustering device “pinging” cluster members. How this is done is critical as the pinging itself can cause performance issues, if not done carefully and properly. Here are things I have found, with comments.
- The hardware clustering device simply looks for an http “200” response from the cluster members. This sounds innocuous however if the default website in the web server is a “heavy” ColdFusion site with lots going on in the root directory, for instance lots of things in the Application.cfm-Application.cfc and Index.cfm these will run with every single “ping” from the clustering device. I have seen that cause performance problems, particularly if the “pings” are very frequent – 3-5 second intervals.
- The hardware clustering device pings a ColdFusion page buried-located with in a “heavy” ColdFusion application, for instance lots of things in the Application.cfm-Application.cfc and Index.cfm these will run with every single “ping” from the clustering device. I have seen that cause performance problems, particularly if the “pings” are very frequent – 3-5 second intervals.
Neither of these situations are good ones to have and both can be avoided. The best way to do this, in my experience, is to create a “lightweight” ColdFusion page which returns a simple text string which is retrieved by a query for a database. By doing this, successfully, we can ascertain that the Web Server, ColdFusion and the Database Server are all responding and available. This page should located outside of any full-blown CF applications, unless it can be assured that no “heavy-lifting” takes place when the main application runs.