Designing Data Intensive Applications

Documentos relacionados
SSC643 -Avaliação de Desempenho de Sistemas Computacionais -

Análise e Modelagem de Desempenho de Sistemas de Computação. Profa. Jussara M. Almeida 1 o Semestre de 2014

Quando Distribuir é bom

Quando Distribuir é bom

Conceitos e terminologia de segurança quanto à disponibilidade

SSC546 -Avaliação de Desempenho Parte 1 Sarita Mazzini Bruschi

Introdução à Avaliação de Desempenho

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

SISTEMAS OPERACIONAIS

PCS 2039 Modelagem e Simulação de Sistemas Computacionais

Universidade Federal do Maranhão

Computação Distribuída

RAID: Conceito e Tipos

SISTEMAS DISTRIBUÍDOS

Engenharia de Requisitos

Sis i te t mas a O perac a i c o i nai a s um p ouco c d a a h is i tó t ria i. a... SO His i t s ó t r ó ic i o

Introdução à Ciência da Computação

Alcides Pamplona

Bruno Antunes da Silva UFSCar - Sorocaba

Computação móvel na nuvem Grover E. Castro Guzman Computação Móvel MAC5743 IME-USP

Banco de Dados II. Administrador de Banco de Dados - DBA. Portela

Banco de Dados Distribuído

Introdução aos Sistemas Distribuídos

Arquitetura de sistemas distribuídos

Caracterização de Sistemas Distribuídos

Arquitetura de Computadores

Um Repositório Chave-Valor com Garantia de Localidade de Dados. Patrick A. Bungama Wendel M. de Oliveira Flávio R. C. Sousa Carmem S.

Tipos de Clusters. Introdução. Introdução 21/03/12

ARQUITETURA DE SISTEMAS DISTRIBUÍDOS. Aula 1- Introdução aos Sistemas Distribuídos

Sistemas Operacionais. Sistema de entrada e Saída

Sistemas Distribuídos. abril de 2015

Engenharia de Requisitos

O que é um sistema distribuído?

Sistemas Distribuídos

Fundamentos de Sistemas Operacionais de Arquitetura Aberta. CST em Redes de Computadores

Engenharia de Software

Redes de computadores

Processamento Paralelo

SISTEMAS DISTRIBUÍDOS ARQUITETURAS. Slides cedidos pela Professora Aline Nascimento

falhas em sistemas distribuídos

TRANTEK do BRASIL Ltda. Seu Parceiro em Soluções

Banco de Dados. SGBDs. Professor: Charles Leite

Avaliação de Desempenho de Sistemas DCC 074

Arquitetura Cliente-Servidor Generalizada com identificação de tiers. Arquitetura Cliente-Servidor Generalizada com identificação de tiers

BD e Cloud Gerenciamento de. Dados na Nuvem

Arquiteturas. capítulo

Bancos de Dados Distribuídos. Gabriel Resende Gonçalves 4 de fevereiro de 2014

Formação de DBAs SQL Server 2008

COMPUTADORES NAS EMPRESAS Cloud Computing Prof. Reginaldo Brito

Bancos de Dados Distribuídos. Bancos de Dados Distribuídos. Conteúdo. Motivação. Motivação. Introdução aos BDs Distribuídos.

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Arquiteturas Paralelas

Arquitecturas Avançadas de Computadores MEEC (2008/09 2º Sem.)

Características de Sistemas Distribuídos

Curso: Redes de Computadores

Avaliação de Desempenho

Subsistemas de E/S Device Driver Controlador de E/S Dispositivos de E/S Discos Magnéticos Desempenho, redundância, proteção de dados

Replicação em sistemas web

Computadores. HW e SW

Sistemas de Gerência de Bancos de Dados. 7 - Outras Arquiteturas para SGBDs SGBDs Paralelos

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 1. Prof. Leonardo Vasconcelos

Sistemas Operacionais: O quê? Por quê? Quando?

Engenharia de Software

Infra Estrutura Hardware e Software

Sistemas Distribuídos

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 04: PROCESSAMENTO PARALELO: MULTICOMPUTADOR

Fonte : sistemaerp.org

Introdução à Avaliação de Desempenho

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Virtualização do System302 em ambiente VMWARE

Introdução aos Sistemas Operacionais

Características de Sistemas Distribuídos

Rede de computadores Cliente- servidor. Professor Carlos Muniz

Banco de Dados. Introdução. Profa. Flávia Cristina Bernardini

Organização de Computadores I

ISO/IEC Processo de ciclo de vida

Gerência de Redes Áreas Carlos Gustavo Araújo da Rocha. Gerência de Redes

Avaliação de Desempenho

Sistemas Distribuídos

Aula 2. Prof: Carlos Eduardo de Carvalho Dantas

Engenharia de Confiança. Helena Macedo Reis Luis Fernando de Souza Moro

Avanços e Perspectivas do Projeto Integrade na UFMA

Algoritmos e Lógica de Programação Componentes e Arquitetura

PROJETO DE BANCO DE DADOS

Metas de um Sistema Distribuído

SIST706 Sistemas Distribuídos

Introdução 12 que inuenciam a execução do sistema. As informações necessárias para o diagnóstico de tais problemas podem ser obtidas através da instru

SSC546 -Avaliação de Desempenho de Sistemas

Teste de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

BANCO DE DADOS 2 TRANSAÇÃO

Desenvolvimento de Aplicações Distribuídas

ara entender os Sistemas Gerenciadores de Banco de Dados é importante conhecer

Sistemas distribuídos. Prof. Emiliano Monteiro

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

Conceitos de Segurança Física e Segurança Lógica. Segurança Computacional Redes de Computadores. Professor: Airton Ribeiro Fevereiro de

Apis Rest Autoescaláveis

Transcrição:

Designing Data Intensive Applications Capítulo 1 Carmem Hara

Aplicações Atuais Dados Processamento Problemas Volume Complexidade Velocidade de atualização Tecnologias SGBD: armazenamento Cache: resultados intermediários Índices: otimização de buscas Processamento de fluxo Processamento em lote

Qual o sistema de gerência de dados ideal? Depende da aplicação Uma ferramenta em geral não atende todos os requisitos Necessidade de integrar diversas soluções

Possível Arquitetura de Integração

Novo sistema de gerência de dados Deve prover: Confiabilidade Escalabilidade Manutenção

CONFIABILIDADE

Confiabilidade Habilidade de funcionar corretamente mesmo na presença de adversidades. Executa as funções da forma esperada Tolera erros cometidos pelo usuário O desempenho é adequado para a carga planejada Não permite acessos não autorizados

Falhas Mecanismos Tolerância a falhas Prevenção de falhas Tipos de Falhas De Hardware De Software Humana

Falhas de Hardware Falhas de RAM, de energia,... Falha de disco MTTF (mean time to failure): 10 a 50 anos Cluster de 10.000 discos 1 disco falha por dia Tolerância a falhas: redundância RAID (Redundant Array of Independent Disks) Baterias, geradores de energia

Falhas de Software Exemplos Erros causados por entrada errada Sistema consome todos os recursos (CPU, memória, rede, espaço em disco) Um serviço utilizado pelo sistema torna-se lento ou não responde Falhas em cascata Em geral ocorrem devido a uma combinação de circunstâncias não previstas.

Falhas de Software Prevenção Planejamento: interações entre componentes, hipóteses Testes Isolamento do processo Tolerância Reinicialização do sistema Monitoramento

Falhas Humanas Humanos: Desenvolvem os sistemas Operam os sistemas Erros humanos causam a maioria das falhas de sistemas computacionais* Erros de hardware: 10-25% * D. Oppenheimer et al: Why Do Internet Services Fail, and What Can Be Done About it? Usenix Symposium, 2003

Falhas Humanas - Prevenção Desenvolver sistemas que minimizem o erro Disponibilizar ambientes de teste separados do ambiente de produção Realizar testes em todos os níveis: de unidade ao ambiente integrado Facilitar a recuperação: desfazer alterações na configuração ou computações Monitorar o sistema: desempenho e taxas de erro Fazer treinamento

ESCALABILIDADE

Escalabilidade É a habilidade do sistema dar suporte ao aumento da carga de trabalho. Animoto: 2008: 25.000 para 750.000 usuários em 4 dias 5.000 servidores na AWS 2013: 6 milhões de usuários

Descrição de Carga Parâmetros de carga: Requisições por segundo de um servidor Web Porcentual de leituras e escritas em um SGBD Quantidade de usuários ativos em um chat Hit rate de dados em cache

Exemplo de carga: Twitter Novembro de 2012: Posts: Média de 4.600 posts por segundo Pico de 12.000 posts por segundo Leitura: Média de 30.000 visualizações por segundo

Arquitetura 1: Busca sob demanda O sistema busca as mensagens postadas sob demanda (no momento da leitura) Carga de leitura > Carga de postagem Processamento em tempo de postagem

Arquitetura 2: Fila para cada leitor Problema: fan-out de celebridades Solução: arquitetura híbrida Parâmetro de carga: fan-out (quantidade de seguidores)

Descrição do Desempenho Se a carga aumentar: 1) Sem aumentar os recursos, como o desempenho será afetado? 2) Qual o incremento necessário de recursos para que o desempenho seja o mesmo? Desempenho: Processamento em lote: throughput (vazão) Processamento online: tempo de resposta Tempo de resposta X Latência

Métricas de Desempenho Média: (soma de N medições / N) Percentil: ordena as medições Mediana: ponto médio = p50 P90 = 2 segundos: 90% das requisições em até 2 segundos

Tempo de Resposta Aplicações que fazem chamadas a diferentes serviços

Escalabilidade Tipos: Vertical (scale-up): trocar por uma máquina com mais recursos Em geral o custo é maior Sistemas mais simples Horizontal (scale-out): distribuir a carga por mais máquinas simples Arquitetura shared-nothing Sistemas complexos de envolvem serviços dependentes de estados (stateful) Construção de Sistemas Escaláveis Utiliza padrões e técnicas/algoritmos (modelos de dados, replicação, particionamento, protocolos de transações) Elasticidade: capacidade de automaticamente alocar e liberar recursos de acordo com a carga

MANUTENÇÃO

Manutenção Custo de software: maior parte é de manutenção 3 princípios para o desenvolvimento de sistemas: Facilidade de operação Simplicidade de projeto Facilidade de evolução / adaptabilidade

Operação de Sistemas Uma boa operação pode contornar limitações de um sistema ruim ou incompleto, mas um bom sistema não funciona de forma confiável com uma má operação. Um sistema deve facilitar tarefas rotineiras

Atividades de uma Equipe de Operadores Monitorar o funcionamento do sistema e tomar providências para recuperá-lo Investigar causas de mal funcionamento Manter o software atualizado Documentar dependências entre sistemas Antecipar problemas (planejamento de carga) Executar atividade de manutenção Manter a segurança do sistema

Como os sistemas de gerência de dados podem dar suporte a estas atividades Prover monitoramento, dando visibilidade para o comportamento (interno) do sistema Prover suporte para automação e integração com ferramentas padronizadas Evitar dependência com máquinas específicas Disponibilizar uma boa documentação e manuais Prover um bom comportamento default, mas dar liberdade para alterá-lo Ter comportamento previsível

Complexidade do Sistema Fontes de complexidade Forte acoplamento entre os módulos Terminologia e nomenclatura inconsistente Tratamento de casos especiais Código obscuro para melhor desempenho A complexidade é acidental se não é inerente ao problema tratado. A abstração é uma importante ferramenta para diminuir a complexidade.

Evolução do Sistema Sistemas simples e fáceis de entender em geral também são faceis de manter. Métodos ágeis de desenvolvimento: Fornece um framework de desenvolvimento adaptável a mudanças Test-driven development (TDD) Refatoramento

Desenvolvimento de Sistemas com Uso Intensivo de Dados Requisitos funcionais Funcionalidades esperadas do sistema para solução do problema Requisitos não funcionais Confiabilidade Escalabilidade Facilidade de manutenção