Before ColdFusion
Download
Report
Transcript Before ColdFusion
Enterprise Integration
with ColdFusion
Sean A Corfield
Director of Architecture
Macromedia, Inc.
Goals
Explain some of the history behind
Macromedia's use of ColdFusion, both on the
web and behind it
Show you how Macromedia is using
ColdFusion “behind the web” for integration
tasks
Inspire you to think outside the “web box” and
look for new problems to solve with
ColdFusion MX 7
Who Am I?
Senior Architect for Macromedia IT (since
mid-2000)
A ColdFusion developer (since late-2001)
...and Java developer (since early-1997)
An advocate of standards and best practices
(since birth?)
Agenda
Setting the scene – a brief history of
macromedia.com
A look at our Online Store architecture
Introducing Oracle Applications (ERP)
Additional systems join our Hub'n'Spoke world
Evolving our Online Store architecture
Upcoming changes and future plans
Wrap-up
macromedia.com BC
Before ColdFusion...
macromedia.com was built with BroadVision
and Perl
We created flat files full of CSV data and ran
batch jobs to move those files around and
load them into databases
macromedia.com BC
2001 A ColdFusion Odyssey
Macromedia acquired Allaire
I formed Web Technology Group to rewrite
macromedia.com using ColdFusion
ColdFusion 5 was the (new) current release
We learned ColdFusion on Neo using pre-alpha
builds and then alphas and betas – it was “fun”...
We also picked JMS (Java Message Service)
and XML as core technologies for data transfer
between the website and the various back end
systems, using Java “adapters”
macromedia.com – CFMX 6.0 U3
macromedia.com launched in early March 2003
on ColdFusion MX 6.0 Updater 3
About a dozen ColdFusion applications
BroadVision still powered our Online Stores
Perl still powered many of the simple information
forms
Later that year we launched the Flash /
ColdFusion Online Stores for Europe with
BroadVision for non-Flash users
macromedia.com – CFMX 6.0 U3
macromedia.com – CFMX 6.1
We were running Red Sky just before launch
(August 2003)
We adopted Mach II as the Web Team
standard (2004)
We continued to write more applications
(currently around 50 applications, a quarter
are Mach II apps)
We launched HTML versions of our Online
Stores and rolled them out worldwide (20032004)
macromedia.com – CFMX 6.1
Online Store Architecture I
Tiered application architecture:
• Front end has both Flash & HTML versions
• Business logic implemented with ColdFusion
(using the same CFCs, and Mach II for HTML
version)
• Back end used Perl scripts to manage
fulfilment and settlement functionality
CSV (tab-delimited) files moved by FTP to
ERP system
Online Store Architecture I
ERP – Oracle Applications
Rolled out new ERP system (March 2004)
Used OAGIS 7.2.1 standard XML for order
management file exchanges (instead of CSV)
Still FTP based batch jobs (since everything is
file-based)
Some vendors (including OLS) still provided CSV
ColdFusion application written to manage all the
XML and CSV file exchanges and automate the
FTP processes
ERP – Oracle Applications
Breeze Live Online Sales
2004 also saw Breeze Live become available for
purchase online as well as hosted solution
Decided to leverage JMS rather than Online
Store method
Sales orders transmitted as XML over JMS in
near real time
Developed JMS event gateway for ColdFusion
MX 7
Uses exactly the same order processing CFC as
batch files
Breeze Live Online Sales
salesforce.com (late 2004)
Implemented sf.com for sales leads
Web site captures leads, publishes them
using JMS
Web Service adapters (.NET) exchange data
with sf.com
JMS used to exchange data between
adapters and other systems: web site,
support, marketing, analytics
salesforce.com (spring 2005)
We rewrote all of the .NET adapters in
ColdFusion (.NET libraries from the JMS vendor
were unreliable)
• Rough guesstimate: building adapters in CF is
between four and eight times easier than either
Java or .NET based on development times (Java
and .NET are about par)
Leverage the CFMX 7 JMS event gateway
Leverage improved web service support in
CFMX 7
Internal Order Management
Several internal applications also capture
manual orders
Already written in ColdFusion
Generated orders as CSV files
Rewrote file generation custom tag to
produce XML
Could easily change to use JMS now!
Online Store Architecture II
Replace Perl back end
• Use same engine as Breeze Live Online
Sales
• Send all orders as XML over JMS
ERP ColdFusion application does not
change!
OLS Architecture II – Web Side
OLS Architecture II – ERP Side
New Order Management
Real time communication between OLS and ERP
• Sales orders
• Order status
• Ship confirmation
Inside Oracle we publish data in real time
• On triggers / workflow events, we publish
recordsets as XML to Oracle AQ queues
• Oracle AQ event gateway (Java) consumes and
republishes to JMS using JMS event gateway
New Order Management (cont)
Large attachments processed in the background
• Sends URL to async CFML gateway
• Async task fetches document and stores in Oracle
Real time communication between ERP & CRM
• Customer details & entitlements published to a
single Oracle queue as XML rowsets
• Oracle AQ event gateway consumes, reformats
and publishes to two separate JMS topics
• JMS event gateway consumes , parses and stores
customer details & entitlements in CRM
The Big Picture
Future Plans
Over time, replace complex custom Java
adapters with CFMX 7 JMS event gateways
Consider replacing scheduled tasks that scan
directories for files with the built-in CFMX 7
DirectoryWatcher
Enhanced JMS event gateway – supports
authentication, per-topic cached publishers,
additional “initial context properties”
Conclusion
XML provides a human-readable, self-validating,
structured format for complex data – and it's easy
to process in CF!
• XML beats CSV hands down (duh!)
JMS has reduced latency in data processing and
improved the reliability of data transfers within
the enterprise
A hub'n'spoke architecture makes it easier to add
and replace systems without re-engineering
everything else
Conclusion (continued)
Building JMS-based applications can be a
complex, time-consuming process (and
unreliable on .NET!)
ColdFusion MX 7's event gateways make it easy
to build maintainable, robust asynchronous
applications
•
•
•
•
JMS publish & subscribe
Oracle AQ receive
DirectoryWatcher
Asynchronous CFML
Questions & Answers?
Sean A Corfield
Director of Architecture
Macromedia, Inc.
[email protected]
[email protected]