Este documento fornece instruções sobre o aplicativo de Controle de Combustível desenvolvido pelo Programa de Inovação Cívica do TCE/PR, descrevendo suas fontes de dados, código-fonte, licenças, como contribuir e testar a aplicação.
2. Essa Apresentação
• Objetivos
• Informar ao pessoal do TCE/PR e à comunidade a respeito da
estruturação do aplicativo de Controle de Combustível,
• Indicar localização das fontes de dados, códigos e ferramentas que
foram usados na elaboração da versão atual,
• Debater sobre as limitações desafios encontrados durante o
desenvolvimento, incentivar outros agentes a colaborar e dar
continuidade ao trabalho.
4. Fontes de dados
• Arquivos PIT
• https://servicos.tce.pr.gov.br/PIT_Arquivos/201x_PIT_TodosArquivos.zip
• Atualizado periodicamente pela equipe do TCE, substituir acima 201x
por 2013 ou outro ano, até 2017.
• Os arquivos PIT compreendem diferentes fontes de dados, sendo que
para o aplicativo atual são aproveitados apenas os que seguem o
padrão:
• ~/2017_PIT_TodosArquivos/*Combustivel.zip
5. Fontes de dados
• Arquivo IBGE
• Formato csv, incluído no código da aplicação.
• Contém dados dos municípios paranaenses, usados para calcular
gastos por habitante e gasto por área.
• Convém atualizar de acordo com mudanças no site do IBGE.
6. Distribuição
• tce-com-3: requerido para uso em
produção,
• InovaTCE17/MongoDB: banco de
dados,
• tce-comb-etl: pode ser usado
somente para gerar e inicializar o
banco de dados,
11. Como Contribuir
• Instale e inicie uma instância local de MongoDb - Community Edition. Ela será
necessária para os testes. Durante o desenvolvimento foi usada a versão 3.6.
• https://docs.mongodb.com/manual/installation/
12. Como Contribuir
• Instale também:
• Java 1.8+: https://www.java.com/en/download/help/download_options.xml
• Scala 2.11+ e sbt 0.13+: https://www.scala-lang.org/download/
• Prefira a instalação via IntelliJ, conforme instruções acima, caso ainda não tenha
uma IDE Scala.
13. Como Contribuir
• As demais dependências serão resolvidas e descarregadas pela ferramenta
de construção Scala - sbt. Isso inclui:
• Apache Spark, usado na ETL,
• Lightbend Akka, Akka Streaming e Alpakka, usados na transformação dos
dados.
• Spring Boot, para injeção de dependências e construção de microserviços.
• Plugins para distribuição em contêineres Docker.
• Você pode ter que instalar também o Docker durante os testes.
14. Modelo Híbrido
• A aplicação que inclui o front-end, tce-com-3, é construída segundo um
modelo híbrido, i.e., é construída em conjunto com o back-end.
• Essa estratégia simplifica a distribuição via contêiners Docker.
• Utiliza webjars, dispensando o uso de node.js, npm ou yarn.
• Cada módulo é uma SPA - Single Page Application.
• Toda a construção é centralizada pela ferramenta sbt.
15. Modelo Híbrido
• As dependências do front-end incluem:
• Freemarker 2.3.x
• Twitter Bootstrap 3.7.x
• AngularJs 1.6.x
16. Testando a aplicação
• Baixe os dados do TCE para 2017 e expanda os arquivos.
• Instale e rode a aplicação tce-comb-etl
• Verifique se o banco de dados MongoDB está acessível durante a execução,
• Caso precise, ajuste as configurações em /src/main/resources/application.conf
• Para rodar, use o comando sbt run na pasta raíz do projeto.
• O processamento dos dados pode levar cerca de 5 minutos.
17.
18.
19. Testando a aplicação
• Instale e rode a aplicação tce-com-3
• Verifique se o banco de dados MongoDB foi atualizado na etapa anterior,
• Caso precise, ajuste as configurações em /src/main/resources/application.yaml
• Para rodar, use o comando sbt run na pasta raíz do projeto.
• Acesse em http://localhost:8081
20. Distribuição
• A distribuição no servidor do TCE/PR foi realizada com auxílio de docker-
compose,
• A distribuição inicial foi realizada via Kubernetes, os arquivos de
configuração para essa opção encontram-se na pasta k8s do projeto.
• Tanto o Docker Compose como Kubernetes utilizam uma imagem
depositada em um servidor remoto, que precisa se manter atualizada
sempre que uma nova versão é liberada.
21. Código
• Estrutura típica de um projeto
JVM + maven/sbt/gradle
• Pasta src, subpastas src/main e
src/test, cada uma delas
divididas em resources (front-
end) e scala (back-end).
• Pacote pr.tce.comb com sub-
pacotes separados por
interesses.
23. Distribuição
• Para atualizar a imagem Docker, no projeto tce-com-3, use sbt docker:install:
• Confira o resultado em https://hub.docker.com/r/iservport/tce-comb-3/