sexta-feira, 8 de abril de 2016

Valente - nitrogênio para marmotas


 Vou começar contando uma estória. Recentemente tive que escrever um painel(dashboard) para uma aplicação na qual eu estava trabalhando. Tive liberdade pra escrever como desejasse. Tenho lido sobre websockets. Definitivamente, não sou um desenvolvedor frontend. Talvez full-stack com frontend feio. Liberdade é a oficina do diabo :)



Namorei, com bastante amor, um framework escrito em Erlang chamado Nitrogen e seu filhote o N2O. Apesar de gostar de Erlang, sei que pouca gente gosta, o deploy de servidores Erlang me incomoda. Todo aquele processo de criar releases, muitos arquivos, muitos arquivos de configuracao. Me faz lembrar o motivo pelo qual deixei Java de lado: XMLs.

Erlang tem uma arquitetura que funciona bem com a ideia de websockets. É possível termos muitas conexões abertas ao mesmo tempo devido aos seus processos leves. Com threads teriamos um grande problema de consumo de memória quando o número de conexões aumentasse.

Também funcionando com websockets (de forma experimental), para comunicação entre clientes e servidor, trabalhei com o framework C++ Wt. O Practwave é escrito nele. Mas de novo o deploy me incomoda. To ficando velho, bibliotecas em versões diferentes e erros de ligação dinâmica me tiram do sério. É um trabalho burro ficar arrumando isso. Mas o Wt é um excelente framework.

Então pensei:
  • deploy fácil;
  • ligação estática;
  • processos leves.
Eu queria uma solução em Golang! :)

Fiz algumas pesquisas, mas não achei o que queria. Dai resolvi escrever uma biblioteca - https://github.com/trumae/valente/ . O código ainda esta bem inicial, mas já funciona. A biblioteca é baseada nas idéias do Nitrogen, o que torna a programação bem fácil. Vou escrever outras postagem pra descrever a arquitetura e como utilizar o biblioteca. Ainda tem muito pra codificar, mas o resultado esta ficando interessante.

Como instalar?

Para começar a usar o valente, instale Go e execute o seguinte comando:

$ go get github.com/trumae/valente/...
  
Isso ira baixar a biblioteca para sua máquina, compilar e instalar o comando valente no seu $GOBIN.

Como usar?

Execute os comandos abaixo para ter um webapp demo rodando em sua máquina.

$ valente -cmd create -app appsample
$ cd appsample
$ go get
$ go build
$ ./appsample
 
Acesse http://localhost:8000/ no seu navegador para testar.