Quando pensamos em
arquitetura de um sistema, devemos primeiro entender o contexto onde a solução
será aplicada. Dependendo do porte, da expectativa de vida da aplicação, nível
de manutenção, podemos tomar uma decisão de criar um sistema totalmente escalável,
ou algo mais simples que resolva o problema e que será logo descontinuado
(porém cuidado com os provisórios que tornam-se permanentes).
Um sistema pode ser
arquitetado de várias maneiras. Mas a mais tradicional é o modelo Model, View,
Controller (MVC). Nele os componentes do sistema são distribuídos em módulos
ou packages que agrupam funções ou classes de acordo com sua finalidade.
Na camada Model ficam os objetos que gerenciam a
comunicação com o banco de dados (as DAOs por exemplo ou os métodos de conexão
com o banco).
Na camada Controlller ficam as estruturas ou classes do
sistema, e a regra de negócio. Nessa camada são realizadas todas as rotinas
relativas a controle das regras de negócio, como por exemplo validações de
integridade de dados e etc., de maneira independente do banco de dados usado e
da interface gráfica que está requisitando essas ações.
Na camada View fica a interface gráfica, que é onde o
usuário vai interagir com o sistema. Pode ser que um sistema tenha várias
interfaces de entrada: mobile, web, um client desktop.
Além de criarmos uma aplicação no modelo MVC, podemos também utilizar outros tipos de arquitetura em conjunto.
Uma arquitetura Service-Oriented Architecture (SOA) é composta por vários (micro)serviços que executam rotinas muitas vezes independentes. Esse tipo de arquitetura favorece a escalabilidade e manutebilidade do "ecossistema" de aplicações.
Nos grandes
ambientes corporativos esse tipo de arquitetura encaixa-se bem, pois
normalmente há uma grande quantidade de sistemas que operam paralelamente, e as
ações que serão executadas através das ferramentas criadas no OutSystems
estarão integradas com vários desses sistemas, executando tarefas, consultando
dados e etc..
A OutSystems possui
um conceito chamado 4 Layer Canvas (4LC), que facilita a implementação de uma
arquitetura SOA e também a aplicação do modelo MVC. Nesse modelo proposto
existem 4 camadas:
Camada de orquestração
Orquestração cross application
Nessa camada informações, processos, páginas de diferentes
aplicações OutSystems são mescladas para unificar a experiência do usuário em
uma única UI. Pode ser através de Dashboards, ou através do agrupamento de telas
de vários módulos ou até mesmo usando o BPT (será apresentado em post futuro).
O conceito desta
camada é utilizar parte dos recursos de vários módulos para resolver uma
necessidade.
Camada de apresentação ao usuário
Processos de usuário
Telas de usuários e
processos são implementados nessa camada. Os serviços disponíveis nas camadas Core e Library
são utilizadas nesta camada. As telas aqui são individuais, específicas para
solucionar uma necessidade. Cada módulo desta camada não se comunica
diretamente com outro módulo EndUser,
somente com Cores e Libraries.
Camada Core
Serviços core business
Serviços e processos
relacionados às regras de negócio, entidades relacionadas ao negócio e
conceitos de negócio ficam nessa camada. Pensando no modelo MVC, esta camada
representa Modelo e Controle, pois aqui ficam as regras de negócio expostas nas
telas e a modelagem dos dados na base. Os objetos do sistema (entidades) são
definidos aqui neste módulo.
Validações de regras
de negócio devem ficar nesta camada porque além de telas Web, uma tela Mobile
pode chamar as ServerActions disponíveis no módulo.
Camada de biblioteca
Serviços genéricos
Padrões de
interface, rotinas genéricas que não dependem de regras de negócio, conexão com
serviços externos, como o conector SAP por exemplo. Aqui ficam as rotinas que
são independentes e fornecem ServerActions para vários cores.
A imagem abaixo traz
alguns exemplos do que pode ser encontrado em cada uma dessas camadas.
Nenhum comentário:
Postar um comentário