Ácido ou base? Está rolando uma discussão no .Net Architects que eu acho que vale a pena comentar aqui. A questão é em torno de alguns problemas que a computação na nuvem pode trazer, e como resolver estes problemas. O principal é consistência versus disponibilidade, algo comum quando se trata de sistemas tão distribuidos.

Li esses dias um post do blog do Otávio Pecego Coelho, arquiteto da Microsoft, onde ele comenta sobre consistência e disponibilidade com Azure. E nesse post ele aponta para outro post, que é na verdade, um bom artigo. Achei muito interessante. E não só para quem for trabalhar com computação na nuvem, mas também com sistemas distribuídos, escalabilidade e disponibilidade. Basicamente o autor compara as transações ACID comuns em banco de dados com um outro modelo que ele chama de BASE (para contrastar com ácido: base). Quem está acostumado a trabalhar com ACID nem concebe que pode haver outra forma de fazer as coisas, mas há. E esquecemos com frequência que transações ACID matam a disponibilidade, e por isso a idéia de usar BASE.

Em dado momento ele apresenta um estudo que me fez fazer uns exercícios mentais para confirmar, e parece que está certo. Segundo o estudo, apresentado como o teorema CAP, você precisa escolher em um web service somente dois itens dos seguintes (em inglês para manter a sigla):

  1. Consistency
  2. Availability
  3. Partition Tolerance

(O estudo está aqui. Lá em baixo da página há um link "view or download". É um pdf. Não li mas parece valer a pena também.)

Ou seja, se você quiser tolerância ao particionamento, que é o que acontece em uma arquitetura baseada em serviços (cada serviço seria uma partição), vai ter que escolher entre disponibilidade e consistência, já que só pode escolher dois itens. E é um fato. Operações ACID vão bloquear tudo até o último componente realizar um commit, matando a disponibilidade. Já operações BASE vão focar em disponibilidade, mas ao custo de uma inconsistência temporária. É sobre este problema: como tornar essa inconsistência em algo apenas temporário, que o artigo se propõe a discutir. Vale a pena ler.

Ah, e não adianta misturar ácido e base. Todo mundo que lembra das aulas de química sabe que o resultado é sal e água.


Postado na(s) categoria(s) Arquitetura , Indicação de conteúdo pelo giovanni bassi em 6 de dezembro de 2008 às 20:07 | Tags:

Comentar


(Vai mostrar seu Gravatar)

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading



Quem é Giovanni Bassi

Giovanni Bassi Sou uma pessoa apaixonada por tecnologia e especificamente por .Net. Sou consultor independente especialista em .Net, focado em arquitetura e melhores práticas. Tenho dezenas de artigos publicados na .Net Magazine, revista da qual sou editor técnico. Ministro palestras e cursos de vez em quando, e quando dá tempo eu respiro um pouco. Mais detalhes nesta página.

Busca

Selos

Eu vou ao TechEd Brasil 2010, e você?

MVP

MCPD

MCSD

.Net Magazine

Abaixo ao if!

Calendário

«  setembro 2010  »
seteququsedo
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
Ver detalhamento de posts no calendário

Blogs interessantes

    OPMLDownload OPML file

    Postagens recentes

    Comentários recentes

    Disclaimer / Aviso
    As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, pareceiros e amigos. Da mesma forma, os comentários feitos por leitores do blog não expressam a minha opinião.

    © Copyright 2010 .Net Unplugged
    Log in