ColdFusion Summit Notes: Where is ColdFusion headed? - Rakshith Naresh
October 17, 2016
Been hearing “is CF still alive?” for at least 10 years
“ColdFusion is the best undead language ever.”
(Not all these features are guaranteed to be in CF next)
Where is CF today?
What are the top “upgrade drivers?”
Things devs look for in a new version
Performance Improvements
Security Improvements
Language improvements
Platofrm support matrix upgrades
PDF enhancements
in CF2016
performance, 30% improvement overall
security - built in security code analyzer. can point out specific lines of code that should be changed
# of CF customers that expose APIs has increased
What is the value of API Manager
1 design your business objectives
2 design your API
3 code your api
4 secure your api
5 manage your api
6 engage developers
7 measure impact
What is CF’s role in this?
started just w/ the “code your API” piece
w/ new API manager, helps handle steps 3 thru 7
API Mgr gives CF a “leg up” on competitors
New API manager is platform agnostic, API does NOT have to be built in CF
can manage .NET or PHP APIs!
relevance of CF goes up
API Mgr
can handle 1 BILLION requests per day w/ extremely low latency (< 30ms)
CF Next (ColdFusion Aether)
implement a modern platform
leverage containerization via Docker
Provision micro-services architecture — split your app into individual services and scale them as needed
embrace devsecops - what are the details of your planning of devsecops
Accelerate digital transformation - via APIs
implement a modern platform
improve OO support
CFScript 2.0
Support for NULL
Mult-threading support
support for covariant return types
if a function returns “any” time, then more specific return types should be allowed
covariant for argument type
like return, covariant for arguments too
component baseclass
any function getName( any id ){}
in child class can do
class extends baseclass
string function getName( string id )
…get more specific than “any” when overloading the method
method overloading support
string function process( array a )
string function process( numeric n )
“abstract” keyword support
component abstract ala java
static keyword for
member variables
functions
every literal or expression is an object:
length = [ ‘a’, ‘b’, ‘c’].len();
rev = “abc”.rev();
additional member functions - relook at all the procedural functions that can be exposed as member functions
CFScript 2.0 —
<cfscript version=2> — “version=2” means it will be backward compatibility
version 1:
cfdbinfo( type=“tables”, name=“info” );
version 2:
info = dbinfo( “tables” );
Support for null —
in CF, empty string “” is considered undefined
interoperability issues with other tech - web services, etc
a null from JavaScript or database is serialized to “” (empty string)
introduce the null keyword
improved multi-thread support
already have cfthread, but don’t have “synchronized” keyword ala java
execute a task asynchronously
runAsync( cfc / closure );
runAsync( cfcobject, app_level_executor );
support for Atomic datatypes - atomic integer / boolean — from a multi-threading perspective
Containerization —
(1 level of abstraction over a VM)
Docker is the leader here
adoption for Docker is growing rapidly (up 30% in the last year)
Plan to provide official Docker images for CF 2016 and CF Next
Advantages -
continues deployment and testing - identical dev test prod setup
reduced upgrade and installation times
replicate - acros CF nodes
multi-cloud platforms - simplify portability
version control
isolation - apps running on its won stack within containers
security - segregation and isolation - hacks cannot propagate to other containers
Holistic approach to performance tuning —
perf tuning happens at 3 levels
1. web server / connector - auto tuner
2. application monitoring - JVM tuning or DB - server monitor
3. poor application performance - poor code quality, code profiler
Evaluate services separation
- smaller footprint for specific functionality
— if you don’t use PDF, can turn off PDF, etc.
support for distributed cache
Security
moving to devsecops
Tool to lockdown CF
current lockdown guide is manual. new tool will automate implementing the lockdown guide
Built in web application firewall
“plugin for the CF server itself”
(You can write PLUGINS for CF? Elaborate please?)
May already have a Firewall on your server, but you can have extra protection/benefits by also having one in the CF server itself too
Accelerate Digital Transformation —
Short tern strategy -
API Management -
perf,
security (don’t have thread protection or 2 way SSL yet)
API design - data transformation, multi-tenancy (various partners using the API, and each partner can get their own portal, etc)
Analytics - user engagement, API auditing
lots of this coming up new “update 3” later this year
longer term strategy -
SaaS and hybrid deployment models
Cloud connectors and orchestration
API Discovery and Marketplace