SlideShare a Scribd company logo
12 Factor App Methodology
Laeshin Park
laeshiny@gmail.com
Table of Content
• About Me
• What is 12 Factor App
• Summary
• 12 Factor App Check List
About Me
• Interesting in Cloud Native
• This kind of methodology is new to me
What is 12 Factor App?
• Methodology for building software-as-a-service in the Cloud

Recommended for you

Prometheus-Grafana-RahulSoni1584KnolX.pptx.pdf
Prometheus-Grafana-RahulSoni1584KnolX.pptx.pdfPrometheus-Grafana-RahulSoni1584KnolX.pptx.pdf
Prometheus-Grafana-RahulSoni1584KnolX.pptx.pdf

In this session, we will see how we can monitor our applications & cloud resources performance from dashboards and will setup alerts.

devopsmonitoring
OpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdfOpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdf

This document provides an overview of OpenShift Container Platform. It describes OpenShift's architecture including containers, pods, services, routes and the master control plane. It also covers key OpenShift features like self-service administration, automation, security, logging, monitoring, networking and integration with external services.

OpenShift 4 installation
OpenShift 4 installationOpenShift 4 installation
OpenShift 4 installation

Red Hat OpenShift 4 allows for automated and customized deployments. The Full Stack Automation method fully automates installation and updates of both the OpenShift platform and Red Hat Enterprise Linux CoreOS host operating system. The Pre-existing Infrastructure method allows OpenShift to be deployed on user-managed infrastructure, where the customer provisions resources like load balancers and DNS. Both methods use the openshift-install tool to generate ignition configs and monitor the cluster deployment.

openshift4openshiftkubernetes
Who wrote?
• http://12factor.net
• Manifesto written around 2012
• by Adam Wiggins (Heroku, co-founder)
For Who?
• Any developer building applications which run as a service.
• Ops engineers who deploy or manage such applications.
What is good?
• Minimize time and cost for new developers joining the project.
• Offer maximum portability between execution environments.
• Enable continuous deployment for maximum agility.
• Obviate the need for servers and systems administration.
• Can scale up without significant changes to tooling, architecture,
or development practices.
How?
• Use declarative formats for setup automation.
• Have a clean contract with the underlying operating system.
• Minimize divergence between development and production.

Recommended for you

Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShiftKubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift

Administrators and developers are increasingly seeking ways to improve application time to market and improve maintainability. Containers and Red Hat® OpenShift® have quickly become the de facto solution for agile development and application deployment. Red Hat Training has developed a course that provides the gateway to container adoption by understanding the potential of DevOps using a container-based architecture. Orchestrating a container-based architecture with Kubernetes and Red Hat® OpenShift® improves application reliability and scalability, decreases developer overhead, and facilitates continuous integration and continuous deployment. In this webinar, our expert will cover: An overview of container and OpenShift architecture. How to manage containers and container images. Deploying containerized applications with Red Hat OpenShift. An outline of Red Hat OpenShift training offerings.

devopsdevops.comdevops webinars
OpenShift Overview
OpenShift OverviewOpenShift Overview
OpenShift Overview

OpenShift cloud technology high-level overview given at the Athens Area Software Developer Meet-up in Athens, Georgia, January 2014.

openshiftcloud
Docker introduction
Docker introductionDocker introduction
Docker introduction

Docker is a system for running applications in isolated containers. It addresses issues with traditional virtual machines by providing lightweight containers that share resources and allow applications to run consistently across different environments. Docker eliminates inconsistencies in development, testing and production environments. It allows applications and their dependencies to be packaged into a standardized unit called a container that can run on any Linux server. This makes applications highly portable and improves efficiency across the entire development lifecycle.

lxcdockercontainers
How?
• I. Codebase
• II Dependencies
• III. Config
• IV. Backing services
• V. Build, release, run
• VI. Processes
• VII. Port binding
• VIII. Concurrency
• IX. Disposability
• X. Dev/prod parity
• XI. Logs
• XII. Admin processes
I. Codebase
• One codebase tracked in revision control, many deploys
• VCS(Version Control System): subversion, git, ...
I. Codebase
I. Codebase
• Demo
• Git
• https://github.com/laeshiny/12factorapp

Recommended for you

Red Hat Openshift Fundamentals.pptx
Red Hat Openshift Fundamentals.pptxRed Hat Openshift Fundamentals.pptx
Red Hat Openshift Fundamentals.pptx

Here are the key steps to create an application from the catalog in the OpenShift web console: 1. Click on "Add to Project" on the top navigation bar and select "Browse Catalog". 2. This will open the catalog page showing available templates. You can search for a template or browse by category. 3. Select the template you want to use, for example Node.js. 4. On the next page you can review the template details and parameters. Fill in any required parameters. 5. Click "Create" to instantiate the template and create the application resources in your current project. 6. OpenShift will then provision the application, including building container images if required.

Speeding up your team with GitOps
Speeding up your team with GitOpsSpeeding up your team with GitOps
Speeding up your team with GitOps

Slides of talk given at London Study of Enterprise Agile Meetup in June 2019. We go over GitOps and how it affects delivery speed in software development and release.

gitopsweaveworksweave flux
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker

Docker allows applications to be packaged with all their dependencies and run consistently across computing environments. It provides isolation, security and portability for applications. This document discusses setting up an Eh Avatar application to run in Docker containers for Postgres, Redis and the application itself. It covers bringing up the dependency containers, building a custom Docker image for the application, and using Docker Compose to define and run the multi-container application. While this provides an introduction, there is still more to learn about optimizing Docker usage and avoiding common pitfalls.

II. Dependencies
• Explicitly declare and isolate dependencies
• Never rely on implicit existence of system-wide packages
• Do not rely on the implicit existence of any system tools
• Example: curl
II. Dependencies
• Python
• Virtualenv
• Ruby
• Gemfile
• Demo
How to handle Dependencies
III. Config
• Resource handles to the database, Memcached, and other backing
services
• Credentials to external services such as Amazon S3 or Twitter
• Per-deploy values such as the canonical hostname for the deploy
• Everything that is likely to vary between deploys (staging,
production, developer environments, etc)
What is config?
III. Config
• “config” does not include internal application config
• Use config files which are not checked into revision control
• You can make your project open source
• Stores config in environment variables!!!!
How to handle config

Recommended for you

Introduction to Red Hat OpenShift 4
Introduction to Red Hat OpenShift 4Introduction to Red Hat OpenShift 4
Introduction to Red Hat OpenShift 4

Red Hat is a leading provider of open source solutions, founded in 1993. It was acquired by IBM in 2019 for $34 billion. Red Hat's flagship products are Red Hat Enterprise Linux and OpenShift, an enterprise Kubernetes platform. OpenShift provides a full platform for developing, hosting, and managing containerized applications, and includes additional services beyond just Kubernetes. It offers advantages for security, automation, and developer experience compared to managing raw Kubernetes. Operators are an innovative approach in OpenShift to package and automate application logic using Kubernetes as the automation engine.

DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction

DevOps is a software engineering culture and practice that aims to unify software development (Dev) and software operation (Ops) teams. The main goals of DevOps are to achieve shorter development cycles, increased deployment frequency, and more dependable releases that are closely aligned with business objectives. DevOps advocates for the automation and monitoring of all steps in the software development process, from integration and testing through release, deployment, and infrastructure management.

devopsagilemettje
Prometheus 101
Prometheus 101Prometheus 101
Prometheus 101

Prometheus is an open-source monitoring system that collects metrics from instrumented systems and applications and allows for querying and alerting on metrics over time. It is designed to be simple to operate, scalable, and provides a powerful query language and multidimensional data model. Key features include no external dependencies, metrics collection by scraping endpoints, time-series storage, and alerting handled by the AlertManager with support for various integrations.

prometheusmonitoringopsguru
III. Config
• Demo
• python code
IV. Backing services
• Any service the app consumes over the network as part of its
normal operation.
What is Backing services?
IV. Backing services
• locally-managed services,
• datastores : MySQL or CouchDB
• messaging/queueing systems : RabbitMQ or Beanstalkd
• SMTP services : Postfix
• caching systems : Memcached or Redis
• third parties managed
• SMTP services : Postmark
• metrics-gathering services : New Relic or Loggly
• binary asset services : Amazon S3
• API-accessible consumer services : Twitter, Google Maps, or Last.fm.
What is Backing services?
IV. Backing services
• Makes no distinction between local and third party services
• Treat backing services as attached resources
How to handle Backing service

Recommended for you

Infrastructure & System Monitoring using Prometheus
Infrastructure & System Monitoring using PrometheusInfrastructure & System Monitoring using Prometheus
Infrastructure & System Monitoring using Prometheus

The document introduces infrastructure and system monitoring using Prometheus. It discusses the importance of monitoring, common things to monitor like services, applications, and OS metrics. It provides an overview of Prometheus including its main components and data format. The document demonstrates setting up Prometheus, adding host metrics using Node Exporter, configuring Grafana, monitoring Docker containers using cAdvisor, configuring alerting in Prometheus and Alertmanager, instrumenting application code, and integrating Consul for service discovery. Live code demos are provided for key concepts.

prometheus monitoring infrastructure
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD

When DevOps talks meet DevOps tactics, companies find that Continuous Integration is the make or break point. And implementing CI is one thing, but sustainable CI takes a little bit more consideration. CI is not all about releases, it is also about knowing more about how your software delivery pipeline works, it's weak points, and how you are doing over time. Join CloudBees and cPrime as we discuss best practices for facilitating DevOps pipelines with Jenkins Workflow and reveal how the workflow engine of Jenkins CI and “Agilecentric” Devops practices together, support complex control structures, shortens the development cycle, stabilizes environments and reduces defects.

cicddevops
Getting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and GrafanaGetting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and Grafana

Introduction to network monitoring with open source solution prometheus as monitoring engine and grafana as dashboard to visualization.

monitoringprometheusgrafana
IV. Backing services
API Server as interface for using Backend service
Apps
API
Server
https://10.10.10.10/resource/1
SELECT * FROM resource
SELECT * FROM resource2
{“data1”: 123}
{“data2”: “abc”}
{“data1”: 123,
“data2”: “abc”}
DNS
Lookup apiserver.com
10.10.10.10
Get https://apiserver.com/resource/1
V. Build, release, run
• Build : code repo + vendors dependencies + binaries and assets
• Release : Build output + config
• Run : Launching set of the app’s processes against a selected release
V. Build, release, run
• Use strict separation between the build, release, and run stage
How to handle Build, release, run

Recommended for you

OpenShift Enterprise
OpenShift EnterpriseOpenShift Enterprise
OpenShift Enterprise

This document provides an overview of Red Hat's OpenShift Platform-as-a-Service (PaaS). OpenShift simplifies and automates the development, deployment and scaling of applications. It allows developers to focus on coding instead of managing infrastructure. OpenShift runs applications securely in isolated containers (gears) on top of Red Hat Enterprise Linux. Developers can use integrated tools or a web console to develop, build and deploy applications. OpenShift then automatically scales applications based on demand. The open source OpenShift Origin project allows organizations to run their own private PaaS or contribute to the community.

openshift
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview

This document provides an overview of continuous integration (CI), continuous delivery (CD), and continuous deployment. CI involves regularly integrating code changes into a central repository and running automated tests. CD builds on CI by automatically preparing code changes for release to testing environments. Continuous deployment further automates the release of changes to production without human intervention if tests pass. The benefits of CI/CD include higher quality, lower costs, faster delivery, and happier teams. Popular CI tools include Jenkins, Bamboo, CircleCI, and Travis. Key practices involve automating all stages, keeping environments consistent, and making the pipeline fast. Challenges include requiring organizational changes and technical knowledge to automate the full process.

cicdcicd
The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor app

The Twelve-Factor App methodology outlines best practices for building software-as-a-service apps. It recommends (1) storing code in version control, deploying the same code across environments, and avoiding multiple codebases; (2) explicitly declaring and isolating dependencies; and (3) storing configs in environment variables to separate config from code.

software developmentcloud computing
V. Build, release, run
VI. Processes
• Execute the app as one or more stateless processes
• Processes are stateless and share-nothing
VI. Processes
• Never assumes that anything cached in memory or on disk will be available
on a future request or job
• Any data that needs to persist must be stored in a stateful backing service,
typically a database
• Web systems should never be used or relied upon ““sticky sessions”
• Session state data is a good candidate for a datastore that offers time-
expiration, such as Memcached or Redis
How to handle Processes
VII. Port binding
• Export services via port binding
• One app can become the backing service for another app

Recommended for you

Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceMigrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service

This document discusses migrating Java EE applications from traditional deployment to IBM's Bluemix Platform-as-a-Service (PaaS). It introduces key concepts of cloud computing including IaaS, PaaS and SaaS models. It then focuses on Bluemix, describing it as IBM's cloud platform that is built on Cloud Foundry and provides services across various categories. The document guides developers on migrating an example application called DayTrader to Bluemix, covering steps like using database and other services, scaling the runtime, and adopting additional services to enhance the application.

interconnect bluemix migration jee
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...

This presentation talks about how to migrate an existing Java EE applications onto IBM's Bluemix cloud platform, which is based CloudFoundry.

javacloudfoundryliberty
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?

Whar are microservices and microservices architecture (MSA) How we reach them? Are they the same or SoA or not? When to use them? What are the key characteristics? Slides of my talk given in #Gapand2017 in Andorra

soa12-factor-appsmicroservices
VII. Port binding
• Ex)
• http://main-portal.com/users/laeshiny >> http://main-
portal.com:5001/users/laeshiny
• http://main-portal.com/config/app1 >> http://main-
portal.com:5002/config/app1
How to handle Port binding
VIII. Concurrency
• Scale out via the process model
• The application must also be able to span multiple processes running on
multiple physical machines
VIII. Concurrency
VIII. Concurrency
• Should never daemonize or write PID files.
• Rely on the operating system’s process manager
• manage output streams
• respond to crashed processes
• handle user-initiated restarts and shutdowns
• ex) Upstart, Foreman, Systemd
• Demo
How to handle Concurrency

Recommended for you

15-factor-apps.pdf
15-factor-apps.pdf15-factor-apps.pdf
15-factor-apps.pdf

Slide deck related to 15 Factor App. Covers all the aspects related to Cloud Native application development using 15 Factor App methodology.

15factorappfifteenfactorapp12factorapp
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists

The document discusses containers, microservices, and serverless applications for developers. It provides an overview of these topics, including how containers and microservices fit into the DevOps paradigm and allow for better collaboration between development and operations teams. It also discusses trends in container usage and orchestration as well as differences between platforms as a service (PaaS) and serverless applications.

lambdacontainerdocker
Docker12 factor
Docker12 factorDocker12 factor
Docker12 factor

This document discusses modernizing apps using Docker and the 12 Factor methodology. It begins by thanking sponsors and introducing new organizers. It then provides an overview of the evolution of application architectures from the late 90s to today. It notes the benefits of using Docker, such as faster deployments, version tracking, and security. It discusses moving from a monolith application to a microservices architecture using Docker and following the principles of the 12 Factor App methodology to address challenges of distributed systems, rapid deployments, and automation. The 12 factors are then each explained in detail and how Docker can help implement them for building modern, scalable apps.

12-factordockercontainers
IX. Disposability
• Be disposable, meaning they can be started or stopped at a moment’s notice
• Maximize robustness with fast startup and graceful shutdown
• This facilitates fast elastic scaling, rapid deployment of code or config
changes, and robustness of production deploys
IX. Disposability
• Processes should strive to minimize startup time
• Processes shut down gracefully when they receive a SIGTERM signal from
the process manager
• A web process ceases to listen on the service port (thereby refusing any new requests),
allowing any current requests to finish, and then exiting
• A worker process returns the current job to the work queue
• Processes should also be robust against sudden death, in the case of a
failure in the underlying hardware
How to handle Disposability
X. Dev/prod parity
• Keep development, staging, and production as similar as possible
• developer resists the urge to use different backing services between
development and production
Traditional app Twelve-factor app
Time between deploys Weeks Hours
Code authors vs code deployers Different people Same people
Dev vs production environments Divergent As similar as possible
XI. Logs
• Logs are the stream of aggregated, time-ordered events collected from the
output streams of all running processes and backing services
• Logs provide visibility into the behavior of a running app
• Treat logs as event streams

Recommended for you

Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...

This document discusses cloud native, event-driven serverless applications using OpenWhisk microservices framework. It begins with an agenda that covers what it means to be cloud native, Twelve Factor Apps methodology for building apps, an overview of microservices, and developing and deploying microservices using OpenWhisk. The document then provides more details on each topic, including characteristics of cloud native apps, principles of Twelve Factor Apps, benefits and challenges of monolithic vs microservice architectures, and how OpenWhisk works to enable event-driven serverless applications.

openwhiskbluemixmicroservices
MongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the Cloud
MongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the CloudMongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the Cloud
MongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the Cloud

The document discusses how MongoDB and Cloud Foundry can help address challenges with scaling applications in the cloud. It provides an overview of Cloud Foundry capabilities like service brokers and auto-scaling that help manage backing services and scale applications. It also outlines how integrating MongoDB with Cloud Foundry through Pivotal simplifies provisioning and managing MongoDB clusters in a cloud native way according to twelve factor app principles.

mongodbmongodb world
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices

Noriaki Tatsumi prepares you to build a microservices architecture that's not only reliable, resilient, and scalable but also addresses the challenges large organizations typically face. He dives into the technical details on how Spring Cloud empowers developers to build the patterns and components of microservices foundation quickly.

spring cloudpivotalmicroservices
XI. Logs
• Never concerns itself with routing or storage of its output stream
• In staging or production deploys, each process’ stream will be captured by
the execution environment, collated together with all other streams from
the app, and routed to one or more final destinations for viewing and long-
term archival
• Demo
• Fluentd
How to handle Logs
XII. Admin processes
• Run admin/management tasks as one-off processes
• One-off admin processes should be run in an identical environment as the
regular long-running processes of the app
• The same dependency isolation techniques should be used on all process
types
• Strongly favors languages which provide a REPL shell out of the box, and
which make it easy to run one-off scripts
Summary
• Scalable
• Easy Management
• I. Codebase
• II Dependencies
• III. Config
• IV. Backing services
• V. Build, release, run
• VI. Processes
• VII. Port binding
• VIII. Concurrency
• IX. Disposability
• X. Dev/prod parity
• XI. Logs
• XII. Admin processes
12 Factors App Check List
Use VCS(subversion, git, ....)
Execution environment is isolated
It is easy to access Backend Service
Build, Stage, Run environment is sperated
Use Process Manager to manage the application
Support short startup time and graceful shutdown
Dev environment is identical to prod environment
Collect logs in the datastore by the another app.

Recommended for you

ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.js

Create a highly available environment to host your microservices using Node.js, Docker, Kubernetes, and Ansible.

dockeransiblenode.js
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith

The document discusses strategies for transitioning from monolithic architectures to microservice architectures. It outlines some of the challenges with maintaining large monolithic applications and reasons for modernizing, such as handling more data and needing faster changes. It then covers microservice design principles and best practices, including service decomposition, distributed systems strategies, and reactive design. Finally it introduces Lagom as a framework for building reactive microservices on the JVM and outlines its key components and development environment.

lagommicroservicesdecomposition
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management

IT Security Symposium 2011 talk. A discussion of leveraging Agile Development + Cloud Computing, and various tools which have worked for us.

agile developmentcloud
Want to talk more
Thank you for your attention

More Related Content

What's hot

CNCF Meetup - OpenShift Overview
CNCF Meetup - OpenShift OverviewCNCF Meetup - OpenShift Overview
CNCF Meetup - OpenShift Overview
Sumit Shatwara
 
12 factor app an introduction
12 factor app an introduction12 factor app an introduction
12 factor app an introduction
Krishna-Kumar
 
Cloud Native In-Depth
Cloud Native In-DepthCloud Native In-Depth
Cloud Native In-Depth
Siva Rama Krishna Chunduru
 
Prometheus-Grafana-RahulSoni1584KnolX.pptx.pdf
Prometheus-Grafana-RahulSoni1584KnolX.pptx.pdfPrometheus-Grafana-RahulSoni1584KnolX.pptx.pdf
Prometheus-Grafana-RahulSoni1584KnolX.pptx.pdf
Knoldus Inc.
 
OpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdfOpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdf
JuanSalinas593459
 
OpenShift 4 installation
OpenShift 4 installationOpenShift 4 installation
OpenShift 4 installation
Robert Bohne
 
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShiftKubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
DevOps.com
 
OpenShift Overview
OpenShift OverviewOpenShift Overview
OpenShift Overview
roundman
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
dotCloud
 
Red Hat Openshift Fundamentals.pptx
Red Hat Openshift Fundamentals.pptxRed Hat Openshift Fundamentals.pptx
Red Hat Openshift Fundamentals.pptx
ssuser18b1c6
 
Speeding up your team with GitOps
Speeding up your team with GitOpsSpeeding up your team with GitOps
Speeding up your team with GitOps
Brice Fernandes
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
Luong Vo
 
Introduction to Red Hat OpenShift 4
Introduction to Red Hat OpenShift 4Introduction to Red Hat OpenShift 4
Introduction to Red Hat OpenShift 4
HngNguyn748044
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
Mettje Heegstra
 
Prometheus 101
Prometheus 101Prometheus 101
Prometheus 101
Paul Podolny
 
Infrastructure & System Monitoring using Prometheus
Infrastructure & System Monitoring using PrometheusInfrastructure & System Monitoring using Prometheus
Infrastructure & System Monitoring using Prometheus
Marco Pas
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
Cprime
 
Getting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and GrafanaGetting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and Grafana
Syah Dwi Prihatmoko
 
OpenShift Enterprise
OpenShift EnterpriseOpenShift Enterprise
OpenShift Enterprise
Ali Sadeghi Ardestani
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
An Nguyen
 

What's hot (20)

CNCF Meetup - OpenShift Overview
CNCF Meetup - OpenShift OverviewCNCF Meetup - OpenShift Overview
CNCF Meetup - OpenShift Overview
 
12 factor app an introduction
12 factor app an introduction12 factor app an introduction
12 factor app an introduction
 
Cloud Native In-Depth
Cloud Native In-DepthCloud Native In-Depth
Cloud Native In-Depth
 
Prometheus-Grafana-RahulSoni1584KnolX.pptx.pdf
Prometheus-Grafana-RahulSoni1584KnolX.pptx.pdfPrometheus-Grafana-RahulSoni1584KnolX.pptx.pdf
Prometheus-Grafana-RahulSoni1584KnolX.pptx.pdf
 
OpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdfOpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdf
 
OpenShift 4 installation
OpenShift 4 installationOpenShift 4 installation
OpenShift 4 installation
 
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShiftKubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
 
OpenShift Overview
OpenShift OverviewOpenShift Overview
OpenShift Overview
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Red Hat Openshift Fundamentals.pptx
Red Hat Openshift Fundamentals.pptxRed Hat Openshift Fundamentals.pptx
Red Hat Openshift Fundamentals.pptx
 
Speeding up your team with GitOps
Speeding up your team with GitOpsSpeeding up your team with GitOps
Speeding up your team with GitOps
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Introduction to Red Hat OpenShift 4
Introduction to Red Hat OpenShift 4Introduction to Red Hat OpenShift 4
Introduction to Red Hat OpenShift 4
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
Prometheus 101
Prometheus 101Prometheus 101
Prometheus 101
 
Infrastructure & System Monitoring using Prometheus
Infrastructure & System Monitoring using PrometheusInfrastructure & System Monitoring using Prometheus
Infrastructure & System Monitoring using Prometheus
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
 
Getting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and GrafanaGetting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and Grafana
 
OpenShift Enterprise
OpenShift EnterpriseOpenShift Enterprise
OpenShift Enterprise
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 

Similar to 12 Factor App Methodology

The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor app
Inthra onsap
 
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceMigrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
David Currie
 
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Jack-Junjie Cai
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
Eduard Tomàs
 
15-factor-apps.pdf
15-factor-apps.pdf15-factor-apps.pdf
15-factor-apps.pdf
Nilesh Gule
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
Karthik Gaekwad
 
Docker12 factor
Docker12 factorDocker12 factor
Docker12 factor
John Zaccone
 
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Animesh Singh
 
MongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the Cloud
MongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the CloudMongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the Cloud
MongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the Cloud
MongoDB
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
Noriaki Tatsumi
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.js
Brad Williams
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
Markus Eisele
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
Adam Getchell
 
Introduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application ArchitectureIntroduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application Architecture
David Currie
 
Kube con china_2019_7 missing factors for your production-quality 12-factor apps
Kube con china_2019_7 missing factors for your production-quality 12-factor appsKube con china_2019_7 missing factors for your production-quality 12-factor apps
Kube con china_2019_7 missing factors for your production-quality 12-factor apps
Shikha Srivastava
 
Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016
Stormy Peters
 
iSense Java Summit 2017 - Microservices in action at the Dutch National Police
iSense Java Summit 2017 - Microservices in action at the Dutch National PoliceiSense Java Summit 2017 - Microservices in action at the Dutch National Police
iSense Java Summit 2017 - Microservices in action at the Dutch National Police
Bert Jan Schrijver
 
Why kubernetes matters
Why kubernetes mattersWhy kubernetes matters
Why kubernetes matters
Platform9
 
Serena Release Management approach and solutions
Serena Release Management approach and solutionsSerena Release Management approach and solutions
Serena Release Management approach and solutions
Softmart
 
DevoxxBelgium_StatefulCloud.pptx
DevoxxBelgium_StatefulCloud.pptxDevoxxBelgium_StatefulCloud.pptx
DevoxxBelgium_StatefulCloud.pptx
Grace Jansen
 

Similar to 12 Factor App Methodology (20)

The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor app
 
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceMigrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
 
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
15-factor-apps.pdf
15-factor-apps.pdf15-factor-apps.pdf
15-factor-apps.pdf
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
 
Docker12 factor
Docker12 factorDocker12 factor
Docker12 factor
 
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
 
MongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the Cloud
MongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the CloudMongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the Cloud
MongoDB World 2018: MongoDB and Cloud Foundry – A Match Made for the Cloud
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.js
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
Introduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application ArchitectureIntroduction to Microservices and Cloud Native Application Architecture
Introduction to Microservices and Cloud Native Application Architecture
 
Kube con china_2019_7 missing factors for your production-quality 12-factor apps
Kube con china_2019_7 missing factors for your production-quality 12-factor appsKube con china_2019_7 missing factors for your production-quality 12-factor apps
Kube con china_2019_7 missing factors for your production-quality 12-factor apps
 
Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016
 
iSense Java Summit 2017 - Microservices in action at the Dutch National Police
iSense Java Summit 2017 - Microservices in action at the Dutch National PoliceiSense Java Summit 2017 - Microservices in action at the Dutch National Police
iSense Java Summit 2017 - Microservices in action at the Dutch National Police
 
Why kubernetes matters
Why kubernetes mattersWhy kubernetes matters
Why kubernetes matters
 
Serena Release Management approach and solutions
Serena Release Management approach and solutionsSerena Release Management approach and solutions
Serena Release Management approach and solutions
 
DevoxxBelgium_StatefulCloud.pptx
DevoxxBelgium_StatefulCloud.pptxDevoxxBelgium_StatefulCloud.pptx
DevoxxBelgium_StatefulCloud.pptx
 

Recently uploaded

20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
welrejdoall
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
rajancomputerfbd
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
Aurora Consulting
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
Awais Yaseen
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Bert Blevins
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
ScyllaDB
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
shanthidl1
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
Andrey Yasko
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 

Recently uploaded (20)

20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 

12 Factor App Methodology

  • 1. 12 Factor App Methodology Laeshin Park laeshiny@gmail.com
  • 2. Table of Content • About Me • What is 12 Factor App • Summary • 12 Factor App Check List
  • 3. About Me • Interesting in Cloud Native • This kind of methodology is new to me
  • 4. What is 12 Factor App? • Methodology for building software-as-a-service in the Cloud
  • 5. Who wrote? • http://12factor.net • Manifesto written around 2012 • by Adam Wiggins (Heroku, co-founder)
  • 6. For Who? • Any developer building applications which run as a service. • Ops engineers who deploy or manage such applications.
  • 7. What is good? • Minimize time and cost for new developers joining the project. • Offer maximum portability between execution environments. • Enable continuous deployment for maximum agility. • Obviate the need for servers and systems administration. • Can scale up without significant changes to tooling, architecture, or development practices.
  • 8. How? • Use declarative formats for setup automation. • Have a clean contract with the underlying operating system. • Minimize divergence between development and production.
  • 9. How? • I. Codebase • II Dependencies • III. Config • IV. Backing services • V. Build, release, run • VI. Processes • VII. Port binding • VIII. Concurrency • IX. Disposability • X. Dev/prod parity • XI. Logs • XII. Admin processes
  • 10. I. Codebase • One codebase tracked in revision control, many deploys • VCS(Version Control System): subversion, git, ...
  • 12. I. Codebase • Demo • Git • https://github.com/laeshiny/12factorapp
  • 13. II. Dependencies • Explicitly declare and isolate dependencies • Never rely on implicit existence of system-wide packages • Do not rely on the implicit existence of any system tools • Example: curl
  • 14. II. Dependencies • Python • Virtualenv • Ruby • Gemfile • Demo How to handle Dependencies
  • 15. III. Config • Resource handles to the database, Memcached, and other backing services • Credentials to external services such as Amazon S3 or Twitter • Per-deploy values such as the canonical hostname for the deploy • Everything that is likely to vary between deploys (staging, production, developer environments, etc) What is config?
  • 16. III. Config • “config” does not include internal application config • Use config files which are not checked into revision control • You can make your project open source • Stores config in environment variables!!!! How to handle config
  • 18. IV. Backing services • Any service the app consumes over the network as part of its normal operation. What is Backing services?
  • 19. IV. Backing services • locally-managed services, • datastores : MySQL or CouchDB • messaging/queueing systems : RabbitMQ or Beanstalkd • SMTP services : Postfix • caching systems : Memcached or Redis • third parties managed • SMTP services : Postmark • metrics-gathering services : New Relic or Loggly • binary asset services : Amazon S3 • API-accessible consumer services : Twitter, Google Maps, or Last.fm. What is Backing services?
  • 20. IV. Backing services • Makes no distinction between local and third party services • Treat backing services as attached resources How to handle Backing service
  • 22. API Server as interface for using Backend service Apps API Server https://10.10.10.10/resource/1 SELECT * FROM resource SELECT * FROM resource2 {“data1”: 123} {“data2”: “abc”} {“data1”: 123, “data2”: “abc”} DNS Lookup apiserver.com 10.10.10.10 Get https://apiserver.com/resource/1
  • 23. V. Build, release, run • Build : code repo + vendors dependencies + binaries and assets • Release : Build output + config • Run : Launching set of the app’s processes against a selected release
  • 24. V. Build, release, run • Use strict separation between the build, release, and run stage How to handle Build, release, run
  • 26. VI. Processes • Execute the app as one or more stateless processes • Processes are stateless and share-nothing
  • 27. VI. Processes • Never assumes that anything cached in memory or on disk will be available on a future request or job • Any data that needs to persist must be stored in a stateful backing service, typically a database • Web systems should never be used or relied upon ““sticky sessions” • Session state data is a good candidate for a datastore that offers time- expiration, such as Memcached or Redis How to handle Processes
  • 28. VII. Port binding • Export services via port binding • One app can become the backing service for another app
  • 29. VII. Port binding • Ex) • http://main-portal.com/users/laeshiny >> http://main- portal.com:5001/users/laeshiny • http://main-portal.com/config/app1 >> http://main- portal.com:5002/config/app1 How to handle Port binding
  • 30. VIII. Concurrency • Scale out via the process model • The application must also be able to span multiple processes running on multiple physical machines
  • 32. VIII. Concurrency • Should never daemonize or write PID files. • Rely on the operating system’s process manager • manage output streams • respond to crashed processes • handle user-initiated restarts and shutdowns • ex) Upstart, Foreman, Systemd • Demo How to handle Concurrency
  • 33. IX. Disposability • Be disposable, meaning they can be started or stopped at a moment’s notice • Maximize robustness with fast startup and graceful shutdown • This facilitates fast elastic scaling, rapid deployment of code or config changes, and robustness of production deploys
  • 34. IX. Disposability • Processes should strive to minimize startup time • Processes shut down gracefully when they receive a SIGTERM signal from the process manager • A web process ceases to listen on the service port (thereby refusing any new requests), allowing any current requests to finish, and then exiting • A worker process returns the current job to the work queue • Processes should also be robust against sudden death, in the case of a failure in the underlying hardware How to handle Disposability
  • 35. X. Dev/prod parity • Keep development, staging, and production as similar as possible • developer resists the urge to use different backing services between development and production Traditional app Twelve-factor app Time between deploys Weeks Hours Code authors vs code deployers Different people Same people Dev vs production environments Divergent As similar as possible
  • 36. XI. Logs • Logs are the stream of aggregated, time-ordered events collected from the output streams of all running processes and backing services • Logs provide visibility into the behavior of a running app • Treat logs as event streams
  • 37. XI. Logs • Never concerns itself with routing or storage of its output stream • In staging or production deploys, each process’ stream will be captured by the execution environment, collated together with all other streams from the app, and routed to one or more final destinations for viewing and long- term archival • Demo • Fluentd How to handle Logs
  • 38. XII. Admin processes • Run admin/management tasks as one-off processes • One-off admin processes should be run in an identical environment as the regular long-running processes of the app • The same dependency isolation techniques should be used on all process types • Strongly favors languages which provide a REPL shell out of the box, and which make it easy to run one-off scripts
  • 39. Summary • Scalable • Easy Management • I. Codebase • II Dependencies • III. Config • IV. Backing services • V. Build, release, run • VI. Processes • VII. Port binding • VIII. Concurrency • IX. Disposability • X. Dev/prod parity • XI. Logs • XII. Admin processes
  • 40. 12 Factors App Check List Use VCS(subversion, git, ....) Execution environment is isolated It is easy to access Backend Service Build, Stage, Run environment is sperated Use Process Manager to manage the application Support short startup time and graceful shutdown Dev environment is identical to prod environment Collect logs in the datastore by the another app.
  • 41. Want to talk more
  • 42. Thank you for your attention