Arquitetura de aplicativos - Applications architecture

Em sistemas de informação , arquitetura de aplicativos ou arquitetura de aplicativos é um dos vários domínios de arquitetura que formam os pilares de uma arquitetura corporativa (EA).

Uma arquitetura de aplicativos descreve o comportamento dos aplicativos usados ​​em uma empresa, com foco em como eles interagem entre si e com os usuários. Ele se concentra nos dados consumidos e produzidos pelos aplicativos, e não em sua estrutura interna. No gerenciamento de portfólio de aplicativos , os aplicativos são mapeados para funções e processos de negócios, bem como custos, qualidade funcional e qualidade técnica, a fim de avaliar o valor fornecido.

A arquitetura dos aplicativos é especificada com base nos requisitos de negócios e funcionais . Isso envolve a definição da interação entre pacotes de aplicativos, bancos de dados e sistemas de middleware em termos de cobertura funcional. Isso ajuda a identificar quaisquer problemas de integração ou lacunas na cobertura funcional. Um plano de migração pode então ser traçado para sistemas que estão no final do ciclo de vida do software ou que apresentam riscos tecnológicos inerentes.

A arquitetura de aplicativos tenta garantir que o conjunto de aplicativos usado por uma organização para criar a arquitetura composta seja escalonável , confiável , disponível e gerenciável.

A arquitetura de aplicativos define como vários aplicativos estão preparados para trabalhar juntos. É diferente da arquitetura de software , que lida com projetos técnicos de como um sistema é construído.

É necessário não apenas entender e gerenciar a dinâmica das funcionalidades que a arquitetura composta está implementando, mas também ajudar a formular a estratégia de implantação e ficar de olho nos riscos tecnológicos que podem comprometer o crescimento e / ou as operações da organização.

Estratégia

A estratégia de arquitetura de aplicativos envolve garantir que os aplicativos e as integrações estejam alinhados com a estratégia de crescimento da organização. Se uma organização for uma organização de manufatura com planos de crescimento rápido por meio de aquisições, a arquitetura de aplicativos deve ser ágil o suficiente para abranger sistemas legados herdados, bem como outros grandes sistemas concorrentes.

Padrões

Os aplicativos podem ser classificados em vários tipos, dependendo do padrão de arquitetura de aplicativos que seguem.

Um "padrão" foi definido como: "uma ideia que foi útil em um contexto prático e provavelmente será útil em outros".

Para criar padrões, são necessários blocos de construção. Os blocos de construção são componentes de software, em sua maioria reutilizáveis, que podem ser utilizados para criar certas funções. Os padrões são uma maneira de colocar os blocos de construção em contexto e descrever como usá-los para tratar de uma ou várias questões arquitetônicas.

Um aplicativo é uma compilação de várias funcionalidades, todas normalmente seguindo o mesmo padrão. Este padrão define o padrão do aplicativo.

Os padrões de aplicativo podem descrever características estruturais (relacionadas à implementação / distribuição) ou comportamentais (fluxo de processo ou relacionadas à interação / integração) e uma arquitetura de aplicativo pode alavancar um ou uma combinação de padrões. A ideia de padrões existe quase desde o início da ciência da computação, mas foi popularizada pela "Gangue dos Quatro" (GoF), embora muitos de seus padrões sejam padrões de "arquitetura de software" em vez de padrões de "arquitetura de aplicativo". Além do GoF, Thomas Erl é um conhecido autor de vários tipos de padrões, e a maioria dos grandes fornecedores de ferramentas de software, como a Microsoft, publicou extensas bibliotecas de padrões.

Apesar da abundância de padrões que foram publicados, existem relativamente poucos padrões que podem ser considerados como "padrão da indústria". Alguns dos mais conhecidos incluem:

  • aplicativo de camada única / cliente espesso / desktop (padrão estrutural): um aplicativo que existe apenas em um único computador, normalmente um desktop. É claro que é possível ter o mesmo aplicativo de desktop em muitos computadores, mas eles não interagem entre si (com raras exceções).
  • cliente-servidor / 2 camadas (padrão estrutural): um aplicativo que consiste em uma camada de front-end (voltada para o usuário) em execução como um cliente avançado que se comunica com um back-end (servidor) que fornece lógica de negócios, fluxo de trabalho, integração e serviços de dados. Em contraste com os aplicativos de desktop (que são de um único usuário), os aplicativos cliente-servidor são quase sempre aplicativos multiusuário.
  • n-tier (padrão estrutural): uma extensão do padrão cliente-servidor, onde as funções do servidor são divididas em várias camadas, que são distribuídas em diferentes computadores em uma rede local (LAN).
  • distribuído (padrão estrutural): uma extensão do padrão de n camadas em que as funções do servidor são distribuídas em uma rede de longa distância (WAN) ou nuvem. Esse padrão também inclui alguns atributos de padrão comportamental porque as funções do servidor devem ser projetadas para ser mais autônomas e funcionar em um diálogo assíncrono com as outras funções para lidar com a latência potencialmente significativa que pode ocorrer em cenários de implementação de WAN e nuvem.
  • escalabilidade horizontal (padrão estrutural): um padrão para executar várias cópias de funções de servidor em vários computadores de tal forma que o aumento da carga de processamento pode ser espalhado por um número crescente de instâncias das funções, em vez de ter que reimplantar as funções em maiores, computadores mais poderosos. Os aplicativos nativos da nuvem são fundamentalmente baseados na escalabilidade horizontal.
  • arquitetura orientada a eventos (padrão comportamental): eventos de dados (que podem ter se originado inicialmente de um dispositivo, aplicativo, usuário, armazenamento de dados ou relógio) e lógica de detecção de eventos que pode descartar condicionalmente o evento, iniciar um processo relacionado ao evento, alertar um usuário ou gerenciador de dispositivos, ou atualizar um armazenamento de dados. O padrão orientado a eventos é fundamental para o processamento assíncrono exigido pelo padrão de arquitetura distribuída.
  • ETL (padrão comportamental): um padrão de processo de aplicativo para extrair dados de uma fonte de origem, transformando esses dados de acordo com algumas regras de negócios e, em seguida, carregando esses dados em um destino. Variações no padrão ETL incluem ELT e ETLT.
  • Solicitação-Resposta (padrão comportamental): Um padrão de integração de aplicativo para troca de dados em que o aplicativo solicita dados de outro aplicativo e espera por uma resposta contendo os dados solicitados. Este é o exemplo mais proeminente de um padrão síncrono, em contraste com o processamento assíncrono referido nas descrições de padrão anteriores.

O padrão de aplicativos certo depende do segmento de mercado da organização e do uso dos aplicativos de componentes. Uma organização pode ter uma combinação de vários padrões se tiver crescido organicamente e por meio de aquisições.

Arquiteto de aplicativos

O TOGAF descreve as habilidades e as expectativas da função de um arquiteto de aplicativos . Essas habilidades incluem uma compreensão da modularização / distribuição de aplicativos, integração, alta disponibilidade e padrões de escalabilidade, tecnologia e tendências. Cada vez mais, uma compreensão dos contêineres de aplicativos, computação sem servidor, armazenamento, dados e análises e outras tecnologias e serviços relacionados à nuvem são habilidades necessárias do arquiteto de aplicativos. Embora a experiência em software seja uma ótima base para um arquiteto de aplicativos, programação e design de software não são habilidades exigidas de um arquiteto de aplicativos (na verdade, são habilidades para um arquiteto de software, que é um líder na equipe de programação de computadores ).

Domínios de conhecimento

Modelagem de aplicativos
Emprega modelagem como uma estrutura para a implantação e integração de aplicativos novos ou aprimorados, usa modelagem para encontrar problemas, reduzir riscos, melhorar a previsibilidade, reduzir custos e tempo de colocação no mercado, testar vários cenários de produtos, incorporando necessidades / requisitos não funcionais dos clientes, adiciona decisões de design de teste ao processo de desenvolvimento conforme necessário e avalia problemas de design de produto.
Inteligência competitiva , modelagem de negócios , análise estratégica
Compreensão do mercado global, consumidores, indústrias e concorrência, e como modelos de negócios globais, estratégias, finanças, operações e estruturas se relacionam. Compreensão do ambiente competitivo, incluindo tendências atuais no mercado, indústria, concorrência e ambiente regulatório, bem como compreensão de como os componentes do modelo de negócios (ou seja, estratégia, finanças, operações) se relacionam para tornar a organização competitiva no mercado. Compreensão dos processos , sistemas, ferramentas, regulamentos e estrutura de negócios da organização e como eles se relacionam para fornecer produtos e serviços que criam valor para clientes, consumidores e principais interessados. Compreensão de como o valor criado para clientes, consumidores e principais interessados ​​se alinha com a visão da organização, negócios, cultura, proposição de valor, promessa da marca e imperativos estratégicos. Compreensão das realizações e deficiências passadas e presentes da organização para avaliar os pontos fortes, fracos, oportunidades e riscos em relação ao ambiente competitivo.
Tecnologia
Compreensão da estratégia de TI , ciclo de vida de desenvolvimento e manutenção de aplicativos / infraestrutura; Compreensão dos processos de serviço e suporte de TI para promover vantagem competitiva, criar eficiências e agregar valor ao negócio.
Padrões de tecnologia
Demonstra uma compreensão completa das tecnologias-chave que formam a infraestrutura necessária para dar suporte eficaz aos requisitos de negócios existentes e futuros , garante que todo hardware e software cumpram os requisitos e padrões básicos antes de serem integrados ao ambiente de negócios, entende e é capaz de desenvolver padrões técnicos e procedimentos para facilitar o uso de novas tecnologias, desenvolve diretrizes úteis para o uso e aplicação de novas tecnologias.

Tarefas

Um arquiteto de aplicativos é um mestre em tudo que é específico de aplicativo em uma organização. Um arquiteto de aplicativos fornece orientações estratégicas para as equipes de manutenção de aplicativos, compreendendo todos os aplicativos a partir das seguintes perspectivas:

A análise acima apontará os aplicativos que precisam de uma variedade de mudanças - desde mudança na estratégia de implantação de aplicativos fragmentados até a substituição total de aplicativos no final de seu ciclo de vida de tecnologia ou funcionalidade.

Pegada de funcionalidade

Compreenda o fluxo do processo do sistema dos processos de negócios primários. Ele fornece uma imagem clara do mapa de funcionalidade e da pegada de aplicativos de vários aplicativos em todo o mapa.

Muitas organizações não têm disciplina de documentação e, portanto, carecem de fluxos de processos de negócios e fluxos de processos de sistema detalhados. Pode ser necessário iniciar uma iniciativa para colocá-los em prática primeiro.

Criar diretrizes de arquitetura de solução

Cada organização tem um conjunto básico de aplicativos que são usados ​​em várias divisões, como uma única instância ou uma instância diferente por divisão. Crie um modelo de arquitetura de solução para todos os aplicativos principais, de modo que todos os projetos tenham um ponto de partida comum para as implementações de design.

Os padrões no mundo da arquitetura são definidos no TOGAF. O Open Group Architecture Framework descreve os quatro componentes da EA como BDAT ( arquitetura de negócios , arquitetura de dados , arquitetura de aplicativos e arquitetura técnica ,

Existem também outros padrões a serem considerados, dependendo do nível de complexidade da organização:


Veja também

Referências