"In the modern era, software is commonly delivered as a service: called web apps, or software-as-a-service. The twelve-factor app is a methodology for building software-as-a-service apps. . . ." — https://12factor.net/ I. CodebaseOne codebase tracked in revision control, many deploys Tiki Wiki CMS Groupware ("Tiki") is tracked in two version control systems: Git and SVN (deprecated), currently Git is the default. Tiki uses the same codebase with different releases. A major branch is done only once per major version (4.x, 5.x, 6.x, etc.) about 4-6 weeks before the planned official release of x.0. For minor versions, the work is done in the current branch.
II. DependenciesExplicitly declare and isolate dependencies Tiki uses Composer to manage the dependencies. All dependencies are declared in vendor_bundled/composer.json and to extend some Tiki features it is possible to install via Packages using the UI, these additional dependencies are also managed by composer.
III. ConfigStore config in the environment Tiki does not store config as constants in the code and uses different environment files.
IV. Backing servicesTreat backing services as attached resources Tiki makes no distinction between local and third-party services. Tiki is able to swap out, for instance, SMTP service without code changes and local MySQL database by a third party using configuration files.
V. Build, release, runStrictly separate build and run stages Tiki strictly separates build and run stages storing new releases as <number>.x, for example, 22.x.
VI. ProcessesExecute the app as one or more stateless processes Tiki has data that needs to be persistent; however, that data is stored in a stateful backing service like database, Memcached or expiring sessions.
VII. Port bindingExport services via port binding Because Tiki uses PHP, probably the code is being executed using PHP-FPM which exposes a binding port to communicate with Apache/NginX.
VIII. ConcurrencyScale out via the process model Tiki does not rely on daemonize processes or write PID files, in fact it uses system processes to handle the requests and background tasks.
IX. DisposabilityMaximize robustness with fast startup and graceful shutdown For a web application like Tiki, this factor is achieved automatically, since PHP-FPM handles system signals like SIGTERM or QUIT out-of-the-box closing existing connections and refusing newer ones when the process stops.
X. Dev/prod parityKeep development, staging, and production as similar as possible Tiki uses continuous deployment, making the code being pushed and the production code almost identical and available to use by other developers. See: Sync Dev-Prod Servers XI. LogsTreat logs as event streams Tiki does not have a single log file that can be used as a stream, but depending on some tasks log files are created (like index rebuild) or other operations/actions are logged in the database as action logs, used to track user activity on the basis of a single user or multiple users, groups or categories. XII. Admin processesRun admin/management tasks as one-off processes Tiki offers administrative and maintenance tasks (see console.php), such as:
|