take your cfml legacy apps to modernization

Post on 23-Jan-2018

728 Views

Category:

Software

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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!

top related