Before ColdFusion

nervousripSecurity

Nov 5, 2013 (3 years and 11 months ago)

74 views

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


B
efore
C
oldFusion...



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 (2003
-
2004)



BroadVision was finally gone


Some Perl forms remain (it ain't broke!)

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.

scorfield@macromedia.com

sean@corfield.org