Prévia do material em texto
4 - Arquitetura de Software Você já se perguntou como os sistemas de grande porte são projetados? Antes do início do desenvolvimento de software principal, é preciso escolher uma arquitetura adequada que forneça a funcionalidade e os atributos de qualidade desejados. Portanto, deve-se entender diferentes arquiteturas antes de aplicá-las ao nosso projeto. As falhas em qualquer software têm um impacto significativo nos negócios de uma organização. E a principal razão para qualquer falha de software pode ser a seleção de padrões de arquitetura de software errados. Mas com conhecimento prévio, é possível orientar designers e desenvolvedores no design dos componentes e nas formas como eles reagem. Muitas vezes é visto que as empresas iniciam o processo de desenvolvimento de aplicativos sem uma arquitetura formal em vigor. No entanto, elas tendem a não perceber que a ausência de um padrão de arquitetura pode forçar a equipe de desenvolvimento a adotar um padrão tradicional sem diretrizes. Eventualmente, acabam com códigos que carecem de papéis, responsabilidades e relacionamentos claros uns com os outros. Tirinha Avalie a conversa sobre a utilização de arquiteturas logo abaixo. Como você pôde pereceber, o conceito de arquitetura de software é complexa, mas extremamente útil quando explorada corretamente. O profissional mais jovem utlizou uma técnica e não sabia "exatamente" quais as suas vantagens. O outro profissional, após a sua explicação, convence-o em trabalhar sempre com arquiteturas pré-definidas, por meio do destaque das vantagens que elas apresentam no cotidiano das empresas e dos seus profissionais. · · · · · · · Ao final deste conteúdo, você será capaz de: · Compreender o conceito de arquitetura de software e sua aplicação no desenvolvimento de sistema; · Diferenciar tipos de arquitetura de software. Definindo arquitetura de software Antes de se aprofundar nos padrões de arquitetura comuns, é necessário entender o que é arquitetura de software. Recurso lista interativa: · A arquitetura de software é uma representação do sistema de TI (Tecnologia da Informação) que comunica: Conteúdo A arquitetura de software é uma representação do sistema de TI (Tecnologia da Informação) que comunica:: · A organização do sistema. · Diferentes componentes face às suas funções. · Como os componentes interagem entre si. Voltar para a navegação do recurso lista interativa A representação esquemática é um resultado dos princípios de design que os arquitetos de software usam e das decisões que eles tomam. Uma arquitetura de software típica requer decisões sobre segurança, desempenho, gerenciabilidade entre outros. Para compreender o conceito de arquitetura de software, é importante fazer a leitura do capítulo indicado a seguir. É uma leitura ideal para o aprendizado. Estudo Guiado Leia as páginas 230 a 235 do livro Engenharia de Software. Clique no link e leia o livro PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software. Porto Alegre: Grupo A, 2021. E-book. ISBN 9786558040118. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9786558040118/. Acesso em: 16 ago. 2024. Os princípios de design, decisões de arquitetura e seus resultados, ou seja, a arquitetura de software juntos, permitem que um sistema de software cumpra seus objetivos comerciais, operacionais e técnicos. É preciso acertar a arquitetura de software devido aos seguintes motivos: *Clique nas sanfonas para interagir com o conteúdo.* Organização dos requisitos iniciais Conhecimento do progresso Reutilização Arquitetura de software é simplesmente a organização de um sistema. Essa organização inclui todos os componentes, como eles interagem entre si, o ambiente em que operam e os princípios usados para projetar o software. Em muitos casos, também pode incluir a evolução do software para o futuro. É projetada com uma missão ou missões específicas em mente. Essa missão deve ser cumprida sem prejudicar as missões de outras ferramentas ou dispositivos. O comportamento e a estrutura do software afetam decisões significativas, portanto, eles precisam ser renderizados e construídos adequadamente para obter os melhores resultados possíveis. Figura 1 | Arquitetura Na Engenharia de software, a arquitetura de software ajuda a expor a estrutura de um sistema enquanto oculta alguns detalhes de implementação. A arquitetura se concentra nos relacionamentos e como os elementos e componentes interagem uns com os outros, assim como a engenharia de software. Resumidamente, é possível afirmar que arquitetura de software e Engenharia de software muitas vezes se sobrepõem. Elas são combinadas, pois muitas das mesmas regras governam ambas as práticas. Cabe destacar que toda arquitetura... de software é engenharia, mas nem toda engenharia é arquitetura de software. O arquiteto de software é capaz de distinguir entre o que são apenas detalhes na Engenharia de software e o que é importante para essa estrutura interna. · Voltar para início Tipos de arquiteturas de software A arquitetura de software de um sistema representa as decisões de projeto relacionadas à estrutura e comportamento geral do sistema. A arquitetura ajuda as partes interessadas a entender e analisar como o sistema alcançará qualidades essenciais, como modificabilidade, disponibilidade e segurança. Existem muitas arquiteturas de software, algumas serão apresentadas aqui nesta unidade, outras estão disponíveis em detalhes no capítulo de livro a seguir. Por isso, a leitura é uma forte recomendação para incrementar os conhecimentos. Estudo Guiado Leia da página 236 a 239 do livro Engenharia de Software. Clique no link e leia o livro PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software. Porto Alegre: Grupo A, 2021. E-book. ISBN 9786558040118. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9786558040118/. Acesso em: 16 ago. 2024. Construir uma arquitetura eficaz que permita a entrega rápida de produtos para as necessidades atuais e, ao mesmo tempo, atenda às metas de longo prazo pode ser um desafio. Deixar de identificar, priorizar e gerenciar compensações entre qualidades arquiteturais significativas, geralmente, leva a atrasos no projeto, retrabalho dispendioso ou pior. Assim, serão apresentados alguns padrões de arquitetura populares que ajudaram muitas empresas de software a expandir seus negócios. Arquitetura em camadas Essa arquitetura ganhou popularidade entre designers e arquitetos de software por suas semelhanças com os arranjos convencionais de comunicações de TI em muitas startups e empresas estabelecidas. Frequentemente, uma arquitetura em camadas é classificada em quatro camadas distintas: apresentação, negócios, persistência e banco de dados. Porém, o padrão não está confinado às camadas especificadas e pode haver uma camada de aplicativo, uma camada de serviço ou uma camada de acesso a dados. Estruturas populares como Java EE utilizaram esse padrão de arquitetura. Digamos que um engenheiro de software está construindo um grande aplicativo e você se viu empregando todas as quatro camadas em seu padrão de arquitetura. Por outro lado, as pequenas empresas podem combinar as camadas de negócios e de persistência em uma única unidade, principalmente quando a última está envolvida como parte integrante dos componentes da camada de lógica de negócios. Esse padrão se destaca porque cada camada desempenha uma função distinta dentro do aplicativo e é marcada como fechada, conforme ilustra a figura a seguir. Isso significa que uma solicitação deve passar pela camada logo abaixo dela para ir para a próxima camada. Outro de seus conceitos – camadas de isolamento – permite modificar componentes dentro de uma camada sem afetar as outras camadas. Figura 1 | Arquitetura em Camadas Para simplificar esse processo da figura, considere um aplicativo web de comércio eletrônico. A lógica de negócios necessária para processar uma atividade de carrinho de compras, como calcular o carrinho, é buscada diretamente da camada de aplicativo para a camada de apresentação. Aqui, acamada de aplicativo atua como uma camada de integração para estabelecer uma comunicação perfeita entre as camadas de dados e de apresentação. Além disso, a última camada é a camada de dados usada para manter os dados de forma independente, sem a intervenção do servidor de aplicativos e da lógica de negócios. Arquitetura cliente-servidor A arquitetura de software cliente-servidor é uma das arquiteturas mais utilizadas por diferentes tipos de software, em que existem 2 entidades – o cliente e o servidor. Recurso lista interativa: · As principais características desse padrão são: Conteúdo As principais características desse padrão são:: · Os componentes do cliente enviam solicitações ao servidor, que as processa e responde de volta; · Quando um servidor aceita uma solicitação de um cliente, ele abre uma conexão com o cliente por meio de um protocolo específico; · Os servidores podem ser com estado ou sem estado. Um servidor com estado pode receber várias solicitações de clientes. Ele mantém um registro de solicitações do cliente, e esse registro é chamado de 'sessão'. Voltar para a navegação do recurso lista interativa Os aplicativos de e-mail são bons exemplos desse padrão. Arquitetura mestre-escravo Esse padrão consiste em duas partes: mestre e escravos. O componente mestre distribui o trabalho entre componentes escravos idênticos e calcula um resultado final a partir dos resultados que os escravos retornam. Esta arquitetura pode ser usada na replicação de banco de dados, em que o banco de dados mestre é considerado como a fonte autorizada, e os bancos de dados escravos são sincronizados com ele. Também pode ser utilizado em periféricos conectados a um barramento em um sistema de computador (unidades mestre e escravo). Arquitetura broker Esse padrão é usado para estruturar sistemas distribuídos com componentes desacoplados. Esses componentes podem interagir entre si por invocações de serviço remoto. Um componente broker é responsável pela coordenação da comunicação entre os componentes. Os servidores publicam seus recursos (serviços e características) para um broker. Os clientes solicitam um serviço do broker, e o broker redireciona o cliente para um serviço adequado de seu registro. Arquitetura Peer-to-peer (P2P) A arquitetura ponto-a-ponto (P2P) é marcadamente diferente do padrão cliente-servidor, pois cada computador na rede tem a mesma autoridade. Recurso lista interativa: · As principais características do padrão P2P são as seguintes: Conteúdo As principais características do padrão P2P são as seguintes:: · Não há um servidor central, com cada nó tendo recursos iguais; · Cada computador pode funcionar como cliente ou servidor; · Quando mais computadores se juntam à rede, a capacidade geral da rede aumenta. Voltar para a navegação do recurso lista interativa As redes de compartilhamento de arquivos são bons exemplos do padrão P2P. Bitcoin e outras redes de criptomoedas são outros exemplos. Recurso lista interativa: · As vantagens de uma rede P2P são as seguintes: Conteúdo As vantagens de uma rede P2P são as seguintes:: · As redes P2P são descentralizadas, portanto, mais seguras. Você já deve ter ouvido falar muito sobre a segurança da rede Bitcoin; · Os hackers não podem destruir a rede comprometendo apenas um servidor; · Sob carga pesada, o padrão P2P tem limitações de desempenho, como mostram as perguntas em torno da transação Bitcoin. Voltar para a navegação do recurso lista interativa Arquitetura Model View Controller (MVC) Este padrão divide uma aplicação interativa em 3 partes como: · Model — contém a funcionalidade principal e os dados. · View — exibe as informações para o usuário (mais de uma view pode ser definida). · Controller — manipula a entrada do usuário. Isso é feito para separar as representações internas das informações das formas como as informações são apresentadas e aceitas pelo usuário. Desacopla componentes e permite a reutilização de código eficiente, sendo usado em arquitetura para aplicações da World Wide Web nas principais linguagens de programação, além de frameworks web como Django e Rails. Arquitetura orientada a eventos Esta arquitetura é composta de componentes de processamento de eventos de propósito único desacoplados, que recebem e processam eventos de forma assíncrona. Essa arquitetura orquestra o comportamento em torno da produção, detecção e consumo de todos os eventos, juntamente com as respostas que eles evocam. O estilo de arquitetura orientado a eventos consiste em duas topologias – mediador e intermediário. Um mediador é usado quando várias etapas são necessárias para serem orquestradas em um barramento de eventos por meio de um mediador central. Por outro lado, um intermediário é usado para encadear eventos sem usar um mediador central. Exemplo Um bom exemplo que usa arquitetura orientada a eventos é um site de comércio eletrônico. A arquitetura orientada a eventos permite que o site de comércio eletrônico reaja a várias fontes em um momento de alta demanda. Simultaneamente, evita qualquer travamento do aplicativo ou qualquer superprovisionamento de recursos. Arquitetura microsserviço O padrão de arquitetura de microsserviços é visto como uma alternativa viável para aplicações monolíticas e arquiteturas orientadas a serviços. Os componentes são implantados como unidades separadas por meio de um pipeline de entrega eficiente e simplificado. Os benefícios do padrão são escalabilidade aprimorada e alto grau de desacoplamento dentro do aplicativo. Devido às suas características desacopladas e independentes, os componentes são acessados por meio de um protocolo de acesso remoto. Além disso, os mesmos componentes podem ser desenvolvidos, implantados e testados separadamente sem interdependência de qualquer outro componente de serviço. A Netflix é uma das primeiras a adotar o padrão de arquitetura de microsserviços. A arquitetura permitiu que a equipe de engenharia trabalhasse em pequenas equipes responsáveis pelo desenvolvimento de ponta a ponta de centenas de microsserviços. Esses microsserviços trabalham juntos para transmitir entretenimento digital a milhões de clientes da Netflix todos os dias. Por fim, cabe ressaltar que... uma arquitetura de software eficaz permite a evolução contínua efetiva do sistema. Tais práticas incluem documentar os elementos arquitetônicos e as inter-relações destinadas a alcançar qualidades-chave; avaliar repetidamente a adequação da arquitetura em relação aos objetivos de negócios e missão de uma organização; e analisar o sistema implantado para conformidade com uma arquitetura. Quando executadas corretamente, essas práticas permitem a qualidade previsível do produto, economia de tempo e custo na integração e teste e evolução econômica do sistema. Assista aos vídeos para conhecer mais sobre arquitetura de software. Videoaula · · · · · · · Videoaula image3.jpeg image4.jpeg image1.png image2.png