Adobe ColdFusion 8, a robust and popular Web application server, is used by many of the largest companies and government organizations in the world. Unfortunately, there is a lack of solid information about how ColdFusion 8 is used in the real world. This is partly due to the corporate policies of large organizations — they often can't or won't endorse a specific technology platform or pull back the curtain to talk about how they use a given technology.

In this two-part series, I look at how two growing organizations are using ColdFusion 8 to solve business problems. You'll notice that I take a somewhat untraditional approach: I focus much more on the technical details of what these companies are doing with ColdFusion 8 instead of the more typical and general case studies. I didn't want to simply be a cheerleader for Adobe; I wanted to know how ColdFusion 8 is actually solving problems, what it does well, and what it might not do so well. The first installment of the series focuses on NaturalInsight.

NaturalInsight

NaturalInsight provides a set of tools to help manage distributed workforces. This covers a wide range of professions, from retail servicing for large businesses (think Kraft or Gillette) to home health care workers.

These tools help managers and workers complete their daily work. They can review pending jobs and tasks, accept them, schedule them, provide reports and data about the job, and track the results after work is completed.

NaturalInsights.com uses ColdFusion 8 Standard Edition across five load-balanced servers. The application servers connect to a SAN through a file server, and they all connect to a central SQL Server database server.

I spoke with Paul Carney, Vice President of Technical Services at NaturalInsight. His team builds and tests on their local systems, and the developers have a test server where code is vetted before it is deployed into production. Code is stored in a central Subversion repository. They perform basic load testing and unit testing through a set of custom-built tools, but they aren't currently using a full-blown tool such as Selenium or MXUnit.

The team looked at Model-Glue as a Model-View-Controller (MVC) framework (along with some of the other popular frameworks), but they didn't feel that it was an ideal fit for what they needed to do. For performance reasons, they cache a set of ColdFusion Components (CFCs) in a central application scope that is used by all clients, but individual users have variations that are handled through the session and client scopes. Essentially, different types of users (nurses, field reps, etc.) see different versions of the application, and their paramount concern was optimizing performance for these users. The major MVC frameworks all support some sort of application nesting, but Paul's team felt it would be better to reduce as much overhead as possible.

For the same reasons, NaturalInsight.com doesn't use a Dependency Injection (DI) framework like ColdSpring or an Object-Relational Mapping framework like Transfer. They felt it would be better to maintain everything themselves in order to keep tight control on the application structure and database interaction.

The application is entirely ColdFusion-based, with the exception of a barcode generator that is implemented in Java and called directly from the ColdFusion code. They interact with a few external systems such as payroll for the remote workforce users through Web services.

Paul is looking at Adobe Flex and AIR to extend the existing HTML-based application. Their goal is to have a desktop dashboard for managers that can obtain data from the application servers through push messaging (to avoid having to poll the server continually for new data). AIR's online and offline data synchronization capabilities are also being tested, since many of the remote workers may be offline while performing their tasks. Finally, a mobile version is something they would like to begin working on, but they need to see more widespread adoption of Flash on mobile devices before they can really move forward in this area.

The team develops using what Paul calls "Scrum Lite," meaning that they take a relatively agile approach to their projects. They tend to create a basic specification, and then build, test, and rework it in iterative cycles based on user feedback. They've found that their users would rather have continuous improvements and new features, even if they aren't always perfect the first time. The fact that users can respond and see their needs incorporated quickly into the application actually makes them happier.

I asked Paul what problems ColdFusion made easy to solve, as well as what was more difficult to solve. He said that the rapid development was by far the most crucial advantage, along with the array of services that ColdFusion provides that makes many tasks that are sometimes difficult (such as generating PDFs) very easy. He also pointed out that generating complex reports is sometimes difficult to do with ColdFusion. The Report Builder is useful, but it doesn't provide enough low-level customization capabilities for them to deal with all of the dynamic data and the range of customers that they have.

I ended the interview with two questions that are a bit more subjective: "What do you like best about ColdFusion?" and "What do you wish ColdFusion could do that it can't do now?" Paul lauded ColdFusion's rapid development and how it makes difficult things easy. But he also wished for more granular control over the server in terms of timeouts, mappings, caching, etc., as well as even more robust PDF capabilities and a reduced cost differential between ColdFusion 8's Standard and Enterprise Editions.

Conclusion

In the second part of this series, I'll focus on FoodSHIELD, an enterprise-class collaboration portal focused on the Food Safety and Defense sector.