Link

Comunicação Java & NodeMcu & Display Oled

Vou demonstrar uma simples comunicação serial entre um NodeMcu e o computador utilizando Java e jssc (java-simple-serial-connector).

Diferente do exemplo anterior utilizando Java, neste tutorial vamos apresentar o resultado em um display OLED.

Acesse o tutorial em: https://nakalabs.herokuapp.com/articles/nodeMcuJavaOled.html.

Link

Comunicação Serial com NodeMcu via Java.

Eu costumava utilizar a API RXTX para fazer comunicação serial com Java.
Encontrei uma lib chamada jssc (java-simple-serial-connector), e como o próprio nome da lib diz, é um conector serial simples. Comparado com a API RXTX é realmente mais simples de usar, pois não precisamos importar nenhuma SO ou dll no caso do Windows.

Nesse Post vou fazer uma conexão serial com NodeMcu enviando um texto para o dispositivo fazer a leitura e escrever no terminal.

Acesse o tutorial completo em: http://nakalabs.herokuapp.com/articles/nodeMcuJava.html.

OSGi.

O OSGi ou Open Services Gateway Initiative é uma arquitetura baseada em aplicações modulares e de bibliotecas.

Cada aplicação modular ou bundle tem seu funcionamento independente.

Tecnicamente, cada bundle é um jar com MANIFEST.MF contendo no seu cabeçalho as especificações do OSGi.

A plataforma OSGi permite ligar, desligar, reiniciar os módulos independentemente. Além das funcionalidades citadas, existem outras funcionalidades na plataforma.

Por não ter acoplamento entre os módulos, fica simples a manipulação dos componentes.

Apache Karaf.

O Apache Karaf é uma plataforma baseado em OSGi com implementação chamado Apache Félix.

A plataforma permite que o controle seja feita de forma intuitiva via linha de comando.

Para baixar a documentação e aplicação acesse: https://karaf.apache.org/.

Testando Karaf e um Bundle.

Com a versão do Karaf mais atual na máquina, entre no diretório bin do Karaf e execute no terminal:
$./karaf start

Baixe um exemplo no meu repositorio Git: https://github.com/sidneynakatani/nakatani-osgi.git.

Gere um build e instale o jar no terminal do Karaf:
>bundle:install mvn:osgi-example/nakatani-osgi/0.0.1-SNAPSHOT

Agora vamos executar e parar o bundle:
> bundle:start 48
> bundle:stop 48

Podemos listar os bundles:
>list

Conclusão.

O Apache Karaf permite criar aplicações em forma de módulos ou bundles de forma fácil, rápida e de baixo acoplamento utilizando a especificação OSGi.

Você tem uma aplicação com microsserviços mesmo ou tem uma arquitetura distribuída?

Sabe qual a diferença entre microsserviços e uma arquitetura distribuída?

Se ficou na dúvida, provavelmente está utilizando uma aplicação com arquitetura distribuída achando que está usando uma tecnologia de microsserviços.

Tecnicamente o que é um microsserviço?

Resumindo, Microsserviços são pequenas aplicações independentes que em conjunto resolvem algum problema.

Já em uma Arquitetura distribuída, existem várias máquinas e aplicações interligados em algum ponto e que resolvem um problema.

Para entender melhor esse conceito, observe as imagens abaixo:

Porque aplicações com Microsserviços são melhores que uma Arquitetura distribuída?

Uma analogia que podemos fazer a uma arquitetura distribuída é o jogo Jenga.

Nesse jogo existem vários blocos que formam 1 bloco maior, o objetivo do jogo é que cada jogador remova um desses blocos menores sem danificar a estrutura do bloco todo.

Quando um bloco danifica a estrutura do bloco principal, todo bloco cai.

Seria isso que aconteceria quando uma parte de um sistema com arquitetura distribuída falhasse.

Em uma arquitetura de Microsserviços, isso não acontece ou acontece com menores proporções de problemas, pois cada parte está desacoplado do sistema como um todo.

Um Microsserviço é totalmente desacoplado de outros Microsserviços e não compartilha infraestrutura como banco de dados, servidor de arquivos e container de aplicação.

Quando um dos Microsserviços é desativado, a aplicação continua funcionando.

Isso acontece pois todos os Microsserviços são independentes, sem nenhuma dependências entre eles.

Vantagens e desvantagens utilizando Microsserviços.

As vantagens de se utilizar Microsserviços a uma aplicação distribuída ou monolítica além da apresentada no tópico anterior são:

  • Escalabilidade: por ser totalmente independente cada componente, escalar a aplicação fica muito fácil;
  • Liberdade: Cada Microsserviço pode utilizar a tecnologia certa para resolver determinado tipo de problema;
  • Facilidade na depuração: por ser pequenas aplicações, testar e depurar fica mais fácil do que testar uma grande aplicação;

Mas existem desvantagens também, seguem algumas:

  • A infraestrutura fica mais cara e precisa de mais treinamento;
  • Se utilizar tecnologias diferentes é preciso que todo time esteja treinado e engajado no projeto como um todo.

Conclusão.

Utilizar Microsserviços somente por ser uma novidade não é uma boa ideia, utilizar Microsserviços envolvem uma série de questões que devem ser analisados. Com essa análise as vezes pode ser melhor construir uma aplicação distribuída ou monolítica.