take your cfml legacy apps to modernization
TRANSCRIPT
![Page 1: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/1.jpg)
A TALE OF LEGACY TO MODERNIZATION
![Page 2: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/2.jpg)
WHO AM I?
• Luis Majano - Computer Engineer
• El Salvador
• Texas
• Computer Engineer
• CEO of Ortus Solutions
• Creator of many boxes
www.ortussolutions.com@ortussolutions
@lmajano
![Page 3: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/3.jpg)
Story Time
You are still coding in that!
![Page 4: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/4.jpg)
ME @ 2013
tooling
engine roadmaps
ecosystem
CLI
Package Manager
Frustration
![Page 5: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/5.jpg)
CFML SHAMING
• Lack of tooling
• Package Management
• CLI
• OS Integrations
• Applications
• Legacy Hell
• Way behind the cool kids
![Page 6: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/6.jpg)
CFML TOOLING LANDSCAPE
Copy + Paste
![Page 7: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/7.jpg)
HOW DO WE MODERNIZE CFML?
![Page 8: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/8.jpg)
Vendors Cannot Do It All!
THE HARD REALITY
Make CFML HUUGE Great AGAIN!!
![Page 9: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/9.jpg)
Tooling
Community
Engine Portability
Containers
OUR FOCUS
Legacy Apps
![Page 10: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/10.jpg)
TOOLING
![Page 11: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/11.jpg)
CLI PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
ColdFusion Automation
3+ Years Now!
![Page 12: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/12.jpg)
Come On! Get with the program!
![Page 13: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/13.jpg)
COMMUNITY
•Newbie Initiatives•Documentation Priorities•ITB, ODW•All CFML Conferences•Non-CFML Conferences•API Implementations•Rollbar, github, bcrypt, S3, Google, freshbooks, twitter, salesforce, etc.
•Slack, blogs, webinars
![Page 14: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/14.jpg)
FORGEBOX.IO
CFML Repository438+ contributions
9 Releases in < 1 yearGrowing Features
Do you have an account?
![Page 15: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/15.jpg)
CONTAINERS
![Page 16: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/16.jpg)
CFML + CONTAINERS
• Eliminate Dev-Ops Headaches
• Increased Security
• Zero-Downtime Deployments
• Scaleability and Fault Tolerance
![Page 17: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/17.jpg)
DOCKERRun any CFML Engine
Run any WAR
Portable Server Settings
Portable CFML Engine Settings
Image Healthchecks
Secure Headless Modes
![Page 18: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/18.jpg)
DOCKERH2 DB or any RDBMS
Auto session distribution
Auto cache distribution
Redis/Couchbase
Headless Mode
![Page 19: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/19.jpg)
CFML Engines
PORTABILITY
![Page 20: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/20.jpg)
• Package any server with server.json
• Updating CF engine install is a non-issue
• Use multiple CF engines/versions at the same time
• New Docker images make it easy for cloud scaling
• CFConfig one tool to rule them all
$ docker pull ortussolutions/commandbox$ docker run -v "/path/to/your/app:/app" ortussolutions/commandbox
PORTABILITY
![Page 21: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/21.jpg)
BUT…..
![Page 22: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/22.jpg)
LEGACY PROBLEM
• Gives CFML a bad name
• Security Issues
• Performance Issues
• Employee Issues
• Development Issues
• Finding Developer Issues
![Page 23: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/23.jpg)
LEGACY PROBLEM
•>35% No MVC•>60% No DI•>55% No Testing
![Page 24: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/24.jpg)
CAN’T FIND DEVELOPERS!
• MVC Framework or spaghetti hell?
• OO or cfinclude hell?
• Automated Tests? Continuous Integration?
• Agile/Scrum Methodologies?
• Source Control? (Zip files don’t count!)
• Continuous Delivery? Container Strategy?
• Developer Automation?
![Page 25: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/25.jpg)
YOU NEED TO ACT!
• Drive innovation internally• Get out of legacy hell, modernize• Build cool apps, APIs, libraries• Collaborate with open source• Share in forgebox.io• Blog, present, share your knowledge• Proud of your CFML apps again!
![Page 26: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/26.jpg)
EVOLVE OR DIE!
![Page 27: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/27.jpg)
The end!!
![Page 28: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/28.jpg)
LEGACY PROBLEM
![Page 29: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/29.jpg)
PAST EXPERIENCES
![Page 30: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/30.jpg)
SPAGHETTI CODE (PROCEDURAL)
• Quick and dirty• Logic and display mixed together• Monolithic app design• No separation• Difficult to extend/scale
![Page 31: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/31.jpg)
OBJECT ORIENTED (OO) - WITH MEATBALLS
• Logic organized better• Service-oriented• Monolithic app design • Some separation• Difficult to scale
![Page 32: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/32.jpg)
MVC
• Separates layers of concerns• Helps enforce OO• Specialized team members• but….
• Layers are still tightly coupled
![Page 33: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/33.jpg)
N-TIER - MEXICAN CHALUPA
• Add more layers for organization• Layers are still tightly coupled• Still monolithic!
![Page 34: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/34.jpg)
ONCE YOUR APP GROWS….
• Complex real-life apps• Large “surface area”• So...much...code...• No one understands it all• Too big for one plate
// Don’t change this value, else things break.// Not sure how this works, don’t change.// Don’t remove this please, else nothing displays
![Page 35: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/35.jpg)
PERFORMANCE
![Page 36: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/36.jpg)
IF IT DOESN’T PERFORM……BIGGER HARDWARE!
![Page 37: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/37.jpg)
IF IT STILL DOESN’T…
…MORE HARDWARE!
![Page 38: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/38.jpg)
A FUNDAMENTAL CHANGE IN APPROACH OR UNDERLYING ASSUMPTIONS.
PARADIGM SHIFT:
MODERNIZE…
![Page 39: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/39.jpg)
CFML : EVOLVED
• Modularization (HMVC)
• Cohesion + Coupling
• Containerization
• Feature Maps
• Parallel Development
• Continuous Improvement
• Microservices
![Page 40: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/40.jpg)
MODULARITY TO THE RESCUE
• HMVC - Hierarchical MVC• Software Modules (ColdBox)• Break app into logical pieces
• Microservices• Drop-in functionality• Re-usable• Multi-team approach• Easier to distribute
![Page 41: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/41.jpg)
HMVC
![Page 42: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/42.jpg)
COHESION AND COUPLING
![Page 43: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/43.jpg)
REAL LIFE MIGRATION
ColdBox Platform
<3
![Page 44: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/44.jpg)
MODULE MAPS
ColdBox MVC 4I18n
Validation
JavaLoader
Mail Services
Debugger Security
AntiSamyORM
• 85% source code reduction• Rich eco-system• Less coupling• Higher cohesion• 35% performance improvements• Agile + Maintainable• Sanity
![Page 45: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/45.jpg)
MICROSERVICES
AN APPROACH TO DEVELOPING A SINGLE APPLICATION AS A SUITE OF SMALL SERVICES, EACH RUNNING IN ITS OWN PROCESS AND COMMUNICATING WITH LIGHTWEIGHT MECHANISMS.
Martin Fowler
![Page 46: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/46.jpg)
MICROSERVICES
• Make legacy code updates less intimidating
• Fewer resources required to maintain fault tolerance
• Versionable & maintainable• Short release cycles• Monolithic apps can be evolved piece
by piece
![Page 47: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/47.jpg)
MICROSERVICES
M CV
M CV
M CV
![Page 48: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/48.jpg)
PLATFORMS AS SERVICES (PAAS)
![Page 49: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/49.jpg)
NEW PARADIGM: ORCHESTRATION
> Less is more
> Applications as collections of independent parts
> Incremental upgrades and versioning in lieu of massive release cycles
![Page 50: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/50.jpg)
NEW PARADIGM: ORCHESTRATION
> Hardware Independence
> Platform independence
> Disposable instances: scale on-demand, teardown when demand decreases
![Page 51: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/51.jpg)
FORMULA FOR SUCCESS
MICROSERVICES
![Page 52: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/52.jpg)
STEP 1:Identify performance bottlenecks and pain points in your application
![Page 53: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/53.jpg)
STEP 2:Build, test, and deploy new microservices to address and deliver the functionality of your pain points
![Page 54: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/54.jpg)
STEP 3:Update endpoints in monolithic app to use new microservice endpoints
![Page 55: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/55.jpg)
STEP 4:Rinse and repeat, with additional bottlenecks and pain points
![Page 56: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/56.jpg)
TOOLSET
![Page 57: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/57.jpg)
HMVCREST
Dependency InjectionBDD
Continuous IntegrationDocker
![Page 58: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/58.jpg)
IN A…
![Page 59: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/59.jpg)
INSTEAD OF ONE BIG THING, DOING MANY THINGS…
ISOLATE
ALL THE THINGS!
![Page 60: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/60.jpg)
…WE DEVELOP MANY THINGS, EACH DOING ONE THING VERY, VERY WELL.
ISOLATE
ALL THE THINGS!
![Page 61: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/61.jpg)
IF WE DO THIS, ONE SMALL PIECE AT A TIME
![Page 62: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/62.jpg)
SOMEDAY SOON, THIS
![Page 63: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/63.jpg)
EVOLVES INTO TO THIS
![Page 64: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/64.jpg)
• Work is required• Renewed Creativity and Inspiration in Your Work• Sense of Accomplishment and Pride of Platform
( CFML! )• The REST if up to you!
NEW HORIZONS
![Page 65: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/65.jpg)
![Page 66: Take your CFML Legacy Apps to Modernization](https://reader034.vdocument.in/reader034/viewer/2022052606/5a66d3d77f8b9a3c0e8b57e9/html5/thumbnails/66.jpg)
The End!