Arquitetura Updrive 5
Na versão 5.0 a arquitetura foi redesenhada para a solução não depender de um servidor local.
Índice
Informações Gerais
Ambientes utilizados
Ambiente | URL de Acesso | Credenciais |
---|---|---|
Desenvolvimento | ||
Testes | ||
Ambiente de demonstração | ||
Produção |
Repositório de Versionamento
Ambiente: GITLab - Git
Nome:
Caminho:
Estrutura dos branches:
Visão de Componentes
Apresente um diagrama básico dos módulos do sistema, bem como suas fronteiras. Descreva sucintamente cada módulo que compõe o produto, seu objetivo e como foi construído (linguagens usadas, bancos de dados, etc.).
Foi estabelecido os seguintes módulos:
- Logger
- Licence
- Watchdog (list_products)
- Downloader (url, path, filename, hash)
- Agente responsavel por gerenciar download de pacotes de um local (url) para um path (pasta). Deverá ser responsavel por gerenciar as tentativas de conexao com a url pedida, alem de garantir que o pacote nao esteja corrompido (um hash poderá ser passado como parametro, opcionalmente)
- Installer (executable, install_arguments, uninstall_arguments) - service
- Agente responsavel por instalar softwares, executaveis ou msi, recebe os parametros para instalação e executa o processo. Em caso de falha, executa os parametros para desinstalar
- Inventory (list) - service
- Agente responsavel por listar todo o inventario da maquina. Os campos devem ser mutaveis, ou seja, podem ser adicionados ou retirados ao longo do tempo
- Writecache (open, close, list, exist) - service
- Agente responsavel por comunicar-se com a DLL do WC para abrir e fechar imagem.
- Locker (lock, unlock) - service
- Agente responsavel por bloquear o login do usuário, permitindo que alterações na maquina sejam feitas e não haja iteração ou modificação do usuário
- Tray - application
- Aplicativo na bandeja do sistema responsável por interface com usuário para comunicar mensagens de atualização remota e permitir comando para abrir imagem mediante autenticação usuário administrador.
- Manager(url_api) - service
- Agente responsavel por gerenciar as atualizações da maquina. A lista de updates será recebida de uma api, o agente será responsavel por comunicar com agentes especificos para garantir que os updates foram baixados e instalados corretamente na maquina. Ele terá que gerenciar todas as sincronizações que ocorrerão. (Processo de baixar, bloquear, abrir imagem e de instalar as atualizações).
Diagrama de Classes
Decisões de Arquitetura
Persistência de dados:
[to-do]
Tecnologias de Integração:
[to-do]
Log: :
[to-do]
Padrão de Arquitetura utilizado: Se houve planejamento anterior, qual o padrão utilizado? Domain Driven Design (DDD) usando a estrutura MVC? Usa Webforms com outra arquitetura? Front-end e back-end são separados?
Tecnologia de Front-end: Se houver separação, qual tecnologia/framework foi empregada para o projeto? AngularJS, VUE, JQuery, uma composição deles? Qual padrão de codificação (estrutura de pastas, camadas) está sendo usado no projeto? Quais fatores levaram à decisão do framework e arquitetura definidas?
Tecnologia de Back-End: qual tecnologia/framework foi empregada para o projeto? ASP.NET, Java, NodeJS, uma composição deles? Qual padrão de codificação (estrutura de pastas, camadas) está sendo usado no projeto? Quais fatores levaram à decisão do framework e arquitetura definidas?
Framework de CSS: Está sendo utilizada uma ferramenta SASS? Qual framework está sendo usado? Bootstrap 3, Bootstrap 4, Foundation?
Configurações de Otimização de deploy: O código é minificado? O código está com ofuscação? No ASP.NET foi habilitado o bundle no web.config? Quais configurações para otimizar o código são feitas?
Outros aspectos: Fique à vontade para descrever outras considerações, o importante é deixar as decisões tomadas e padrões adotados bem documentados!
Fundamentações das decisões tomadas
Nesta seção, coloque todas as considerações das tomadas de decisão realizadas para o produto. Porque foi usada tal arquitetura? Porque essa separação de componentes? Porque houve refatoração? Descreva o máximo possível nesta seção para que o histórico das decisões seja armazenado para consultas futuras.