The Joomlatools Platform is a modern Joomla stack that helps you get started with the best development tools and project structure.
Much of the philosophy behind the platform is inspired by the Twelve-Factor App methodology.
12. 6
Composer installer
$ cd /var/www
$ composer create-project joomlatools/platform
Install the Joomlatools Platform in a single command.
http://developer.joomlatools.com/platform/getting-started.html
18. 3
Config
Store config in environment using PhpDotEnv
“Can you make your repository open source today?”
http://developer.joomlatools.com/platform/environment-variables.html
20. 5
Build, release, run
Strictly separate build and run stages
Build
Release
Run
= codebase + dependencies + assets
= build + config
= execute, no code changes
http://developer.joomlatools.com/platform/12-factor-app.html#build-release-run
21. 5
Build, release, run
Release new builds using the Capistrano plugin:
$ joomla plugin:install joomlatools/console-capistrano
$ joomla capistrano:deploy myapp
https://github.com/joomlatools/joomla-console-capistrano
22. 6
Processes
● One or more processes run the app
● Stateless:
○ Sessions are stored in backing service (MySQL)
○ Sessions do not autostart
● App shares nothing with other processes
http://developer.joomlatools.com/platform/12-factor-app.html#processes
23. 7
Port Binding
Export services via port binding
● Application must be fully self-contained
● Accessible via a URL
● Run standalone or behind complex web server
$ php -S 127.0.0.1:8000 # Standalone at http://127.0.0.1:8000
http://developer.joomlatools.com/platform/12-factor-app.html#port-binding
24. 8
Concurrency
Scale out via the process model:
● Processes are a first class citizen
● HTTP requests handled by web process
○ Apache, PHP-FPM can scale up out of the box
● Managed by operating system’s process manager
http://developer.joomlatools.com/platform/12-factor-app.html#concurrency
25. 9
Disposability
Maximize robustness with fast startup, graceful shutdown
● New code can run right away
● No need for long restart of processes
● PHP-FPM, Apache automatically take care of this
http://developer.joomlatools.com/platform/12-factor-app.html#disposability
26. 10
Dev/prod parity
Keep development and production as similar as possible:
● Vagrant machine runs on any OS (Mac, Windows, Linux)
● Same stack across organisation: Ubuntu 14.04, PHP
5.6, Apache 2.4, MySQL 5.5
● Re-usable Puppet configuration
● Developer tools pre-installed
http://developer.joomlatools.com/platform/12-factor-app.html#devprod-parity
Joomlatools Vagrant box