Introdução a Sistemas Distribuídos
Introdução ao Curso
Eduardo de Lucena Falcão
Apresentações
● Eduardo de Lucena Falcão
– Lattes - http://lattes.cnpq.br/8335184809043358
– Blog - http://edufalcao.com
● Sobre vocês
– Formação?
– O que esperam do curso?
Visão geral do curso
● Sistemas Distribuídos
– “Um sistema distribuído é um conjunto de
computadores independentes entre si que se
apresenta a seus usuários como um sistema único e
coerente.” Tanembaum, A.
– “Coleção de computadores autônomos interligados
através de uma rede de computadores e equipados
com software que permita o compartilhamento dos
recursos do sistema: hardware, software e dados.”
Coulouris, G.
Visão geral do curso
● Qual a importância dos Sistemas Distribuídos?
1. Otimização de nossos programas;
2. A população mundial cresce exponencialmente;
3. No mercado só há (ou pelo menos só deveria haver)
espaço para quem trabalha de maneira escalável;
4. Arquitetura modularizada/segmentada;
5. Maior tolerância a falhas.
Visão geral do curso
● Objetivos:
1.Apresentar os conceitos fundamentais de Sistemas
Distribuídos;
2.Apresentar os principais conceitos úteis para o
desenvolvimento prático de uma aplicação que envolve
técnicas de Sistemas Distribuídos, mais especificamente
técnicas de Cloud Computing;
3.Apresentar de forma conceitual e prática os principais
componentes da Amazon Web Services (AWS), que permitirá
a construção de um sistema escalável e tolerante a falhas;
Visão geral do curso
● Objetivos:
4. Apresentar técnicas e ferramentas para monitoramento
do sistema na nuvem AWS;
5. Com o decorrer do curso, o aluno deverá aplicar as
técnicas aprendidas na disciplina em um projeto
individual.
● Ementa:
– Introdução a Sistemas Distribuídos. Introdução a AWS. Configuração
do Ambiente de Desenvolvimento. Elastic Cloud Computing (EC2).
Amazon Machine Images (AMI). Elastic Block Storage (EBS). Elastic
Ips. Relational Database Service (RDS) – apenas o conceito. Simple
Storage Service (S3). Amazon Cloud Front. Como tornar o sistema
escalável. Elastic Load Balancing (ELB). Auto Scaling. Elastic
Beanstalk. Como desacoplar os componentes do sistema. Simple
Queue Service (SQS). SimpleDB. Simple Notification Service (SNS).
Como detectar e lidar com falhas. Como tornar o sistema menos
suscetível a falhas. Como gerenciar os componentes de seu sistema.
Visão geral do curso
Pré-requisitos
● Programação (C, C++, Java, etc.)
● Conhecimentos básicos de Sistemas Operacionais
(Linux, Windows Server)
● Conhecimentos básicos de Redes
Tópicos abordados no curso
● Analisando o problema a ser resolvido;
● Sistemas Distribuídos: Clusters, Supercomputadores, Grids, Cloud Computing;
● Introdução à Cloud Computing;
● Introdução à AWS;
● Configuração do Ambiente de Desenvolvimento;
● EC2: como criar e configurar uma nova instância;
● Tornando o sistema escalável;
● Desacoplamento entre os componentes do sistema;
● Como detectar e lidar com falhas;
● Tornando o sistema menos suscetível a falhas;
● Gerenciando os componentes do seus sistema.
Recursos Computacionais
● AWS
– Opção 1: crie sua conta AWS e usufrua do AWS Fee Usage Tier
● Vantagem: você terá acesso ao AWS Management Console :)
● Desvantagem: você pode ter custos adicionais - poucos mais
pode :(
– Opção 2: requisite sua chave de acesso ao professor
● Vantagem: você não terá nenhum custo adicional :)
● Desvantagem: você não terá acesso ao AWS Management
Console :(
– Opção 3: use as 2 opções anteriores =D
Recursos Computacionais
● AWS Free Usage Tier - http://aws.amazon.com/pt/free/
● EC2:
– 750 horas do Amazon EC2 para Linux Uso de Microinstância (613 MB
de memória e suporte à plataforma de 32 e 64 bits) – horas suficientes
para executar continuamente todos os meses
– 750 horas do Amazon EC2 para Microsoft Windows Server Uso de
Microinstância (613 MB de memória e suporte à plataforma de 32 e 64
bits) – horas suficientes para executar continuamente todos os meses
– 750 horas de Elastic Load Balancer além de 15 GB de processamento
de dados
– 30 GB de Amazon Elastic Block Storage, além de 2 milhões de E/S e 1
GB de armazenamento de snapshot
Recursos Computacionais
● AWS Free Usage Tier - http://aws.amazon.com/pt/free/
● Simple Storage Service - S3:
– 5 GB de armazenamento padrão do Amazon S3, 20.000 solicitações GET e
2.000 solicitações PUT*
● Simple Queue Service (SQS) e Simple Notification Service (SNS)
– 1.000.000 de solicitações de Amazon SQS
– 1.000.000 de solicitações, 100.000 notificações de HTTP e mil notificações de
e-mail para Amazon SNS
● CloudWatch
– 10 métricas do Amazon Cloudwatch, 10 alarmes e 1.000.000 solicitações de API
● Transferência de dados
– 15 GB de largura de banda para fora agregado em todos os serviços AWS*
Avaliação
As seguintes atividades serão utilizadas para avaliação:
– Participação (PART.) das aulas;
– Apresentação inicial da proposta de projeto (PROP. I) do sistema
distribuído (25/05);
– Apresentação final do projeto (PROP. II) do sistema distribuído (08/06);
– Implementação do projeto (PROJ.) de sistema escalável implantado no
AWS (15/06);
– Relatório (REL.) contendo a descrição do projeto e as melhorias
proporcionadas pela implantação do projeto na nuvem AWS (15/06).
● Média: (0.1*PART) + (0.05*PROP.I) + (0.05*PROP.II) + (0.2*REL.) +
(0.6*PROJ.)
Cronograma de Avaliação
Aula 1 Aula 2 Aula 3 Aula 4
PART. PART.
PROP. I
PART.
PROP. II
REL. + PROJ.
À priori, mas pode ser mudado com o decorrer do curso.
Com aviso prévio.
Sugestões de Projetos
● Ideal: remodelar projetos já existentes da autoria de vocês ou de
suas empresas, como Sistemas Distribuídos e escaláveis na AWS
● Alternativos:
– Algoritmos simples submetidos a grandes cargas de requisição
● Ex.: algoritmos de ordenação, algoritmos de busca, …
– Algoritmos um pouco mais pesados devem requerer outras
técnicas, como o Map-Reduce
● Processamento de áudio, imagens, e vídeos
Resultados esperados ao fim do curso
● Entender a importância de Sistemas Distribuídos;
– Entender as diferenças entre computação em cluster,
em grades, em nuvem, e supercomputação;
● Entender como construir sistemas distribuídos de larga
escala e tolerante a falhas;
● Ser capaz de analisar um sistema já existente e
remodelá-lo como um Sistema Distribuído;
● Ser capaz de utilizar a AWS para implementar de forma
prática um Sistema Distribuído.
Referências
1.Vliet, J., and Paganelli, F.; Programming Amazon EC2.
O'Reilly.
2.Slides das aulas. Links presentes nos slides.
Recursos e Contato
● Lista de discussão:
– isd-estacio@googlegroups.com
● Site da disciplina:
– https://sites.google.com/site/introsistemasdistribuidos/
● Me escreva:
– eduardolfalcao@gmail.com
Dúvidas
https://sites.google.com/site/introsistemasdistribuidos/
Eduardo de Lucena Falcão
eduardolfalcao@gmail.com
@dudufalcao

Apresentação do Curso

  • 1.
    Introdução a SistemasDistribuídos Introdução ao Curso Eduardo de Lucena Falcão
  • 2.
    Apresentações ● Eduardo deLucena Falcão – Lattes - http://lattes.cnpq.br/8335184809043358 – Blog - http://edufalcao.com ● Sobre vocês – Formação? – O que esperam do curso?
  • 3.
    Visão geral docurso ● Sistemas Distribuídos – “Um sistema distribuído é um conjunto de computadores independentes entre si que se apresenta a seus usuários como um sistema único e coerente.” Tanembaum, A. – “Coleção de computadores autônomos interligados através de uma rede de computadores e equipados com software que permita o compartilhamento dos recursos do sistema: hardware, software e dados.” Coulouris, G.
  • 4.
    Visão geral docurso ● Qual a importância dos Sistemas Distribuídos? 1. Otimização de nossos programas; 2. A população mundial cresce exponencialmente; 3. No mercado só há (ou pelo menos só deveria haver) espaço para quem trabalha de maneira escalável; 4. Arquitetura modularizada/segmentada; 5. Maior tolerância a falhas.
  • 5.
    Visão geral docurso ● Objetivos: 1.Apresentar os conceitos fundamentais de Sistemas Distribuídos; 2.Apresentar os principais conceitos úteis para o desenvolvimento prático de uma aplicação que envolve técnicas de Sistemas Distribuídos, mais especificamente técnicas de Cloud Computing; 3.Apresentar de forma conceitual e prática os principais componentes da Amazon Web Services (AWS), que permitirá a construção de um sistema escalável e tolerante a falhas;
  • 6.
    Visão geral docurso ● Objetivos: 4. Apresentar técnicas e ferramentas para monitoramento do sistema na nuvem AWS; 5. Com o decorrer do curso, o aluno deverá aplicar as técnicas aprendidas na disciplina em um projeto individual.
  • 7.
    ● Ementa: – Introduçãoa Sistemas Distribuídos. Introdução a AWS. Configuração do Ambiente de Desenvolvimento. Elastic Cloud Computing (EC2). Amazon Machine Images (AMI). Elastic Block Storage (EBS). Elastic Ips. Relational Database Service (RDS) – apenas o conceito. Simple Storage Service (S3). Amazon Cloud Front. Como tornar o sistema escalável. Elastic Load Balancing (ELB). Auto Scaling. Elastic Beanstalk. Como desacoplar os componentes do sistema. Simple Queue Service (SQS). SimpleDB. Simple Notification Service (SNS). Como detectar e lidar com falhas. Como tornar o sistema menos suscetível a falhas. Como gerenciar os componentes de seu sistema. Visão geral do curso
  • 8.
    Pré-requisitos ● Programação (C,C++, Java, etc.) ● Conhecimentos básicos de Sistemas Operacionais (Linux, Windows Server) ● Conhecimentos básicos de Redes
  • 9.
    Tópicos abordados nocurso ● Analisando o problema a ser resolvido; ● Sistemas Distribuídos: Clusters, Supercomputadores, Grids, Cloud Computing; ● Introdução à Cloud Computing; ● Introdução à AWS; ● Configuração do Ambiente de Desenvolvimento; ● EC2: como criar e configurar uma nova instância; ● Tornando o sistema escalável; ● Desacoplamento entre os componentes do sistema; ● Como detectar e lidar com falhas; ● Tornando o sistema menos suscetível a falhas; ● Gerenciando os componentes do seus sistema.
  • 10.
    Recursos Computacionais ● AWS –Opção 1: crie sua conta AWS e usufrua do AWS Fee Usage Tier ● Vantagem: você terá acesso ao AWS Management Console :) ● Desvantagem: você pode ter custos adicionais - poucos mais pode :( – Opção 2: requisite sua chave de acesso ao professor ● Vantagem: você não terá nenhum custo adicional :) ● Desvantagem: você não terá acesso ao AWS Management Console :( – Opção 3: use as 2 opções anteriores =D
  • 11.
    Recursos Computacionais ● AWSFree Usage Tier - http://aws.amazon.com/pt/free/ ● EC2: – 750 horas do Amazon EC2 para Linux Uso de Microinstância (613 MB de memória e suporte à plataforma de 32 e 64 bits) – horas suficientes para executar continuamente todos os meses – 750 horas do Amazon EC2 para Microsoft Windows Server Uso de Microinstância (613 MB de memória e suporte à plataforma de 32 e 64 bits) – horas suficientes para executar continuamente todos os meses – 750 horas de Elastic Load Balancer além de 15 GB de processamento de dados – 30 GB de Amazon Elastic Block Storage, além de 2 milhões de E/S e 1 GB de armazenamento de snapshot
  • 12.
    Recursos Computacionais ● AWSFree Usage Tier - http://aws.amazon.com/pt/free/ ● Simple Storage Service - S3: – 5 GB de armazenamento padrão do Amazon S3, 20.000 solicitações GET e 2.000 solicitações PUT* ● Simple Queue Service (SQS) e Simple Notification Service (SNS) – 1.000.000 de solicitações de Amazon SQS – 1.000.000 de solicitações, 100.000 notificações de HTTP e mil notificações de e-mail para Amazon SNS ● CloudWatch – 10 métricas do Amazon Cloudwatch, 10 alarmes e 1.000.000 solicitações de API ● Transferência de dados – 15 GB de largura de banda para fora agregado em todos os serviços AWS*
  • 13.
    Avaliação As seguintes atividadesserão utilizadas para avaliação: – Participação (PART.) das aulas; – Apresentação inicial da proposta de projeto (PROP. I) do sistema distribuído (25/05); – Apresentação final do projeto (PROP. II) do sistema distribuído (08/06); – Implementação do projeto (PROJ.) de sistema escalável implantado no AWS (15/06); – Relatório (REL.) contendo a descrição do projeto e as melhorias proporcionadas pela implantação do projeto na nuvem AWS (15/06). ● Média: (0.1*PART) + (0.05*PROP.I) + (0.05*PROP.II) + (0.2*REL.) + (0.6*PROJ.)
  • 14.
    Cronograma de Avaliação Aula1 Aula 2 Aula 3 Aula 4 PART. PART. PROP. I PART. PROP. II REL. + PROJ. À priori, mas pode ser mudado com o decorrer do curso. Com aviso prévio.
  • 15.
    Sugestões de Projetos ●Ideal: remodelar projetos já existentes da autoria de vocês ou de suas empresas, como Sistemas Distribuídos e escaláveis na AWS ● Alternativos: – Algoritmos simples submetidos a grandes cargas de requisição ● Ex.: algoritmos de ordenação, algoritmos de busca, … – Algoritmos um pouco mais pesados devem requerer outras técnicas, como o Map-Reduce ● Processamento de áudio, imagens, e vídeos
  • 16.
    Resultados esperados aofim do curso ● Entender a importância de Sistemas Distribuídos; – Entender as diferenças entre computação em cluster, em grades, em nuvem, e supercomputação; ● Entender como construir sistemas distribuídos de larga escala e tolerante a falhas; ● Ser capaz de analisar um sistema já existente e remodelá-lo como um Sistema Distribuído; ● Ser capaz de utilizar a AWS para implementar de forma prática um Sistema Distribuído.
  • 17.
    Referências 1.Vliet, J., andPaganelli, F.; Programming Amazon EC2. O'Reilly. 2.Slides das aulas. Links presentes nos slides.
  • 18.
    Recursos e Contato ●Lista de discussão: – isd-estacio@googlegroups.com ● Site da disciplina: – https://sites.google.com/site/introsistemasdistribuidos/ ● Me escreva: – eduardolfalcao@gmail.com
  • 19.