dont throwthatout

34
Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century by Cutter

Upload: coldfusionconference

Post on 03-Sep-2014

164 views

Category:

Software


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Dont throwthatout

Don't Throw That Out!Bringing Legacy ColdFusion Code In ToThis Century

by Cutter

Page 2: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

What's The Problem?

There are thousands of outdated applications

Millions of dollars and man hours went in to building these apps

Many never, or very infrequently, updated

Page 3: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

The Consequences

Poor Performance

Major Security Issues

Hard to Maintain

Difficult To Extend

Publicity Nightmare

Page 4: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Your Crossroads

Toss it for a COTS app

Toss it for a FOSS app

Write a new app in ColdFusion

Write a new app in “X”

Keep it, and modernize

Page 5: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Key Considerations

Availability of third party applications

Customizability of those third party apps

Learning Curve/Skill Set

Existing Data

Current Investment

LOE

Resources

Page 6: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

This Discussion

Here we discuss modernizing that existing application. Leveraging that previous investment and institutional knowledge with modern practices to continue to capitalize on what's already been created.

Page 7: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Key Requirements

A Plan Patience A Will To Succeed

Page 8: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Get Current

Modern OS

Modern Web Server

Modern Database Server

Modern Application Server (ColdFusion + Tomcat)

Hardware (?)

Virtual Machines (?)

Page 9: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Pitfalls Of Getting Current

Will require code changes

Might require SQL changes (and more code changes)

Costs - $ and man power

Will require regression testing

Page 10: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Some Suggested Tools

Version Control (Git, Subversion, etc)

Modern Editor/IDE (ColdFusion Builder, Brackets, Sublime Text, etc)

Redgate SQL Toolbelt

Application Firewall (FuseGuard?)

Profiling Tools (FusionReactor, SeeFusion, etc)

Page 11: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Pitfalls Of New Tools

Learning Curve

Costs - $ and man hours

Page 12: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Get Current (You Personally)

Get at least a basic understanding of the advancements/changes to the following

CFML/ColdFusion Server

SQL Server (whichever flavor you use)

Key Web Developer Competencies

HTML

CSS

JS

Author's Note: If you don't know these last three, you aren't a web developer

Page 13: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Revisiting The Crossroads

Are you still certain that refactoringis the most effective solution?

Page 14: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Let'sTalk

Code!

Page 15: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Map Your App

Understand the built-in application framework

Server.cfc

OnServerStart()

Application.cfc

Application, Session and Request Event Handlers

Application level error handling

Map out core event handling in each of the three key areas

Page 16: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Pitfalls Of Mapping Your App

Will require extensive application review

Will require extensive code changes

Costs – Many Man Hours

Will require extensive regression testing

Page 17: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Cover Yourself

SQL Injection

Cfqueryparam

Cfprocparam

ColdFusion Lockdown Guide

Application Firewall (FuseGuard?)

Page 18: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Pitfalls Of Covering Yourself

Will require extensive code changes

Will likely require server access

Costs - $ and Many Man Hours

Will require extensive regression testing

Page 19: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Scope It Out!

Explicitly declare ALL of them

Do so in small, testable, digestable chunks

Page 20: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Pitfalls Of Scoping

Will require extensive code changes

Costs – Many Man Hours

Will require extensive regression testing

Page 21: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

UnderstandingScope

Page 22: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Persistent Scopes

Server

Application

Session

Request

(Client)

Page 23: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Pass Along Scopes

URL

Form

Arguments

Attributes

(Request)

Page 24: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Pass Along Pitfalls

ThinkSecurity

Page 25: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Custom Tag Scopes

Attributes

Variables

ThisTag

Caller

(Request)

Page 26: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

CFC Scopes

This

Variables

Arguments

Local

Page 27: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Pitfalls of Tag and CFC Scopes

Pick Your BitsUse The Right Scope

For The Job

Page 28: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Other Scopes

CGI

Cookie

Thread

Built-In Unscoped Scopes

Query

CFFile

CFCatch

Etc

Page 29: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Retrieving Data

Profile

Analyze

Refactor

ORM? Or Not ORM?

Caching

Page 30: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Dynamic or Static

Cached Content

Generated Content

Page 31: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Beyond TheCode

Page 32: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Tune In

RAM Allocation

Garbage Collection Settings

Request Tuning

Queue Timeout

Network Infrastructure and Interface I/O

Pure Processing Power

Page 33: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

The Road Ahead

Stay On Course

Consider Frameworks

Process

Develop One

Document It

Stick To It

PLAN!

Page 34: Dont throwthatout

Cutter * Twitter: cutterbl * http://cutterscrossing.com

Don't Throw That Out! Bringing Legacy ColdFusion Code In To This Century

Read On

http://www.cutterscrossing.com/index.cfm/Legacy-Code

Cutter Site: http://cutterscrossing.com

Email: [email protected]

Twitter: cutterbl