Mudanças entre as edições de "Arquitetura do projeto - Loomi"

De MSTECH wiki
Ir para: navegação, pesquisa
(Ambientes utilizados)
 
(25 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 9: Linha 9:
 
|-
 
|-
 
| Desenvolvimento
 
| Desenvolvimento
| http://localhost:62429/ <br> http://devpei-repositorio.devedu.ms/
+
| Loomi: http://localhost:62429/ <br> Repository API: http://devpei-repositorio-api.devedu.ms/ <br> MiniGestão API: http://devpei-academico-api.devedu.ms/  
| admin - 123456 ('''Administrador''') <br> professorpei1 - 123456 ('''Professor''') <br> alunopei1 - 123456 ('''Aluno''')
+
| adminpei - 123456 ('''Administrador''') <br> professorpei1 - 123456 ('''Professor''') <br> alunopei1 - 123456 ('''Aluno''')
 
|-
 
|-
 
| Testes  
 
| Testes  
| http://pei.devedu.ms/<br> http://pei-coresso.devedu.ms/ <br> http://pei-repositorio.devedu.ms/ <br>
+
| Loomi: http://pei.devedu.ms/ <br> Repositorio API: http://pei-repositorio-api.devedu.ms/ <br> MiniGestão API: http://pei-academico-api.devedu.ms/  
| admin - 123456 ('''Administrador''') <br> professorpei1 - 123456 ('''Professor''') <br> alunopei1 - 123456 ('''Aluno''')
+
| adminpei - 123456 ('''Administrador''') <br> professorpei1 - 123456 ('''Professor''') <br> alunopei1 - 123456 ('''Aluno''')
 
|-
 
|-
| Ambiente de demonstração
+
| Demonstração
| http://loomi.mstech.com.br/ <br> http://demo.mstech.com.br/ <br> http://loomi-repositorio.mstech.com.br/
+
| http://loomi.mstech.com.br/
| Informação exclusiva do Devops/GTI
+
|-
+
| Produção
+
| TBD
+
 
| Informação exclusiva do Devops/GTI
 
| Informação exclusiva do Devops/GTI
 
|}
 
|}
Linha 36: Linha 32:
 
=Visão de Componentes=
 
=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.).
+
[[File:Loomi_diagrama_de_componentes.png|thumb|center|x500px|alt=Diagrama de componentes Loomi|Diagrama de componentes]]
  
 
=Diagrama de Classes=
 
=Diagrama de Classes=
  
*[[Diagrama de Classes Loomi]]
+
[[File:Loomi_diagrama_de_classes.png|thumb|center|x500px|alt=Diagrama de classes Loomi|Diagrama de classes]]
  
 
=Decisões de Arquitetura=
 
=Decisões de Arquitetura=
 
Descrever os seguintes itens:
 
Descrever os seguintes itens:
  
'''Persistência de dados''': Como foi resolvida no produto a persistência? Há banco relacional e não relacional? Quais são os bancos? Como é tratamento de sessão?
+
'''Persistência de dados''':  
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Data Store
 +
! Acesso
 +
! Descrição
 +
|-
 +
| SQL Server 2008 R2 + <br/> [[Arquivo:MicrosoftSQLServer.png]]
 +
| Entity Framework 6 (Code-First) <br/> [[Arquivo:EF6_Logo.png]]
 +
|
 +
|-
 +
| [[Arquivo: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);
 +
    }
 +
    }
 +
    }
 +
 
  
'''Tecnologias de Integração:''' Quais integrações existem com o produto? Como é essa integração? Via API, Webservices trafegando XML, serviços Windows? Há trabalho manual para tráfego de dados, como importação? Descreva aqui todas as integrações que a ferramenta possui.
+
* '''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
  
'''Log: ''': Como é feito o log? Está em base relacional ou não relacional? Como é feita a consulta dos dados dessa log? Qual o escopo da log (é uma log de transações, log do servidor, etc.). Na arquitetura, a log é tratada por uma camada específica do sistema ou está misturada no código?
 
  
 
'''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?
 
'''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?

Edição atual tal como às 11h31min de 19 de outubro de 2016

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.