·

Análise e Desenvolvimento de Sistemas ·

Engenharia de Software

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

Estilos Arquiteturais para Web Introdução Um estilo arquitetural representa uma abordagem de desenho implementação e distribuição de uma aplicação Web Existem diversos estilos arquiteturais disponíveis atualmente Cada estilo é apropriado a um determinado contexto A escolha adequada do estilo arquitetural pode representar o sucesso ou fracasso do projeto Web a ser desenvolvido Web 10 Estilo dominante entre 1990 e 2000 Formulários com baixa interatividade Uso restrito do javascript Componentes visuais simples Ainda utilizado em intranets Não recomendado para o desenvolvimento de novas aplicações Web Tecnologias Microsoft Asp AspNet Web Forms Java EE JSP PHP Ruby Python Web 20 Começou a ser usada com a popularização do Ajax em 2005 Aumentou a interação e construção de componentes ricos Estilo dominante para portais corporativos ecommerce e internet Amplo uso de javascript Faz uso do padrão MVC para a apresentação dos sites Web 20 Exemplos de tecnologias Microsoft AspNet MVC Java EE JSF PrimeFaces RichFaces ZK Cake PHP Ruby on Rails DjangoPython SPA Single Page Application A partir de 2010 as páginas Web tornaramse mais complexas e ricas Esta mudança trouxe desafios para a programação Web cliente por conta do desempenho das aplicações Tempo de carga da árvore DOM para renderizar uma página HTML Grande número de interações entre camada de visão e a camada de controle onde cada interação gera uma ou várias requisições HTTP Para contornar este desafio foi sugerido Manter uma única página física para toda a aplicação similar a navegação em telas Transferir a execução do controlador do servidor para o cliente reduzindo a número de requisições HTTP entre o cliente e o servidor movimentação conhecida como MVVM ou MVP Model View Presenter SPA Single Page Application Sites que possuem apenas uma página física com manipulação dinâmica da árvore DOM são conhecidas como SPA Tecnologias Google AngularJs Ember VueJs Facebook ReactJS Backbone AureliaJs SPA Single Page Application Nas Single Page Application o código do controlador passa a ser todo escrito em JavaScript O Servidor tornase um servidor de serviços Web podendo ser em qualquer tecnologia como Net Java ou até mesmo JavaScript API Web RESTful Uma API apresenta funcionalidades expostas através de métodos HTTP como GET POST ou PUT podendo ser consumida em qualquer linguagem moderna API Web RESTful APIs modernas podem ser criadas sobre o conceito REST REST é um conjunto de princípios para expor serviços em sistemas distribuídos REST Representational State Transfer foi batizado por Roy Fieldling em 2000 Baseiase nos seguintes princípios Separação clara entre cliente e servidor Ausência de estado Suporte a cache Interface uniforme permite que diferentes clientes possam interagir da mesma forma com o servidor Sistemas baseados em REST baseiamse no conceito de recursos API Web RESTful A estrutura de um recurso REST possui quatro propriedades Representação Um ou mais formatos para representação da informação XML Json ou formato binário Identificador Uma URL que recupera um recurso específico em um dado momento Metadados O tipo de conteúdo a hora da última modificação etc Dados de controle Controle de cache permissão de modificação etc O protocolo HTTP e o padrão JSON podem ser usados para implementar os princípios REST Quando os princípios são observados temos um sistema RestFul API Web RESTful Os métodos HTTP permitem manipular os recursos Web para operações de criação atualização remoção e pesquisa de informações Os métodos GET e DELETE são intuitivos PUT e POST merecem atenção PUT é empregado para atualização POST é empregado para a criação API Web RESTful Exemplo 1 PUT produto1234 HTTP11 2 produto 3 tituloCerveja Backer Tommy Gun Double IPAtitulo 4 preco dinheirobrl950preco 5 produto 6 7 POST produtos HTTP11 8 produto 9 tituloCerveja KSB Living The Dream Double IPAtitulo 10 preco dinheirobrl1350preco 11 produto 12 HTTP 11 201 Created 13 Location produtos1789 API Web RESTful Também é possível utilizar PUT para criar novos recursos desde que a API ofereça suporte Porém o método PUT é idempotente enquanto que o método REST não Boas práticas a serem empregadas no padrão REST podem ser obtidas aqui httpswwwthoughtworkscominsightsblogrestapidesignresource modeling API Web RESTful Tecnologias Microsoft AspNet Web API Microsoft WCF Java EE JAXRS Notejs Express Laravel Routing PHP API Web RESTful Exemplo de Web API Net API Web RESTful Boas práticas Organizar APIs ao longo dos recursos Evitar APIs anêmicas Padronizar as APIs Criar APIs simples Considerar a atualização em lote para operações complexas Tratar erros do servidor Padronizar datas e horas pelo padrão ISSO 8601 API Web RESTful Ferramenta para geração de APIs httpSwaggerio Microsserviços Web Aplicações Web normalmente são organizadas em um padrão como o MVC e distribuídas em produção através de poucos componentes executáveis DLL ou War Esta estrutura provoca uma situação de que um único código executável apresente muitos casos de uso Esta situação limita a velocidade de implantação de novas tecnologias funcionalidades e a implantação de entrega contínua em ambientes de produção Microsserviços Web Para tentar resolver esta situação foi elaborado o conceito de microsserviços Microsserviços Web Este conceito prevê a criação de pequenos serviços autônomos Cada microsserviço implementa uma pequena função de negócio podendo ser implantado e removido dos ambientes de forma independente Tecnicamente cada microsserviço pode ser construído em linguagens de programação distintas possuindo o seu próprio banco de dados e se comunicando com outros serviços através de chamadas REST Construído para aplicações Web modernas que podem ser implementadas e distribuídas em pequenas partes mas não para aplicações tradicionais como por exemplo ERPs Microsserviços Web Princípios do microsserviços Governança Descentralizada Permite o uso de tecnologias distintas para contextos específicos da sua organização Gestão de Dados Descentralizada Cada serviço gerencia o seu próprio banco de dados Operação Distribuída Cada microsserviço opera de forma independente com o seu próprio banco de dados e opera o seu próprio ambiente de execução chamado de micro contêiner Exposição de APIs Microsserviços se comunicam através de RESTHTTP para operações síncronas e através de filas de mensagens para operações assíncronas Uso de tecnologia simples São empregadas tecnologias simples como AspNet AspNet Web API Spring Nodejs sem a necessidade de usar barramentos de serviços Microsserviços Web Vantagens Cada microsserviço é pequeno se comparado com uma aplicação tradicional Cada serviço pode ser implementado com independência de outros serviços Cada serviço pode ser escalado de forma independente de outros serviços através da duplicação ou particionamento A arquitetura de microsserviço também ajuda no isolamento de falhas A arquitetura de microsserviço elimina compromissos de longo prazo com a pilha tecnológica Microsserviços Web Desvantagens Times de desenvolvedores devem lidar com a complexidade adicional de desenvolvimento e testes em sistemas distribuídos A arquitetura de microsserviços introduz uma complexidade operacional significativa A implantação de funcionalidades que abrangem vários serviços requer coordenação cuidadosa entre as várias equipes de desenvolvimento Computação sem servidor Serveless Arquiteturas sem servidor permitem a criação e execução de aplicativos sem a necessidade de gerenciar a infraestrutura A aplicação ainda é executada em um servidor mas o gerenciamento é feito por uma infraestrutura em nuvem Neste conceito a codificação da aplicação é independente de sistema operacional Não são implantadas aplicações apenas funções Computação sem servidor Serverless Cliente Web HTTP Ambiente de nuvem API Gateway Rede privativa de nuvem VPC Função Função Bancos de Dados e outros sistemas Computação sem servidor Serverless Computação sem Servidor Serverless com funções AWS Lambda Computação sem servidor Serveless Vantagens Abstração do sistema operacional e máquinas virtuais com redução de custos de administração Redução de riscos de subprovisionamento ou superprovisionamento da computação Escalabilidade sob demanda Redução de custos para aplicativos orientados a tarefas Computação sem servidor Serveless Desvantagens Aprisionamento a soluções de fornecedores de cloud Latência de execução podendo variar de milissegundos a até segundos dependendo da aplicação Duração da execução limitada pelos fornecedores Ausência de gestão de estado Uso muito limitado ainda Comparativo de Estilos Arquiteturais