Skip to main content

Twelve Factors

Introduction
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 that:
  • Use declarative formats for setup automation, to minimize time and cost for new developers joining the project;
  • Have a clean contract with the underlying operating system, offering maximum portability between execution environments;
  • Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;
  • Minimize divergence between development and production, enabling continuous deployment for maximum agility;
  • And can scale up without significant changes to tooling, architecture, or development practices.
The twelve-factor methodology can be applied to apps written in any programming language, and which use any combination of backing services (database, queue, memory cache, etc).
Background
The contributors to this document have been directly involved in the development and deployment of hundreds of apps, and indirectly witnessed the development, operation, and scaling of hundreds of thousands of apps via our work on the Herokuplatform.
This document synthesizes all of our experience and observations on a wide variety of software-as-a-service apps in the wild. It is a triangulation on ideal practices for app development, paying particular attention to the dynamics of the organic growth of an app over time, the dynamics of collaboration between developers working on the app’s codebase, and avoiding the cost of software erosion.
Our motivation is to raise awareness of some systemic problems we’ve seen in modern application development, to provide a shared vocabulary for discussing those problems, and to offer a set of broad conceptual solutions to those problems with accompanying terminology. The format is inspired by Martin Fowler’s books Patterns of Enterprise Application Architecture and Refactoring.
Who should read this document?
Any developer building applications which run as a service. Ops engineers who deploy or manage such applications.
The Twelve Factors
One codebase tracked in revision control, many deploys
Explicitly declare and isolate dependencies
Store config in the environment
Treat backing services as attached resources
Strictly separate build and run stages
Execute the app as one or more stateless processes
Export services via port binding
Scale out via the process model
Maximize robustness with fast startup and graceful shutdown
Keep development, staging, and production as similar as possible
Treat logs as event streams
Run admin/management tasks as one-off processes


Comments

Popular posts from this blog

oracle.ohs.plugin.nodemanager.OhsProcessManagementPlugin$ProcessImpl buildIoException SEVERE: Failed to start the server ohs1 In New Installation of FMW 12.2.1.3 on Windows Server

Problem Summery: When we are trying start OHS instance it's failing with an error. Error: 29 Mar, 2018 10:30:22 PM IST> <INFO> <Server Implementation Class: weblogic.nodemanager.server.NMServer$ClassicServer.> <29 Mar, 2018 10:30:23 PM IST> <INFO> <Secure socket listener started on port 5556> <29 Mar, 2018 10:30:54 PM IST> <INFO> <base_domain> <ohs1> <Creating directory "F:\OHS\user_projects\domains\base_domain\system_components\OHS\ohs1\data\nodemanager"> Mar 29, 2018 10:30:54 PM oracle.ohs.plugin.nodemanager.OhsProcessManagementPlugin$ProcessImpl start INFO: Starting server ohs1 Mar 29, 2018 10:30:55 PM oracle.ohs.plugin.nodemanager.OhsRunCommand execute INFO: Running F:\OHS\ohs\bin\launch.exe F:\OHS\ohs\bin\httpd.exe -DOHS_MPM_WINNT -d F:/OHS/user_projects/domains/base_domain/config/fmwconfig/components/OHS/instances/ohs1 -f F:\OHS\user_projects\doma ins\base_domain\config\fmwconfig\c...

Node Manager Username and Password for Oracle HTTP Server 12c in a Standalone Domain

Start the Ohs Instance for 12C F:\OHS\user_projects\domains\base_domain\bin>stopComponent.cmd ohs1 Step:1 Stop the OHS component F:\OHS\user_projects\domains\base_domain\bin>stopComponent.cmd ohs1 Stopping System Component ohs1 ... Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands Reading domain from F:/OHS/user_projects/domains/base_domain Please enter Node Manager password: Connecting to Node Manager ... Successfully Connected to Node Manager. Killing server ohs1 ... Successfully killed server ohs1 Successfully disconnected from Node Manager. Exiting WebLogic Scripting Tool. Done Step:2   Invoke WLST offline F:\OHS\oracle_common\common\bin>wlst.cmd Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands wls:/offline> Step:3 Conne...

Avoid password prompt when using startComponent.sh to start OHS 12c

Step:1 Start Ohs With Password Prompt F:\OHS\user_projects\domains\base_domain\bin>startComponent.cmd ohs1 Starting system Component ohs1 ... Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands Reading domain from F:/OHS/user_projects/domains/base_domain Please enter Node Manager password: Connecting to Node Manager ... Successfully Connected to Node Manager. Starting server ohs1 ... Successfully started server ohs1 ... Successfully disconnected from Node Manager. Exiting WebLogic Scripting Tool. Done Step:2 Store the password for avoid ohs password F:\OHS\user_projects\domains\base_domain\bin>startComponent.cmd ohs1 storeUserConfig Starting system Component ohs1 ... Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands Reading domain from F:/OHS/u...