Sistemas Distribuídos

2017/2018

Ambiente de Desenvolvimento

As aulas práticas de Sistemas Distribuídos vão necessitar a instalação das seguintes ferramentas:

  • Linux (Nativo ou VirtualBox)
  • JDK 8
  • Eclipse (facultativo)
  • Maven
  • Docker

Porquê Linux?

Por duas razões...
  • Por uma questão prática...

    • ~245 alunos × Y Sistemas de Operação × Z Versões Docker × ... = SUPPORT NIGHTMARE

    • Remédio: Linux como mínimo denominador comum...

  • Porque a discussão individual do trabalho a isso obriga...

    • Os trabalhos vão ter que correr, em Linux, nos computadores dos laboratórios...
    • Não haverá tempo dominar o ambiente Linux na hora...

VirtualBox

Para quem não tem um sistema Linux ou dual boot Linux, poderá usar uma máquina virtual VirtualBox com o software básico pré-instalado.

  • TODO: Descarregar VirtualBox e imagem Linux [brevemente]

Não é obrigatório, mas quem insistir usar outro SO está por sua conta e risco...

JDK 8

Os materiais de suporte às aulas práticas e ao projecto da disciplina serão desenvolvidos e testados para a versão 8 do JDK.

  • Não haverá garantias de compatibilidade com JDK 7 ou JDK 9.
  • TODO : descarregar JDK 8

Após a instalação, confira que o compilador e o interpretador correm a partir dum terminal e que a versão é a correta.

Senão, terá que adicionar a diretoria com os executáveis ao PATH

In [1]:
%%bash
java -version
javac -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (Zulu 8.20.0.5-linux64) (build 1.8.0_121-b15)
OpenJDK 64-Bit Server VM (Zulu 8.20.0.5-linux64) (build 25.121-b15, mixed mode)
javac 1.8.0_121

Eclipse

Não é necessário usar o Eclipse para desenvolver o trabalho prático.

No entanto, alguns materiais de apoio às aulas práticas e ao projecto serão empacotados para este IDE (e mais nenhum outro).

  • TODO: Descarregar o eclipse
    • A versão de referência é o Oxigen2

Maven

O Maven é uma ferramenta para gestão de projectos.

Permite automatizar várias tarefas:

  • Compilação
  • Empacotamento de artefactos, tais como jars e imagens docker.

É indispensável para resolver as dependências de um projecto.

Pode ser usado diretamente a partir da linha de comandos ou dentro do Eclipse.

A utilização do Maven pressupõe pelo menos um ficheiro pom.xml, com o mesmo papel de um Makefile

Docker

O Docker é uma plataforma aberta para o desenvolvimento, distribuição e execução de aplicações (Linux) distribuídas.

Uma imagem docker é gerada para conter as dependências estritas de uma aplicação (para que possa executar).

Usando um Docker Engine é possível instanciar as imagens docker em containers.

Um container comporta-se como uma máquina virtual (mais) leve, com o seu próprio sistema de ficheiros e endereços de rede.

Num computador pessoal corrente é viável ter vários containers em execução com um custo aceitável.

Porquê o Docker?

Nas aulas práticas de Sistemas distribuídos, o Docker será utilizado para testar os trabalhos práticos de uma forma mais automatizada e com menos recursos.

Os vários componentes do sistema distribuído a desenvolver (servidores e clientes), irão correr na mesma máquina física, cada um no seu container. Porém, devido à virtualização conferida pelo ambiente docker, haverá a ilusão da execução realizar-se num ambiente verdadeiramente distribuído, tendo cada container o seu próprio IP, por exemplo.

Ainda sobre o Docker

A (Docker inc.)[www.docker.com] suporta os principais sistemas de operação (Windows, Linux e macOS).

No Windows e no macOS, ao contrário do Linux, não é possível executar nativamente as imagens/containers docker.

Nestes dois sistemas de operação, o ambiente Linux é recriado à custa de uma máquina virtual Linux para alojar os container docker. A forma de materializar essa máquina virtual pode ser mais ou menos nativa, ou seja, mais ou menos integrada com o sistema de operação.

As opções disponíveis podem estar limitadas pela versão do CPU e do próprio Windows.