summaryrefslogtreecommitdiff
path: root/.html/12factor/7-port-binding.html
blob: 738e1b0ef83f2048d16a9ac44a47940d5c3314f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<!DOCTYPE html>
<html>
<head>
	<title>
		The Codex » 
		Factor 7: Port Binding
	</title>

	<link
		rel='stylesheet'
		type='text/css'
		href='http://fonts.googleapis.com/css?family=Buenard:400,700&amp;subset=latin,latin-ext'>
	<link
		rel="stylesheet"
		type="text/css"
		href="../media/css/reset.css">
	<link
		rel="stylesheet"
		type="text/css"
		href="../media/css/grimoire.css">
</head>
<body>

<div id="shell">
	
		<ol id="breadcrumbs">
			
				<li class="crumb-0 not-last">
					
						<a href="../">index</a>
					
				</li>
			
				<li class="crumb-1 not-last">
					
						<a href="./">12factor</a>
					
				</li>
			
				<li class="crumb-2 last">
					
						7-port-binding
					
				</li>
			
		</ol>
	

	
	<div id="article">
		<h1 id="factor-7-port-binding">Factor 7: Port Binding</h1>
<p><a href="http://www.12factor.net/port-binding">This</a> is the exact point where the
Heroku-specific features of the approach overwhelm the general features.</p>
<p>Factor 7 is over-specific:</p>
<ul>
<li>
<p>It presupposes the existence of a front-end routing layer, without providing
  any insight into how to deploy, configure, provision, or manage one.</p>
</li>
<li>
<p>It demands HTTP (by name) rather than a more flexible “any well-standardized
  protocol,” without explaining why. (Web apps can have non-HTTP internal
  components.)</p>
</li>
<li>
<p>It dismisses the value of “pre-existing” container ecosystems that don't
  work the way Heroku does. Have a giant, well-managed
  <a href="http://glassfish.org">Glassfish</a> cluster that you deploy components to? TOO
  BAD, not Heroku-like enough for these guys even though many aspects run
  along similar philosophical lines.</p>
</li>
<li>
<p>It dismisses the value of unix-as-a-container. Unix domain sockets with
  controlled permissions? Psh, let's go through the network stack instead.
  SysV IPC? (Yeah, I know.) Network. Pipes? Network. There's an implicit
  exception for “intra-process” communication, but it's never really
  identified or reasoned about.</p>
</li>
<li>
<p>Have you <em>seen</em> the kinds of process control interfaces developers invent,
  when left to their own devices? Signals and PID files are well-established
  conventions, and smart, competent people still fuck those up all the time.
  Command-line arguments are another frequent case of NIH stupidity. Do you
  really want every app to have its own startup API?</p>
</li>
</ul>
	</div>


	
<div id="comments">
<div id="disqus_thread"></div>
<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
    var disqus_shortname = 'grimoire'; // required: replace example with your forum shortname

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>


	
	<div id="footer">
		<p>
			
				The Codex —
			
			Powered by <a href="http://markdoc.org/">Markdoc</a>.
			
<a href="https://bitbucket.org/ojacobson/grimoire.ca/src/master/wiki/12factor/7-port-binding.md">See this page on Bitbucket</a> (<a href="https://bitbucket.org/ojacobson/grimoire.ca/history-node/master/wiki/12factor/7-port-binding.md">history</a>).

		</p>
	</div>
	
</div>
</body>
</html>