klaytoncastro / ihceub

UniCEUB - Interação Humano-Computador
MIT License
4 stars 0 forks source link

Instruções para os Laboratórios da Disciplina de IHC (Interação Humano-Computador)

Prezado(a) aluno(a),

Seja bem-vindo(a) aos laboratórios da disciplina de IHC (Interação Humano-Computador). Neste curso exploraremos os fundamentos de Design de Produto, UX - User eXperience e UI - User Interface. Também discutiremos ferramentas e técnicas essenciais para promover um desenvolvimento ágil em IHC.

Com essa base estabelecida, daremos ênfase às tecnologias HTML (HyperText Markup Language), CSS (Cascading Style Sheets), JavaScript e Bootstrap. Introduziremos o protocolo HTTP (Hypertext Transfer Protocol), a arquitetura de microsserviços e o microframework Python Flask. Também abordaremos o uso de bancos de dados, relacionais ou não relacionais, demonstrando a construção de interfaces web apoiadas por serviços dinâmicos.

Este documento foi preparado para auxiliar a configuração e gerenciamento dessas ferramentas. Siga atentamente as instruções abaixo para preparar seu ambiente.

Configuração do Ambiente:

Para as atividades práticas, é fundamental ter um ambiente de desenvolvimento adequadamente configurado. Visando padronizar essa experiência, disponibilizamos uma máquina virtual (Virtual Machine - VM) pré-configurada, que contém todas as ferramentas e dependências necessárias. Embora o Docker seja compatível para rodar diretamente em diversos sistemas operacionais, essa abordagem simplifica o suporte e agiliza a solução de eventuais desafios técnicos, assegurando que todos os estudantes tenham acesso a um ambiente consistente e minimizando complicações decorrentes de diferenças de hardware e versões de software.

1. Ambiente de Virtualização

O que é OVA?

OVA (Open Virtual Appliance) é um formato de arquivo para máquinas virtuais (VMs), contendo toda a configuração de sistema operacional e discos virtuais necessários. Ele simplifica a portabilidade e implantação de ambientes virtualizados, viabilizando uma importação fácil de imagens padronizadas em softwares de virtualização como o Oracle VirtualBox, dentre outros.

Ao utilizar um arquivo OVA, é possível preparar e distribuir imagens pré-configuradas de software, assegurando que os laboratórios possam ser reproduzidos em um ambiente consistente, independentemente da localidade de execução. A imagem OVA fornecida já vem equipada com ferramentas como docker, docker-compose, git e ssh, otimizando o tempo de configuração do laboratório.

Além disso, a imagem OVA padronizada facilita a integração, potencializando a infraestrutura do laboratório para uso distribuído dos recursos e configuração de serviços mais robustos. Por exemplo, enquanto uma estação pode ficar responsável pela hospedagem do banco de dados, outra pode disponibilizar o front-end e outra pode executar o back-end, atuando de maneira colaborativa e autônoma.

Sobre o Oracle VirtualBox

O VirtualBox é um software de virtualização de código aberto, que permite executar vários sistemas operacionais em uma única máquina física. Com ele, é possível criar e gerenciar máquinas virtuais, cada uma com seu sistema operacional, aplicativos e arquivos em um ambiente isolado. Ele é compatível com diversos sistemas operacionais, tais como Windows, Linux e MacOS.

O uso de uma VM no VirtualBox busca uniformizar o funcionamento dos ambientes e facilitar o suporte, pois é a ferramenta disponível em nosso laboratório. No entanto, valorizamos a autonomia de cada estudante, especialmente na prática em seu computador pessoal.

Neste caso, para aqueles que utilizam Windows e preferem evitar VMs em função de limitação de recursos, especialmente quando seu dispositivo possui menos que 6GB de RAM, o Windows Subsystem for Linux (WSL) é uma opção interessante. Lembre-se de que o WSL, apesar de eficiente, não oferece todas as vantagens de um sistema Linux completo e apresenta nuances entre suas versões (WSL e WSL 2).

Como Usar:

  1. Baixe a imagem OVA através deste link.
  2. Caso não esteja instalado, baixe o VirtualBox através deste link.
  3. Escolha a versão correspondente ao seu sistema operacional e siga as instruções de instalação.
  4. Execute o VirtualBox e clique em Arquivo > Importar Appliance.
  5. Selecione o arquivo OVA baixado e siga as instruções na tela.
  6. Após a importação, dimensione os recursos de memória compatíveis com o laboratório ou computador pessoal. A imagem vem pré-configurada com 512MB de RAM, o que é inicialmente suficiente para prosseguir com nossos laboratórios.
  7. Configure a placa de rede em modo NAT.
  8. Inicie a máquina virtual (VM).

Credenciais para acesso à VM:

2. Compreendendo o modo NAT

NAT (Network Address Translation) é a implementação de um recurso para tradução de endereços de rede. No contexto do VirtualBox, ao configurar uma VM para usar NAT, você está permitindo que essa VM se comunique com redes externas, incluindo a Internet, usando o mesmo endereço IP (Internet Protocol) do host. Assim, a máquina host (seu desktop de laboratório ou notebook pessoal) age como um gateway e a VM parece estar atrás de uma rede privada.

Além de fornecer acesso à Internet, o recurso de NAT do VirtualBox também permite o redirecionamento de portas. Isso significa que você pode encaminhar o tráfego de uma porta específica no host para uma porta na VM. Isso é bastante útil quando você deseja acessar serviços hospedados na VM, que poderão ser alcançados diretamente do host ou a partir de outras máquinas na mesma rede, a exemplo das aplicações web e interfaces de gerenciamento com as quais iremos trabalhar no laboratório.

Como configurar o Redirecionamento de Portas:

  1. Abra o VirtualBox e selecione a máquina virtual que você deseja configurar.
  2. Clique em Configurações (ou Settings).
  3. Na janela de configurações, vá para Rede.
  4. Sob a aba Adaptador 1 e certifique-se de que está configurado para Conectado a: NAT.
  5. Clique em Avançado para expandir as opções.
  6. Clique em Redirecionamento de Portas.
  7. Na janela de redirecionamento de portas, você pode adicionar algumas regras para encaminhar portas da sua máquina host para a sua máquina virtual.

Exemplo de Tabela de Configuração de Portas:

Nome da Regra Protocolo Endereço IP do Host Porta do Host Endereço IP da VM Porta da VM
Acesso SSH TCP 127.0.0.1 2222 10.0.2.15 22
FlaskApp 1 TCP 127.0.0.1 8500 10.0.2.15 5000
FlaskApp 2 TCP 127.0.0.1 8501 10.0.2.15 5001
FlaskApp 3 TCP 127.0.0.1 8502 10.0.2.15 5002

3. Descrição da Arquitetura e Ferramentas Utilizadas

Um Framework é uma estrutura pré-projetada que fornece aos desenvolvedores um conjunto de componentes base para a criação de aplicações, eliminando a necessidade de começar do zero. Essa abordagem oferece uma série de funcionalidades, ferramentas e práticas reconhecidas pelo mercado, permitindo que os engenheiros de software e programadores se concentrem na lógica específica da aplicação, otimizando o processo de desenvolvimento. Assim, ao se optar por determinado framework, busca-se alinhar-se às melhores práticas da indústria de software. No contexto da construção de aplicações web modernas e prática dos conceitos de IHC, é fundamental explorar os frameworks de destaque, entendendo suas peculiaridades e benefícios.

Além do uso de frameworks reconhecidos, as aplicações web modernas são organizadas em três camadas fundamentais: Front-End, Back-End e Infraestrutura. O Front-End representa a interface com o usuário, ou seja, os componentes com os quais ele interage diretamente, a exemplo dos navegadores web em desktops e dispositivos móveis. Em contraste, o Back-End gerencia a lógica, o processamento e comunicação com os bancos de dados, estabelecendo o cerne da aplicação, onde os processos vitais são executados. A Infraestrutura, por sua vez, é a base técnica onde a aplicação opera, incluindo a hospedagem e soluções focadas na estabilidade, escalabilidade, disponibilidade e segurança.

Em conjunto, a atuação harmônica e coordenada destas camadas proporcionam uma experiência homogênea ao usuário e constituem uma arquitetura de referência para engenheiros de software e plataforma. A seguir, temos o diagrama simplificado das soluções que estudaremos ao longo do curso:

Arquitetura de Referência

Front-End:

Back-End:

Infraestrutura:

Docker e Docker Compose são ferramentas essenciais ao desenvolvedor moderno, facilitando a criação e acelerando a distribuição e execução de aplicações em ambientes consistentes, isolados e reproduzíveis. Com isso, eliminamos a complexidade das instalações manuais, aumentando a conveniência e eficiência. Há uma extensa documentação disponível e uma comunidade bastante ativa.

4. Preparando o Ambiente de Laboratório

Usando o SSH: Guia Básico

SSH (Secure Shell), que se traduz como "cápsula segura", é um protocolo que viabiliza uma comunicação segura (criptografada) entre um computador cliente e um servidor remoto. Para gerenciar nossa VM instanciada no VirtualBox (ambiente servidor), é altamente recomendado o uso de conexões SSH ao invés da console física. Uma opção popular e confiável para realizar uma conexão via SSH em clientes Windows é o Putty. A versão portable pode ser obtida e usada diretamente em nossos laboratórios aqui.

Benefícios: Conveniência e Eficiência

  1. Para copiar, selecione o texto desejado com o botão esquerdo do mouse e clique com o botão direito para copiar.
  2. Para colar, clique com o botão direito do mouse no local desejado.

Como se conectar ao ambiente virtual:

  1. Execute o PuTTY e no campo Host Name (or IP address), digite: 127.0.0.1. No campo Port, digite: 2222. Isso é possível pois configuramos previamente o NAT com redirecionamento de portas no VirtualBox, de modo a encaminhar a porta 2222 do host para a porta 22 da VM.

  2. Certifique-se de que a opção Connection type esteja definida como SSH. Clique no botão Open na parte inferior da janela. Uma janela de terminal será aberta.

  3. Na primeira vez que você se conectar, pode ser solicitado que você confie na chave SSH da sua VM. Se isso acontecer, clique em Yes para aceitar a chave e continuar.

  4. Você será solicitado a fornecer um nome de usuário. Digite labihc e pressione Enter. Em seguida, será solicitada a senha. Digite L@b1hc e pressione Enter.

Como baixar e iniciar as aplicações:

  1. Depois de acessar o ambiente virtual, baixe os arquivos do projeto:
   sudo su -
   cd /opt
   git clone https://github.com/klaytoncastro/ihceub
  1. Construa e inicie os serviços usando o Docker Compose.
   cd /opt/ihceub/<diretorio_da_aplicacao>
   docker-compose build
   docker-compose up -d
  1. Para criar e alterar os arquivos de configuração diretamente na VM, pode ser utilizado o editor Vim, opção robusta e versátil para terminais Linux. O Vim é uma ferramenta bastante útil administradores de sistemas e desenvolvedores, permitindo que usuários mais experientes editem arquivos com poucos comandos.

Usando o Vim: Guia Básico

Neste guia, focaremos apenas em algumas operações básicas, tais como: abrir, editar e salvar arquivos.

  1. Abrir um arquivo

    vim <nome_do_arquivo>
  2. Modo de Inserção

    Após abrir ou criar um arquivo com o Vim, você estará no modo normal. Para inserir ou editar texto, você deve entrar no modo de inserção pressionando Insert.

  3. Salvar alterações

    Para salvar as alterações feitas no arquivo, primeiro pressione Esc para retornar ao modo normal, depois digite :w e pressione Enter.

  4. Sair do Vim

    • Sem salvar as alterações: Pressione Esc (para garantir que você está no modo normal), depois digite :q! e pressione Enter.
    • Após salvar as alterações: Digite :wq e pressione Enter ou apenas :x.
  5. Editar texto

    No modo de inserção (após pressionar Insert), você pode editar o texto como em qualquer outro editor. Quando terminar, pressione Esc para voltar ao modo normal.

  6. Exibindo Números de Linha

    Para exibir os números de linha no Vim, no modo normal, digite:

    :set number
    • Isso é útil porque facilita a navegação, a leitura e a referência a partes específicas do arquivo, especialmente em arquivos grandes ou quando se está fazendo depuração de código.
  7. Deletar uma Linha

    No modo normal, posicione-se na linha que deseja deletar e digite dd.

Dicas

Usando Docker e Docker Compose: Guia Básico

Recomenda-se a leitura da documentação oficial para se aprofundar, mas este guia básico é suficiente para iniciar a utilizar utilização das ferramentas.

Comandos do Docker:

  1. Baixar uma imagem do Docker Hub

    docker pull <imagem>:<tag>
  2. Listar todas as imagens no seu sistema

    docker images
  3. Rodar um contêiner a partir de uma imagem

    docker run <opções> <imagem>
  4. Listar contêineres em execução

    docker ps
  5. Listar todos os contêineres

    docker ps -a
  6. Parar um contêiner

    docker stop <contêiner_id_ou_nome>
  7. Visualizar logs de um contêiner

    docker logs <contêiner_id_ou_nome>
  8. Remover um contêiner

    docker rm <contêiner_id_ou_nome>

Comandos do Docker Compose:

  1. Iniciar serviços definidos no docker-compose.yml em modo interativo

    docker-compose up
  2. Iniciar serviços definidos no docker-compose.yml em segundo plano

    docker-compose up -d
  3. Parar serviços

    docker-compose down
  4. Listar os serviços em execução

    docker-compose ps
  5. Visualizar logs

    docker-compose logs

Limpeza de Imagens, Contêineres e Volumes:

Na pasta docker deste repositório, você encontrará o script docker-cleanup.sh que faz a remoção de imagens antigas e desnecessárias. Isso pode ser útil para recuperar espaço no ambiente de desenvolvimento.

  1. Navegue até a pasta onde o script está localizado:
cd caminho/para/pasta/docker
  1. Para tornar o script executável, utilize o comando:
chmod +x docker-cleanup.sh
  1. Execute o script:
./docker-cleanup.sh

Desligamento Seguro do Ambiente

Desligamentos abruptos, provocados por interrupções forçadas do sistema operacional hospedeiro ou encerramento inadequado do VirtualBox, podem comprometer a integridade dos discos virtuais, resultando em perda, corrupção de dados ou instabilidade do ambiente. Por isso, ao finalizar suas atividades na VM, é fundamental executar o comando shutdown -h now a partir do terminal (via SSH ou mesmo a console física).

Esse procedimento simples efetua um desligamento seguro e ordenado, preservando a integridade do sistema de arquivos e dos serviços ativos no ambiente, incluindo os contêineres. Assim, você assegura que, ao reiniciar a VM, o sistema continue a operar exatamente do ponto onde foi interrompido, minimizando eventuais transtornos e retrabalho. Se você estiver usando o VirtualBox diretamente, pode também escolher a opção "Desligar a máquina" (ou similar) disponível no menu do software, o que basicamente fará o mesmo procedimento.

Nota: Nunca selecione a opção "Forçar Desligamento" ou "Desligamento bruto" do VirtualBox, a menos que não tenha alternativas. Essa opção interrompe a alimentação da VM, similar a desligar a energia de um computador real sem realizar o desligamento adequado, e tem potencial de causar problemas.

Pronto!

Agora que você está com o ambiente preparado e pronto para começar os laboratórios. Desejamos a você um ótimo aprendizado ao longo da disciplina! Se tiver dúvidas, não hesite em me contactar: klayton.castro@ceub.edu.br.