-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmicroservicos-pybr.html
264 lines (260 loc) · 11.4 KB
/
microservicos-pybr.html
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/css/reveal.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/css/theme/white.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/css/print/pdf.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/zenburn.min.css">
</head>
<!-- Essa palestra tem como objetivo apresentar uma possível solução para
diminuir os problemas que uma arquitetura orientada a microsserviços traz
para um ecossistema e o efeitos colaterais causados por essa escolha arquitetural.
Vamos passar pelos motivos que fazem um time / empresa escolher trabalhar
com aplicações menores ao invés de grandes monolitos, o sofrimento inicial,
a dificuldade da definição de barreiras de cada serviço e
como evoluir para um ambiente mais saudável uma vez que
todas as aplicações são serviços menores, de responsabilidade de times diferentes. -->
<body>
<div class="reveal">
<div class="slides">
<section>
<h1>Quebrei minhas aplicações em microserviços</h1>
<h2>e agora?</h2>
</section>
<section>
<h3>Bianca Rosa</h3>
<p>lead dev @ stone</p>
<div class="box col-sm-12">
<div class="col-sm-6">
<img class="plain" height="300" src="images/pic1.jpg"/>
</div>
<div class="col-sm-6">
<ul>
<li>Python</li>
<li>Go</li>
<li>Lua / JS</li>
<li>DevOps</li>
<li>PythOnRio / Pyladies</li>
</ul>
</div>
</div>
</section>
<section>
<ol>
<li style="color: purple;">O inicio</li>
<li>O mínimo de um microserviço</li>
<li>Responsabilidades</li>
<li>Segurança</li>
<li>Complexidade</li>
<li>O sonho</li>
</ol>
</section>
<section>
<h1>Vamos fazer um software!</h1>
</section>
<section>
<img class="plain" height="500" src="images/microservices/diagrama-1.png"/>
</section>
<section>
<img class="plain" height="500" src="images/microservices/diagrama-2.png"/>
</section>
<section>
<img class="plain" height="500" src="images/microservices/diagrama-3.png"/>
</section>
<section>
<h1>e assim nasce um monolito</h1>
</section>
<section>
<img class="plain" src="images/microservices/monolith.jpeg"/>
</section>
<section>
<h1>E por que isso é algo ruim?</h1>
<ul>
<li class="fragment">É difícil pra corrigir bugs</li>
<li class="fragment">É difícil subir coisas novas</li>
<li class="fragment">É difícil de escalar</li>
<li class="fragment">Pouca flexibilidade para escolher tecnologias</li>
</ul>
</section>
<section>
<h1>Vamos usar microserviços!</h1>
</section>
<section>
<h1>... e nunca mais vamos ter problemas!</h1>
</section>
<section>
<img class="plain" src="images/microservices/giphy.gif"/>
</section>
<section>
<p>Temos microserviços!</p>
<img class="plain" src="images/microservices/diagrama-4.png"/>
</section>
<section>
<h1>E por que isso é melhor?</h1>
<ul>
<li class="fragment">É mais fácil pra corrigir bugs</li>
<li class="fragment">É mais fácil pra subir coisas novas</li>
<li class="fragment">É mais fácil de escalar</li>
<li class="fragment">Temos mais flexibilidade de tecnologia</li>
</ul>
</section>
<section>
<img class="plain" src="images/microservices/cheers.jpg"/>
</section>
<section>
<h1>Até que...</h1>
<ul>
<li class="fragment">Onboarding mais complexo</li>
<li class="fragment">Vários bugs em sistemas diferentes ao mesmo tempo</li>
<li class="fragment">Mudanças afetam várias aplicações</li>
<li class="fragment">Pouca visibilidade de problemas em alguns serviços</li>
</ul>
</section>
<section>
<img class="plain" src="images/microservices/diagrama-5.png"/>
</section>
<section>
<h1>Isso é um monolito distribuído!</h1>
<img class="plain" src="images/microservices/computer-rage.gif"/>
</section>
<section>
<p>E nem sempre isso é melhor do que um monolito.</p>
</section>
<section>
<p>Às vezes precisamos cultivar uma cultura DevOps antes, para depois podermos focar novamente em desenvolver de forma saudável.</p>
</section>
<section>
<ul>
<li>O inicio</li>
<li style="color: purple;">O mínimo de um microserviço</li>
<li>Responsabilidades</li>
<li>Segurança</li>
<li>Complexidade</li>
<li>O sonho</li>
</ul>
</section>
<section>
<a href="https://www.martinfowler.com/bliki/MicroservicePrerequisites.html">Pré-requisitos</a>
</section>
<section>
<h1>Não suba microserviços se você não tem...</h1>
<ul>
<li class="fragment">Provisionamento rápido</li>
<li class="fragment">Monitoramento Básico</li>
<li class="fragment">Deploy rápido</li>
</ul>
</section>
<section>
<h1>Não abra mão de...</h1>
<ul>
<li class="fragment">Alertas</li>
<li class="fragment">Métricas (preferencialmente, de negócio)</li>
<li class="fragment">Logs</li>
</ul>
</section>
<section>
<ol>
<li>O inicio</li>
<li>O mínimo de um microserviço</li>
<li style="color: purple;">Responsabilidades</li>
<li>Segurança</li>
<li>Complexidade</li>
<li>O sonho</li>
</ol>
</section>
<section>
<p>Microserviços precisam ter escopos bem pensados.</p>
</section>
<section>
<img class="plain" src="images/microservices/diagrama-6.png"/>
</section>
<section>
<img class="plain" src="images/microservices/diagrama-7.png"/>
</section>
<section>
<img class="plain" src="images/microservices/diagrama-8.png"/>
</section>
<section>
<a href="https://www.martinfowler.com/bliki/BoundedContext.html">BoundedContext</a>
</section>
<section>
<ol>
<li>O inicio</li>
<li>O mínimo de um microserviço</li>
<li>Responsabilidades</li>
<li style="color: purple;">Segurança</li>
<li>Complexidade</li>
<li>O sonho</li>
</ol>
</section>
<section>
<a href="http://www.grahamlea.com/2015/07/microservices-security-questions/">Microservices Security Questions</a>
<p class="fragment">Seu serviço tem autenticação? Ou ele trabalha confiando nos outros serviços? Como você garante isso?</p>
</section>
<section>
<ol>
<li>O inicio</li>
<li>O mínimo de um microserviço</li>
<li>Responsabilidades</li>
<li>Segurança</li>
<li style="color: purple;">Complexidade</li>
<li>O sonho</li>
</ol>
</section>
<section>
<p>Tente definir as linguagens e tecnologias core do seu time.</p>
</section>
<section>
<p>Tenha estrutura e padrões de código definidos em aplicações que compartilham a mesma linguagem.</p>
</section>
<section>
<h1>Cuidado com ecossistemas complexos.</h1>
<p>Use comunicação assíncrona sempre que for possível.</p>
<p>Cada comunicação entre serviços é mais um ponto de falha.</p>
</section>
<section>
<ul>
<li><a href="https://www.docker.com/">Docker</a></li>
<li><a href="https://docs.docker.com/compose">Docker Compose</a></li>
<li><a href="https://kubernetes.io/">Kubernetes</a></li>
<li><a href="https://helm.sh">Helm</a></li>
</ul>
</section>
<section>
<ol>
<li>O inicio</li>
<li>O mínimo de um microserviço</li>
<li>Responsabilidades</li>
<li>Segurança</li>
<li>Complexidade</li>
<li style="color: purple;">O sonho</li>
</ol>
</section>
<section>
<img class="plain" src="images/microservices/diagrama-sonho.png"/>
</section>
<section>
<p>twitter:
<a href="http://twitter.com/__biancarosa">@__biancarosa</a>
</p>
<p>slides:
<a href="http://biancarosa.com.br/slides">biancarosa.com.br/slides</a>
</p>
<p>tks :)</p>
<img class="plain" src="images/dancing.gif"/>
</section>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/headjs/1.0.3/head.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/js/reveal.min.js"></script>
<script>
Reveal.initialize({
dependencies: [
{ src: 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/plugin/notes/notes.js' },
{ src: 'https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/plugin/highlight/highlight.js', callback: function () { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>