Prévia do material em texto
15 1 Profª Drª Mariane Gavioli Bergamini Fernandes Arquitetura de Sistemas Aula 2 15 2 Conversa Inicial 15 3 Os objetivos da aula conhecer os principais tipos de arquiteturas de sistemas e sua aplicabilidade dentro da engenharia de software 15 4 Durante nossa aula será explorado os seguintes temas: • Arquitetura em Camadas e Arquitetura Cliente-servidor • Arquitetura orientada a serviços (SOA) e Arquitetura baseada em microsserviços • Arquitetura Model-View-Controller, REST, REST-FULL e Arquitetura de Microfontend • Arquitetura orientada a eventos e Arquitetura a dados 15 5 ARQUITETURA EM CAMADAS E ARQUITETURA CLIENTE-SERVIDOR 15 6 A arquitetura em camadas facilita o desenvolvimento incremental de sistemas de software, permitindo a entrega iterativa de funcionalidades à medida que cada camada é concluída. Arquitetura genérica em camadas 15 7 Fonte: Adaptada de Sommerville (2019) 15 8 Sistema de gerenciamento de bibliotecas Aplicabilidade da arquitetura genérica em camadas 15 9 A arquitetura cliente-servidor é um padrão de software distribuído onde os recursos e dados são centralizados em um servidor, enquanto os clientes acessam esses recursos através de uma rede. Essa arquitetura se tornou dominante devido à sua capacidade de compartilhar recursos e dados de forma eficiente. Arquitetura cliente – servidor 15 10 Fonte: Autora (2024) 15 11 Arquitetura cliente-servidor de duas camadas Arquitetura cliente-servidor de três camadas Arquitetura cliente-servidor multicamadas Variações da arquitetura cliente-servidor 15 12 Caixa eletrônico ou ATM (Automated Teller Machine); Sistema de e-commerce Sistema de gerenciamento de relacionamento com o cliente (CRM) corporativo de grande porte. Aplicabilidade das variações de arquitetura cliente-servidor 15 13 Arquitetura cliente-servidor é um tipo de rede de computadores onde vários clientes solicitam e recebem arquivos e serviços de um servidor centralizado por meio de uma conexão local ou de internet. 15 14 A escolha da arquitetura ideal depende das necessidades específicas do projeto em desenvolvimento, incluindo o tamanho, a complexidade e os requisitos não funcionais de escalabilidade e manutenibilidade. 15 15 ARQUITETURA ORIENTADA A SERVIÇOS (SOA) E ARQUITETURA BASEADA EM MICROSSERVIÇOS 15 16 Uma arquitetura orientada a serviços (SOA) assemelha-se a uma arquitetura baseada em componentes, porém suas partes são implementadas como serviços. Arquitetura orientada a serviços 15 17 Interoperabilidade Detectáveis ou descobertos Componibilidade Facilita a manutenção, atualização e escalabilidade do sistema, tornando-o mais robusto e adaptável a mudanças futuras. 15 18 REST (Representational State Transfer) pode ser definido como sistemas hipermídia em larga escala, como a web, devem funcionar. RESTful, por exemplo, envia requisições via internet usando URLs especialmente formatados e recebe como resposta um payload contendo dados em XML, HTML, JSON ou outros formatos. SOAP, REST e RESTFUL 15 19 Sistema Bancário: O banco pode criar novos produtos e serviços de forma mais rápida e eficiente, integrando os dados de diferentes sistemas sem a necessidade de uma grande reengenharia. Aplicabilidade de SOA 15 20 A arquitetura de microsserviços (em inglês Microservices Architecture - MSA) é um padrão arquitetural poderoso para projetar, desenvolver, implantar e entregar aplicativos de software atualmente. Destacando-se como a principal forma de construir aplicações corporativas e de missão crítica. Arquitetura baseada em microsserviços 15 21 Microsserviços são serviços granulares, geralmente com uma única finalidade e fracamente acoplados, facilitando a implantação independente e a escalabilidade horizontal. 15 22 Uma desvantagem dessa arquitetura é o aumento da complexidade no gerenciamento e monitoramento. Havendo a necessidade de coordenar múltiplos serviços, monitorar as interações, e lidar com falhas individuais é significativamente maior do que em uma aplicação monolítica. 15 23 Fonte: Autora, 2024. 15 24 Gerenciamento de projetos de construção: cada microserviço irá operar de maneira independente e se comunicando por meio de APIs. Aplicabilidade MSA 15 25 A escolha do tipo de arquitetura, seja monolítica ou microsserviços vai depender das necessidades específicas do projeto, levando em conta o tamanho da equipe, a complexidade do aplicativo, os requisitos de escalabilidade e a tolerância a falhas. Não existe uma solução melhor em geral, mas sim a mais adequada para cada caso 15 26 ARQUITETURA MODEL-VIEW- CONTROLLER E ARQUITETURA DE MICRO FRONT-END 15 27 Separa a apresentação e a interação dos dados do sistema, sendo o sistema estruturado em três componentes lógicos que interagem entre eles, que são: Componente modelo Componente visão Componente controlador Arquitetura Model-View-Controller 15 28 Fonte: Autora, 2024. 15 29 O MVC facilita a manutenção, o teste e a escalabilidade de aplicações, pois a separação de responsabilidades permite modificações em um componente sem afetar significativamente os outros. 15 30 A arquitetura microfrontend pode ser considerada como uma extensão da arquitetura baseada em microsserviços. Arquitetura Microfrontend 15 31 Fonte: Autora, 2024. 15 32 Quatro decisões técnicas Fonte: Autora, 2024. 15 33 ARQUITETURA ORIENTADA A EVENTOS E ARQUITETURA CENTRADA A DADOS 15 34 A Arquitetura Orientada a Eventos (do termo em inglês Event Driven Architecture – EDA, considerada uma arquitetura assíncrona distribuída que pode ser utilizada para desenvolver aplicativos distribuídos escaláveis. Arquitetura Orientada a Eventos 15 36 “ EDA é uma metodologia para projetar e implementar aplicações e sistemas onde os eventos são transmitidos entre componentes de software desacoplados e serviços. (Marechaux, 2006)” 15 37 Os componentes não podem ser chamados de maneira direta, pois eles publicam eventos que outros componentes podem consumir/estão interessados permitindo flexibilidade e desacoplamento. 15 38 Emissor de Eventos Corretor de Eventos Assinante de Eventos Componentes principais da EDA 15 39 Fonte: Autora, 2024. 15 40 Segundo Tanenbaum (1944) " A arquitetura centrada em dados tem por base em processos que se comunicam por meio de um repositório, seja ele, passivo ou ativo." Arquitetura centrada a dados 15 41 15 42 A arquitetura orientada a eventos pode ser utilizada em sistemas altamente distribuídos, complexos e com alta demanda por escalabilidade e resiliência. A arquitetura centrada em dados pode ser utilizada para sistemas mais simples, onde a consistência de dados é essencial e a complexidade precisa ser mantida baixa. 15 49 Sommerville, I. Engenharia de Software. 10ª ed. São Paulo: Pearson, 2018. Garlan, D.; Shaw, M. An Introduction to Software Architecture, Advances in Software Engineering and Knowledge Engineering, Volume I, World Scientific, 1993. Referência 15 50 Slide 1: Arquitetura de Sistemas Slide 2: Conversa Inicial Slide 3 Slide 4 Slide 5: ARQUITETURA EM CAMADAS E ARQUITETURA CLIENTE-SERVIDOR Slide 6: Arquitetura genérica em camadas Slide 7 Slide 8: Aplicabilidade da arquitetura genérica em camadas Slide 9: Arquitetura cliente – servidor Slide 10 Slide 11: Variações da arquitetura cliente-servidor Slide 12: Aplicabilidade das variações de arquitetura cliente-servidor Slide 13 Slide 14 Slide 15: ARQUITETURA ORIENTADA A SERVIÇOS (SOA) E ARQUITETURA BASEADA EM MICROSSERVIÇOS Slide 16: Arquitetura orientada a serviços Slide 17 Slide 18: SOAP, REST e RESTFUL Slide 19: Aplicabilidade de SOA Slide 20: Arquitetura baseada em microsserviços Slide 21 Slide 22 Slide 23 Slide 24: Aplicabilidade MSA Slide 25 Slide 26: ARQUITETURA MODEL-VIEW-CONTROLLERE ARQUITETURA DE MICRO FRONT-END Slide 27: Arquitetura Model-View-Controller Slide 28 Slide 29 Slide 30: Arquitetura Microfrontend Slide 31 Slide 32: Quatro decisões técnicas Slide 33: ARQUITETURA ORIENTADA A EVENTOS E ARQUITETURA CENTRADA A DADOS Slide 34: Arquitetura Orientada a Eventos Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 49: Referência Slide 50