Note: This blog post is from 2019. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.There's great news coming regarding Adobe ColdFusion 2020, with regard to deployment of CF via Docker images and/or in the cloud.
Adobe's Director of Engineering for CF, Ashish Garg, recently held a wide-ranging interview with Michaela Light (on the CF Alive podcast) about the CF2020 roadmap. Ashish shared news of some substantial changes planned in the next release regarding modularity in the engine, the size of installers/containers, and their startup time, as well as matters like licensing of containers, logging within them, monitoring of them, and more.
Of course, it's very early in planning, but Ashish did share some pretty compelling specifics about their sincere plans and goals to dramatically improve things regarding modern deployment.
The hour-long interview covered a large number of topics, and it's available as a youtube video (talking heads only, no screenshare), and/or you can find some supporting slides and links at the podcast episode page. That episode page (and the youtube episode notes) also lists out brief bullet points of the dozens of topics covered. Finally, the episode page even has link to the complete transcript of the interview (26 pages, if converted to a PDF).
But I want to focus in this post on the specific matters I mention above, regarding container deployment. I offer below some quotes from Ashish, as well as the time marks (within the interview). First, though, I start with a brief reminder of what's currently possible regarding CF deployment in Docker and the cloud, to set the stage for what's coming.
What's currently possible about CF deployment on Docker, and the cloud
If you didn't know, CF already can be deployed in the cloud and as containers (and via orchestration, including Kubernetes). This was mentioned briefly by Michaela, though referring to resources (on the episode page) which discuss only deployment of CFML on Docker via either Lucee or the Ortus CommandBox Docker image (which supports CF or Lucee).
But what wasn't mentioned and doesn't get as much attention is that Adobe also has Docker images of CF, for CF2018 and CF2016, available since early 2018. I discuss these images more in another blog post here.
Either way, there have been rather severe challenges with deploying CF in containers, especially regarding Adobe's licensing of CF for containers (which is free for development but constricted for production, as I have discussed elsewhere ). Another challenge is the Adobe CF Docker image size: it is currently several hundreds meg in size and startup can take a minute or more (and the Commandbox CF image/war file, though smaller, is still 300m, so it would benefit also from improvements in modularity by Adobe).
While the current images work well for many for development and even production deployments, the news shared here about CF2020 is VERY encouraging and should allow still-wider adoption of CF Docker images.
Finally, as for licensing of CF "in the cloud", the CF2018 EULA spells out facets of that (as well as virtual machines), but again it's quite constricted for modern production deployment. And as is discussed briefly in the interview, there has also long been an Amazon/AWS AMI (machine image) for CF Enterprise, which is used by many but also has challenges. Again it would seeming that AMI will aslo be enhanced by these upcoming changes.
Some prefatory discussion of cloud deployment in general
Back to the interview, I will note that until about @19:39, most of the introduction was more about cloud deployment in general, setting the stage--especially perhaps for those who are only starting to make that journey.
Most of what I am highlighting below is content that came later in the interview, at various points. I don't present them here in the order that they appeared, but in the order that seems most significance to this post: better deployment of CF on Docker/containers in particular and the cloud in general.
Again, recall that what follows are early discussions of plans, so they are sometimes light on specifics and of course we can't hold Adobe to implementing them. Still, it's good to hear of the early plans, and most were indicated to be targeted specifically for CF2020.
Coming: better licensing for containers/cloud (@26:49-28:50)
Ashish thankfully did address the "elephant in the room", the all-important question about cloud/container licensing., as I alluded to above (where I pointed also to a specific resource with more detail on the current situation).
After Michaela setup the question, Ashish then answered (@27:37):
"When CF2020 comes out, it will have the right licensing which is suited for the cloud environment, because whatever else we do it will defeat the purpose". He was speaking there of other plans to improve cloud deployment in CF2020, which had been discussed earlier in the podcast. And after some other clarifications, he added that this licensing change was "one of the key pillars of making CF2020 successful" and indeed, "a key requirement from our [engineering] side".It will be VERY interesting to hear the details about this as they emerge. (And yes, some would want to point out that Lucee is already free even for production. There's a place for both engines, and the focus of this post and that interview is about Adobe's plans regarding CF.)
Coming: reduced image/installer size and startup time (@37:55-48:20)
Ashish later talked about the OTHER elephant in the room (the large size of CF containers installers, as I mentioned above). He indicated planned changes and considerations regarding modularization of the CF engine. This discussion when on for about 10 minutes, regarding the hope of dividing CF into modules that are assembled and only pull in what is needed for your code, breaking things into a core and modules.
As for what especially caught my attention, regarding containers (and scalable deployment), note specifically that he said (@45:55-47:00):
"The goal for...the core runtime is ...we imagine that it could be somewhere like 100 to 150mb", though he added that they are still evaluating and think they could make it even smaller. But he noted that "for normal functionality, everything should be less than 250mb". As important, he indicated that the goal would be that "it should start in maybe 5 seconds or less".He also referred to how this improved deployment model (and package management) will also tie in well with CI/CD tools (@48:20-48:50).
(And yes, let me acknowledge to Lucee fans who would want to note it, it has supported that with its OSGI-based approach since Lucee 5.)
Coming: improved command-line/declarative Admin/configuration (@49:00-49:40)
Michaela pressed Ashish on plans for better command-line/declarative configuration of new containers, etc., and Ashish confirmed there are indeed plans to improve things, though no specifics were mentioned.
FWIW, though not discussed in the interview, it's already possible now to script CF Admin configuration, using the Admin API, but that is indeed code-oriented.
And though CF2016 added command-line execution of CFML, and the Adobe CF Docker images already provide for other means to automate configuration (such as auto-deployment of CAR files, if placed in an expected location). Still, there is indeed room for improvement for better command-line or declarative configuration
Along the same lines, Ashish later hinted at plans for better/centralized deployment of configuration across instances/containers (@58:20-59:15), which is very good news.
Other topics covered
Again, it was a wide-ranging hour-long interview, but cherry-picking the topics that I think were most relevant to the topic of this post, Ashish also discussed plans for:
- better management of monitoring across instances/containers (@29:20-33:45)
- better management of logging with them (@33:45-35:50)
- improvement regarding serverless/lambda functions (@59:15-1:01:00)
- hope of additional integration with cloud-based services like nosql, caching, messaging, and notifications (@55:30-58:20).
- plans to better support hybrid/multi-cloud deployment, which may appeal to some regarding their deployment flexibility (@19:39-26:40, just after the introduction)
I'll leave you to listen to those segments (or read the transcript) to hear more.
Along the way, Ashish also hinted at a "cfscript 2.0", with the intent to make cfscript more well-suited to polyglot programmers (@49:50-55:30), though of course CF will still support traditional cfscript. Finally, Ashish also discussed the API Manager (@35:50-37:40), for those interested in hearing a bit more about that.
But those are not really specific to the deployment topics that I wanted to highlight here in this post. Again, check out the podcast episode notes and youtube video description for more of the many other topics covered in the interview.
More to be shared at CF Summit
That's all very encouraging news, and we can look forward to more info to be shared by Adobe at the upcoming Adobe CF Summit, if not sooner.
As for better understanding deployment of Adobe's CF Docker images, I will conclude by pointing out that I will be presenting both an hour-long session on getting started with them, as well as a day-long pre-conference session that will go into more detail (and go beyond the Adobe CF images alone).
To be clear, my talks and session are for now based solely on what's possible today. I am hearing the details of this planning for CF2020 for only the first time. (Some of it was hinted at in the CF Summit East, but not enough that I felt I could quote it like the above info.) If there are early releases of anything new before October, I will of course try to fold in demonstration of those also. But nearly all the information I am currently planning to present should apply fully into the future, even with the planned changes. Either way, I will be laying the groundwork for getting into deployment of CF on containers and via orchestration, in such a way that will benefit even those who are entirely new to the topic.
All that said, I am definitely very encouraged to hear this news of more specific plans to make the prospect more appealing, from the perspective of licensing, performance, configuration, and more.
For those who maybe have held off considering (or were discouraged about the prospect of) deployment of CF on Docker, now's indeed a great time to be "getting on the train". :-)
For more content like this from Charlie Arehart:
Need more help with problems?
- Signup to get his blog posts by email:
- Follow his blog RSS feed
- View the rest of his blog posts
- View his blog posts on the Adobe CF portal
- If you may prefer direct help, rather than digging around here/elsewhere or via comments, he can help via his online consulting services
- See that page for more on how he can help a) over the web, safely and securely, b) usually very quickly, c) teaching you along the way, and d) with satisfaction guaranteed