Metas e Retrições Arquiteturais
Desempenho e Resposta do Sistema
O desempenho é um aspecto fundamental para garantir a usabilidade e a aceitação de um sistema móvel de identificação de doenças em plantas. Para isso, estabelecemos como meta que o sistema deve responder a 95% das consultas em até 2 segundos após o envio da imagem para análise. Um tempo de resposta rápido é essencial para proporcionar uma experiência de usuário fluida, especialmente em um aplicativo que será utilizado em campo, onde o tempo e a eficiência são críticos. Isso não apenas melhora a satisfação dos usuários, mas também incentiva o uso contínuo da plataforma.
Como parte das restrições arquitetônicas, a escolha do banco de dados recaiu sobre o PostgreSQL, devido à sua robustez, escalabilidade e suporte às otimizações para alta performance. Além disso, sua compatibilidade com Prisma permite uma integração eficiente com a estrutura do backend, garantindo uma recuperação e armazenamento de dados confiáveis e de baixa latência. Essas decisões foram tomadas para sustentar o tempo de resposta esperado e manter a estabilidade do sistema, mesmo em cenários de alta demanda.
Padrões e Tecnologias
Para garantir a consistência e a facilidade de integração, o sistema seguirá o padrão RESTful para APIs. Este padrão é amplamente adotado e reconhecido pela sua simplicidade e eficiência na comunicação entre serviços, além de permitir uma curva de aprendizado mais suave para desenvolvedores que futuramente possam manter ou expandir o projeto.
No backend, feito com o Nest.js, uma escolha motivada por sua estrutura altamente modular e suporte a boas práticas arquitetônicas. O uso do Nest.js garante organização no código, facilita a manutenção e possibilita escalabilidade futura, caso seja necessário. A adesão às melhores práticas recomendadas pelo framework é uma restrição que visa assegurar a qualidade do código e a robustez da aplicação.
Interface do Usuário
No frontend, a experiência do usuário será priorizada por meio de uma interface responsiva e acessível, desenvolvida com React Native utilizando Expo. A escolha dessa tecnologia permite a criação de aplicativos móveis nativos para Android de forma eficiente, mantendo a simplicidade e a intuitividade necessárias para o público-alvo, que, em sua maioria, possui pouca afinidade com tecnologias avançadas.
Adicionalmente, o uso de Tailwind CSS será limitado ao estilo de componentes reutilizáveis, uma abordagem que visa melhorar a consistência visual do aplicativo e facilitar a manutenção do design. Essa estratégia não só otimiza o processo de desenvolvimento como também garante que os padrões visuais sejam respeitados em toda a aplicação, promovendo uma experiência coesa para o usuário.
Com essas metas e restrições bem definidas, o projeto busca equilibrar desempenho, usabilidade e escalabilidade, garantindo que o sistema atenda às necessidades dos usuários e mantenha uma base sólida para futuras evoluções.