Prof. Richard Brosler richard.brosler@aedu.com Metodologia de trabalho Sistema de notas Trabalhos Artigos Celulares Presença Entrega de trabalhos Uso de laboratório Introdução aos Sistemas Distribuídos 1
Carga Horária da disciplina: 40 horas Teóricas Sistemas de Notas 1º Bimestre ( MD1 ) Trabalhos 3,0 Avaliação 7,0 2º Bimestre ( MD2 ) Trabalhos 3,0 Avaliação 7,0 Média do Semestre: MD1 x 0,4 + MD2 x 0,6 Trabalhos Trabalhos realizados em sala de aula, pesquisas, apresentações, seminários. Deverão ser entregues até a data/hora estipulada por e-mail ou impresso. Trabalhos entregues por e-mail só terão validade se houver um e-mail de resposta do professor acusando recebimento. Trabalhos não entregue na data/hora estipulada sofrerão decréscimo de notas de acordo com as Regras de Decréscimo. 2
Artigos Há possibilidade de desenvolvimento de artigos, caso isso ocorra, reavaliaremos as notas dos trabalhos para dar um peso ao artigo. Os valores dos novos pesos serão publicados. Celulares Favor manter os celulares no modo silencioso. Atendimento somente em caso extremo ( Familiares doentes, trabalhos, óbitos, acidentes graves ). Em caso de necessidade de atendimento, comunicar a ausência temporária ao processor para atender. Horário Início da aula: 19:15 até 20:55hs. Lista de Presença Não terá horário correto para ser passada. Utilização do laboratório Será utilizado para o desenvolvimento de atividades relacionadas a aula. 3
Não será permitido o uso do laboratório para fins de diversão. As atividades desenvolvidas no laboratório poderão ser consideradas como trabalhos. Regras de Decréscimo Trabalhos entregues fora do prazo terão a seguinte regra de decréscimo: 1º dia, o trabalho valerá 70% da nota. 2º dia, o trabalho valerá 50% da nota. 3º dia, o trabalho valerá 25% da nota. A partir do 4º dia não será permitido mais a entrega de trabalhos. 4
Avaliações 1º Bimestre: 30/09/2016. 2º Bimestre: 02/12/2016. Substitutiva: 09/12/2016. Cap.1 Livro Texto ( Sistemas Distribuídos Andrew S. Tanenbaum ) 1945~1985 Computadores Grandes e Caros. Minicomputadores custavam dezenas de milhares de dólares Resultado: poucos computadores e funcionamento independentes por falta de meios de conexão. Década de 80 2 avanços tecnológicos mudanças na situação. 5
Primeiro: Desenvolvimento de microprocessadores com alta capacidade de processamento de 8, 16, 32 e 64 bits. Capacidade semelhantes a mainframes por uma fração do preço deles Evolução assombrosa e sem precedentes nos últimos 50 anos Uma máquina que custava $ 10.000.000 com execução de 1 instrução por segundo Máquinas atuais que custam $ 1.000 e executam 1.000.000.000 de instruções por segundo. Ganho de desempenho de 10 13. Se um Rolls Royce sofresse essa mesma evolução, custaria $ 1 e faria 1.000.000.000 milhas com 1 galão de gasolina. (manual de 200 páginas para entrar dentro dele) 6
Segundo: Invenção de redes de computadores de alta velocidade; Permite centenas de maquinas localizadas em um edifício conectadas; Vários dados podem ser transferidas entre máquinas em microssegundos; Tornou-se viável sistemas que utilizam computadores conectados em redes de alta velocidade; Denominados assim de sistemas distribuídos; Diferentemente de sistemas centralizados (sistemas monoprocessados) único computador, seus periféricos e, talvez, alguns terminais remotos. Definição de sistemas distribuídos. Um sistema distribuído é o conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente 7
Vários aspectos importantes nessa definição: Sistemas distribuídos consistem em componentes (computadores) autônomos; Usuários (pessoas ou programas) acham que estão tratando com um único sistema Características importantes: Diferenças entre os computadores e forma como eles se comunicam estão em grande parte ocultas aos usuários; Usuários e aplicações podem interagir com o sistema distribuído de maneira consistente e uniforme independente de onde ocorra a interação; Relativamente fácil expandir ou aumentar a escala de sistemas distribuídos; Usuários e aplicações não devem perceber quais são as partes que estão sendo substituídas ou consertadas, ou quais as novas partes estão sendo adicionadas para atender a usuários e aplicações; Middleware 8
Metas/Desafios Existem 4 metas importantes a serem alcançadas para o desenvolvimento de um Sistema Distribuído O Arquiteto e o Desenvolvedor devem ter elas em mente para a entrega de um sistema distribuído de reconhecida qualidade. Um sistema distribuído deve oferecer: Acesso a recursos: Oferecer fácil acesso a seus recursos; Transparência: Ocultar razoavelmente bem o fato de que os recursos estão distribuídos em uma rede; Abertura: Deve ser aberto para conectividade com outros componentes, aplicativos; Escalabilidade: Deve poder ser expandido. Entende-se por recurso: um hardware, um software, um objeto (ex: impressora, CPU, serviço, música, imagens, vídeos) 9
Acesso a recursos: Fornecer acesso a recursos remotos de maneira controlada e eficiente para os usuários ou aplicativos Motivos: Economia ao compartilhar recursos (ex: compartilhar uma impressora, um super computador) Fácil acesso ao recurso aumenta a colaboração e a troca de informações (Kazaa: compartilhamento de arquivos) Formação de groupware (Google docs) e redes sociais (Facebook). Transparência: Um sistema transparente é aquele que é capaz de se apresentar ao usuário, aplicativo ou programador como um sistema de computador, em vez de uma coleção de componentes distribuídos por vários computadores. 10
Tabela Tipos de transparência Fonte: Sistemas Distribuídos, pág. 3 Abertura Proporciona aos sistemas distribuídos a capacidade de ser extensível. Os seus componentes publicam suas interfaces (ex: API - Application Programming Interface) Com isso, novos serviços podem ser adicionados e disponibilizados para uso por uma variedade de programas clientes. 11
Interoperabilidade Sistemas e componentes de fabricantes diferentes coexistindo e trabalhando em conjunto Portabilidade Uma aplicação desenvolvido no sistema A poder ser executada, sem modificação, em um sistema B (ex: um aplicativo pode executar em ambiente Windows ou Linux, e consultar um database DB2 ou Oracle) Google Maps API The Google Maps API lets you embed Google Maps in your own web pages with JavaScript." Escalabilidade Escalável em relação ao tamanho Adicionar mais usuários, recursos Escalável em relação a geografia Usuários/recursos longes um do outro Escalável em relação a administração Sistema fácil de gerenciar, mesmo que bastante abrangente 12
Técnicas de Escalabilidade Ocultar latências de comunicação Distribuição Replicação Ocultar latências de comunicação Auxilia na escalabilidade geográfica É conseguida em geral por comunicação assíncrona ou realocando parte do código para o lado do cliente, evitando comunicação. 13
Comunicação Síncrona e Assíncrona. Fonte: http:/ofps.oreilly.com/titles/9780596516482/ajax_and_server_communication.html Exemplo de transferência de código para o lado do cliente Fonte: Sistemas Distribuídos, pág.8 14
Distribuição Dividir um componente em partes menores e espalhar as partes pelo sistema. Ex: DNS Servidor DNS: divisão com base nas zonas Fonte: Sistemas Distribuídos, pág.8 15
Replicação Aumenta a disponibilidade de um recurso Permite o balanceamento de carga Ex: Cache, Base de Dados Replicadas IBM Q Replication, WebSphere MQ Fonte: http://homepages.inf.ed.ac.uk/ychen3/ibm_ogsadai/images/image002.png 16
Sistemas distribuídos são diferentes de softwares tradicionais. Jamais acreditar que (Ciladas!): A rede é confiável A rede é segura A rede é homogênea A topologia não muda A latência é zero A largura da banda é infinita O custo do transporte é zero Há só um administrador 17
Lembrar que sistemas distribuídos são desafiantes: Complexidade Tipicamente, sistemas distribuídos são mais complexos que sistemas centralizados. Segurança Mais suscetível a ataques externos. Gerenciamento Mais esforço é necessário para o gerenciamento do sistema. Imprevisibilidade Respostas imprevisíveis dependendo da organização do sistema e da carga de rede. 18
Tipos de sistemas distribuídos Fiquem com Deus... A saber: Se com a tua boca confessares ao Senhor Jesus, e em teu coração creres que Deus o ressuscitou dentre os mortos, serás salvo. Romanos 10:9 19