Skip to content
This repository was archived by the owner on Sep 7, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
400 commits
Select commit Hold shift + click to select a range
1fd9865
Italian translation add.
francescomalatesta Mar 30, 2015
d6222c0
add processes
gwmoura May 3, 2015
061d3ae
tranlate config.md
gwmoura May 3, 2015
6618909
add paragraph 1,2 and 3
gwmoura May 3, 2015
cfb6ba6
update spring links
gwmoura May 3, 2015
cb9208d
ajustes informados pelo @lfilho
gwmoura May 3, 2015
3731a05
ajustes no erros de português identificados por mim e pelo @lfilho; r…
gwmoura May 3, 2015
c9bb13f
add new paragraph
gwmoura May 4, 2015
0dcd5d4
add last paragraph
gwmoura May 4, 2015
f9850c4
russian translation, logs part
mahnunchik Mar 9, 2014
5146eb8
fix translation, log part
mahnunchik May 5, 2015
3249f8f
logs: fixes in translation
mahnunchik May 23, 2015
ad9fd6c
intro: added russian translation
mahnunchik May 23, 2015
7a43648
background: added russian translation
mahnunchik May 23, 2015
498d746
who: added russian translation
mahnunchik May 23, 2015
08aebfe
codebase: added russian translation
mahnunchik May 23, 2015
a831255
dependencies: added russian translation
mahnunchik May 23, 2015
48e8d4b
config: added russian translation
mahnunchik May 23, 2015
a9512bd
backing-services: added russian translation
mahnunchik May 23, 2015
47892ed
build-release-run: added russian translation
mahnunchik May 23, 2015
7c21963
processes: added russian translation
mahnunchik May 23, 2015
0fdeb94
port-binding: added russian translation
mahnunchik May 23, 2015
732faeb
concurrenc: added russian translation
mahnunchik May 23, 2015
096bec6
disposability: added russian translation
mahnunchik May 23, 2015
ab9b839
dev-prod-parity: added russian translation
mahnunchik May 23, 2015
7eb808b
admin-processes: added russian translation
mahnunchik May 23, 2015
5a56ec6
toc: added russian translation
mahnunchik May 23, 2015
8b473c3
russian tranlation: fixed mistypes and punctuation
mahnunchik May 25, 2015
2623372
french translation
May 22, 2015
8b58493
Merge pull request #36 from gwmoura/config
lfilho Jun 5, 2015
a7e7d8f
russian translation: better translation for `disposability` word
mahnunchik Jun 13, 2015
79dd0df
Fixed typo in Korean
yongsungyoon Jun 18, 2015
12d7f05
Fixed wrong translation in Korean
yongsungyoon Jun 18, 2015
9d47d17
change '冥等' to '幂等'.
Jun 28, 2015
53c6171
fixed typo
Jun 29, 2015
d709d06
Merge pull request #36 from amozz/master
Jun 29, 2015
372b7c7
Merge pull request #35 from yongsungyoon/master
Jun 29, 2015
1f9c8ab
Merge pull request #30 from francescomalatesta/master
Jun 29, 2015
6d51638
Merge pull request #31 from mahnunchik/translations
Jun 29, 2015
c00922d
fix config for Italiano
jonmountjoy Jun 29, 2015
b01bc21
fixed stuff noticed by dmathieu
Jun 30, 2015
8b87798
Merge branch 'french-translation' of https://github.com/Keirua/12fact…
jonmountjoy Jun 30, 2015
eaada48
list a whole bunch of folk who help maintain this
jonmountjoy Jun 30, 2015
85c1420
fix fr translation
jonmountjoy Jun 30, 2015
23379d0
add a space between the title and the traduction mention
Jun 30, 2015
76c3ee9
Merge pull request #37 from heroku/title_space
Jun 30, 2015
742b31a
Update intro.md
greenplace Jul 9, 2015
f506875
'subversion' better
inner-whisper Jul 10, 2015
8dedbb1
Update backing-services.md
inner-whisper Jul 10, 2015
b698603
Update background.md
inner-whisper Jul 10, 2015
76ec9db
Update processes.md
inner-whisper Jul 10, 2015
bacdeea
Update dev-prod-parity.md
inner-whisper Jul 10, 2015
a46d3ac
Update dev-prod-parity.md
inner-whisper Jul 10, 2015
3a24332
Merge pull request #40 from inner-whisper/patch-1
Jul 13, 2015
2662038
Merge pull request #41 from inner-whisper/patch-2
Jul 13, 2015
fce3844
Merge pull request #38 from greenplace/patch-1
Jul 13, 2015
b41d51b
Fixed misprints
pvolyntsev Jul 17, 2015
58324d7
Merge pull request #40 from gwmoura/concurrency
gwmoura Jul 23, 2015
f626d56
Merge pull request #37 from gwmoura/processes
gwmoura Jul 23, 2015
0dfed92
Translating dev/prod parity. Closes #32
lfilho May 3, 2015
ee31f3c
Merge pull request #39 from lfilho/dev-prod-parity
lfilho Jul 27, 2015
8139b73
Traduz LOGS. Closes #33
lfilho Jul 27, 2015
be3a1e6
Translates build-release-run to pt-br. Closes #19
lfilho Feb 11, 2015
e065b8d
Merge pull request #23 from lfilho/build-release-run
lfilho Jul 27, 2015
4c8ef3e
Merge pull request #42 from lfilho/translate-logs
gwmoura Jul 27, 2015
ebe7d4b
Corrige palavra no TOC
lfilho Jul 27, 2015
41cdb8f
Traduz Disposability. Closes #31
lfilho Jul 27, 2015
5992f0a
Merge pull request #43 from lfilho/disposability
gwmoura Jul 27, 2015
3abf046
add title
gwmoura Jul 27, 2015
4e77320
add p1 e p2
gwmoura Jul 27, 2015
b77fab7
Merge pull request #44 from lfilho/master
lfilho Jul 28, 2015
f363b74
Traduz twelve-factor para doze-fatores
lfilho Jul 28, 2015
edd811f
fix some words and add p3, p4 and p5
gwmoura Jul 28, 2015
240bcd1
Merge pull request #45 from lfilho/master
gwmoura Jul 28, 2015
d8afda6
remove 'fora da caixa' to 'embutido'
gwmoura Jul 28, 2015
7f7f016
@lfilho feito, removido o contra
gwmoura Jul 28, 2015
bb0a8e3
feito, sorry!
gwmoura Jul 28, 2015
d705f7e
Merge pull request #46 from gwmoura/admin-processes
gwmoura Jul 28, 2015
181245d
Merge remote-tracking branch 'heroku/master'
lfilho Jul 28, 2015
172e57e
Add portuguesse translators
lfilho Jul 28, 2015
1ec1d77
Update links from upstream
lfilho Jul 28, 2015
5afb192
Link translators and editors
lfilho Jul 28, 2015
9f1f4a8
Merge pull request #23 from 12factor/master
Aug 3, 2015
f4dd53e
Update Readme.md
Aug 3, 2015
8608fdb
Merge pull request #44 from lfilho/better-credit-links
Aug 3, 2015
77f38da
Fixed typos
jmfeurprier Aug 11, 2015
e145719
Fixed typos in codebase.md
jmfeurprier Aug 11, 2015
7a95aa3
fixed typos
jmfeurprier Aug 12, 2015
ef1186c
Typos (Ru)
lancelote Aug 25, 2015
ab58242
Change text colors to ensure a contrast ratio of over 7 to meet WCAG …
awochna Aug 26, 2015
72541c3
ideais
dyegocantu Oct 2, 2015
6dcaaf8
sistema
dyegocantu Oct 2, 2015
82d6605
implantação
dyegocantu Oct 2, 2015
2133f39
Merge pull request #45 from jmfeurprier/patch-1
Oct 5, 2015
7350620
Merge pull request #46 from jmfeurprier/patch-2
Oct 5, 2015
9420362
Merge pull request #47 from jmfeurprier/patch-3
Oct 5, 2015
bddc802
Merge pull request #43 from pvolyntsev/master
Oct 5, 2015
0fd3a3b
merging changes from lancelote
jonmountjoy Oct 5, 2015
00ea5ed
Merge branch 'lancelote-master'
jonmountjoy Oct 5, 2015
185505f
Merge pull request #52 from dyegocantu/pt_br-background
Oct 5, 2015
b65a4a1
Merge branch 'master' of https://github.com/awochna/12factor into awo…
jonmountjoy Oct 5, 2015
440aa9d
Merge branch 'awochna-master'
jonmountjoy Oct 5, 2015
e719936
Merge pull request #54 from dyegocantu/pt_br-dev-prod-parity
Oct 5, 2015
4619731
Add es.yml locales file for spanish language.
sblancov Oct 20, 2015
72d38c1
Add intro for spanish translation.
sblancov Oct 20, 2015
12f33c0
Add background for Spanish translation
sblancov Oct 20, 2015
768d649
Add codebase to Spanish translation
sblancov Oct 21, 2015
3a7e043
Add dependencies to Spanish translation
sblancov Oct 21, 2015
868bf0c
Add config to Spanish translation
sblancov Oct 22, 2015
93795e7
Add backing-services to Spanish translation
sblancov Oct 22, 2015
2c64db9
Add build-release-run to Spanish translation
sblancov Oct 23, 2015
5139fc9
Review backing-services
sblancov Oct 23, 2015
cbd53cb
Add processes to Spanish translation
sblancov Oct 27, 2015
7edd773
Add port-binding to Spanish translation
sblancov Oct 29, 2015
cfdc4ec
Add concurrency to Spanish translation
sblancov Oct 29, 2015
a1bf7cc
Add who to Spanish translation
sblancov Oct 29, 2015
c3684b1
Add disposability to Spanish translation.
sblancov Nov 6, 2015
8391b81
Add dev-prod-parity to Spanish translation
sblancov Nov 7, 2015
ba676d8
added german translation
martinruopp Nov 7, 2015
176457a
corrected locale fr -> de
martinruopp Nov 7, 2015
768e8f3
Merge pull request #8 from ys/mobi-version
ys Nov 16, 2015
d35a817
Add toc to Spanish translation
sblancov Nov 17, 2015
ffd1a84
Add logs to Spanish translation
sblancov Nov 17, 2015
61a927c
Add admin-processes to Spanish translation
sblancov Nov 17, 2015
c911035
First review for concurrency
sblancov Nov 22, 2015
3c20f4e
First review for processes
sblancov Nov 22, 2015
33e9e6c
First review for intro
sblancov Nov 25, 2015
2859d8c
First review for background
sblancov Nov 25, 2015
0528cfa
First review for codebase
sblancov Nov 25, 2015
876c758
First review for dependencies
sblancov Nov 25, 2015
9e8af62
First review for config
sblancov Nov 26, 2015
ae15582
First review for backing services
sblancov Nov 26, 2015
9686dee
First review for build-release-run
sblancov Nov 26, 2015
f9b5ff7
First review for processes
sblancov Nov 30, 2015
a557987
First review for port-binding
sblancov Dec 1, 2015
afeb05d
Firs review for concurrency
sblancov Dec 1, 2015
cb552cc
First review for disposability
sblancov Dec 1, 2015
f857bc5
First review for dev-prod-parity
sblancov Dec 1, 2015
1d2b749
Minor fix in backing-services
sblancov Dec 1, 2015
9d37d17
First review for logs
sblancov Dec 2, 2015
6bd1040
First review for toc
sblancov Dec 2, 2015
a4eae15
Update logs subtitle for Spanish translation
sblancov Dec 2, 2015
2745220
First review for admin-processes
sblancov Dec 4, 2015
cd9b3d9
Update toc accordingly to admin-processes changes.
sblancov Dec 4, 2015
8a0912b
Second review for codebase.
sblancov Dec 14, 2015
cfb1592
Second review for dependencies.
sblancov Dec 14, 2015
efaca0c
Second review for config.
sblancov Dec 14, 2015
1e63658
Second review for backing-services
sblancov Dec 14, 2015
7014370
Second review for build-release-run
sblancov Dec 14, 2015
c9905dc
Second review for processes
sblancov Dec 14, 2015
c192cad
Second review for port-binding
sblancov Dec 14, 2015
1fabdbe
Second review for concurrency
sblancov Dec 14, 2015
745298c
Second review for disposability
sblancov Dec 14, 2015
28496a9
Second review for dev-prod-parity
sblancov Dec 14, 2015
53d4003
Second review for logs
sblancov Dec 14, 2015
c48ba11
Second review for admin-processes
sblancov Dec 14, 2015
49f2684
Merge pull request #56 from martinruopp/german-translation
raul Dec 15, 2015
1d751d8
Merge branch 'spanish_translation' of git://github.com/sblancov/12factor
raul Dec 15, 2015
ac6ba2e
fix french translation
sebclick Dec 19, 2015
beba8c3
Fix french translation
sebclick Dec 19, 2015
9d55d34
Merge pull request #58 from sebclick/fix-french-translation
Dec 21, 2015
3ea47ec
Fix typo in Korean translation
Dec 30, 2015
d930c78
Merge pull request #59 from seungha-kim/master
Jan 6, 2016
b77266c
Fix Portuguese translation
thiagogabriel Jan 7, 2016
d1a4914
Merge pull request #60 from thiagogabriel/thiagogabriel-typo-ptbr
Jan 7, 2016
92b2a35
Add Heroku generated app.json
Jan 7, 2016
8019a07
typo
ksimka Jan 12, 2016
1626aa1
Fix typo in Chinese translation
lance-ding Jan 20, 2016
486f4d9
Merge pull request #62 from lance-ding/master
Jan 26, 2016
47c076a
Merge pull request #61 from ksimka/patch-1
Jan 26, 2016
27f1bdf
Fix Portuguese translation in codebase.md
wenderjean Jan 27, 2016
5ce2039
profreading intro in korean
Jan 29, 2016
dc3ee63
proofreading background in korean
Jan 29, 2016
6993ca0
Merge pull request #63 from wenderjean/master
Jan 29, 2016
2c41c98
Merge pull request #64 from k16wire/ko-prof-intro
Jan 29, 2016
c03dd41
Provide encoding for reading localization files to solve problem on W…
Arturszott Jan 30, 2016
67332a5
Merge pull request #65 from Arturszott/master
Feb 1, 2016
4c21cd1
update ruby
jonmountjoy Feb 1, 2016
1af4cea
Update intro.mdf
ben-j69 Feb 1, 2016
c4a9f01
Update codebase.md
ben-j69 Feb 1, 2016
eeb1418
Update dependencies.md
ben-j69 Feb 1, 2016
34a4780
Update config.md
ben-j69 Feb 1, 2016
6de12be
Update build-release-run.md
ben-j69 Feb 1, 2016
5d4aec6
Update port-binding.md
ben-j69 Feb 1, 2016
325b9a0
Update disposability.md
ben-j69 Feb 1, 2016
8a3a2b3
Update dev-prod-parity.md
ben-j69 Feb 1, 2016
4766dcb
Update logs.md
ben-j69 Feb 1, 2016
68a71cd
Merge pull request #66 from ben-j69/patch-1
Feb 1, 2016
876f0e5
Merge pull request #74 from ben-j69/patch-8
Feb 1, 2016
af4108f
Merge pull request #73 from ben-j69/patch-7
Feb 1, 2016
d3af5fe
Merge pull request #72 from ben-j69/patch-6
Feb 1, 2016
11bb6b9
Merge pull request #71 from ben-j69/patch-9
Feb 1, 2016
4333a88
Merge pull request #69 from ben-j69/patch-4
Feb 1, 2016
3d7f860
Merge pull request #68 from ben-j69/patch-3
Feb 1, 2016
2695c42
Merge pull request #67 from ben-j69/patch-2
Feb 1, 2016
980eb59
Merge pull request #70 from ben-j69/patch-5
Feb 1, 2016
d20ac6a
proofreading codebase
Feb 2, 2016
89743e6
Add space around navigation links
Arturszott Feb 4, 2016
eabf30b
typo: "build stage fetches and vendors [deps]"
rutsky Feb 16, 2016
4d1807b
Initial translation Bahasa Indonesia
sumodirjo Feb 23, 2016
25da190
Removing an word to improve concordances and eliminate a repeated word
wenderjean Feb 24, 2016
b0df3da
Change a double use of "dependência" word
wenderjean Feb 24, 2016
45f205e
Update title casing for background services
jmmastey Mar 10, 2016
c950230
Typo (RU)
annikoff Mar 11, 2016
9c1c7e8
Fix typo in pt_br/toc.md: procesos -> processos
rogeriopradoj Mar 19, 2016
2228347
Fix typo in pt_br: implatação -> implantação
rogeriopradoj Mar 19, 2016
7629cef
Merge pull request #89 from rogeriopradoj/patch-2
Mar 21, 2016
546438f
Merge pull request #88 from rogeriopradoj/patch-1
Mar 21, 2016
93ed535
Merge pull request #87 from annikoff/patch-1
Mar 21, 2016
78c5ee3
Merge pull request #86 from jmmastey/patch-1
Mar 21, 2016
e465885
Merge pull request #85 from wenderjean/master
Mar 21, 2016
cba6e8a
Merge pull request #79 from rutsky/patch-1
Mar 21, 2016
c68e69b
Merge pull request #75 from k16wire/ko-proof-background
Mar 21, 2016
8d286f2
Merge pull request #76 from k16wire/ko-proof-codebase
Mar 21, 2016
000d7a9
Merge pull request #78 from Arturszott/bottom-navigation-space-css-fix
Mar 21, 2016
edc6406
fix casing
jonmountjoy Mar 21, 2016
9872f6f
Merge pull request #84 from kurungsiku/master
Mar 21, 2016
60b1c74
Revert "Initial translation Bahasa Indonesia"
Mar 21, 2016
79bcb7d
Merge pull request #90 from heroku/revert-84-master
Mar 21, 2016
df35d3d
Fixed German translation error (build-release-run)
koep Apr 4, 2016
b4f1445
Merge pull request #91 from koep/ger
Apr 4, 2016
37e9e4b
Fix typo.
fjcapdevila Apr 15, 2016
9066d59
Typo.
fjcapdevila Apr 15, 2016
eafef19
Update port-binding.md
fjcapdevila Apr 15, 2016
8c8b1fd
Fix typos.
fjcapdevila Apr 15, 2016
eacf88e
Fix unbalanced parenthesis.
fjcapdevila Apr 15, 2016
32040ae
Merge pull request #92 from fjcapdevila/patch-1
raul Apr 15, 2016
98ccdf0
Merge pull request #93 from fjcapdevila/patch-2
raul Apr 15, 2016
a6a60b8
Merge pull request #94 from fjcapdevila/master
raul Apr 15, 2016
4a7749c
Merge pull request #95 from fjcapdevila/patch-4
raul Apr 15, 2016
a32e38a
Added files via upload
sethbergman Apr 17, 2016
89f9520
Added reference to favicon
sethbergman Apr 17, 2016
a83efaf
Update background.md
sethbergman Apr 17, 2016
71630bd
Typos for french
octplane Apr 21, 2016
538d63b
Merge pull request #97 from octplane/master
May 3, 2016
256a0c8
Merge pull request #96 from sethbergman/master
May 3, 2016
a0369df
fix location
jonmountjoy May 3, 2016
9aaaced
Add polish locale and translate intro.md
Arturszott Feb 1, 2016
2b46f67
Fix links for HTTPS Everywhere
adborden May 18, 2016
c6c3ce2
Merge pull request #102 from adborden/https-everywhere-fix
May 18, 2016
9113044
Add complete polish translation
Arturszott Feb 1, 2016
7f34792
Merge pull request #100 from Arturszott/master
May 23, 2016
042efba
update links for ssl
jonmountjoy May 23, 2016
8ed477b
add polish translator
jonmountjoy May 23, 2016
ae2cce2
update ruby and dependencies
jonmountjoy May 23, 2016
2b66933
Improve some conections between phrases
wenderjean May 31, 2016
b9debc0
Merge pull request #104 from wenderjean/master
Jun 1, 2016
b1a7185
Translating a missing part of phrase
wenderjean Jun 1, 2016
5f290f0
Merge pull request #105 from wenderjean/master
Jun 1, 2016
a3a4dd8
some trivial fix
marcorosi Jun 23, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.rvmrc
9 changes: 6 additions & 3 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
source 'http://rubygems.org'

gem 'sinatra', '1.2.6'
gem 'thin', '1.2.7'
gem 'maruku', '0.6.0'
ruby '2.3.1'

gem 'sinatra'
gem 'thin'
gem 'maruku'
gem 'i18n'
43 changes: 26 additions & 17 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,25 +1,34 @@
GEM
remote: http://rubygems.org/
specs:
daemons (1.1.3)
eventmachine (0.12.10)
maruku (0.6.0)
syntax (>= 1.0.0)
rack (1.3.0)
sinatra (1.2.6)
rack (~> 1.1)
tilt (>= 1.2.2, < 2.0)
syntax (1.0.0)
thin (1.2.7)
daemons (>= 1.0.9)
eventmachine (>= 0.12.6)
rack (>= 1.0.0)
tilt (1.3.2)
daemons (1.2.3)
eventmachine (1.2.0.1)
i18n (0.7.0)
maruku (0.7.2)
rack (1.6.4)
rack-protection (1.5.3)
rack
sinatra (1.4.7)
rack (~> 1.5)
rack-protection (~> 1.4)
tilt (>= 1.3, < 3)
thin (1.6.4)
daemons (~> 1.0, >= 1.0.9)
eventmachine (~> 1.0, >= 1.0.4)
rack (~> 1.0)
tilt (2.0.4)

PLATFORMS
ruby

DEPENDENCIES
maruku (= 0.6.0)
sinatra (= 1.2.6)
thin (= 1.2.7)
i18n
maruku
sinatra
thin

RUBY VERSION
ruby 2.3.1p112

BUNDLED WITH
1.12.4
4 changes: 3 additions & 1 deletion Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Development
Production deploy
-----------------

heroku create -s cedar
heroku create
git push heroku master
heroku open

Expand All @@ -27,5 +27,7 @@ Daigle, Mark Imbriaco, Keith Rarick, Will Leinweber, Jesper Jørgensen, James
Ward, Adam Seligman, Phil Hagelberg, Jon Mountjoy, Matthew Turland, Daniel
Jomphe, Mattt Thompson, Anand Narasimhan, Lucas Fais, Pete Hodgson

Translations and edits by: [@mahnunchik](https://github.com/mahnunchik), [@francescomalatesta](https://github.com/francescomalatesta), [@astralhpi](https://github.com/astralhpi), [@liangshan](https://github.com/liangshan), [@orangain](https://github.com/orangain), [@Keirua](https://github.com/Keirua), Clément Camin, Bob Marteen, [@dmathieu](https://github.com/dmathieu), [@fernandes](https://github.com/fernandes), [@gwmoura](https://github.com/gwmoura), [@lfilho](https://github.com/lfilho), [@Arturszott](https://github.com/Arturszott) and [more](https://github.com/heroku/12factor/graphs/contributors).

Released under the MIT License: http://www.opensource.org/licenses/mit-license.php

10 changes: 10 additions & 0 deletions app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "12factor",
"scripts": {
},
"env": {
},
"addons": [

]
}
14 changes: 0 additions & 14 deletions content/admin-processes.md

This file was deleted.

9 changes: 0 additions & 9 deletions content/background.md

This file was deleted.

14 changes: 14 additions & 0 deletions content/de/admin-processes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## XII. Admin-Prozesse
### Admin/Management-Aufgaben als einmalige Vorgänge behandeln

Die [Prozess-Formation](./concurrency) ist das Bündel von Prozessen zur Erledigung der üblichen Aufgaben einer App (wie die Abarbeitung von Web Requests) während sie läuft. Daneben möchten Entwickler oft einmalige Administrativ- oder Wartungsaufgaben an der App erledigen, wie zum Beispiel:

* Datenbank-Migrationen starten(z.B. `manage.py migrate` in Django, `rake db:migrate` in Rails).
* Eine Konsole starten (auch bekannt als [REPL](http://en.wikipedia.org/wiki/Read-eval-print_loop) Shell) um beliebigen Code zu starten oder die Modelle der App gegen die Live-Datenbank zu prüfen. Die meisten Sprachen stellen eine REPL zur Verfügung, wenn man den Interpreter ohne Argumente startet (z.B. `python` oder `perl`) oder in manchen Fällen mit einem anderen Kommando (z.B. `irb` für Ruby, `rails console` für Rails).
* Einmalig auszuführende Skripts aus dem Repo der App starten (z.B. `php scripts/fix_bad_records.php`).

Einmalige Administrations-Prozesse sollten in einer Umgebung laufen, die identisch ist zu der Umgebung der üblichen [langlaufenden Prozesse](./processes). Sie laufen gegen einen [Release](./build-release-run) und benutzen dieselbe [Codebase](./codebase) und [config](./config) wie jeder Prozess, der gegen einen Release läuft. Administrationscode wird mit dem App-Code ausgeliefert um Synchronisationsprobleme zu vermeiden.

Dieselben Techniken zur [Isolation von Abhängigkeiten](./dependencies) sollten für alle Prozessarten verwendet werden. Wenn zum Beispiel ein Ruby-Web-Prozess das Kommando `bundle exec thin start` verwendet, dann sollte eine Datenbankmigration `bundle exec rake db:migrate` verwenden. Wenn ein Python-Programm Virtualenv nutzt, sollte es sein mitgeliefertes `bin/python` sowohl zum Start des Tornado Webservers als auch für alle `manage.py` Admin-Prozesse verwenden.

Die Zwölf Faktoren bevorzugen Sprachen, die eine REPL Shell direkt mitbringen. Das erleichtert das Starten von einmal auszuführenden Skripten. In einem lokalen Deploy rufen Entwickler einmal auszuführende Admin-Prozesse direkt über ein Shell-Kommando im Checkout-Verzeichnis der App auf. In einem Produktions-Deploy können Entwickler ssh oder andere Kommando-Fernsteuerungs-Mechanismen benutzen, die die Ausführungsumgebung dieses Deploys für das Starten eines solchen Prozesses bereitstellt.
8 changes: 8 additions & 0 deletions content/de/background.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Hintergrund
==========

Die Mitwirkenden an diesem Dokument waren direkt beteiligt an der Entwicklung und dem Deployment von hunderten von Apps und wurden Zeugen bei der Entwicklung, beim Betrieb und der Skalierung von hunderttausenden von Apps im Rahmen unserer Arbeit an der [Heroku](http://www.heroku.com/)-Plattform.

Dieses Dokument ist eine Synthese all unserer Erfahrungen und der Beobachtungen einer großen Bandbreite von Software-As-A-Service Apps. Es ist eine Bestimmung der idealen Praktiken bei der App-Entwicklung mit besonderem Augenmerk auf die Dynamik des organischen Wachstums einer App über die Zeit, die Dynamik der Zusammenarbeit zwischen den Entwicklern die an einer Codebase zusammenarbeiten und der [Vermeidung der Kosten von Software-Erosion](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/).

Unsere Motivation ist, das Bewusstsein zu schärfen für systembedingte Probleme in der aktuellen Applikationsentwicklung, ein gemeinsames Vokabular zur Diskussion dieser Probleme zu liefern und ein Lösungsportfolio zu diesen Problemen mit einer zugehörigen Terminologie anzubieten. Das Format ist angelehnt an Martin Fowlers Bücher *[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)* und *[Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*.
14 changes: 14 additions & 0 deletions content/de/backing-services.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## IV. Unterstützende Dienste
### Unterstützende Dienste als angehängte Ressourcen behandeln

Ein *unterstützender Dienst* ist jeder Dienst, den die App über das Netzwerk im Rahmen ihrer normalen Arbeit konsumiert. Beispiele sind Datenspeicher (wie [MySQL](http://dev.mysql.com/) oder [CouchDB](http://couchdb.apache.org/)), Messaging/Queueing-Systeme (wie [RabbitMQ](http://www.rabbitmq.com/) oder [Beanstalkd](http://kr.github.com/beanstalkd/)), SMTP-Dienste für das Senden von Mail (wie [Postfix](http://www.postfix.org/)), und Cache-Systeme (wie [Memcached](http://memcached.org/)).

Unterstützende Dienste wie Datenbanken werden traditionell von denselben Systemadministratoren verwaltet, die die App deployen. Außer diesen intern verwalteten Diensten können der App auch von Dritten verwaltete Dienste zur Verfügung stehen. Dazu gehören SMTP-Dienste (wie [Postmark](http://postmarkapp.com/)), Metrik-Sammler (wie [New Relic](http://newrelic.com/) oder [Loggly](http://www.loggly.com/)), Binary-Asset-Dienste (wie [Amazon S3](http://aws.amazon.com/s3/)), und auch über eine API zugängliche Dienste (wie [Twitter](http://dev.twitter.com/), [Google Maps](http://code.google.com/apis/maps/index.html), oder [Last.fm](http://www.last.fm/api)).

**Der Code einer Zwölf-Faktor-App macht keinen Unterschied zwischen lokalen Diensten und solchen von Dritten.** Für die App sind sie beide unterstützende Dienste, zugreifbar über eine URL oder andere Lokatoren/Credentials, die in der [Konfiguration](./config) gespeichert sind. Ein [Deploy](./codebase) einer Zwölf-Faktoren-App könnte eine lokale MySQL-Datenbank durch eine von Dritten zur Verfügung gestellten ersetzen (wie [Amazon RDS](http://aws.amazon.com/rds/)). Genauso ohne Codeänderung kann ein lokaler SMTP-Server durch einen von Dritten zur Verfügung gestellten SMTP-Dienst ersetzt werden. In beiden Fällen muss sich nur der Resource-Handle in der Konfiguration ändern.

Jeder einzelne unterstützende Dienst ist eine *Resource*. So ist zum Beispiel eine MySQL-Datenbank eine Ressource; zwei MySQL-Datenbanken (die für ein Sharding auf Applikationsebene verwendet werden) stellen zwei Ressourcen dar. Dass die Zwölf-Faktor-App diese Datenbanken als *angehängte Ressourcen* behandelt, zeigt ihre lose Kopplung zu dem Deploy an dem sie hängen.

<img src="/images/attached-resources.png" class="full" alt="Ein Produktions-Deploy der an vier unterstützenden Diensten hängt." />

Ressourcen können beliebig nach Belieben an Deploys an- und abgehängt werden. Wenn zum Beispiel die Datenbank einer App aufgrund von Hardwareproblemen aus der Rolle fällt, könnte der App-Administrator eine neue Datenbank aus einem Backup aufsetzen. Die aktuelle Produktionsdatenbank könnte abgehängt und die neue Datenbank angehängt werden -- ganz ohne Codeänderung.
20 changes: 20 additions & 0 deletions content/de/build-release-run.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## V. Build, release, run
### Build- und Run-Phase strikt trennen

Eine [Codebase](./codebase) wird durch drei Phasen in einen (Nicht-Entwicklungs)-Deploy transformiert:

* Die *Build-Phase* ist eine Transformation, die ein Code-Repository in ein ausführbarers Code-Bündel übersetzt, das man auch *Build* nennt. Ausgehend von einer Code-Version eines Commits, der im Deployment-Prozess festgelegt wurde, holt sie [Abhängigkeiten](./dependencies), verpackt sie zum Mitliefern, und kompiliert Binaries und Assets.
* Die *Release-Phase* übernimmt den Build von der Build-Phase und kombiniert ihn mit der zum Deploy passenden [Konfiguration](./config). Der so erzeugte *Release* enthält sowohl den Build, als auch die Konfiguration und kann direkt in einer Ausführungsumgebung ausgeführt werden.

* Die *Run-Phase* (auch "Laufzeit" genannt) führt die App in einer Ausführungsumgebung aus indem sie eine Menge der [Prozesse](./processes) der App gegen einen ausgewählten Release ausführt.
![Code wird zum Build und zusammen mit einer Konfiguration ergibt sich ein Release](/images/release.png)

**Die Zwölf-Faktor-App trennt strikt zwischen Build-, Release- und Run-Phase.** Es ist nicht möglich, Code-Änderungen zur Laufzeit zu machen, weil es keinen Weg gibt, diese Änderungen zurück in die Build-Phase zu schicken.

Deployment-Werkzeuge bieten meist eine Release-Verwaltung an. Am bekanntesten ist die Fähigkeit auf einen früheren Release zurückzusetzen. Zum Beispiel speichert das Deployment-Werkzeug [Capistrano](https://github.com/capistrano/capistrano/wiki) Releases in einem Unterverzeichnis mit Namen `releases`. Der aktuelle Release ist ein symbolischer Link auf aktuelle Release-Verzeichnis. Mit dem Kommando `rollback` kann einfach und schnell auf einen früheren Release zurückgesetzt werden.

Jeder Release sollte eine eindeutige Release-ID haben, wie zum Beispiel einen Zeitstempel des Releases (`2011-04-06-20:32:17`) oder eine laufende Nummer (`v100`). Releases werden nie gelöscht und ein Release kann nicht verändert werden, wenn er einmal angelegt ist. Jede Änderung erzeugt einen neuen Release.

Builds werden durch die Entwickler der App angestoßen, wenn neuer Code deployt wird. Im Gegensatz dazu kann die Ausführung zur Laufzeit automatisch erfolgen, wenn ein Server neu gebootet wird oder ein abgestürzter Prozess von der Prozessverwaltung neu gestartet wird. Deswegen sollte die Run-Phase auf so wenig bewegliche Teile wie möglich beschränkt sein, denn Probleme, die eine App vom Laufen abhalten, können sie mitten in der Nacht zusammenbrechen lassen, wenn keine Entwickler zur Verfügung stehen. Die Build-Phase kann komplexer sein, denn Fehler sind immer sichtbar für den Entwickler, der den Deploy vorantreibt.


18 changes: 18 additions & 0 deletions content/de/codebase.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## I. Codebase
### Eine im Versionsmanagementsystem verwaltete Codebase, viele Deployments

Eine Zwölf-Faktor-App wird immer in einem Versionsmanagementsystem verwaltet, wie zum Beispiel [Git](http://git-scm.com/), [Mercurial](http://mercurial.selenic.com/) oder [Subversion](http://subversion.apache.org/). Eine Kopie der Versionsdatenbank wird *Code Repository* genannt, kurz *Code Repo* oder auch nur *Repo*.

Eine *Codebase* ist jedes einzelne Repo (in einem zentralisierten Versionsmanagementsystem wie Subversion) oder jede Menge von Repos, die einen ursprünglichen Commit teilen (in dezentralisierten Versionsmanagementsystemen wie git).

![Eine Codebase bildet sich in viele Deploys ab.](/images/codebase-deploys.png)

Es gibt immer eine eineindeutige Korrelation zwischen einer Codebase und einer App:

* Wenn es mehrere Codebases gibt, ist es keine App -- sondern ein verteiltes System. Jede Komponente in einem verteilten System ist eine App, und Jede kann für sich den zwölf Faktoren entsprechen.
* Wenn mehrere Apps denselben Code teilen, verletzt dies die zwölf Faktoren. Lösen lässt sich dies indem man den gemeinsamen Code in Libraries auslagert, der über die [Abhängigkeitsverwaltung](./dependencies) geladen werden kann.

Es gibt nur eine Codebase pro App aber viele Deploys der App. Ein *Deploy* ist eine laufende Instanz der App. Meist gibt es ein Produktionssystem und eines oder mehrere Staging-Systeme. Zusätzlich hat jeder Entwickler eine Kopie der App in seiner lokalen Entwicklungsumgebung, das sind auch Deploys.

Die Codebase ist über alle diese Deploys hinweg dieselbe, auch wenn bei jedem Deploy unterschiedliche Versionen aktiv sind. So hat zum Beispiel ein Entwickler manche Commits noch nicht nach Staging deployt; Staging hat manche Commits noch nicht nach Produktion deployt. Aber alle teilen dieselbe Codebase, was sie als verschiedene Deploys derselben App auszeichnet.

14 changes: 14 additions & 0 deletions content/de/concurrency.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## VIII. Nebenläufigkeit
### Mit dem Prozess-Modell skalieren

Jedes Computerprogramm wird, wenn es läuft, repräsentiert durch einen oder mehrere Prozesse. Webapps nutzen verschiedenste Arten der Prozess-Ausführung. Zum Beispiel laufen PHP-Prozesse als Kind-Prozesse von Apache und werden nach Bedarf gestartet, wenn Requests kommen. Java-Prozesse gehen anders vor: die JVM stellt einen massiven Über-Prozess zur Verfügung der große Mengen an Systemresourcen (Speicher und CPU) reserviert und die Nebenläufigkeit wird intern über Threads verwaltet. In beiden Fällen sind die laufenden Prozesse für die Entwickler der App nur minimal zu sehen.

![Die Skalierung wird dargestellt als laufende Prozesse, die Diversität der Workload wird dargestellt als Prozesstypen.](/images/process-types.png)

**In der Zwölf-Faktor-App sind Prozesse First Class Citizens.** Die Prozesse der Zwölf-Faktor-App orientieren sich am [Unix-Prozess-Modell für Service Daemons](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/). Mit diesem Model können Entwickler ihre App für die Bearbeitung verschienster Aufgaben konzipieren indem sie jeder Aufgabe einen *Prozesstyp* zuweisen. Zum Beispiel können HTTP Requests durch einen Web-Prozess bedient werden und langlaufende Hintergrundarbeiten durch einen Worker Prozess.

Dies hindert die einzelnen Prozesse nicht daran, ihr internes Multiplexing zu verwalten mittels Threads in der der Laufzeit-VM oder mit dem Async/Event-Modell von Werkzeugen wie [EventMachine](http://rubyeventmachine.com/), [Twisted](http://twistedmatrix.com/trac/) oder [Node.js](http://nodejs.org/). Aber eine einzelne VM ist in der Größe dadurch beschränkt (vertikale Skalierung), dass eine App noch in der Lage sein muss, mehrere Prozesse auf mehreren physikalischen Maschinen zu starten.

Das Prozess-Modell glänzt besonders, wenn es darum geht zu skalieren. Die [Share-Nothing, horizontal teilbare Art und Weise der Prozesse der Zwölf-Faktor-App](./processes) hat zur Folge, dass weitere Nebenläufigkeit einfach und zuverlässig hinzugefügt werden kann. Das Bündel von Prozesstypen und die Zahl der Prozesse wird auch *Prozess-Formation* genannt.

Die Prozesse einer Zwölf-Faktor-App [sollten nie als Daemons laufen](http://dustin.github.com/2010/02/28/running-processes.html) oder PID-Dateien schreiben. Stattdessen sollen sich auf den Prozessmanager des Betriebssystems verlassen (wie [Upstart](http://upstart.ubuntu.com/), den verteilten Prozessmanager einer Cloud-Plattform oder ein Werkzeug wie [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) während der Entwicklung) um [Output-Streams](./logs) zu verwalten, auf abgestürzte Prozesse zu reagieren und mit von Benutzern angestoßenen Restarts und Shutdowns umzugehen.
Loading