| O projeto se refere ao desenvolvimento de uma REST API, com importação de dados automática, diária e limitada, a partir de outra API (base de aproximadamente 7 mil registros e 11 tabelas), que importa e exibe os dados de forma paginada; e protegida com token de autenticação Bearer. Tecnologias utilizadas: C#, .NET 7, ASP.NET API, Authentication Jwt Bearer, Unit Test Controller, Entity Framework, SQL Server, Docker, Clean Architecture, Hexagonal Architecture. |
-
Para criar e inicar os contêiners necessários à aplicação, no caminho "Back-End_Challenge_20210221", rode:
docker-compose up
-
Acesse a página inicial da aplicação em "http://localhost:5211";
-
Para geração do token de autenticação, necessário para utilização do LaunchersController, acesse o Swagger em "http://localhost:5211/swagger/index.html", e acesse o endpoint que gera um token válido ("validToken"). Posteriormente, em "Authorize", cole o token:
Bearer {token}
O sistema de atualização dos dados foi feito utilizando ferramentas nativas do .NET, que cria / atualiza a base existente, seguindo as seguintes regras:
- Os dados são cadastrados com requisições paginadas e limitadas da API externa: 100 registros a cada 5 minutos;
- O limite de requisições são 2000 ao dia;
Para a definição do modelo, este arquivo JSON foi consultado, para definição dos campos e tabelas utilizados no projeto. Além destes, 2 campos adicionais eram criados para controle interno dos "launchers":
imported_t: campo do tipo Date com a dia e hora que foi importado;status: campo do tipo Enum com os possíveis valores "Draft" (importado), "Trash" (apagado na base de dados interna) e "Published" (editado na base de dados interna);
GET /: Retornar uma mensagem "REST Back-end Challenge 20201209 Running"PUT /launchers/:launchId: Será responsável por receber atualizações realizadasDELETE /launchers/:launchId: Remover o launch da baseGET /launchers/:launchId: Obter a informação somente de um launch da base de dadosGET /launchers: Listar os launchers da base de dados de maneira paginada
Foi utilizado o JWT (Json Web Token), para realizar as autenticações das requisições à API de Launchers.
Um projeto "Test" foi adicionado com referência ao projeto principal, para adição do arquivo responsável pelo teste unitário do "LaunchersConttroller".
Aplicação, banco de dados e ferramentas de observabilidade rodando em Container Docker.
A observabilidade foi adicionada à aplicação através da integração com Prometheus e Grafana. Com isso, é possível monitorar métricas da aplicação e visualizar gráficos em dashboards.
O Prometheus foi adicionado à aplicação para coletar e expor métricas através do endpoint padrão /metrics.
No arquivo docker-compose.yml, foi configurado um serviço do Prometheus que coleta as métricas da aplicação e as expõe para o Grafana.
O Prometheus coleta métricas da aplicação no endpoint /metrics.
O Grafana foi configurado para visualização das métricas coletadas pelo Prometheus. Dashboards pré-configurados foram adicionados para facilitar a visualização das principais métricas.
- Os arquivos de provisionamento foram incluídos para configurar automaticamente as fontes de dados e dashboards no Grafana.
- Fonte de dados: Prometheus.
- Porta do Grafana:
3000.
Acesse o Grafana através de http://localhost:3000 e utilize as seguintes credenciais padrão:
- Usuário:
admin - Senha:
admin









