Esta é uma aplicação de Back-end em C#, usando .NET Core para prover os serviços de um aplicativo de rede social baseado em texto.
A API foi desenvolvida seguindo padrão Repository, os princípios de arquitetura web REST e utilizando-se de POO, conectando-se a um banco de dados SQL Server para a persistência das informações.
Para acessar a API e consumir seus serviços, faz-se necessário que a pessoa usuária cadastre-se e faça login com suas credencias. Isso será autenticado pela ferramenta JWT, gerando um token seguro JWT (JSON Web Token), que servirá de autorização da sessão, e validação de acessos a alguns dos serviços disponíveis à pessoa usuária, enquanto conectada a aplicação.
Mário JS Júnior - Software Engineer XP Inc.
A gestão ágil de todo o processo de planejamento e desenvolvimento do desafio, foi executada com o apoio das metodologias scrum (product backlog, sprint e simulações de daily meeting) e kanban (quadro de atividades).
Quadro kanban inicial:
Quadro kanban final:
- Desenvolvimento da aplicação em
C#, com.NET Coree comEntity Frameworkque é um framework mapeador moderno de banco de dados de objeto para .NET. Dando suporte a consultas LINQ, controle de alterações, atualizações e migrações de esquema. Funciona ainda com muitos bancos de dados, incluindo o Banco de Dados SQL (local e do Azure); - A API foi desenvolvida seguindo padrão
Repository, os princípios de arquitetura webRESTe utilizando-se dePOO, como já citado na introdução, por serem padrões e metodologias de desenvolvimento já consagrados; - O banco de dados escolhido para a persistência das informações foi o
SQL Server, por sua acessibilidade, confiabilidade, robustez e compatibilidade plena com o ecossistema.NET Coree oEntity Framework. Além de proporcionar opção de implantação (deploy) prática no serviço daAzure; - Para os testes, considerando a aplicação em
.NET Core, optei pela duplaxUnit(como framework/base para a melhor organização dos códigos de teste) eFluentAssertions(para as asserções, fornecendo formas de dizer ao código o que espero, testar e validar o retorno de forma fluente e intuitiva).
Dessa forma, necessitando ainda otimizar o recurso tempo, priorizei a filosofia de testes em BDD (Behavior Driven Development), onde fiz o desenvolvimento orientado ao comportamento dos requisitos do sistema/aplicação e usando linguagem mais próxima do negócio, desenvolvendo os testes em paralelo à codificação da aplicação;
Foram ao todo, 31 asserções, entre testes unitários e de integração, todas devidamente confirmadas, com simulação de todas as dependências externas e isolamento completo do banco de dados.
Quadro de Cobertura de Testes:
A aplicação foi testada com cargas de 10, 100 e 1.000 VUs (usuários virtuais), em ambiente de Produção, no endpoint de login, sem erros e com as seguintes respostas:
10 VUs
100 VUs
1.000 VUs
- .NET
- dotnet CLI
- SQL Server
- Entity Framework
- Ferramenta visual de administração de Banco de Dados.
Recomendação: Azure Data Studio
- Client HTTP à sua escolha:
git clone git@github.com:Mario-Junior/tryitter.gitEntre no diretório do repositório
cd tryitter/Instale as dependências do projeto
dotnet restoreEntre no diretório da aplicação
cd Tryitter.Application/Suba as migrações (migrations) | caso já não existirem
dotnet ef migrations add [nome-para-a-migration]Conecte-se ao sistema de administração de banco de dados e suba o banco de dados
dotnet ef database updateSuba o servidor local
dotnet runComo os testes estão totalmente desacoplados de dependências externas, é possível executá-los a qualquer momento pelo comando
Na pasta ./tryitter
dotnet test- Converter/encriptar dados sensíveis como Email, Password, etc. para hash;
- Arquivo de variáveis de ambiente (
.envou outro); - Conteinerização da aplicação;
- Usar contratos via Interfaces;
- Implementar “modo rascunho” (draft).







