Palestra: Entendendo sistemas distribuídos - CAP é só o começo!.
Resumo
Qualquer produto oferecido na Internet é por definição distribuído, pois a própria fundação da rede mundial é distribuída. Para produtos simples, já temos um perfil definido em termos de suas propriedades:- ele é consistente, pois os dados estão centralizados num único local
- ele possui disponibilidade simples e binária, ou seja, ou está "no ar" ou está "fora do ar"
- ele tem tolerância a partições de rede (se o cliente tiver a sorte de estar do mesmo lado da partição, e esta for trivial)
Nota-se que já de início esses produtos estão longe de serem perfeitos, e que embora já tenhamos nos acostumado com esse comportamento em alguns produtos não-críticos, as limitações acima são inaceitáveis para, por exemplo, um serviço de escala nacional ou mundial com milhares de clientes. Quando introduzimos escalabilidade na infraestrutura do produto, através da adição de servidores por exemplo, podemos atender mais clientes, mas também aumentamos a complexidade e a fragilidade inicial do sistema. Foi para formalizar essa situação que o Teorema CAP nasceu, e tornou-se uma referência obrigatória na discussão e comparação de sistemas distribuídos. Iniciamos esta palestra com uma breve introdução do CAP (Consistência, Disponibilidade e Tolerância a Partição). Serão apresentados os conceitos envolvidos e as combinações possíveis, além de uma análise de como podemos classificar sistemas de acordo com o CAP. Em seguida, são expostas maneiras de aplicar o teorema para alcançar um balanço positivo, ou seja, como adaptar o seu sistema às restrições impostas pelo CAP, e vice-versa! Finalizamos com uma demonstração de casos reais de aplicação do CAP utilizando o banco de dados distribuído Riak, que é baseado no paper Dynamo da Amazon (o mesmo que inspirou o servico S3).
Track: Arquitetura: qualidades e trade-offs
Horário: 13:10, Domingo.
Ir para Arquitetura: qualidades e trade-offs | Ir para Tracks | Agenda
John Rowell
John D. Rowell é programador e consultor de TI com 25 anos de experiência profissional. Trabalha principalmente com startups (próprias e de clientes), buscando sempre utilizar tecnologia de ponta para gerar eficiências e viabilizar produtos. Hoje seus focos de pesquisa e desenvolvimento incluem Ruby, NoSQL, cloud e sistemas distribuídos. Tweeta como @jdrowell.