Raspberry Pi: uma pequena solução para desenvolvimento
Alguma vez você precisou um serviço de VM (Virtual Machine - Máquina Virtual) online ou uma hospedagem free, mas esbarrou em grandes limitações? Ou esbarrou em algum problema que essas soluções, no pacote free, trouxeram (como limite de tráfego, espaço em disco, vms sendo deletadas do nada)? Continue lendo pois eu acredito que tenho uma solução para você.
Começando por onde interessa: Pelo início
O que é Raspberry Pi
Raspberry Pi é um micro-computador completo, com seus componentes em uma única placa lógica. Há o processador, a memória RAM e a placa de vídeo impressos, e entradas USB, HDMI, áudio e vídeo composto, para câmera e telas LCD e uma GPIO, com pinos I/O de múltiplo propósito.
Fonte: Tecnoblog
E quando diz completo, pode confiar, pois essa "plaquinha" tem conexão Bluetooth, placa Wireless, Portas USB (muda a quantidade conforme modelo), saída de vídeo (que também muda conforme modelo), saída de áudio, entrada de rede para uso cabeado (que eu recomendo muito), entrada de alimentação de energia, processador, memória... Resumindo, de um jeito que eu gosto: é um computador de bolso, do tamanho de um cartão de crédito.
Raspnerry Pi 4
Pelo seu tamanho compacto, poder de processamento e preço, essa plaquinha simpática é usada nos mais diversos tipos de tarefas, como automatização de casas e sistemas IOT (Internet das Coisas). Particularmente, eu tenho duas Raspberry Pi 4: uma com 4 GB de memória, que eu uso como Central Multimídia de Entretenimento (conhecido como fliperama portátil) e a outra, com 8 GB de memória, que uso como apoio de desenvolvimento (que será o foco desse artigo).
Como podem reparar, ambas tem case de proteção e uma delas tem uma tela LCD de 3,5''. Ou seja, você tem muitas opções de personalização e proteção (como case metálica e ventilador para dissipação de calor, etc). E, respondendo rapidamente, não é necessário ter case, tela ou qualquer outro acessório para usar uma Raspberry Pi: só precisa um cartão SD e uma fonte de alimentação de 5V (um carregador de celular já basta).
Finalizarei essa parte sobre a Raspberry Pi agora, senão o artigo será somente sobre essa placa. Porém, pode ser que faça um artigo mais detalhado sobre Raspberry Pi 4.
Motivos para usar uma Raspberry Pi
- Baixo consumo de energia
Além do que já citei acima, uma placa de Raspberry Pi possui baixo consumo de energia, precisando somente de uma fonte de 5V. Sabe aquele carregador de celular que você tem desde 2015 e que estava doido para jogar fora? Pode usar sem medo.
- Ocupa pouco espaço
Pelo seu tamanho compacto, pode-se colocar a Raspberry Pi em praticamente qualquer lugar. E se usar uma case de proteção, usa uma fita dupla face e pode até mesmo pendurar em uma parede, ou em alguma mesa.
- Hardware com configuração independente
Para quem entende de virtualização, nada impede que use o seu PC atual e crie uma máquina virtual com as mesmas configurações de uma Raspberry Pi, utilizando o seu próprio hardware.
Contudo, ao usar uma VM assim, você compromete o seu PC ao usar a VM. Configurou 8 GB de memória na sua VM? Que pena, pois toda vez que iniciar a sua VM, terá que manter 8 GB de memória sempre ocupada. Criou um disco virtual com 32 GB de armazenamento? Que pena, porque agora comprometeu 32 GB do seu armazenamento.
Claro que, se você tiver um PC com uma configuração "parruda", sinta-se a vontade para ir até a segunda parte desse artigo.
- Pode usar vários sistemas operacionais diferentes e trocá-los rapidamente
A placa de Raspberry Pi usa, como forma de armazenamento, o uso de cartão SD (sendo o máximo que pode usar como SD é 512 GB). Como um cartão SD de alta qualidade não é caro, nada impede de ter vários cartões SD e ir trocando conforme necessidade. E se por acaso for pouco usar 512 GB, pode contornar esse "problema" usando um HD Externo ou Pen Drive.
E a instalação dos sistemas operacionais (que, para encurtar o artigo, chamarei agora de SO) podem ser feitas baixando a imagem do SO específica pela Internet ou usar o ótimo software de gerenciador de imagens: Raspberry Pi Imager.
Olha ali o Ubuntu, meu xodózinho
Motivos para não usar uma Raspberry Pi
Sinceramente, nenhuma! Pode pular essa parte e ir aonde interessa. Contudo, como o mundo ideal só existe na música do Aladdin, preciso alertar algumas desvantagens...
- Incapacidade de upgrade
Como a placa tem todos os componentes on board, não é possível trocar qualquer componente e aumentar, por exemplo, memória ROM. O único componente que pode ser trocado é o cartão SD. Eu não posso afirmar 100% mas eu acho (ACHO!!!) que pode configurar o Linux para usar um pouco da memória de armazenamento do cartão SD para usar como memória (o famoso SWAP). Como eu nunca precisei configurar isso, não posso afirmar, mas o meu achismo está bem forte. Depois comentem aí se estou certo ou errado.
- Necessidade de um cartão SD de qualidade
Apesar de achar que não é necessário citar isso, é bom avisar. Devido a troca constante de dados, o cartão SD tem que ser no mínimo Classe 10. Se por acaso você usar um que não seja no mínimo assim, prepare-se para encarar problemas, aonde a única solução será usar um cartão SD de qualidade.
- Incapacidade de manutenção
Caso a entrada de rede estrague, ou a saída de som, um usuário que não seja técnico não conseguiria arrumar, diferente de um PC. Digo isso pois, em um PC, se o Bluetooth estragar, é só comprar um adaptador USB que resolve. Claro que pode comprar um adaptador para a Raspberry Pi também, contudo o usuário necessitará de um conhecimento bom para instalar o driver (diferente de um Plug and Play de um Windows da vida).
Para finalizar o assunto Raspberry Pi
Agora que consegui falar um pouco desse fantástico hardware, conseguirei progredir no tema principal do artigo. Um último detalhe que cito é que estou usando o Ubuntu como SO, só porque eu me sinto mais confortável com essa distribuição Linux. Contudo, qualquer versão de Linux que possa instalar pode ser usada, já que a proposta do artigo é citar a solução utilizada.
OBS.: Apesar do grande foco desse artigo ser sobre Raspberry Pi e Linux, você pode substituir a Raspiberry Pi por um computador ou notebook que não usa mais, inclusive usando outro sistema operacional, pois as soluções citadas existem para vários sistemas operacionais.
Outra observação importante: A partir daqui, usarei muitos termos técnicos. Então esteja preparado.
Solucionando a primeira dificuldade: Acesso
A grande vantagem de usar uma VM gratuita é o acesso da mesma, já que a VM está hospedada em um serviço na nuvem, geralmente disponível e mantida por grandes empresas, com seus serviços praticamente disponíveis o tempo todo, balanceamento de carga, etc...
Contudo, esses serviços grátis tem limitações que muitas vezes podem prejudicar o desenvolvimento. Um exemplo é o Oracle VM, que tem limite de transferência de dados no plano gratuito. Porém, não pensem que é "maldade" das empresas, pois o maior intuito nesse mundo comercial é a venda de planos para venda das VMs, né?
E como podemos solucionar isso? Com outro serviço gratuito, que é o No-IP. De forma bem resumida, o No-IP é um serviço de acesso remoto, aonde disponibilizam um serviço de atualização de DNS gratuito, desde que use um dos domínios disponibilizados pelo serviço. Ou, se quiser usar um domínio próprio, terá que pagar um dos planos ofertados.
Você pode se perguntar porque deveria trocar o uso de um serviço gratuito em prol do outro. E a resposta é bem simples: você pode instalar um client do No-IP e acessar a sua Raspberry Pi via HTTP, caso tenha instalado algum Server HTTP instalado (como o Apache ou o Wildfly, ambos gratuitos). E a melhor parte é que o próprio client do No-IP atualiza o IP dinâmico da sua Internet, sem precisar de qualquer intervenção do desenvolvedor. Pratico, não é?
Contudo, aqui temos um leve problema: algumas (ou todas?) provedoras de Internet bloqueiam certas portas de comunicação, principalmente as mais importantes (como a porta 80, 443, 25). Não posso afirmar completamente, contudo acredito que seja da porta 1000 para baixo. Só que isso é facilmente "arrumado": é só alterar as portas de comunicação para um valor acima de 1000. Ou seja, é só configurar seu Apache para uma porta diferente, por exemplo, 1313. Aí você acessaria pelo endereço http://seu.dominio.no-ip:1313. No caso do uso do Wildfly, aí é mais suave ainda pois a porta padrão é 8080.
Particularmente, eu uso essa solução para executar o Foundry VTT, que é uma ferramenta para jogar RPG Online, altamente customizável. E como essa ferramenta usa a porta 30000 como padrão, consigo conectar todos os meus amigos e proporcionar uma boa sessão.
Agora que resolvemos o problema de acesso, e a disponibilidade? Bom, como a sua Raspberry Pi estará em sua posse, você define o tempo de disponibilidade, sendo que é só manter o seu equipamento conectado a Internet e pronto. Eu, por exemplo, deixo quase o tempo todo a minha Raspberry Pi ligada.
Solucionando o segundo problema: armazenamento, cpu e memória
As soluções que citei acima tem sempre limites para armazenamento, processamento disponível e memória. Contudo, você poderá usar o máximo do seu hardware a vontade, sem se preocupar com os limites. Afinal, a Raspberry Pi é sua, né?
Para exemplificar, a Raspberry Pi que tenho possui um processador Broadcom (Cortex-A72 quad-core de 1,5 GHz) e 8 GB de memória e para quem precisa desenvolver, ter isso disponível exclusivamente para uma servidor WEB de testes é muito bom. Para terem uma ideia, segue um print do monitor da minha Raspberry Pi:
Solucionando o terceiro problema: banco de dados
Bom, aqui é até rápido de responder, né? É só instalar o banco de dados que preferir e ser feliz! Simples assim.
Contudo, nem tudo são flores. Devido a uma Conjunção das Estrelas, aonde o processador da Raspberry Pi é ARM e a distribuição Ubuntu que uso ser a 22.04 LTS, não consegui instalar MongoDB. Até aonde eu encontrei, a única versão compatível com Raspberry é a 4.0 e, para instalar essa versão, somente a distribuição 20.04 LTS do Ubuntu que consegue instalar. Ou seja, se você precisar instalar o MongoDB, saiba dessas limitações.
Solucionando o quarto problema: inicialização automática dos serviços
Para quem usa esses serviços de VM gratuitos, sabe que sempre tem que iniciar todos os serviços manualmente. Por exemplo, para usar uma VM Oracle sem cobranças, é necessário que inicie a VM quando precisa usar e a desligue ao final. Outros serviços eu não sei como funcionam, como o AWS, Azure ou o serviço do Google, mas sei que todos tem seus limites (como a Azure e a AWS que depois de 1 ano deixam de ser free).
Como você está com um SO totalmente para você, a solução é bem simples: basta configurar as suas aplicações para iniciarem automaticamente. De forma paralela ao Windows, seria como criar serviços. A grande maioria dos programas tem como configurar para iniciar automaticamente, ao reiniciar o SO. Mas, e os que não tem como?
Para isso, lhes apresento o Process Management, também conhecido como PM2. Essa aplicação é fácil de instalar e usar, sendo que se tiver dificuldades para usar as configurações que citei acima, é só usar o comando pm2 start aplicação e depois usar o pm2 save, para salvar a configuração de inicialização automática. E é tão simples usar o PM2 que eu lembrei os comandos de cabeça, sem precisar consultar o maior aliado do desenvolvedor: o Google.
Considerações finais
Acabo de lhes apresentar um alternativo para não usar mais as VMs online. E aproveito para compartilhar uma experiência pessoal que sempre quis falar sobre. Também quis resumir o máximo possível pois o assunto é um pouco mais longo e como esse é meu primeiro artigo aqui, não queria entregar uma escrita longa e cansativa.
Infelizmente, o assunto é um pouco mais longo mas nada tão complexo. Porém se alguém quiser criar sua VM online e Raspberry Pi, precisará ao menos conhecer alguns comandos simples de Linux. Assim, até dá para instalar o Windows 11 ARM em uma Raspberry Pi, contudo é praticamente impossível usar o Windows dessa maneira. Talvez aja no futuro melhorias que permitam o uso mas até lá, usem distribuição Linux mesmo.
No mais, agradeço a você que desprendeu do seu tempo para ler até aqui. E principalmente a Deus que me ajudou até aqui e me deu a oportunidade de compartilhar esse artigo. E se o artigo der certo, quem sabe o próximo será sobre como configurei a minha Raspberry Pi 4?