I've had the opportunity to speak with several suppliers of cloud platforms (Heroku for example) and related application performance management suppliers (New Relic for example) and began thinking about their impact on cloud-based applications. Rather than discuss the relative merits of Java versus Ruby development environments and how application performance management (APM) of Java and Ruby environments supplies a flexible, reliable, scalable application run time environment, I thought it would be good to look at this from a different perspective.
In the past, the best way to make use of the available computer resources and achieve high application performance on a single system was to hand optimize assembler or third generation language (i.e. FORTRAN, COBOL, PL/I, etc.). This approach, of course, was often very staff intensive and required very high levels of staff expertise. Developers needed to understand how the target machine was designed in order to make best use of its limited capabilities.
Over time, machines became more and more powerful, less and less costly and other costs came to the forefront. Now, organizations were more worried about how much time it took and what the staff costs to develop and maintain applications than how efficiently machines were being used. Organizations responded by using fourth generation application development and deployment tools. Some of these were based upon an interpreted execution environment rather than compiling applications to run directly on the machine. Multi-tier (user interface, application logic, data management and storage management were each hosted by a different system) applications were developed as a way to make more use of industry standard systems rather than mainframes or midrange machines as the hardware related costs were lower. Application components, such as the application logic processing, could be replicated and hosted by several machines to increase overall scalability and reliability. Unfortunately, this also had the effect of making applications significantly more complex and difficult to maintain.
Organizations soon faced the reality that lowering hardware costs and increasing staff-related costs was not a very good trade off.
Now, we're seeing organizations look to environments such as Java and Ruby combined with rapid development tools combined with orchestration and automation tools to address the need to reduce both the hardware and the staff related costs. They're looking to cloud computing to even further reduce those costs. Suppliers such as Heroku, New Relic and their competitors are offering new breed of tools that are designed to help make that transition easier. Will everyone rush in this direction? I think not. Much of a large organization's workload is supported by mainframes and midrange machines. These applications were written long ago and are still valuable. As new applications are developed or older ones refreshed, this approach will be increasingly of interest.