Prévia do material em texto
DESENVOLVIMENTO DE APLICAÇÕES DISTRIBUÍDAS Contextualização • Sistemas Distribuídos estão presentes em diversas aplicações. Os sistemas corporativos estão, muitas vezes, em ambientes distribuídos, interconectando diferentes serviços de recursos humanos, departamento financeiro, gerenciamento de ativos, entre outros. Atualmente, há muitas aplicações que estão utilizando os recursos da computação em nuvem. Existem ainda aplicações de Engenharia e científicas de grande porte que utilizam clusters com o objetivo de paralelizar a carga de trabalho. Breve histórico da computação Primeiros computadores Os primeiros sistemas computacionais têm mais de setenta anos. Vejamos: • Z1 - Zuse (1937): mecânico, números binários, programável; • Z2 - Zuse (1939): relés, aritmética de ponto fixo, programável; • Z3 – Zuse (1941): primeiro computador digital, relés eletromagnéticos, aritmética de ponto flutuante binário, programável, pipeline de instruções, paralelização de instruções, não era eletrônico; • Mark i, USA (1944): programável, sem aritmética de ponto flutuante, não era binário, não era eletrônico; • Electronic Numerical Integrator and Computer (ENIAC), USA (1946): programável, eletrônico, era decimal (não era binário), ponto fixo, não era de ponto flutuante; Breve histórico da computação • Segunda geração de computadores A segunda geração iniciou nos anos 1950 e houve a primeira separação de conceitos. O IBM 701 foi a primeira máquina em que os programas eram armazenados me memória interna, eletrônica e endereçável. Também foi introduzido o conceito de sistema operacional em cartões perfurados e fitas de papel. Possibilitou a separação entre o operador e o programador. • Incialmente, um lote de instruções era carregado para, posteriormente, ser processado. • Também possibilitou a divisão entre entrada, processamento e saída. Breve histórico da computação • Terceira geração de computadores A terceira geração de computadores trouxe grandes avanços de hardware, circuitos integrados, capacidade de memória aumentada, HD, entre outros. • Possibilitava a multiprogramação com múltiplos processos na memória, sendo chaveados. • Computadores como o IBM 360 tiveram um grande impacto tecnológico. • Possibilitou a implementação de instruções de máquinas. Outro aspecto importante foi a divisão entre o espaço do usuário e o sistema operacional, além da proteção com eventuais erros nos processos. • Máquinas como IBM CP-40 e CP-50 utilizavam virtualização de memória. Breve histórico da computação • Conectividade • No início da década e 1960, estudos envolvendo redes em que seres humanos e computadores poderiam interagir. • O computador TX-2, localizado em Massachusetts, foi conectado ao Q-32 localizado na Califórnia,estabelecendo a primeira WAN (Wide Area Network) que se tem notícia. • O ARPANET (Advanced Research Projects Agensy Network), precursor da Internet, conectou diferentes universidades nos Estados Unidos, utilizando os conceitos de pacotes e roteamento. Em 1972, surgiu o e-mail. Breve histórico da computação • Quarta geração de computadores • A quarta geração de computadores ocorreu na década de 1980 e trouxe mais avanços em termos de poder computacional, assim como redução de custo e de tamanho, utilizando CPU Intel 8088 e Motorola 6899. MS- DOS e Unix dominavam o mercado. • Modelo Cliente-Servidor • Com o advento da quarta geração de computadores, houve também o desenvolvimento de sistemas distribuídos, considerando a arquitetura cliente-servidor. • No início da década de 1980, houve a padronização de protocolo para a Internet e, em 1995, aproximadamente, a internet se tornou comercial. A partir daí, a Internet cresceu vertiginosamente. Breve histórico da computação • Contexto atual da computação • Atualmente, há enorme disponibilidade de poder computacional, não só no que se refere à capacidade de processamento, mas, também, na capacidade de armazenamento, especialmente no que se refere a utilização de computação em nuvem. • Muitas empresas já adotam a computação em nuvem e, desta forma, os dados podem ser compartilhados em diferentes dispositivos, ou seja, a pessoa pode acessar os serviços de determinada empresa tanto pelo celular, quanto pelo tablet, notebook, etc. Introdução a sistemas distribuídos • É possível encontrar diferentes definições para sistemas distribuídos. Vamos considerar a seguinte: um sistema distribuído é um conjunto de sistemas autônomos que estão conectados pela rede e se comunicam por meio da troca de mensagens. • E algoritmos distribuídos são algoritmos que podem ser executados por múltiplos computadores em um sistema distribuído, de modo que se busca resolver algum problema cooperativamente. • Entretanto, se já era importante evitar os erros nos programas, em sistemas distribuídos essa preocupação é ainda maior porque há várias outras possibilidades de problemas que podem ocorrer. Introdução a sistemas distribuídos • Sistemas distribuídos não são triviais porque, além do que foi exposto, há uma gama enorme de hardware, sistemas operacionais e aplicações diferentes. Lembrando que sistemas distribuídos é composto por sistemas autônomos e separados uns dos outros. • E a programação de sistemas distribuídos deve lidar com o paralelismo, além da comunicação. E, muitas vezes, as falhas não são reprodutíveis. A segurança em sistemas distribuídos também não é trivial. • Pode parecer que sistemas distribuídos são inviáveis. Então, por que estudar sistemas distribuídos? Por que eles existem? Introdução a sistemas distribuídos • Muitos serviços precisam ser processados em uma máquina específica, que hospeda a aplicação que estamos requisitando o serviço. • Por exemplo, compras online, controle de processos industriais. • Além disso, muitas tarefas são distribuídas por natureza como, por exemplo, o armazenamento de mídias que são acessadas por múltiplos e diferentes dispositivos, o acesso a sites web criados em diferentes localidades. Obrigado!