Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ITB2019 Scaling with CommandBox in Production! - Brad Wood


Published on

There are a lot of new trends when it comes to how you can deploy your servers. From AWS, to Docker, or perhaps you just want a faster way to stand up new VMs. The common thread among all of these comes down to automation! CommandBox is the kingpin in being able to automated every piece of a ColdFusion or Lucee server setup so you can get stable, repeatable builds every time. CommandBox isn't just for developers though. It's a rock solid server built on JBoss Undertow that can handle any production load. Come learn some tricks and features to leverage CommandBox for your production servers whether it's Docker, or a managed cluster of your own.

Published in: Technology
  • God bless you Ted. You saved me tons of money. I almost went to bought an overpriced side table until I saw your plans. Thanks for all the great ideas. It's gonna keep me occupied for a long time :) ★★★
    Are you sure you want to  Yes  No
    Your message goes here
  • Free Shed Plans, 12000 SHED PLANS. FREE SHED PLANS CLICK HERE ✄✄✄
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

ITB2019 Scaling with CommandBox in Production! - Brad Wood

  1. 1. CF to production... CommandBox,CFConfig,Docker Now with 200% more productivity
  2. 2. Servers as pets/cattle
  3. 3. Deploying your site anywhere should be: ● Automated ● Repeatable ● Easy
  4. 4. Three pillars of your servers are: ● CF Engine/version ● CF Config (mappings/datasources) ● Your code (CFML)
  5. 5. You shouldn’t need to: ● Download anything ● Run an installer ● Log into a Web UI to enter settings ● Run updaters to get the latest version ● Wonder if this server/PC is the same as all the others ● Take days or weeks to provision a new server
  6. 6. CF Engine/version CommandBox Servers and server.json
  7. 7. Start your servers! ● Choose your engine (Adobe,Lucee,custom) ● Choose your version ● Automatically get updates server start server start cfengine=adobe@11 server restart
  8. 8. Server.json ● Heap size ● JVM args ● Java version ● Ports/HTTP(S)/AJP ● Virtual directories ● Much,much,more... ● Commit to repo to share with team
  9. 9. IIS Connector (Boncode) ● ●
  10. 10. Windows Service (NNSM) ● NSSM -the Non-Sucking Service Manager ● ●
  11. 11. CF Config Configs all the CF things
  12. 12. Manages everything in the CF administrator ● Datasources ● Caches ● CF Mappings ● Debugging/security settings ● Lockdown ● Scheduled tasks ● Mail server(s)
  13. 13. CLI Interface ● Scriptable ● Automatable ● Tab completion! cfconfig show cfconfig set cfconfig export cfconfig import cfconfig transfer cfconfig diff
  14. 14. JSON storage ● Makes all these settings portable ● Generic across CF engines ● Can have more than one json file if needed ● Auto-import on server start ● Commit to repo to share with team
  15. 15. Your code CFML of course!
  16. 16. Keep your code self-contained ● Environment detection ○ Dev,stage,prod,etc ● Externalize settings ○ Env vars ● Use CF Mappings for portability ○ /root ● Use source control (duh!)
  17. 17. Use box.json for dependencies ● Define 3rd party frameworks/libraries ● Describes dependencies of your app not in source control ● Can dial in exact versions or version ranges with semver ● Pull in with“box install”to“build out”code ● For a production build,use“install --production”
  18. 18. Environment Variables Java System props work too
  19. 19. Environment variables ● Used to externalize settings that are different per server/tier ● Used to secure sensitive settings like passwords ● The standard in cloud deployments ● Can also be Java System properties
  20. 20. Environment variables ● Can be used in CommandBox CLI and JSON files via ${ENV_NAME:default} ○ server.json ○ .cfconfig.json ○ box.json ● Built into Lucee’s“server”scope ● Built into ColdBox 5 configs ● Easily access via CFMLvia Java
  21. 21. ● CommandBox dotenv module to load from.env file ○ ○ install commandbox-dotenv ● Looks for a.ENV file and loads it ● Don’t commit this file to source control ● Nice for local devs to have custom settings Environment variables
  22. 22. Destination: Happy Place Wrap up an entire website server, config, and code in your source repo with the code and a few JSON files
  23. 23. ● Built-in FusionReactor support ○ ○ install commandbox-fusionreactor ● Allows you easily configure ○ Licensing ○ Cloud setting ○ FR web admin password FusionReactor Module
  24. 24. ● Adds“fake”domains to your host file for you ○ ○ install commandbox-hostupdater ● Allows you easily configure ○ Requires elevated privileges on some OSes ○ Auto-removes on“server forget” ○ Uses unique local IP for each server so ports can be re-used Host Updater Module
  25. 25. Any dev can spin up a complete server in seconds with three commands: $> git clone $> box install $> box server start New Employee Onboarding Process
  26. 26. Docker All aboard the party boat...
  27. 27. ● Servers as cattle ● The ultimate in encapsulated server deploys ● Super lightweight ● Super fast to deploy Docker
  28. 28. ● On Docker Hub ● ● All previous CommandBox/CFConfig features apply to Docker ● Server.json gets picked up ● CFConfig gets bundled ● Install dependencies from box.json ● Do a warmup step in your build so everything is ready to go Ortus CommandBox-based Docker Image
  29. 29. docker run -p 8080:8080 -p 8443:8443 -v "/path/to/your/app:/app" ortussolutions/commandbox Ortus CommandBox-based Docker Image
  30. 30. ● Tons of env vars available ○ PORT / SSL_PORT ○ cfconfigfile ○ cfconfig_[engine setting] ○ HEADLESS ○ BOX_INSTALL ○ URL_REWRITES ● Support for Docker Secrets Ortus CommandBox-based Docker Image