2. 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?
3. 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.
4. 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.
5. 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;
6. 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.
7. ● 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
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 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.
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
● 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
12. 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*
13. 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.)
14. 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.
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 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.
17. Referências
1.Vliet, J., and Paganelli, 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