summaryrefslogtreecommitdiff
path: root/src/talks
diff options
context:
space:
mode:
Diffstat (limited to 'src/talks')
-rw-r--r--src/talks/fallacy.hbs228
-rw-r--r--src/talks/who-cares.hbs196
2 files changed, 395 insertions, 29 deletions
diff --git a/src/talks/fallacy.hbs b/src/talks/fallacy.hbs
new file mode 100644
index 0000000..bf8936d
--- /dev/null
+++ b/src/talks/fallacy.hbs
@@ -0,0 +1,228 @@
1<!doctype html>
2<html lang="en">
3
4 <head>
5 <meta charset="utf-8">
6
7 <title>The Cloud Native Fallacy: You are not Google, or How to Stop Worrying and Learn to Love your Servers</title>
8
9 </head>
10 <body>
11
12 <section id="who-am-i-ibm" class="slide level2">
13 <h1>Who am I?</h1>
14 <img style="float:right; margin-right:24pt" src="/images/ibm-logo.png"/>
15 <p> Distinguished Engineer </p>
16 <p> IBM Cloud </p>
17 </section>
18
19 <section id="who-am-i-openstack" class="slide level2">
20 <h1>Who am I?</h1>
21 <img style="float:right; margin-right:24pt" src="/images/openstack-cloud-software-vertical-large.png" />
22 <p>Technical Committee</p>
23 <p>Foundation Board of Directors</p>
24 <p>Developer Infrastructure Core Team</p>
25 </section>
26
27 <section class="slide level2">
28 <img src="/images/Slim-pickens_riding-the-bomb_enh-lores.jpg"
29 alt="Slim Pickens Rides Bomb" />
30 </section>
31
32 <section class="slide level2">
33 <h1>Is Cloud Native good?</h1>
34 <h2 class='fragment'>yes</h2>
35 </section>
36
37 <section class="slide level2">
38 <h1>Is not-Cloud Native bad?</h1>
39 <h2 class='fragment'>no</h2>
40 </section>
41
42 <section class="slide level2">
43 <h1>Do you need to write Cloud Native apps to use cloud?</h1>
44 <h2 class='fragment'>no</h2>
45 </section>
46
47 <section class="slide level2">
48 <h1>Are you a bad person if don't write Cloud Native apps?</h1>
49 <h2 class='fragment'>no</h2>
50 </section>
51
52 <section class="slide level2">
53 <h1>What is Cloud Native?</h1>
54 </section>
55
56 <section class="slide level2">
57 <p>Cloud-native applications are meant to function "in a world of cloud
58 computing that is ubiquitous and flexible." Applications can be
59 developed on a cloud platform, then deployed to different clouds where
60 supporting software stacks will help them run at scale.</p>
61 <p><em>Information Week - Jul 30, 2015</em></p>
62 </section>
63
64 <section class="slide level2">
65 <p>The Cloud Native Computing Foundation will harmonize emerging
66 technologies and foster innovation in container packaged, dynamically
67 scheduled, and microservices based application development and
68 operations.</p>
69 </section>
70
71 <section class="slide level2">
72 <h1>Cloud Native Is ... </h1>
73 <ul>
74 <li>Architectural and operational approach</li>
75 <li>Assume cloud</li>
76 <li>Assume failures</li>
77 <li>Microservices</li>
78 <li>Containerized?</li>
79 </ul>
80 </section>
81
82 <section class="slide level2">
83 <img src="/images/Cloud-Native-Architecture.png"
84 alt="Pivotal Cloud Native Architecture" />
85 </section>
86
87 <section class="slide level2">
88 <h1>12 Factor Application</h1>
89 <h3>I. Codebase - One codebase tracked in revision control, many deploys</h3>
90 <h3>II. Dependencies - Explicitly declare and isolate dependencies</h3>
91 <h3>III. Config - Store config in the environment</h3>
92 <h3>IV. Backing services - Treat backing services as attached resources</h3>
93 <h3>V. Build, release, run - Strictly separate build and run stages</h3>
94 <h3>VI. Processes - Execute the app as one or more stateless processes</h3>
95 <h3>VII. Port binding - Export services via port binding</h3>
96 <h3>VIII. Concurrency - Scale out via the process model</h3>
97 <h3>IX. Disposability - Maximize robustness with fast startup and graceful shutdown</h3>
98 <h3>X. Dev/prod parity - Keep development and production as similar as possible</h3>
99 <h3>XI. Logs - Treat logs as event streams</h3>
100 <h3>XII. Admin processes - Run admin/management tasks as one-off processes</h3>
101 </ul>
102 </section>
103
104 <section class="slide level2" data-transition='zoom'>
105 <h1>This is awesome</h1>
106 </section>
107
108 <section class="slide level2" data-transition='zoom'>
109 <h1>Except for III</h1>
110 <h2>I use config files</h2>
111 </section>
112
113 <section class="slide level2" data-transition='zoom'>
114 <h1>VI. Stateless</h1>
115 <h2>If /dev/null is fast in web scale I will use it. Is it web scale?</h2>
116 <h3 class="fragment">Use a service to store your data - like a database</h3>
117 <h3 class="fragment">Is that database service web scale?</h3>
118 </section>
119
120 <section class="slide level2">
121 <h1>Go google and watch "MongoDB is Web Scale"</h1>
122 </section>
123
124 <section class="slide level2">
125 <h1>A Foolish Consistency is the Hobgoblin of Little Minds</h1>
126 </section>
127
128 <section class="slide level2">
129 <h1>Cloud Native / 12 Factor is **A** great approach</h1>
130 <h2>You still have to think.</h2>
131 </section>
132
133 <section class="slide level2">
134 <p>As an application developer,<br />
135 I want to deploy and run an application on the internet
136 so that my customers all over the world can consume it.</p>
137 </section>
138
139 <section class="slide level2">
140 <p>As an operator,<br />
141 I want to deploy the application across multiple clouds
142 so that my service survives issues in any one of them.</p>
143 </section>
144
145 <section class="slide level2">
146 <h1>THIS WORKS</h1>
147 <h3>I'm doing it myself as we speak</h3>
148 <img style="float:right; margin-right:24pt" src="/images/graphite.openstack.org.png"/>
149 <p class='fragment'>10-20k VMs per-day</p>
150 <p class='fragment'>10 Cloud Regions in 7 clouds</p>
151 <p class='fragment'>Only using OpenStack APIs</p>
152 </section>
153
154 <section id="openstack-infra" data-transition='zoom'>
155 <h1>OpenStack Infra</h1>
156 </section>
157
158 <section id="tooling-automation-and-ci-for-openstack-project" class="slide level2" data-transition='zoom'>
159 <h1>Tooling, Automation and CI for OpenStack Project</h1>
160 </section>
161
162 <section id="our-vms-are-everywhere" class="slide level2">
163 <h1>Our VMs are everywhere</h1>
164 <ul>
165 <li>Rackspace: Dallas, Chicago, DC</li>
166 <li>Internap: New York</li>
167 <li>OpenStack Innovation Center: San Antonio</li>
168 <li>OVH: Strassbourg, Gravelines</li>
169 <li>Vexxhost: Montreal</li>
170 <li>Blue Box: San Jose</li>
171 <li>Red Hat: Phoenix</li>
172 </ul>
173 </section>
174
175 <section id="we-also-have-servers" class="slide level2">
176 <h1>We also have servers</h1>
177 <h2>Infra Cloud - Hardware donated by HPE</h2>
178 </section>
179
180 <section id="architecture" class="slide level2">
181 <h1>Architecture</h1>
182 <p><img src="/images/infra_architecture.jpg" alt="image" /></p>
183 </section>
184
185 <section class="slide level2">
186 <h1>Gerrit</h1>
187 <ul>
188 <li class="fragment">
189 Traditional 'Enterprise' Java Application</li>
190 <li class="fragment">Nova VM, Cinder Volume, Trove DB</li>
191 <li class="fragment">Scale out farm of git replicas</li>
192 </ul>
193 </section>
194
195 <section class="slide level2">
196 <h1>nodepool</h1>
197 <ul>
198 <li class="fragment">Cloud Native</li>
199 <li class="fragment">Purpose built in Python</li>
200 <li class="fragment">Keeps a pool of ready to go nodes</li>
201 <li class="fragment">Multi-cloud</li>
202 <li class="fragment">Fully elastic - responds to demand</li>
203 </ul>
204 </section>
205
206 <section class="slide level2">
207 <h1>Run what you want</h1>
208 <p class='fragment'>12-factor application on Kubernetes with Kuryr</p>
209 <p class='fragment'>Traditional Java web application behind NAT with a Floating IP</p>
210 <p class='fragment'>Kerberos Server on the Internet with Fixed IP and Reverse DNS </p>
211 <p class='fragment'>Baremetal for hardware enabled transcoding via Ironic</p>
212 </section>
213
214 <section class="slide level2">
215 <img src="/images/Cloud-Native-Architecture.png"
216 alt="Pivotal Cloud Native Architecture" />
217 </section>
218
219 <section class="slide level2">
220 <h1>DevOps recognizes the need for Dev and Ops to collaborate</h1>
221 </section>
222
223 <section class="slide level2">
224 <h1>Rigid devotion to any guidelines without judgement is deadly</h1>
225 </section>
226
227 </body>
228</html>
diff --git a/src/talks/who-cares.hbs b/src/talks/who-cares.hbs
index f2675a4..fdc1d2d 100644
--- a/src/talks/who-cares.hbs
+++ b/src/talks/who-cares.hbs
@@ -63,7 +63,7 @@
63 63
64 64
65 <p class='fragment'>10-20k VMs per-day</p> 65 <p class='fragment'>10-20k VMs per-day</p>
66 <p class='fragment'>3 (soon to be 6) clouds</p> 66 <p class='fragment'>10 Cloud Regions in 7 clouds</p>
67 <p class='fragment'>Only using OpenStack APIs</p> 67 <p class='fragment'>Only using OpenStack APIs</p>
68 68
69 </section> 69 </section>
@@ -102,33 +102,30 @@
102 <h1>18 Terabytes of Log Data in six months</h1> 102 <h1>18 Terabytes of Log Data in six months</h1>
103 </section> 103 </section>
104 104
105 <section id="we-have-no-servers" class="slide level2">
106 <h1>We have no servers</h1>
107 <ul>
108 <li>Rackspace Public Cloud</li>
109 <li>HP Helion Public Cloud</li>
110 <li>TripleO Community Cloud hosted at RedHat</li>
111 </ul>
112 <span class='fragment'>
113 <p>Coming soon:</p>
114 <ul>
115 <li>OVH Public Cloud</li>
116 <li>Blue Box Dedicated Cloud on SoftLayer</li>
117 <li>Infra Cloud hosted at HP</li>
118 <li>IBM Public Cloud</li>
119 </ul>
120 </span>
121 </section>
122
123 <section id="our-vms-are-everywhere" class="slide level2"> 105 <section id="our-vms-are-everywhere" class="slide level2">
124 <h1>Our VMs are everywhere</h1> 106 <h1>Our VMs are everywhere</h1>
107 <h3>Public Clouds</h3>
125 <ul> 108 <ul>
126 <li>HP: Las Vegas, DC</li>
127 <li>Rackspace: Dallas, Chicago, DC</li> 109 <li>Rackspace: Dallas, Chicago, DC</li>
128 <li>RedHat: Phoenix</li> 110 <li>Internap: New York</li>
129 <li>OVH: Strassbourg, Gravelines</li> 111 <li>OVH: Strassbourg, Gravelines</li>
112 <li>Vexxhost: Montreal</li>
113 <li>OpenStack Innovation Center: San Antonio</li>
114 </ul>
115 <h3>Private Clouds</h3>
116 <ul>
130 <li>Blue Box: San Jose</li> 117 <li>Blue Box: San Jose</li>
131 <li>IBM: Amsterdam, Dallas, Franfurt, Hong Kong, Houston, London, Montreal, Paris, Querétaro, San Jose, São Paulo, Seattle, Singapore, Sydney, Tokyo, Toronto, DC</li> 118 <li>Red Hat: Phoenix</li>
119 </ul>
120 </section>
121
122 <section id="we-also-have-servers" class="slide level2">
123 <h1>We also have servers</h1>
124 <h2>Infra Cloud</h2>
125 <ul>
126 <li>Hardware donated by HPE: Houston</li>
127 <li>Community run cloud using OpenStack Puppet</li>
128 <li>Bare Metal managed with Bifrost/Ironic</li>
132 </ul> 129 </ul>
133 </section> 130 </section>
134 131
@@ -182,6 +179,141 @@
182 </section> 179 </section>
183 180
184 <section class="slide level2"> 181 <section class="slide level2">
182 <h1>How do we do this?</h1>
183 </section>
184
185 <section class="slide level2">
186 <h1>Control plane</h1>
187 <h3>http://git.openstack.org/cgit/openstack-infra/system-config</h3>
188 <ul>
189 <li>All server config management in git</li>
190 <li>Puppet manages the servers: puppet apply</li>
191 <li>Ansible runs puppet: ansible puppet module</li>
192 <li>Ansible OpenStack Dynamic Inventory</li>
193 <li>Only thing not public are keys and secrets</li>
194 </ul>
195 </section>
196
197 <section class="slide level2">
198 <h1>os-client-config</h1>
199 <h3>http://git.openstack.org/cgit/openstack/os-client-config</h3>
200 <p>A library to handle config information for openstack clients</p>
201 <p>Tracks differences in vendors that can't be discovered</p>
202 <p>In use in python-openstackclient and ansible</p>
203 </section>
204
205 <section class="slide level2">
206 <h1>os-client-config</h1>
207 <p>~/.config/openstack/clouds.yaml</p>
208 <pre>
209clouds:
210 vexxhost:
211 profile: vexxhost
212 auth:
213 project_name: d8af8a8f-a573-48e6-898a-af333b970a2d
214 username: 0b8c435b-cc4d-4e05-8a47-a2ada0539af1
215 password: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
216 region_name: ca-ymq-1
217 dreamcompute:
218 profile: dreamhost
219 auth:
220 username: montay6
221 project_name: dhc2111978
222 password: XXXXXXXXXXXXX
223 region_name: RegionOne
224 </pre>
225 </section>
226
227 <section class="slide level2">
228 <h1>shade</h1>
229 <h3>http://git.openstack.org/cgit/openstack-infra/shade</h3>
230 <p>A library to wrap business logic around client libraries</p>
231 <pre>
232cloud.create_image('image-name', filename='image-filename.qcow2')
233cloud.create_server('my-server', image='immage-name', auto_ip=True)
234 </pre>
235 <p>In use in Infra Nodepool and ansible</p>
236 </section>
237
238 <section class="slide level2">
239 <h1>ansible</h1>
240 <p>Brand new modules, based on shade</p>
241 <p>Part of 2.0 release</p>
242 <pre>
243- os_keypair:
244 cloud: hp-mordred
245 name: mordred
246 public_key_file: ~/.ssh/id_rsa.pub
247- os_image:
248 cloud: hp-mordred
249 name: Monty Ubuntu
250 file: ubuntu.vhd
251- os_server:
252 cloud: hp-mordred
253 name: my-server
254 flavor_ram: 1024
255 image: Monty Ubuntu
256 </pre>
257 </section>
258
259 <section class="slide level2">
260 <h1>ansible</h1>
261 <p>multi-cloud support</p>
262 <pre>
263- os_keypair:
264 cloud: "{{ item }"
265 name: mordred
266 public_key_file: ~/.ssh/id_rsa.pub
267 with-items:
268 - vexxhost
269 - rackspace
270 - ovh
271 </pre>
272 </section>
273
274 <section class="slide level2">
275 <h1>Ansible Role Cloud Launcher</h1>
276 <h2>http://git.openstack.org/cgit/openstack/ansible-role-cloud-launcher</h2>
277 <pre>
278profiles:
279 - name: admin-clouds
280 flavors:
281 - name: aoclcompany.xlarge
282 ram: 128
283 vcpus: 1
284 - name: ops
285 images:
286 - name: ubuntu-trusty
287 filename: /home/ubuntu/trusty-server-cloudimg-amd64-disk1.img
288 - name: bootstrap-keypair
289 keypairs:
290 - name: bootstrap-key
291 public_key_file: /home/ubuntu/.ssh/id_rsa.pub
292clouds:
293 - name: awesomecloud
294 profiles:
295 - admin-clouds
296 - bootstrap-keypair
297 - name: yaycloud-ops
298 oscc_cloud: yaycloud-opsuser
299 profiles:
300 - bootstrap-keypair
301 - ops
302 </pre>
303 </section>
304
305 <section class="slide level2">
306 <h1>nodepool</h1>
307 <ul>
308 <li>Use shade to treat all cloud regions as one giant cloud</li>
309 <li>diskimage-builder makes identical base images for each</li>
310 <li>Pre-cache network artifacts in disk images</li>
311 <li>glean instead of cloud-init to handle no-DHCP on Rackspace</li>
312 <li>Pre-spins warm pool - always keep min-ready number of nodes</li>
313 </ul>
314 </section>
315
316 <section class="slide level2">
185 <h1>OpenStack Works!</h1> 317 <h1>OpenStack Works!</h1>
186 <p class='fragment'>Why should you care?</p> 318 <p class='fragment'>Why should you care?</p>
187 </section> 319 </section>
@@ -218,7 +350,7 @@
218 <li>Put it near your users</li> 350 <li>Put it near your users</li>
219 <li>Don't put it in an NSA data center</li> 351 <li>Don't put it in an NSA data center</li>
220 <li>Locality Requirements</li> 352 <li>Locality Requirements</li>
221 <li class='fragment'>What if you have customers in Suriname?</li> 353 <li class='fragment'>What if you have customers in Hungary?</li>
222 </ul> 354 </ul>
223 </section> 355 </section>
224 356
@@ -273,17 +405,23 @@
273 <p>CityCloud: Sweden, UK</p> 405 <p>CityCloud: Sweden, UK</p>
274 <p>Elastx: Sweden</p> 406 <p>Elastx: Sweden</p>
275 <p>Datacentred: UK</p> 407 <p>Datacentred: UK</p>
276 <p>Ultimum: Prague</p>
277 <p>Enter Cloud Suite: Italy, Germany, Frankfurt</p> 408 <p>Enter Cloud Suite: Italy, Germany, Frankfurt</p>
278 <p>Internap: Netherlands, US</p> 409 <p>Internap: Netherlands, US</p>
279 <p>Ultimum: Prague</p> 410 <p>Ultimum: Czech Republic</p>
411 <p>Zetta: Norway</p>
412 </section>
413
414 <section class="slide level2">
415 <h1>Managed Private Cloud</h1>
416 <h2>Bluebox: an IBM Company</h2>
417 <ul>
418 <li>Blue Box Dedicated: In any Softlayer Data Center Worldwide</p>
419 <li>Blue Box Local: In your data center</p>
280 </section> 420 </section>
281 421
282 <section class="slide level2"> 422 <section class="slide level2">
283 <h1>Global Reach</h1> 423 <h1>Private Cloud Distro</h1>
284 <p>Blue Box Dedicated: In every Softlayer Data Center Worldwide</p> 424 <h3>Not listing them - I can't possibly remember them all</h3>
285 <h3>Including right here in Amsterdam</h3>
286 <p>Blue Box Local: Same thing, but in your DC</p>
287 </section> 425 </section>
288 426
289 <section class="slide level2"> 427 <section class="slide level2">