aboutsummaryrefslogtreecommitdiff
path: root/slides/hidra.markdown
blob: b620443bb241adfe6aab40d349338655a1eaa6d1 (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
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
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
Title: O Processo Hidra
Author: Silvio Rhatto
Generator: S9

%css 

body {
  font-family: monospace;
}
  
.centered img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}

.centered {
  text-align: center;
}

p, li, dt, dd, td, th {
  font-size: 16pt;
}

.slide h1 {
  font-size: 25pt;
}

%end

!SLIDE centered

![O Processo Hidra](hidra-oil.png)

O Processo Hidra
================

<div class="centered" markdown="1">
![O Processo Hidra](hidra-oil.png)

De relógios a nuvens, de nuvens a hidras.
</div>

Parte 1: Introdução
===================

Objetivo da apresentação
========================

O objetivo desta fala é divulgar os estudos em andamento sobre o processo hidra dando espaço para possíveis andamentos:

  1. Informar os grupos e pessoas que possuem conteúdo hospedado em infraestruturas tecno-sociais comuns sobre o trabalho desenvolvido.

  2. Encorajar grupos técnicos existentes para adotarem procedimentos que favoreçam suas infraestruturas a terem comportamento hidra.

Esta apresentação ainda está em processo de concepção e revisão e por isso não está sendo divulgada.

O que é uma Hidra?
==================

Ser mitológico de múltiplas cabeças regenerativas, destruído por Hércules
=========================================================================

<div class="centered" markdown="1">
![Hidra mitológica](images/Hydra_04.jpg)
</div>

Na biologia moderna, animal aquático que possui capacidades regenerativas
=========================================================================

<div class="centered" markdown="1">
![Hida biológica](images/Hydra001.jpg)
</div>

O que é o Processo Hidra?
=========================

O Processo Hidra é uma descrição de infraestruturas tecno-sociais que apresentam:

  1. Replicabilidade e escalabilidade.

  2. Capacidade de combinação rizomática.

  3. Regeneração e reagrupamento após eventos catastróficos.

A Hidra moderna pode resistir a Hércules.

Parte 2: Grupos Técnicos Sociais
================================

Mas antes façamos uma retrospectiva...

Sistemas informacionais sociais
===============================

Modelo "clássico" de hospedagem: arquitetura "cliente-servidor":

<div class="centered" markdown="1">
![Arquitetura cliente-servidor](http://code.google.com/edu/parallel/img/client-server.gif)
</div>

Trabalho técnico informacional em grupos sociais
================================================

Características:

  - Considerado tecnicamente de alta dificuldade e dedicação.

  - Esforço para provisionamento, configuração e manutenção de sistemas.

  - Trabalho demorado: escala de meses para alcançar estabilidade.

  - Suscetível a muitas falhas: escala de horas para que um sistema seja inutilizado.

  - Pouco tempo disponível para o trabalho.

  - Dificuldade para a realização de backups e manutenção de procedimentos administrativos.

  - Baixa mobilização e força de trabalho "tarefeira".

  - Custa um bom dinheiro...

Interlúdio: a destruição das redes
==================================

![Redes centralizadas e descentralizadas](http://www.ibiblio.org/pioneers/images/centralized.gif)
![Rede distribuída](http://www.ibiblio.org/pioneers/images/distributed.gif)

A cada evento catastrófico, vários grupos são prejudicados com danos à comunicação de difícil cicatrização.

Parte 3: Contra-ataque infraestrutural
======================================

Como impedir que uma rede seja destruída mesmo que a remoção de nodos continue?

A divisão em camadas
====================

Observação crucial:

    "Ghost in the shell": o disco e o hardware são intercambiáveis,
     provisionamento pode ocorrer em múltiplas etapas. É possível
     manter um estoque de discos pré-instalados e uma reserva financeira
     para a aquisição de máquinas. Isso e backups permite a reconstrução
     de sistemas.

Conclusão imediata:

    É necessário "descolar" a camada de serviços (web, streaming, email,
    etc) da camada infraestrutural (máquinas, conexões, etc): filtragem
    de problemas físicos e jurídicos.

A camada de serviços pode então ser "congelada" na forma de backups, enquanto que a camada infraestrutural não possui "alma" intrínseca, podendo ser reconfigurada quando necessário. Desse modo, várias máquinas podem ser mantidas no ar para aumentar a tolerância a falhas.

Mas como um sítio pode estar simultaneamente em várias máquinas?

DNS: colando domínios em máquinas
=================================

![DNS](images/An_example_of_theoretical_DNS_recursion.png)
![Round Robin DNS](http://www.linux.org/docs/ldp/howto/Jabber-Server-Farming-HOWTO/c2s-round-robin.jpeg)

O colamento/descolamento entre camadas é possível mediante mudanças de DNS.

Proxies: distribuindo um sítio entre máquinas
=============================================

<div class="centered" markdown="1">
![App proxy](http://perl.apache.org/docs/tutorials/apps/scale_etoys/machine_layout.png)
</div>

Aplicação descentralizada ou distribuída
========================================

<div class="centered" markdown="1">
![ICE](http://upload.wikimedia.org/wikipedia/en/thumb/5/5a/ICEgrid.png/800px-ICEgrid.png)
</div>

Tipos de camadas
================

Informação de um sistema é dividida conforme sua aplicabilidade:

  - Hardware: manifestações cristalizadas de informação: computadores.

  - Programas (software): pacotes.

  - Configuração (módulos).

  - Chaves e senhas.

  - Dados (o conteúdo propriamente dito).

Tais camadas podem ser empacotadas em sistemas e tais sistemas podem ser agregados em outros sistemas (camadas de camadas de camadas): pode ser uma abstração complicada, mas o ganho conceitual em isolamento de instâncias é importante.

Problemas
=========

O discurso é bonito, porém...

  1. Hardware é muito heterogêneo para padronizações serem efetivas.

  2. Os programas são muito diversos para serem estudados, integrados e desenvolvidos.

  3. Configurações são muito complexas e numerosas para serem facilmente separadas e replicadas de forma genérica.

  4. São necessárias muitas senhas de boa complexidade, o que torna sua manutenção complicada.

  5. Backups são difíceis de serem realizados e recuperados.

Ou seja: o discurso da divisão em camadas é interessante, porém na realidade sua implementação enfrenta diversos problemas. Serão eles impeditivos?

O Plano R*
==========

![Rede](http://www.autistici.org/orangebook/slides/rete.png)
![Anéis](http://www.autistici.org/orangebook/slides/rings.png)

O Plano R*: email
=================

<div class="centered" markdown="1">
![Sistema de email escalável](http://www.autistici.org/orangebook/slides/flussomail.png)
</div>

Como é possível?
================

O segredo está na articulação da força de trabalho com a divisão de camadas. A regra geral é:

  1. Utilização de ferramentas sólidas e amplamente utilizadas por comunidades de software livre e aberto.
  2. Trabalho de desenvolvimento focado na integração de soluções existentes, enviando alterações em código corrente acima sempre que possível.
  3. Desenvolvendo código próprio, porém livre, apenas quando não existente ou insuficiente nas comunidades.

Cada um desdes tipos informacionais é distribuído em unidades que por sua vez são agregados em árvores:

  - Hardware em servidores (canalizadores de fluxos, nodos ou instâncias em nuvens).
  - Programas em pacotes e distribuições.
  - Configurações em módulos e repositórios.
  - Chaves (que são unidades de segredo) em repositórios.
  - Dados em árvore de backups.

Divisão artefática
==================

A divisão em camadas é artificial (artefática), porém com importantes consequências quando observada à luz da divisão do trabalho de comunidades de software livre e aberto:

      /'\          |
       |          \./
    upstream   downstream

  - Hardware: desenvolvimento caro e complexo; hardware livre e aberto engatinhando; dependência do mercado. Exemplo: disco rígido.
  - Programas e distribuições: grandes comunidades de desenvolvimento e uso. Exemplo: GNU/Linux, Debian.
  - Configuração: comunidades mais restritas de desenvolvimento e uso. Exemplo: manuais, howtos, módulos.
  - Chaves e senhas: restrita ao grupo responsável por manter uma dada infraestrutura. Exemplo: senha de superusuário/a.
  - Dados: desenvolvidos pelas pessoas e grupos hospedados. Exemplo: texto num wiki.  

Divisão artefática - 2
======================

É possível reconstruir um sistema dados esses elementos. A divisão do trabalho upstream/downstream é favorável à reconstrução, já que as tarefas se tornam mais complexas ao longo da subida da corrente onde usualmente os grandes grupos sociais se reúnem para solucioná-las.

Economia de trabalho
====================

Assim, é possível economizar muita força de trabalho.

  1. Enviar um desenvolvimento corrente acima (upstream) libera o grupo técnico de uma manutenção posterior, pois o trabalho passa a ser de responsabilidade da comunidades mais ampla.

  2. Quanto mais específica for a informação, mais abaixo da corrente (downstream) ela deve ser mantida.

  3. Naquilo que não houver desenvolvimento corrente acima, atuar como fonte (ou seja, agir como upstream) e fornecer para a comunidade.

Tipos de salvaguarda
====================

Para todas as camadas divididas anteriormente é possível criar algum tipo de salvaguarda contra perdas:

  - Dinheiro: armazenamento e replicação de força de trabalho (potencial de trabalho armazenado).

  - Estoque: hardware hoje é commodity, podendo ser minimamente estocado ou mantido online em diversos locais.

  - Repositórios: programas, pacotes, distribuições e configurações.

  - Backups: manutenção de dados ou coisas sobressalentes.

Parte 3: contexto brasileiro
============================

Orçamento e infraestrutura
==========================

Custos:

  - Plano R*: EUR 10.000 anuais.
  - No Brasil, é praticamente a despesa anual de um centro social alugado e muito mais do que a receita da maioria dos grupos.

Conexão:

  - Nos EUA e na Europa, a conexão é rápida e barata. Datacenters corporativos são acessíveis.
  - No Brasil, a conexão é lenta, cara e o preço dos datacenters é exorbitante.

Repressão:

  - Criminalização dos movimentos sociais (entulho jurídico).
  - Polícia violenta.

Estaremos impossibilitados/as de mantermos servidores no país?

Por outro lado
==============

  - A legislação, a jurisprudência, cultura e valores brasileiros são muito mais favoráveis à preservação da privacidade que nos EUA ou na Europa (fator Dantas).

  - Honorários advocatícios não são tão altos quanto no exterior (?).

  - O câmbio é favorável a doações internacionais.

O caso Satangoss
================

"O que demorou quatro anos para juntarmos nos foi arrebatado num único dia."

  - Agosto de 2008: polícia civil apreende o servidor do Saravá sem mandado judicial.

  - Mais de cem sítios fora do ar.

  - Não havia backup remoto e nem medidas de contingência estabelecidas.

  - Todos os ovos estavam na mesma cesta.

  - Grande desmobilização.

  - Análise do caso: http://www.sarava.org/node/44

Como reverter a crise num novo ciclo de mudança e amadurecimento?

Parte 4: O Processo Hidra
=========================

<div class="centered" markdown="1">
![Regeneração](http://f.i.uol.com.br/folha/ciencia/images/0825246.jpg)
</div>

Regeneração
===========

Hidra: toda célula pode ter o germe da própria organização. Múltiplas cabeças, células tronco que podem adquirir especialização conforme a necessidade.

<div class="centered" markdown="1">
![Regeneração da hidra](http://image.wistatutor.com/content/growth-regeneration-ageing/regeneration-hydra.jpeg)
</div>

Hidra em processo
=================

<div class="centered" markdown="1">
![Regeneração da Hidra](http://www.uni-kiel.de/zoologie/bosch/jpg/bosch_fig2.jpg)
</div>

Hidra em processo - 2
=====================

<div class="centered" markdown="1">
![Regeneração da Hidra](http://www.uni-kiel.de/zoologie/bosch/jpg/bosch_fig3.jpg)
</div>

%% Hidra em processo - 3
%% =====================
%%
%%![Regeneração da Hidra](http://odelberglab.genetics.utah.edu/images/HydraRgn-web.jpg)
%%
%%Fonte: http://odelberglab.genetics.utah.edu/regen_mech.htm

%% Arredondamento de aglomerados celulares:
%% ========================================
%%
%% http://hal.archives-ouvertes.fr/docs/00/02/92/51/PDF/rounding_revised.pdf

Topologias
==========

    "[To] keep our sources safe, we have had to spread assets, encrypt everything,
    and move telecommunications and people around the world to activate protective
    laws in different national jurisdictions," Mr Assange said told the BBC earlier
    this year.

Fonte: [http://www.bbc.co.uk/news/world-11047811](http://www.bbc.co.uk/news/world-11047811)

Possíveis montagens: anel, estrela, rizomática, etc. Frontends e backends.

Parte 5: O Processo Hidra Saravento
===================================

  1. Apresenta Padrão Saravá (Sarava Pattern, [http://padrao.sarava.org](http://padrao.sarava.org)).

  2. Utiliza Resource Sharing Protocol (RSP, [http://rsp.sarava.org](http://rsp.sarava.org)).

  3. Considerando a adoção de padrões definidos de política de segurança e privacidade.

  4. Organiza-se de acordo com protocolos ([http://protocolos.sarava.org](http://protocolos.sarava.org)).

Na Hidra Saraventa, cada célula é chamada de "nodo":

  - Nodos físicos com servidores virtuais com fins específicos.

  - Nodos virtuais em diversos locais (inclusive hospedados por terceiros).

Baseada no seguinte pricípio: quais problemas solucionaremos, quais não.

O Padrão Saravá
===============

O Padrão Saravá é uma sistematização de configuração de servidores, gerenciadores de conteúdo e aplicações diversas usados pelo Grupo Saravá. O padrão foi desenvolvido para:

  - Ter controle dos pacotes utilizados, arquivos de configuração e serviços em uso.

  - Uniformidade de administração.

  - Sistema de gerenciamento de backups comum para que as máquinas de um projeto possam trocar dados.

  - Que um servidor seja configurado apenas uma vez e que suas configurações possam ser aproveitados para outras máquinas.

  - Que sites e serviços sejam armazenados de maneira regular para facilitar atualizações e migrações.

  - Manter projetos e serviços isolados uns dos outros através de servidores virtuais.

  - Tornar a instalação dos servidores facilmente replicável.

Dinâmica de desenvolvimento:

    Documentação wiki -> Configurações pré-gravadas -> Software

Puppet
======

![Puppet: topologia](http://docs.reductivelabs.com/images/Puppet_Star.png)
![Puppet: diagrama de sistema](http://www.puppetlabs.com/images/system_diagram.png)

Puppet: compartilhando configuração
===================================

Código puppet:

    file { '/etc/passwd':
        owner => root,
        group => root,
        mode  => 644,
    }

Módulos compartilhados:

  - [http://git.sarava.org](http://git.sarava.org)

  - [https://labs.riseup.net/code/projects/sharedpuppetmodules](https://labs.riseup.net/code/projects/sharedpuppetmodules)
 
Git e gitosis
=============

![VCS](http://hoth.entp.com/output/scm.png)
![VCS distribuído](http://hoth.entp.com/output/dscm.png)

O Protocolo de Compartilhamento de Recursos
===========================================

    "The Resource Sharing Protocol (RSP) is a set of metadata intended to help free
    software groups
    
        * Share their available resources and also Find groups that can host
        * services for them given their needs and requirements.
    
    The RSP splits each resource in a layer or set of service layers. You can think
    of service layers something very general, ranging from servers, databases,
    websites. If you need to, you can even consider stuff such as tables and
    bicycles as layers that provide some kind of service to a hosted group. ;)"

    -- http://rsp.sarava.org

Orquestração
============

Para complementar a Configuração de sistemas padronizada e centralizada, procedimentos como

   1. Atualização de pacotes.
   2. Atualização de código de gerenciadores de conteúdo.
   3. Carga de bancos de dados. 

podem ser codificados de forma a serem facilmente aplicados a múltiplas camadas de forma simultânea.

Exemplos:

   - [https://git.sarava.org/?p=hydra.git;a=summary](https://git.sarava.org/?p=hydra.git;a=summary)
   - [http://www.capify.org](http://www.capify.org)
   - [http://marionette-collective.org](http://marionette-collective.org)
   - [https://fedorahosted.org/func](https://fedorahosted.org/func)
   - [http://fabfile.org](http://fabfile.org)
   - [http://www.debian-administration.org/article/Automating_ssh_and_scp_across_multiple_hosts](http://www.debian-administration.org/article/Automating_ssh_and_scp_across_multiple_hosts)

Ikiwiki
=======

O Ikiwiki ([http://ikiwiki.info](http://ikiwiki.info)) é um software de wiki que usa um sistema de controle de versão e arquivos de texto, possibilitando:

  1. A existência de múltiplas cópias integrais do wiki (online e offline).
  2. Desenvolvimento distribuído de documentação.

O ikiwiki é muito útil para reunir documentação de sistemas, já que não necessita de nenhum sistema web funcional para abrigá-la.

Virtualização
=============

Virtualização através de Linux-VServer (existem outras implementações possíveis):

  - [http://www.linux-vserver.org](http://www.linux-vserver.org)
  - [http://slack.sarava.org/vservers](http://slack.sarava.org/vservers)

Principais vantagens:

  - Permite diversos grupos compartilharem uma mesma máquina presevando sua autonomia.

  - Grupos podem hospedar mutuamente instâncias virtuais. Exemplo: se existem 5 grupos com uma máquina cada um, se cada um deles hospedar um vserver para cada grupo, teremos 4 locais remotos de hospedagem por grupo, aumentando assim as possibilidades de salvaguarda e escalabilidade.

Keyringer e monkeysphere
========================

O Keyringer ([http://git.sarava.org/?p=keyringer.git;a=summary](http://git.sarava.org/?p=keyringer.git;a=summary)) é um repositório distribuído de senhas/chaves baseado em GPG e git.

O monkeysphere ([http://web.monkeysphere.info](http://web.monkeysphere.info)) é um programa que permite a verificação de hosts SSH e usuários/as através da Teia de Confiabilidade do OpenPGP. Com ele, o gerenciamento de fingerprints fica mais fácil e evita que páginas como esta centralizem informações que possam se desatualizar. 

Tecnologia bootless
===================

Muitos esquemas de criptografia em disco se baseiam na proteção das partições de dadados e da área de troca, porém dependem da existência de ao menos uma partição de inicialização com as imagens do sistema e de um setor de inicialização.

Com acesso físico à máquina, é possível infectar tais dados de inicialização e comprometer a criptografia de todo o sistema.

Para mitigar a situação, o esquema Bootless é um repositório git que contém as imagens de inicialização e a configuração necessárias para o procedimento de partida.

Assim, é possível manter a parte de inicialização fora da máquina, por exemplo em chaveiros USB.

Projeto similar: [http://lfde.org](http://lfde.org)

Monitoramento: nagios
=====================

<div class="centered" markdown="1">
![Nagios](http://nagios.sourceforge.net/images/screens/new/statusmap-circular.png)
</div>

Monitoramento: munin
====================

<div class="centered" markdown="1">
![Munin](http://upload.wikimedia.org/wikipedia/commons/c/ce/Munin-memory-week.png)
</div>

%%![Munin: icecast](http://static.k5-storitve.net/site_media/images/plugins/262-1215526146-icecast2.png)
%%Fonte: [http://exchange.munin-monitoring.org/plugins/icecast2/details](http://exchange.munin-monitoring.org/plugins/icecast2/details)

Backups
=======

Estratégia:

  1. Backups locais criptografados com duplicity:
     - Incluindo apenas `/etc`, `/var`, `/home`.
     - Excluindo logs, cache e backups remotos.
  2. Backups remotos apenas do backup local em duplicity, via rdiff ou rsync.
  3. Nodos designados para armazenamento de backups.
  4. Incrementos locais e remotos para aumentar consistência dos dados.
  5. Procedimento integrado de restore e ativação de nodo.

Hardware e custos
=================

  - Servidor mini-ITX Atom dual core + 2GB RAM + 1TB: R$680.00.
  - Nobreaks APC: +/- R$500,00.
  - Banda larga ADSL/cabo: R$80,00 a R$200,00.
  - Energia: 180W (mini-ITX) máx.
  - Sistema pode ser instalado inclusive em memórias de estado sólido (microSD por exemplo).

<div class="centered" markdown="1">
![Mini ITX](http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Mini-itx-motherboard.jpg/800px-Mini-itx-motherboard.jpg)
</div>

Utilidades: adaptador para discos
=================================

<div class="centered" markdown="1">
![Adaptador SATA](http://www.sataadapter.com/sata-to-usb-adapter-cable-for-windows-and-mac.jpg)
</div>

Utilidades: chave de entropia
=============================

![Entropy key](http://www.entropykey.co.uk/res/device.jpeg)
![Entropy graph](http://www.entropykey.co.uk/res/entropy-trite-small-nq8.png)

Segurança
=========

Acesso remoto:

  - Contas SSH administrativas em todos os nodos.

  - Contas SSH de backup para nodos de backup.

  - Contas SSH de tunelamento para nodos diversos.

Análise:

  1. É importante isolar o máximo a capacidade de acesso para contas de nodos de backup ou que tunelem conexões.

  2. Administradores/as precisam ter boas medidas de segurança:
     - Pasta criptografada.
     - Senhas e chaves seguras.

Protocolos sociais
==================

  - Protocolo de Ação Coletiva: [http://protocolos.sarava.org](http://protocolos.sarava.org).
  - Outros protocolos e metodologias (contabilidade, acesso à informação, relação com grupos, etc).
  - Uso de um sistema de gestão de processos (trac ou similar).

             .------------------->-----------------.
            /  .----------<--------------<-------.  \
           |  '                                   \  \
           |  |               .------>-----.       \  \
           |  |              |              \       \  \
          Proposta -----> Discussão ->--.    \       \  \
             |  ^            |           \    \       \  \
             |  |            |            \    \       \  \
             |   `----<-----'             |     \       \  \
             |                            |      |       \  \
              `------>------ Decisão --<--'      |        \  \
                               | |               |         \  \
                               | |               |          | |
           Atribuição de --<---' '---> Arquivamento --->---'  ;
         Responsabilidades ----->-------'   ^    \           /
              ^  |              ___________/      `---<-----'
              |   \           .'
              |    `--> Realização -->--.
              |           |  |           \
              |           |  |           /
               `----<-----'   `-----<---'

Resumo: Estratégia de gestão
============================

  - Facilitar instalação, manutenção e gestão de dados.

  - Manter backups em máquinas prontas para serem inicializadas.

  - Manter nodos master prontos para assumirem o posto de "cabeça ativa".

Parte 6: A Confederação das Hidras Unidas
=========================================

<div class="centered" markdown="1">
![Hidra Cluster](http://apod.nasa.gov/apod/image/0104/hydra_aat116.jpg)
</div>

A Confederação das Hidras Unidas
================================

  - Hidra é um processo, não uma tecnologia, implementação, sistema ou serviço.

  - Assim, é possível ter hidras menos sistematizadas e com diferentes formas de organização. O processo já ocorre em vários locais.

  - Havendo várias hidras, se elas se integram passa a existir a Confederação das Hidras Unidas.

  - Importante questão do licenciamento: AGPL 3.0 para garantir o máximo possível da disponibilização de código e documentação.

  - Não é estritamente necessária a criação de uma "confederação", já que a cultura de hidras pode ser não-coordenada.

Parte 7: Nuvens e Hidras
========================

Hidras são nuvens (cloud computing)?

  - Cloud computing foca apenas nas instâncias e como estas são integradas por aplicações (IaaS, SaaS, PaaS) e no seu uso sob demanda.

  - Cloud computing é uma iniciativa do mercado e uma tendência à terceirização total das atividades.

  - A Hidra leva em consideração a organização social que suporta a infraestrutura computacional.

  - A Hidra é uma nuvem na qual certos nodos desempenham papéis determinados, porém contendo o germe de toda a organização.

  - Outra classe de nuvens: botnets.

Nuvens: diagramas
=================

![Camadas](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cloud_Computing_Stack.svg/340px-Cloud_Computing_Stack.svg.png)
![Arquitetura](http://upload.wikimedia.org/wikipedia/commons/thumb/7/79/CloudComputingSampleArchitecture.svg/550px-CloudComputingSampleArchitecture.svg.png)

Tipos de nuvens
===============

<div class="centered" markdown="1">
![Tipos de nuvens](http://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Cloud_computing_types.svg/800px-Cloud_computing_types.svg.png)
</div>

Parte 8: Futuro
===============

  - Hidra Saraventa: ainda em intenso desenvolvimento, porém já em estágio maduro. Falta (em agosto/2010):
    - Melhoria no procedimento de bootstrap.
    - Integração com DNS.
    - Sistema de proxy para balanceamento de carga.
    - Melhoria de procedimentos de sunsetting de sítios, plataformas e contas.
    - Longuíssimo prazo, caso realizável: possibilidade de um nodo ser convertido de uma classe para outra.
    - Procedimentos para suporte jurídico.
    - Nodos em conexões DSL e cabo: IP dinâmico, DNS reverso, etc.
    - VPN entre os nodos, Puppet Dashboard?, External node tool?
    - Migrar para Linux Containers (lxc).
    - Melhoria da documentação e representações gráficas do processo.
    - Storage de dados distribuído.
  - Hidras via Rádio.
  - Hidras em outros tipos de organizações sociais.

Parte 9: Conclusões
===================

  - Resolver a replicação e escalabilidade primeiro na infraestrutura (máquinas, configurações e backups), depois nas camadas superiores (CMSs, por exemplo)

  - Não importa tanto se a rede é centralizada, descentralizada ou distribuída se antes de tudo ela for regenerativa. No entanto, em geral são as redes distribuídas e descentralizadas que possuem fatores de regeneração maiores do que no caso centralizado.

  - Número grande de máquinas é interessante: várias podem estar sem funcionar num dado momento, mas as que estiverem funcionando podem dar conta da demanda.

  - A hidra é indestrutível? Essa questão faz sentido? Positivismo, revoluções e cataclismas: o limite da hidra por ter uma relação e abertura e fechamento (autonomia dependente).

Parte 10: Referências
=====================

Referências: imagens usadas
===========================

  - [http://en.wikipedia.org/wiki/File:Hydra\_04.jpg](http://en.wikipedia.org/wiki/File:Hydra_04.jpg)
  - [http://en.wikipedia.org/wiki/File:Hydra001.jpg](http://en.wikipedia.org/wiki/File:Hydra001.jpg)
  - [http://code.google.com/edu/parallel/dsd-tutorial.html](http://code.google.com/edu/parallel/dsd-tutorial.html)
  - [http://en.wikipedia.org/wiki/File:DNS_in_the_real_world.svg](http://en.wikipedia.org/wiki/File:DNS_in_the_real_world.svg)
  - [http://www.linux.org/docs/ldp/howto/Jabber-Server-Farming-HOWTO/c2sfarm.html](http://www.linux.org/docs/ldp/howto/Jabber-Server-Farming-HOWTO/c2sfarm.html)
  - [http://www.autistici.org/orangebook/slides/orangebook.en.html](http://www.autistici.org/orangebook/slides/orangebook.en.html).
  - [http://www.autistici.org/orangebook/slides/orangebook.en.html](http://www.autistici.org/orangebook/slides/orangebook.en.html)
  - [http://perl.apache.org/docs/tutorials/apps/scale_etoys/machine_layout.png](http://perl.apache.org/docs/tutorials/apps/scale_etoys/machine_layout.png)
  - [http://en.wikipedia.org/wiki/File:ICEgrid.png](http://en.wikipedia.org/wiki/File:ICEgrid.png)
  - [http://www.ibiblio.org/pioneers/baran.html](http://www.ibiblio.org/pioneers/baran.html)
  - [http://www1.folha.uol.com.br/folha/ciencia/ult306u442499.shtml](http://www1.folha.uol.com.br/folha/ciencia/ult306u442499.shtml)
  - [http://www.tutorvista.com/content/biology/biology-iv/growth-regeneration-ageing/regeneration.php](http://www.tutorvista.com/content/biology/biology-iv/growth-regeneration-ageing/regeneration.php)
  - [http://www.uni-kiel.de/zoologie/bosch/developmentalbiology.html](http://www.uni-kiel.de/zoologie/bosch/developmentalbiology.html)
  - [http://www.uni-kiel.de/zoologie/bosch/developmentalbiology.html](http://www.uni-kiel.de/zoologie/bosch/developmentalbiology.html)
  - [http://www.puppetlabs.com/puppet/introduction](http://www.puppetlabs.com/puppet/introduction)
  - [http://docs.reductivelabs.com/guides/introduction.html](http://docs.reductivelabs.com/guides/introduction.html)
  - [http://www.nagios.org/about/screenshots](http://www.nagios.org/about/screenshots)
  - [http://en.wikipedia.org/wiki/File:Munin-memory-week.png](http://en.wikipedia.org/wiki/File:Munin-memory-week.png)
  - [http://hoth.entp.com/output/git_for_designers.html](http://hoth.entp.com/output/git_for_designers.html)
  - [http://en.wikipedia.org/wiki/Mini-itx](http://en.wikipedia.org/wiki/Mini-itx)
  - [http://www.sataadapter.com](http://www.sataadapter.com)
  - [http://www.entropykey.co.uk](http://www.entropykey.co.uk)
  - [http://apod.nasa.gov/apod/ap010416.html](http://apod.nasa.gov/apod/ap010416.html)
  - [http://en.wikipedia.org/wiki/File:Cloud_Computing_Stack.svg](http://en.wikipedia.org/wiki/File:Cloud_Computing_Stack.svg)
  - [http://en.wikipedia.org/wiki/File:CloudComputingSampleArchitecture.svg](http://en.wikipedia.org/wiki/File:CloudComputingSampleArchitecture.svg)
  - [http://en.wikipedia.org/wiki/File:Cloud_computing_types.svg](http://en.wikipedia.org/wiki/File:Cloud_computing_types.svg)