Mark Drew talks about “Planning for CFML ISP disaster (Commandbox and Docker to the rescue)” in this episode of ColdFusion Alive podcast with host Michaela Light.
"Challenge, a current client was planning for Disaster Recovery environments but disaster nearly struck due to the requirement of the ISP to move the servers!"
Show notes
Funtimes in deploying real projects
“Your mission, Mark, should you decide to accept it, is… As usual, should you or any member of your I.M. Force be captured or killed, the secretary will disavow any knowledge of your existence. This tape will self-destruct in five seconds. Good luck, Mark.”
Background:
Real client that is moving from big hosted tin to a more elastic solution
Temporal variations in requirements. ASide from busy seasons we have Weekends!
All the environments were different too. So we needed a way to have *SOME* standardization
Vagrant vs Single instances vs Clusters, Railo vs Lucee
5 instances per machine
5 machines
Dedicated across clients
Range of different machines such as windows , linux, PHP, Java and even InDesign running batch scripts.
Started out as a disaster recovery project but as ISP needed to move the client out it has turned into a full cloud implementation
Several Terabytes of image files for example
Build Workflow
Providers
Gitlab
Can script deployment pipelines
Jenkins
Issue can not script your deployment process
Bitbucket
Stages
CommandBox Pre-Commit Hooks
Testbox
Cflint
Docker image creation successful
CommandBox Post commit builds
External testing
Load testing
JMeter
Submitting to your docker repository
Different docker images?
Test vs Normal
2. Docker Server Monitor
Fusion Reactor and FusionReactor Cloud by Integral
3. Artefact Caching
Build times
4. Logging
Getting the right data
ELK (The Open Source Elastic Stack)
ElasticSearch
Logstash
Kibana
JournalD
5. Configs Live/Dev/Test
6. Central Session Storage
CFConfig (CommandBox feature)
Servers Environment Variables (Production etc)
Generic names eg database for db server
Resource domain names
Create Aliases for them
Handle them with hosts files
memcached/redis to store sessions
7. Load Balancing and Orchestration
Round Robin load balancing
Portainer
Kubernetes
Docker Compose and Swarm
Elastic Container Service AWS
8. Data Changes / Workflow
Some solutions:
CFMigrations - Eric Peterson
Versioning of database
QueryBuilder (Fluent Query Builder for CFML) - Eric Peterson
Currently using hand crafted SQL files (can be run multiple times)
First time alters the columns
Second time updates data
9. Dependency Trees of Docker
CommandBox handles this
10. Hard Stuff
Only one copy of each Scheduled Tasks runs
Canary Deployments
Green Blue Deployments
Service Url for health of the app.
Why are you proud to use CFML?
WWIT for you to make CFML more alive this year?
What are you looking forward to at ITB?
His podcast Localhost.fm
Mentioned in this episode
Mission Impossible Intro
Gitlab
Jenkins
Bitbucket
Testbox
cflint
CommandBox
Docker
CF Alive Docker episodes
Getting Started Fast with Docker, with Mark Drew
Secrets From the Folks Who Make the Official Lucee CFML Docker Images, with Geoff Bowers
Using Portainer.io (Docker Container Management) with Neil Cresswell
066 The Docker Revolution for Faster ColdFusion Development (and Easier DevOps) with Bret Fisher
071 ContentBox in the Cloud (Docker Magic) with Gavin Pickin
JMeter