Avançar para o conteúdo
Read this post in: de_DEen_USes_ESfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW
Home » TOGAF » TOGAF ADM: As 10 principais técnicas – Parte 3: Padrões de Arquitetura

TOGAF ADM: As 10 principais técnicas – Parte 3: Padrões de Arquitetura

No campo da arquitetura empresarial, os Padrões de Arquitetura são uma ferramenta importante para criar soluções eficazes para problemas comuns. Os padrões oferecem uma forma de colocar blocos de construção em contexto e podem fornecer aos arquitetos um plano para projetar soluções que já foram comprovadas como eficazes no passado. Neste artigo, exploramos o conceito de Padrões de Arquitetura no contexto do TOGAF ADM e apresentamos um exemplo de Padrão de Arquitetura no contexto do desenvolvimento de aplicações empresariais.

O que são Padrões de Arquitetura

Um “padrão” foi definido como: “uma ideia que foi útil em um contexto prático e provavelmente será útil em outros” (Fonte: Análise de Padrões – Modelos de Objetos Reutilizáveis, por M. Fowler).

No padrão TOGAF, os padrões são considerados uma forma de colocar blocos de construção em contexto; por exemplo, para descrever uma solução reutilizável para um problema. Os blocos de construção são o que você usa: os padrões podem indicar como usá-los, quando, por que e quais compromissos você precisa fazer ao fazê-lo.

Os padrões oferecem a promessa de ajudar o arquiteto a identificar combinações de Blocos de Construção de Arquitetura e/ou Blocos de Construção de Solução (ABBs/SBBs) que já foram comprovados para fornecer soluções eficazes no passado, e podem servir de base para soluções eficazes no futuro.

As técnicas de padrões são geralmente reconhecidas como uma abordagem valiosa para o design arquitetônico, estabelecida por Christopher Alexander, um arquiteto de edifícios, que descreveu esse método em seu livro A Maneira Eterna de Construir, publicado em 1979. Este livro oferece uma introdução às ideias por trás do uso de padrões, e Alexander seguiu com dois outros livros (Uma Linguagem de Padrões e O Experimento do Oregon), nos quais expandiu sua descrição dos recursos e benefícios de uma abordagem baseada em padrões para arquitetura.

Padrões de Arquitetura no TOGAF ADM

O Método de Desenvolvimento de Arquitetura (ADM) é um componente essencial do padrão TOGAF da Open Group, que fornece um framework para criar e gerenciar arquitetura empresarial. Dentro do ADM, os Padrões de Arquitetura são uma ferramenta poderosa que pode ajudar os arquitetos a identificar soluções comprovadas para problemas comuns e acelerar o desenvolvimento de arquiteturas eficazes.

No seu cerne, um Padrão de Arquitetura é simplesmente uma descrição de uma solução reutilizável para um problema que já foi comprovada como eficaz na prática. Como sugere a definição acima, um padrão é uma ideia que foi útil em um contexto e provavelmente será útil em outros. Os padrões podem ser usados para descrever soluções em diferentes níveis de abstração, desde padrões arquitetônicos de alto nível que descrevem a estrutura geral de um sistema até padrões de design de baixo nível que descrevem como os componentes individuais devem ser implementados.

Um dos principais benefícios do uso de Padrões de Arquitetura é que eles podem ajudar os arquitetos a identificar combinações de Blocos de Construção de Arquitetura (ABBs) ou Blocos de Construção de Solução (SBBs) que já foram comprovados para fornecer soluções eficazes no passado. Isso pode economizar tempo e esforço ao fornecer um ponto de partida para o desenvolvimento da arquitetura, em vez de começar do zero em cada novo projeto.

Além disso, os Padrões de Arquitetura podem ajudar a garantir que as arquiteturas sejam consistentes e coerentes. Ao usar padrões para descrever soluções para problemas comuns, os arquitetos podem criar uma linguagem comum e um conjunto de conceitos que podem ser usados em toda a organização. Isso pode ajudar a evitar mal-entendidos e garantir que todos estejam trabalhando em direção a uma visão compartilhada da arquitetura.

As técnicas de padrões foram estabelecidas como uma abordagem valiosa para o design arquitetônico por Christopher Alexander, um arquiteto de edifícios, que descreveu esse método em seu livro A Maneira Eterna de Construir. As ideias de Alexander foram posteriormente ampliadas em dois outros livros, Uma Linguagem de Padrões e O Experimento do Oregon.

No contexto da arquitetura empresarial, existem vários tipos diferentes de Padrões de Arquitetura que podem ser usados. Alguns dos mais comuns incluem:

  1. Arquiteturas de Referência – Elas descrevem a estrutura geral de um sistema ou aplicativo e fornecem um ponto de partida para o desenvolvimento da arquitetura.
  2. Padrões de Solução – Eles descrevem como problemas específicos podem ser resolvidos usando uma combinação de ABBs e SBBs.
  3. Padrões de Processo – Eles descrevem as melhores práticas e fluxos de trabalho comuns para o desenvolvimento e implementação de arquiteturas.
  4. Padrões de Design – Eles descrevem como os componentes individuais devem ser projetados e implementados, e podem ajudar a garantir consistência e manutenibilidade ao longo da arquitetura.

Os Padrões de Arquitetura são uma ferramenta poderosa para arquitetos que buscam desenvolver arquiteturas empresariais eficazes e eficientes. Ao identificar soluções comprovadas para problemas comuns, os arquitetos podem economizar tempo e esforço, ao mesmo tempo em que garantem que as arquiteturas sejam consistentes, coerentes e alinhadas com os objetivos e metas organizacionais.

Um Modelo para Documentar os Padrões de Arquitetura

1. Nome do Padrão

Um nome descritivo para o padrão, que deve comunicar claramente o problema que está sendo resolvido.

2. Problema

Uma descrição do problema ou desafio ao qual o padrão se destina a responder. Deve ser clara e específica, e fornecer contexto para o padrão.

3. Contexto

Uma descrição do contexto em que o padrão se destina a ser usado. Isso deve incluir informações sobre a organização, o sistema ou aplicativo em desenvolvimento, e quaisquer restrições ou limitações relevantes.

4. Solução

Uma descrição da solução que o padrão fornece. Deve ser clara e específica, e explicar como o padrão pode ser usado para resolver o problema descrito na seção 2.

5. Benefícios

Uma descrição dos benefícios do uso do padrão. Isso deve explicar como o padrão pode ajudar a resolver o problema e fornecer evidências que comprovem sua eficácia.

6. Compromissos

Uma descrição de quaisquer compromissos ou concessões que devem ser feitos ao usar o padrão. Isso deve incluir quaisquer limitações ou desvantagens do padrão, e quaisquer riscos que precisam ser gerenciados.

7. Implementação

Uma descrição de como o padrão pode ser implementado. Isso deve incluir orientações sobre como aplicar o padrão, e quaisquer exemplos ou casos de uso relevantes.

8. Padrões Relacionados

Uma lista de padrões relacionados que podem ser úteis em conjunto com o padrão atual. Isso deve incluir quaisquer padrões que estejam estreitamente relacionados ou que possam ser usados em combinação com o padrão atual.

9. Referências

Uma lista de referências e fontes utilizadas no desenvolvimento do padrão. Isso deve incluir quaisquer publicações, artigos ou outros recursos relevantes.

Ao usar este modelo, arquitetos podem criar padrões de arquitetura claros e eficazes que podem ser facilmente compartilhados e reutilizados em diferentes projetos e contextos.

Um Exemplo de Padrão de Arquitetura no Contexto Empresarial

Vamos considerar um exemplo de um Padrão de Arquitetura no contexto do desenvolvimento de aplicações empresariais.

Suponha que uma empresa precise desenvolver uma nova aplicação baseada na web para gerenciar relacionamentos com clientes. Um dos principais desafios que enfrentam é como garantir que a aplicação seja escalável e consiga lidar com um grande número de usuários simultâneos.

 

Usando o modelo de Padrão de Arquitetura descrito acima, podemos criar um padrão para resolver esse problema:

1. Nome do Padrão: Aplicação Web Escalável

2. Problema: Desenvolver uma aplicação baseada na web para gerenciar relacionamentos com clientes que possa lidar com um grande número de usuários simultâneos.

3. Contexto: Uma empresa precisa desenvolver uma nova aplicação baseada na web para gerenciar relacionamentos com clientes. A aplicação será acessada por um grande número de usuários e deve ser escalável para lidar com períodos de pico de uso.

4. Solução: O padrão Aplicação Web Escalável fornece uma solução para o desenvolvimento de uma aplicação baseada na web que possa lidar com um grande número de usuários simultâneos. Os principais elementos do padrão incluem:

  • Balanceamento de carga: distribuir as requisições de entrada entre múltiplos servidores para garantir que nenhum servidor único fique sobrecarregado.
  • Cache: usar cache em memória para armazenar dados frequentemente acessados e reduzir a carga sobre o banco de dados.
  • Escalabilidade horizontal: adicionar servidores adicionais à infraestrutura para lidar com o aumento da carga.
  • Sharding de banco de dados: dividir o banco de dados em partições menores para distribuir a carga entre múltiplos servidores.

5. Benefícios: Ao usar o padrão Aplicação Web Escalável, a empresa pode garantir que sua aplicação consiga lidar com um grande número de usuários simultâneos sem enfrentar problemas de desempenho ou tempo de inatividade. Isso pode melhorar a satisfação do cliente e aumentar a receita, garantindo que a aplicação esteja sempre disponível.

6. Compromissos: O padrão Aplicação Web Escalável exige infraestrutura e recursos adicionais para ser implementado, o que pode aumentar os custos. Além disso, a implementação de balanceamento de carga e cache pode aumentar a complexidade da arquitetura da aplicação.

7. Implementação: Para implementar o padrão de Aplicação Web Escalável, a empresa deveria considerar o uso de um balanceador de carga, como o NGINX, implementar cache usando uma tecnologia como Redis ou Memcached, e escalar horizontalmente a aplicação usando uma plataforma em nuvem como AWS ou Azure. O particionamento de banco de dados pode ser implementado usando uma tecnologia de banco de dados como MongoDB.

8. Padrões Relacionados: Padrões relacionados que podem ser úteis em conjunto com o padrão de Aplicação Web Escalável incluem:

  • Arquitetura de microserviços: dividir a aplicação em serviços menores e mais gerenciáveis que podem ser escalados de forma independente.
  • Porta de entrada da API: fornecendo um único ponto de entrada para acessar os serviços da aplicação e gerenciar o tráfego.

9. Referências: Algumas referências que podem ser úteis no desenvolvimento do padrão de Aplicação Web Escalável incluem:

  • High Scalability (blog):
  • Construindo Sites Web Escaláveis (livro) por Cal Henderson

Ao usar este padrão de arquitetura, a empresa pode economizar tempo e esforço no desenvolvimento de uma aplicação web escalável para gerenciar relacionamentos com clientes. O padrão oferece uma solução comprovada para um problema comum e pode ser facilmente adaptado para atender às necessidades e restrições específicas da empresa.

Exemplo de um Padrão de Arquitetura no Contexto de Login Único

Aqui está um exemplo de um Padrão de Arquitetura no contexto de Login Único (SSO):

Two Factor Multi-Factor Authentication Security Concept

1. Nome do Padrão: Login Único (SSO)

2. Problema: Várias aplicações dentro de uma organização exigem que os usuários se autentiquem separadamente, resultando em uma má experiência do usuário e aumento da carga administrativa para gerenciar contas de usuários.

3. Contexto: Uma organização possui várias aplicações que exigem que os usuários se autentiquem separadamente, causando frustração e confusão para os usuários. A organização deseja oferecer uma experiência do usuário sem interrupções, permitindo que os usuários se autentiquem uma vez e acessem todas as aplicações sem precisar reentrar as credenciais.

4. Solução: O padrão de Login Único fornece uma solução para permitir que os usuários se autentiquem uma vez e acessem múltiplas aplicações sem precisar reentrar suas credenciais. Os elementos principais do padrão incluem:

  • Provedor de Identidade (IdP): um serviço centralizado que autentica os usuários e fornece tokens ou afirmações que podem ser usados para acessar outras aplicações.
  • Provedor de Serviço (SP): uma aplicação ou serviço que depende do IdP para autenticar usuários e fornece acesso com base nos tokens ou afirmações fornecidos pelo IdP.
  • Protocolos padrão: usar protocolos padronizados da indústria, como SAML, OAuth ou OpenID Connect, para habilitar a comunicação entre o IdP e os SPs.

5. Benefícios: Ao usar o padrão de Login Único, a organização pode oferecer uma experiência do usuário sem interrupções e reduzir a carga administrativa para gerenciar contas de usuários. Os usuários precisam se autenticar apenas uma vez e podem, em seguida, acessar todas as aplicações sem precisar lembrar de múltiplos conjuntos de credenciais. Isso pode melhorar a satisfação do usuário e reduzir os custos com suporte ao helpdesk.

6. Compromissos: Implementar o padrão de Login Único exige infraestrutura e recursos adicionais para sua implementação, o que pode aumentar os custos. Além disso, a integração com aplicações existentes pode exigir desenvolvimento personalizado ou configuração, o que pode aumentar a complexidade.

7. Implementação: Para implementar o padrão de Entrada Única, a organização deve selecionar um Provedor de Identidade que suporte protocolos padronizados da indústria, como SAML, OAuth ou OpenID Connect. Os Provedores de Serviço devem ser configurados para depender do IdP para autenticação e autorização. Aplicações existentes podem precisar ser integradas ao IdP, o que pode exigir desenvolvimento personalizado ou configuração.

8. Padrões Relacionados: Padrões relacionados que podem ser úteis em conjunto com o padrão de Entrada Única incluem:

  • Identidade Federada: estendendo o padrão de Entrada Única para suportar autenticação entre organizações ou domínios.
  • Controle de Acesso Baseado em Atributos: usando atributos de usuário fornecidos pelo IdP para controlar o acesso a recursos dentro das aplicações.

9. Referências: Algumas referências que podem ser úteis no desenvolvimento do padrão de Entrada Única incluem:

  • Entrada Única (SSO) (Wikipedia)
  • Visão Geral Técnica do SAML (OASIS)

Ao utilizar este Padrão de Arquitetura, a organização pode melhorar a experiência do usuário e reduzir a carga administrativa ao implementar uma solução de entrada única que permite aos usuários acessar múltiplas aplicações sem precisar reentrar suas credenciais. O padrão oferece uma solução comprovada para um problema comum e pode ser facilmente adaptado para atender às necessidades e restrições específicas da organização.

Padrões de Arquitetura Empresarial vs Padrões de Arquitetura de Software

Padrões de arquitetura empresarial e padrões de arquitetura de software são conceitos relacionados, mas distintos.

Padrões de arquitetura de software são focados no design e na implementação de sistemas ou aplicações de software individuais. Eles fornecem um conjunto de diretrizes e melhores práticas para o design e implementação dos componentes de software de um sistema, como seus módulos, interfaces e interações.

Por outro lado, os padrões de arquitetura empresarial são focados no design e na alinhamento de múltiplos sistemas e aplicações de software dentro de uma organização. Eles fornecem um conjunto de diretrizes e melhores práticas para o design e implementação da arquitetura geral de uma empresa, incluindo seus processos de negócios, estruturas de dados e infraestrutura de tecnologia.

Padrões de arquitetura empresarial geralmente abordam questões como integração de sistemas, interoperabilidade e escalabilidade, que não são normalmente cobertas por padrões de arquitetura de software. Eles também consideram o contexto empresarial mais amplo no qual os sistemas de software são implantados e visam alinhar os sistemas de TI com os objetivos e metas organizacionais.

Exemplos de padrões de arquitetura empresarial incluem Arquitetura Orientada a Serviços (SOA), Gestão de Processos de Negócios (BPM) e Padrões de Integração Empresarial (EIP), enquanto exemplos de padrões de arquitetura de software incluem Modelo-Visualização-Controlador (MVC), Microserviços e Arquitetura em Camadas.

Padrões de Arquitetura de Software

Padrões de arquitetura de software são soluções reutilizáveis para problemas comuns que surgem no design de software. Eles fornecem uma abordagem estruturada para o design e implementação de sistemas de software, definindo um conjunto de regras e diretrizes que ajudam a garantir que o sistema seja robusto, escalável e passível de manutenção.

Padrões de arquitetura de software fornecem uma visão de alto nível do sistema, identificando seus componentes principais e suas interações. Eles definem as relações entre esses componentes e fornecem um conjunto de regras sobre como eles devem se comunicar e trabalhar juntos.

Ao utilizar padrões de arquitetura de software, os desenvolvedores podem economizar tempo e esforço ao reutilizar soluções comprovadas para problemas comuns, em vez de começar do zero em cada novo projeto. Isso pode ajudar a melhorar a qualidade do software resultante, além de reduzir o tempo e os custos de desenvolvimento.

Alguns exemplos de padrões de arquitetura de software incluem Modelo-Visualização-Controlador (MVC), Microserviços, Arquitetura em Camadas, Arquitetura Orientada a Serviços (SOA) e Arquitetura Orientada a Eventos (EDA).

Aqui estão alguns padrões populares de arquitetura de software:

  1. Padrão Modelo-Visualização-Controlador (MVC): este padrão separa uma aplicação em três componentes interconectados – o Modelo, a Visualização e o Controlador – para ajudar a gerenciar a complexidade e alcançar a separação de preocupações.
  2. Arquitetura de Microserviços: este padrão divide uma aplicação em serviços menores, que podem ser implantados de forma independente e desenvolvidos, implantados e escalados separadamente.
  3. Arquitetura em Camadas: este padrão divide uma aplicação em camadas lógicas, cada uma responsável por um aspecto específico da funcionalidade da aplicação, para proporcionar modularidade e separação de preocupações.
  4. Arquitetura Orientada a Serviços (SOA): este padrão é uma abordagem arquitetônica para a construção de sistemas distribuídos que utilizam serviços como blocos de construção fundamentais.
  5. Arquitetura Baseada em Eventos (EDA): Este padrão enfatiza a produção, detecção, consumo e reação a eventos que ocorrem dentro de um sistema, permitindo uma arquitetura mais flexível e escalável.
  6. Design Orientado ao Domínio (DDD): Este padrão incentiva o uso de uma linguagem comum e um modelo para descrever o domínio de um problema, resultando em uma base de código mais fácil de manter e compreender.
  7. Arquitetura Hexagonal: Este padrão estrutura uma aplicação em torno de um núcleo central, com portas e adaptadores que permitem a comunicação entre o núcleo e os sistemas externos.
  8. CQRS (Separação de Responsabilidade de Comando e Consulta): Este padrão separa os modelos de leitura e escrita de uma aplicação, permitindo consultas mais eficientes e escalabilidade aprimorada.
  9. Arquitetura Reativa: Este padrão é um conjunto de princípios de design que visam construir sistemas resilientes, escaláveis e responsivos que conseguem reagir às mudanças no ambiente.
  10. Arquitetura Limpa: Este padrão enfatiza a separação de preocupações entre as diferentes camadas de uma aplicação, com o objetivo de produzir código que seja fácil de ler, testar e manter.

Resumo

Padrões de Arquitetura são uma técnica de design valiosa na arquitetura empresarial que oferece aos arquitetos uma forma de projetar soluções eficazes para problemas comuns. Ao fornecer um plano de fundo para projetar soluções que já foram comprovadas como eficazes no passado, os Padrões de Arquitetura podem ajudar os arquitetos a economizar tempo e recursos, além de melhorar a qualidade geral da solução. Neste artigo, fornecemos um exemplo de Padrão de Arquitetura no contexto do desenvolvimento de aplicações empresariais, especificamente no contexto de Login Único (SSO). Ao utilizar o padrão de Login Único, as organizações podem oferecer uma experiência do usuário sem interrupções e reduzir a carga administrativa no gerenciamento de contas de usuário, ao mesmo tempo que melhoram a satisfação do usuário e reduzem os custos com suporte ao helpdesk.

Deixe um comentário