Upload
ortus-solutions-corp
View
728
Download
4
Embed Size (px)
Citation preview
A TALE OF LEGACY TO MODERNIZATION
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
Story Time
You are still coding in that!
ME @ 2013
tooling
engine roadmaps
ecosystem
CLI
Package Manager
Frustration
CFML SHAMING
• Lack of tooling
• Package Management
• CLI
• OS Integrations
• Applications
• Legacy Hell
• Way behind the cool kids
CFML TOOLING LANDSCAPE
Copy + Paste
HOW DO WE MODERNIZE CFML?
Vendors Cannot Do It All!
THE HARD REALITY
Make CFML HUUGE Great AGAIN!!
Tooling
Community
Engine Portability
Containers
OUR FOCUS
Legacy Apps
TOOLING
CLI PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
ColdFusion Automation
3+ Years Now!
Come On! Get with the program!
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
FORGEBOX.IO
CFML Repository438+ contributions
9 Releases in < 1 yearGrowing Features
Do you have an account?
CONTAINERS
CFML + CONTAINERS
• Eliminate Dev-Ops Headaches
• Increased Security
• Zero-Downtime Deployments
• Scaleability and Fault Tolerance
DOCKERRun any CFML Engine
Run any WAR
Portable Server Settings
Portable CFML Engine Settings
Image Healthchecks
Secure Headless Modes
DOCKERH2 DB or any RDBMS
Auto session distribution
Auto cache distribution
Redis/Couchbase
Headless Mode
CFML Engines
PORTABILITY
• 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
BUT…..
LEGACY PROBLEM
• Gives CFML a bad name
• Security Issues
• Performance Issues
• Employee Issues
• Development Issues
• Finding Developer Issues
LEGACY PROBLEM
•>35% No MVC•>60% No DI•>55% No Testing
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?
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!
EVOLVE OR DIE!
The end!!
LEGACY PROBLEM
PAST EXPERIENCES
SPAGHETTI CODE (PROCEDURAL)
• Quick and dirty• Logic and display mixed together• Monolithic app design• No separation• Difficult to extend/scale
OBJECT ORIENTED (OO) - WITH MEATBALLS
• Logic organized better• Service-oriented• Monolithic app design • Some separation• Difficult to scale
MVC
• Separates layers of concerns• Helps enforce OO• Specialized team members• but….
• Layers are still tightly coupled
N-TIER - MEXICAN CHALUPA
• Add more layers for organization• Layers are still tightly coupled• Still monolithic!
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
PERFORMANCE
IF IT DOESN’T PERFORM……BIGGER HARDWARE!
IF IT STILL DOESN’T…
…MORE HARDWARE!
A FUNDAMENTAL CHANGE IN APPROACH OR UNDERLYING ASSUMPTIONS.
PARADIGM SHIFT:
MODERNIZE…
CFML : EVOLVED
• Modularization (HMVC)
• Cohesion + Coupling
• Containerization
• Feature Maps
• Parallel Development
• Continuous Improvement
• Microservices
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
HMVC
COHESION AND COUPLING
REAL LIFE MIGRATION
ColdBox Platform
<3
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
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
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
MICROSERVICES
M CV
M CV
M CV
PLATFORMS AS SERVICES (PAAS)
NEW PARADIGM: ORCHESTRATION
> Less is more
> Applications as collections of independent parts
> Incremental upgrades and versioning in lieu of massive release cycles
NEW PARADIGM: ORCHESTRATION
> Hardware Independence
> Platform independence
> Disposable instances: scale on-demand, teardown when demand decreases
FORMULA FOR SUCCESS
MICROSERVICES
STEP 1:Identify performance bottlenecks and pain points in your application
STEP 2:Build, test, and deploy new microservices to address and deliver the functionality of your pain points
STEP 3:Update endpoints in monolithic app to use new microservice endpoints
STEP 4:Rinse and repeat, with additional bottlenecks and pain points
TOOLSET
HMVCREST
Dependency InjectionBDD
Continuous IntegrationDocker
IN A…
INSTEAD OF ONE BIG THING, DOING MANY THINGS…
ISOLATE
ALL THE THINGS!
…WE DEVELOP MANY THINGS, EACH DOING ONE THING VERY, VERY WELL.
ISOLATE
ALL THE THINGS!
IF WE DO THIS, ONE SMALL PIECE AT A TIME
SOMEDAY SOON, THIS
EVOLVES INTO TO THIS
• 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
The End!