Arquitetura do Sistema - Decisões de Arquitetura

De Redome
Ir para: navegação, pesquisa

Voltar

O propósito desta seção é reunir e apresentar as decisões arquiteturais relacionadas ao projeto, detalhando as razões e justificativas que motivaram cada decisão.

Sendo um ponto único de acesso às informações relacionadas com decisões de arquitetura do projeto, este documento visa preservar a integridade do desenho da arquitetura e dos elementos que surgirão com base nessa arquitetura, assegurar a consistência entre todas as decisões tomadas e evitar reconsideração de decisões já tomadas.

DA01 – Linguagem para Programação do Backend

Descrição do Problema Escolher a linguagem de programação mais adequada para programar o backend do sistema da Fundação Ary Frauzino.
Premissas Linguagem moderna, não proprietária, baseada em padrões abertos, ampla utilização no mercado e referência para desenvolvimento de projetos de sistemas web.
Alternativas
  1. Backend programado em linguagem NodeJS.
  2. Backend programado em linguagem Java/JEE.
Motivação
  • Java possui frameworks, padrões de projeto e componentes muito bem documentados e que facilitam a implementação de sistemas complexos.
  • Existem várias comunidades ativas no mundo trabalhando para popularizar o NodeJS, divulgando posts e tutoriais.
  • Java/JEE pertence atualmente ao portfólio de tecnologias da Fundação Ary Frauzino.
  • Haverá uma curva de aprendizado dos profissionais da Fundação Ary Frauzino para aprender NodeJS.
  • Benchmarks de mercado indicam que runtimes Java apresentam melhor desempenho (maior tempo de resposta e menor consumo de recursos computacionais - CPU/Memória) em comparação à runtimes NodesJS para um mesmo volume de requisições web.
Decisão de Arquitetura Backend programado em linguagem Java.
Justificativa O conhecimento técnico dos profissionais da Fundação em trabalhar com Java/JEE, ampla documentação disponível, maturidade tecnológica no uso desta linguagem de programação para sistemas corporativos complexos e melhor desempenho comprovado da runtime web fundamentam esta decisão.
Implicações A equipe do projeto deve ser constituída por profissionais com conhecimento de programação Java/JEE

DA02 – Linguagem para Programação do Frontend

Descrição do Problema Escolher a linguagem de programação mais adequada para programar o frontend do sistema da Fundação Ary Frauzino.
Premissas Linguagem moderna, não proprietária, baseada em padrões abertos, ampla utilização no mercado e referência para desenvolvimento de projetos de sistemas web.
Alternativas
  1. Frontend programado em linguagem JSP/JSF.
  2. Frontend programado em linguagem AngularJS 2.
Motivação
  • AngularJS é um framework SPA (Single Page Applications), permitindo fazer páginas web que funcionam sem precisar de reload e que se comporte verdadeiramente como uma aplicação.
  • JSP/JSF é parte integrante da plataforma Java/JEE e dispões de muitas bibliotecas de componentes (Primefaces, Richfaces, Trinidad, Icefaces, etc.) para praticamente todos os tipos de aplicação web.
  • O AngularJS 2 é compatível com Chrome, Edge, Firefox, IE 9+, Safari, Android 4.1+, desktop, mobile web, iOS, Ionic e NativeScript.
  • AngularJS é fortemente orientada a componentes e dispõe de bibliotecas de componentes HTML reutilizáveis (ex.: ngmodules.org ) que contribuiem para manter a produtividade do time alta.
  • JSF é um framework server-side que exige o encapsulamento do comportamento do frontend em componentes java(classes, tags) do lado do servidor. AngularJS por outro lado é um framework client-side baseado em JavaScript.
Decisão de Arquitetura Frontend programado em linguagem AngularJS 2.
Justificativa AngularJS apresenta maior abrangência e compatibilidade tecnológica (adequada para aplicações web, desktop, mobile), apresentam melhor tempo de resposta para renderizar o frontend e possui uma sintaxe muito mais clara e fácil de entender pois trabalha com padrões amplamente utilizados no mercado (HTML, CSS e Javascript) de aplicações web.
Implicações A equipe do projeto deve ser constituída por profissionais com conhecimento de programação AngularJS 2.