This GitHub repository contains an example of a Twelve-Factor application. This is the corresponding sample to the post on WASDev titled Creating a 12-factor application with WAS Liberty. It is a very simple application that was created to examine the characteristics of a Twelve-Factor application.
A Twelve-Factor application, as defined by 12factor.net, has characteristics that are ideal for developing individual microservices. To summarize briefly, a twelve-factor application:
- is stored in a single codebase, tracked in a version control system: one codebase, many deployments.
- has explicitly declared and isolated external dependencies
- has deployment-specific configuration stored in environment variables, and not in the code
- treats backing services (e.g. data stores, message queues, etc.) as attached/replaceable resources
- is built in distinct stages (build, release, run), with strict separation between them (no knock-on effects or cycles)
- runs as one or more stateless processes that share nothing, and assume process memory is transient
- is completely self-contained, and provides a service endpoint on well-defined (environment determined) host and port
- is managed and scaled via process instances (horizontal scaling)
- is disposable, with minimal startup, graceful shutdown, and toleration for abrupt process termination
- is designed for continuous development/deployment, with minimal difference between the app in development and the app in production
- treats logs as event streams: the outer/hosting environment deals with processing and routing log files.
- keeps one-off admin scripts with the application, to ensure the admin scripts run with the same environment as the application itself.
This sample contains a Twelve-Factor Application that can be run on WAS Liberty and Bluemix.
- Building and running this sample:
- on the command line
- using Eclipse and WebSphere Developer Tools
- Downloading WAS Liberty
- Creating a Cloudant database on bluemix
Once the server has been started, go to http://localhost:9082/12-factor-application/ to view the sample locally or the route of your application to view the sample being hosted on Bluemix.
© Copyright IBM Corporation 2015.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.