{"id":26341,"date":"2016-08-12T07:50:23","date_gmt":"2016-08-12T05:50:23","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=26341"},"modified":"2016-08-12T07:50:23","modified_gmt":"2016-08-12T05:50:23","slug":"the-twelve-factor-app","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/","title":{"rendered":"The Twelve-Factor App"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>I first heard about <a href=\"http:\/\/12factor.net\/\">the twelve-factor app<\/a> a couple of years ago, in <a href=\"https:\/\/mamchenkov.net\/wordpress\/2014\/06\/08\/international-php-conference-2014-berlin-germany\/\">Berlin, during the International PHP conference<\/a>. \u00a0It was the basis for David Zulke (of <a href=\"https:\/\/www.heroku.com\/\">Heroku<\/a> fame) talk on <a href=\"https:\/\/speakerdeck.com\/dzuelke\/the-twelve-factor-app-and-php-on-heroku\">the best practices for the modern day PHP applications<\/a>.<\/p>\n<blockquote><p>The twelve-factor app is a methodology for building software-as-a-service apps that:<\/p>\n<ul>\n<li>Use <strong>declarative<\/strong> formats for setup automation, to minimize time and cost for new developers joining the project;<\/li>\n<li>Have a <strong>clean contract<\/strong> with the underlying operating system, offering <strong>maximum portability<\/strong> between execution environments;<\/li>\n<li>Are suitable for <strong>deployment<\/strong> on modern <strong>cloud platforms<\/strong>, obviating the need for servers and systems administration;<\/li>\n<li><strong>Minimize divergence<\/strong> between development and production, enabling <strong>continuous deployment<\/strong> for maximum agility;<\/li>\n<li>And can <strong>scale up<\/strong> without significant changes to tooling, architecture, or development practices.<\/li>\n<\/ul>\n<p>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).<\/p><\/blockquote>\n<p>Here are the 12 factors, each one covered in detail on <a href=\"http:\/\/12factor.net\/\">the site<\/a>:<\/p>\n<ol>\n<li><strong>Codebase<\/strong>: one codebase tracked in revision control, many deploys.<\/li>\n<li><strong>Dependencies<\/strong>: explicitly declare and isolate dependencies.<\/li>\n<li><strong>Config<\/strong>: store config in the environment.<\/li>\n<li><strong>Backing services<\/strong>: treat backing services as attached resources.<\/li>\n<li><strong>Build, release, run<\/strong>: strictly separate build and run stages.<\/li>\n<li><strong>Processes<\/strong>: execute the app as one or more stateless processes.<\/li>\n<li><strong>Port binding<\/strong>: export services via port binding.<\/li>\n<li><strong>Concurrency<\/strong>: scale out via the process model.<\/li>\n<li><strong>Disposability<\/strong>: maximize robustness with fast startup and graceful shutdown.<\/li>\n<li><strong>Dev\/prod parity<\/strong>: keep development, staging, and production as similar as possible.<\/li>\n<li><strong>Logs<\/strong>: treat logs as event streams.<\/li>\n<li><strong>Admin processes<\/strong>: run admin\/management tasks as one-off processes.<\/li>\n<\/ol>\n<p>These seem simple and straightforward, but in reality not always as easy to follow. \u00a0Regardless, these are a good goal to aim at.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>I first heard about the twelve-factor app a couple of years ago, in Berlin, during the International PHP conference. \u00a0It was the basis for David Zulke (of Heroku fame) talk on the best practices for the modern day PHP applications. The twelve-factor app is a methodology for building software-as-a-service apps that: Use declarative formats for &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">The Twelve-Factor App<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"The Twelve-Factor App #programming #WebDev #BestPractrices","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,62],"tags":[3069,38,1330],"keyring_services":[],"class_list":["post-26341","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","tag-best-practices","tag-php","tag-web-development"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"I first heard about the twelve-factor app a couple of years ago, in Berlin, during the International PHP conference. It was the basis for David Zulke (of Heroku fame) talk on the best practices for the modern day PHP applications. The twelve-factor app is a methodology for building software-as-a-service apps that: Use declarative formats for\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"The Twelve-Factor App - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"I first heard about the twelve-factor app a couple of years ago, in Berlin, during the International PHP conference. It was the basis for David Zulke (of Heroku fame) talk on the best practices for the modern day PHP applications. The twelve-factor app is a methodology for building software-as-a-service apps that: Use declarative formats for\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-08-12T05:50:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-08-12T05:50:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"The Twelve-Factor App - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"I first heard about the twelve-factor app a couple of years ago, in Berlin, during the International PHP conference. It was the basis for David Zulke (of Heroku fame) talk on the best practices for the modern day PHP applications. The twelve-factor app is a methodology for building software-as-a-service apps that: Use declarative formats for\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#blogposting\",\"name\":\"The Twelve-Factor App - Leonid Mamchenkov\",\"headline\":\"The Twelve-Factor App\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"},\"datePublished\":\"2016-08-12T07:50:23+02:00\",\"dateModified\":\"2016-08-12T07:50:23+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#webpage\"},\"articleSection\":\"All, Programming, Technology, best practices, PHP, web development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#listItem\",\"name\":\"The Twelve-Factor App\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#listItem\",\"position\":4,\"name\":\"The Twelve-Factor App\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/\",\"name\":\"The Twelve-Factor App - Leonid Mamchenkov\",\"description\":\"I first heard about the twelve-factor app a couple of years ago, in Berlin, during the International PHP conference. It was the basis for David Zulke (of Heroku fame) talk on the best practices for the modern day PHP applications. The twelve-factor app is a methodology for building software-as-a-service apps that: Use declarative formats for\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/08\\\/12\\\/the-twelve-factor-app\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2016-08-12T07:50:23+02:00\",\"dateModified\":\"2016-08-12T07:50:23+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"The Twelve-Factor App - Leonid Mamchenkov","description":"I first heard about the twelve-factor app a couple of years ago, in Berlin, during the International PHP conference. It was the basis for David Zulke (of Heroku fame) talk on the best practices for the modern day PHP applications. The twelve-factor app is a methodology for building software-as-a-service apps that: Use declarative formats for","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#blogposting","name":"The Twelve-Factor App - Leonid Mamchenkov","headline":"The Twelve-Factor App","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"},"datePublished":"2016-08-12T07:50:23+02:00","dateModified":"2016-08-12T07:50:23+02:00","inLanguage":"en-US","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#webpage"},"articleSection":"All, Programming, Technology, best practices, PHP, web development"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#listItem","name":"The Twelve-Factor App"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#listItem","position":4,"name":"The Twelve-Factor App","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/","name":"The Twelve-Factor App - Leonid Mamchenkov","description":"I first heard about the twelve-factor app a couple of years ago, in Berlin, during the International PHP conference. It was the basis for David Zulke (of Heroku fame) talk on the best practices for the modern day PHP applications. The twelve-factor app is a methodology for building software-as-a-service apps that: Use declarative formats for","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2016-08-12T07:50:23+02:00","dateModified":"2016-08-12T07:50:23+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"The Twelve-Factor App - Leonid Mamchenkov","og:description":"I first heard about the twelve-factor app a couple of years ago, in Berlin, during the International PHP conference. It was the basis for David Zulke (of Heroku fame) talk on the best practices for the modern day PHP applications. The twelve-factor app is a methodology for building software-as-a-service apps that: Use declarative formats for","og:url":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2016-08-12T05:50:23+00:00","article:modified_time":"2016-08-12T05:50:23+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"The Twelve-Factor App - Leonid Mamchenkov","twitter:description":"I first heard about the twelve-factor app a couple of years ago, in Berlin, during the International PHP conference. It was the basis for David Zulke (of Heroku fame) talk on the best practices for the modern day PHP applications. The twelve-factor app is a methodology for building software-as-a-service apps that: Use declarative formats for","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"26341","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-20 04:01:39","updated":"2026-01-15 12:19:45","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tThe Twelve-Factor App\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"The Twelve-Factor App","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/12\/the-twelve-factor-app\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":21960,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/06\/08\/international-php-conference-2014-berlin-germany\/","url_meta":{"origin":26341,"position":0},"title":"International PHP Conference 2014, Berlin, Germany","author":"Leonid Mamchenkov","date":"June 8, 2014","format":false,"excerpt":"As many of you already know, I've spent most of the last week in Berlin, Germany, attending the International PHP Conference 2014. \u00a0Here's the short story: \u00a0it was another great event (yes, I've attended this conference before). \u00a0The conference seems to grow and mature. \u00a0There were plenty of engaging speakers\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":23194,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/12\/22\/http-api-design-guide\/","url_meta":{"origin":26341,"position":1},"title":"HTTP API Design Guide","author":"Leonid Mamchenkov","date":"December 22, 2014","format":"link","excerpt":"HTTP API Design Guide This guide describes a set of HTTP+JSON API design practices, originally extracted from work on the Heroku Platform API. This guide informs additions to that API and also guides new internal APIs at Heroku. We hope it\u2019s also of interest to API designers outside of Heroku.\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27300,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/08\/migrating-a-php-5-app-to-php-7\/","url_meta":{"origin":26341,"position":2},"title":"Migrating a PHP 5 App to PHP 7","author":"Leonid Mamchenkov","date":"February 8, 2017","format":false,"excerpt":"This year I'll be migrating quite a bit of stuff from PHP 5 to PHP 7. \u00a0We haven't started with the process yet, but with the recent indicators like PHPUnit 6 release, I'm sure the priority of this work will start rising. Obviously, I'm familiar with the new features of\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":15086,"url":"https:\/\/mamchenkov.net\/wordpress\/2011\/06\/09\/day-in-brief-2011-06-09\/","url_meta":{"origin":26341,"position":3},"title":"Day in brief &#8211; 2011-06-09","author":"Leonid Mamchenkov","date":"June 9, 2011","format":false,"excerpt":"@stepanov I watched Hangover 2 recently. It's not as funny as the first one, but still overall not bad. # PHP: What has changed in PHP 5.3.x - Manual http:\/\/bit.ly\/lfHM96 # Shared: App attrition on Android Market twice as high vs. App Store http:\/\/bit.ly\/m78olZ # New note : About -\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27421,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/03\/17\/cakephp-3-remove-shell-welcome-header\/","url_meta":{"origin":26341,"position":4},"title":"CakePHP 3 : Remove Shell Welcome Header","author":"Leonid Mamchenkov","date":"March 17, 2017","format":false,"excerpt":"CakePHP 3\u00a0has an excellent support for command line Shells, Tasks, and Console Tools. \u00a0There are a few that are bundled with the framework itself, and that come from a variety of plugins. \u00a0And, of course, you can have your own commands, specific to your application. There is one tiny little\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12148,"url":"https:\/\/mamchenkov.net\/wordpress\/2010\/02\/17\/cakephp-building-factories-with-models-and-behaviors\/","url_meta":{"origin":26341,"position":5},"title":"CakePHP : Building factories with models and behaviors","author":"Leonid Mamchenkov","date":"February 17, 2010","format":false,"excerpt":"CakePHP is a wonderful framework. \u00a0 Recently I proved it to myself once again (not that I need much of that proof anyway). \u00a0The problem that we had at work was a whole lot of code in once place and no obvious way of how to break that code into\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/26341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=26341"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/26341\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=26341"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=26341"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=26341"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=26341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}