De relógios a nuvens, de nuvens a hidras.
O objetivo desta fala é divulgar os estudos em andamento sobre o processo hidra dando espaço para possíveis andamentos:
Informar os grupos e pessoas que possuem conteúdo hospedado em infraestruturas tecno-sociais comuns sobre o trabalho desenvolvido.
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 Processo Hidra é uma descrição de infraestruturas tecno-sociais que apresentam:
Replicabilidade e escalabilidade.
Capacidade de combinação rizomática.
Regeneração e reagrupamento após eventos catastróficos.
A Hidra moderna pode resistir a Hércules.
Mas antes façamos uma retrospectiva…
Modelo “clássico” de hospedagem: arquitetura “cliente-servidor”:
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…
A cada evento catastrófico, vários grupos são prejudicados com danos à comunicação de difícil cicatrização.
Como impedir que uma rede seja destruída mesmo que a remoção de nodos continue?
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?
O colamento/descolamento entre camadas é possível mediante mudanças de DNS.
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.
O discurso é bonito, porém…
Hardware é muito heterogêneo para padronizações serem efetivas.
Os programas são muito diversos para serem estudados, integrados e desenvolvidos.
Configurações são muito complexas e numerosas para serem facilmente separadas e replicadas de forma genérica.
São necessárias muitas senhas de boa complexidade, o que torna sua manutenção complicada.
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 segredo está na articulação da força de trabalho com a divisão de camadas. A regra geral é:
Cada um desdes tipos informacionais é distribuído em unidades que por sua vez são agregados em árvores:
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
É 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.
Assim, é possível economizar muita força de trabalho.
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.
Quanto mais específica for a informação, mais abaixo da corrente (downstream) ela deve ser mantida.
Naquilo que não houver desenvolvimento corrente acima, atuar como fonte (ou seja, agir como upstream) e fornecer para a comunidade.
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.
Custos:
Conexão:
Repressão:
Estaremos impossibilitados/as de mantermos servidores no país?
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 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?
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.
"[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
Possíveis montagens: anel, estrela, rizomática, etc. Frontends e backends.
Apresenta Padrão Saravá (Sarava Pattern, http://padrao.sarava.org).
Utiliza Resource Sharing Protocol (RSP, http://rsp.sarava.org).
Considerando a adoção de padrões definidos de política de segurança e privacidade.
Organiza-se de acordo com protocolos (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á é 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
Código puppet:
file { '/etc/passwd':
owner => root,
group => root,
mode => 644,
}
Módulos compartilhados:
"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
Para complementar a Configuração de sistemas padronizada e centralizada, procedimentos como
podem ser codificados de forma a serem facilmente aplicados a múltiplas camadas de forma simultânea.
Exemplos:
O Ikiwiki (http://ikiwiki.info) é um software de wiki que usa um sistema de controle de versão e arquivos de texto, possibilitando:
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 através de Linux-VServer (existem outras implementações possíveis):
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.
O Keyringer (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) é 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.
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
Estratégia:
/etc
, /var
, /home
.
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:
É importante isolar o máximo a capacidade de acesso para contas de nodos de backup ou que tunelem conexões.
Administradores/as precisam ter boas medidas de segurança:
Uso de um sistema de gestão de processos (trac ou similar).
.------------------->-----------------.
/ .----------<--------------<-------. \
| ' \ \
| | .------>-----. \ \
| | | \ \ \
Proposta -----> Discussão ->--. \ \ \
| ^ | \ \ \ \
| | | \ \ \ \
| `----<-----' | \ \ \
| | | \ \
`------>------ Decisão --<--' | \ \
| | | \ \
| | | | |
Atribuição de --<---' '---> Arquivamento --->---' ;
Responsabilidades ----->-------' ^ \ /
^ | ___________/ `---<-----'
| \ .'
| `--> Realizaçã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”.
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.
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.
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).