Arquitetura do projeto - Loomi

De MSTECH wiki
(Redirecionado de Arquitetura Projeto Loomi)
Ir para: navegação, pesquisa

Informações Gerais

Ambientes utilizados

Ambiente URL de Acesso Credenciais
Desenvolvimento Loomi: http://localhost:62429/
Repository API: http://devpei-repositorio-api.devedu.ms/
MiniGestão API: http://devpei-academico-api.devedu.ms/
adminpei - 123456 (Administrador)
professorpei1 - 123456 (Professor)
alunopei1 - 123456 (Aluno)
Testes Loomi: http://pei.devedu.ms/
Repositorio API: http://pei-repositorio-api.devedu.ms/
MiniGestão API: http://pei-academico-api.devedu.ms/
adminpei - 123456 (Administrador)
professorpei1 - 123456 (Professor)
alunopei1 - 123456 (Aluno)
Demonstração http://loomi.mstech.com.br/ Informação exclusiva do Devops/GTI

Repositório de Versionamento

Ambiente: GITLab - Git

Nome: PEI

Caminho: https://gitlab.mstech.com.br/pei/pei

Estrutura dos branches: Main (Master), Develop (Develop)

Visão de Componentes

Diagrama de componentes Loomi
Diagrama de componentes

Diagrama de Classes

Diagrama de classes Loomi
Diagrama de classes

Decisões de Arquitetura

Descrever os seguintes itens:

Persistência de dados:

Data Store Acesso Descrição
SQL Server 2008 R2 +
MicrosoftSQLServer.png
Entity Framework 6 (Code-First)
EF6 Logo.png
MongoDB Logo.png MongoDB C# Driver 2.2.4


O Loomi utiliza base de dados relacional SQL Server 2008R2+ para os dados transacionais e o MongoDB para o Log. A comunição com o SQL Server é realizada através do ORM Entity Framework versão 6. Já para o MongoDB, utilizamos o driver do C# versão 2.2.4


Log: :

  • Framework: Log4Net 2.0.5
  • Base de Dados: MongoDB
  • Arquitetura: O Log é exposto através da interface ILog. A instância da interface ILog pode ser obtida através da Injeção de Dependência:
   public class ExampleController : Controller
   {
   	private readonly ILog log;
   
   	public ExampleController(ILog log)
   	{
   		this.log = log;
   	}
   
   	[HttpGet]
   	public JsonResult Get()
   	{
   		try
   		{
   			return Json("Example Controller");
   		}
   		catch (Exception ex)
   		{
   			log.Error(ex);
   			Response.StatusCode = (int)HttpStatusCode.InternalServerError;
   			return Json("Something bad happened.", JsonRequestBehavior.AllowGet);
   		}
   	}
   }


  • Consulta: Acesso via sistema, para usuários com perfil de administrador
  • Escopo: Configurável atráves dos seguintes métodos:
    • Log.Error(ex) - Gera log de erros
    • Log.Warn(ex) - Gera log de nível Warning


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.