apresentação do curso
DESCRIPTION
Apresentação do Curso Introdução a Sistemas Distribuídos da Estácio.TRANSCRIPT
Introdução a Sistemas Distribuídos
Introdução ao CursoEduardo 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:
● Site da disciplina:
– https://sites.google.com/site/introsistemasdistribuidos/
● Me escreva:
Dúvidas
https://sites.google.com/site/introsistemasdistribuidos/
Eduardo de Lucena Falcão
@dudufalcao