Quatro opções de arquitetura para o desenvolvimento de aplicação na era digital

Desenvolvedor de software trabalhando em escritório

Qual modelo de arquitetura de aplicação é melhor para você na era da nuvem?

Cada vez mais, as empresas estão passando por uma jornada de transformação digital para atender às necessidades em constante evolução dos consumidores. Também é cada vez mais provável que os clientes estejam usando redes sociais, aplicações móveis e tecnologias digitais. Devido a essa mudança, a estratégia digital agora é parte integrante da estratégia geral de negócios. 

Muitas empresas estão obtendo poder computacional por meio de plataformas de serviços de nuvem via Internet e adotando uma estratégia de nuvem para o desenvolvimento de aplicação. Isso promoveu uma mudança no projeto de aplicações — antes, a funcionalidade e o estado eram priorizados, mas agora a maioria das aplicações voltadas para o consumidor está migrando para o software como serviço (SaaS) e as plataformas digitais. O foco do projeto de aplicações agora está muito mais focado na experiência do usuário, sem estado e agilidade.

A escolha da arquitetura de aplicação certa depende dos requisitos do seu negócio. Nesta postagem, examinaremos quatro opções de arquitetura para possibilitar a transformação digital, dependendo das necessidades gerais de negócios.

 

As mais recentes notícias de tecnologia, corroboradas por insights de especialistas.

Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.

Agradecemos sua inscrição!

Sua assinatura será entregue em inglês. Você pode encontrar um link para cancelar a assinatura em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

Arquitetura tradicional de aplicações de três camadas

Todos nós conhecemos a arquitetura de aplicações de três camadas — é uma arquitetura de cliente-servidor com uma estrutura típica que consiste na camada de apresentação, na camada de aplicação e na camada de banco de dados.

Ela tem uma interface de usuário, lógica de acesso de negócios e acesso a dados. Muitas aplicações corporativas foram criadas usando a arquitetura de aplicações de três camadas simples.

Desenvolvimento de aplicações

Venha conosco: desenvolvimento de aplicações para empresas na nuvem

Neste vídeo, o Dr. Peter Haumer explica como é o desenvolvimento atual das aplicações empresariais modernas na nuvem híbrida, demonstrando diferentes componentes e práticas, incluindo o IBM® Z Open Editor, o IBM Wazi e o Zowe. 

Qual é o problema com a arquitetura de aplicações de três camadas?

Simplificando, o modelo de aplicações de três camadas está desatualizado. Ele foi projetado para o desenvolvimento de aplicação antes da proliferação da nuvem pública e dos aplicativos móveis e teve dificuldade de se adaptar à nuvem.

Com o tempo, uma aplicação pode se tornar muito grande e complexa para fazer alterações frequentes. Além disso, exige a manutenção de pelo menos três camadas de hardware e software, o que pode ser ineficiente para a empresa. 

O modelo de aplicações de três camadas também é frequentemente chamado de arquitetura monolítica. Atualmente, temos vários novos modelos de arquitetura e, abaixo, examinaremos alguns que estão disponíveis na era da nuvem.

1. Arquitetura de microsserviços

Em um modelo de nuvem, aplicações complexas projetadas como uma coleção de serviços e dados são totalmente desacopladas da aplicação. Microsserviços são um estilo arquitetônico que estrutura a aplicação como uma coleção de serviços. Cada serviço pode ser escrito em uma linguagem de programação diferente e testado separadamente. Eles são implementáveis de forma independente e organizados com base nos recursos dos negócios.

Tomemos o exemplo de uma aplicação de comércio eletrônico desenvolvida usando a arquitetura de microsserviços. Cada microsserviço pode se concentrar em um único recurso de negócios (por exemplo, carrinho de compras, pesquisa, avaliação do cliente). Cada um deles pode ser um serviço separado escrito em diferentes linguagens de programação, implementado em infraestrutura diferente e gerenciado por equipes diferentes.

Cada serviço se comunica com os outros usando um protocolo leve. Para uma camada 3, todos nós conhecemos o framework Model View Controller (MVC) . Sidecar, Ambassador e Adapter são alguns dos frameworks compatíveis com arquiteturas de microsserviços.

Arquitetura de microsserviços versus arquitetura monolítica

Na arquitetura monolítica, todos esses componentes coexistem como um único módulo gerenciado (principalmente) por uma única equipe, tudo é agrupado. Se você precisar atualizar, precisará implementar a aplicação toda, e isso atrasa as mudanças em aplicativos complexos maiores. Para aplicações menores, a arquitetura monolítica geralmente é a melhor solução.

Microsserviços, contêineres e Kubernetes

Uma das melhores opções para criar e executar arquiteturas de aplicações de microsserviços é usar contêineres. Os contêineres encapsulam um ambiente de tempo de execução de virtualização leve para sua aplicação e permitem que você mova a aplicação da área de trabalho do desenvolvedor até a implementação na produção. É possível executar contêineres em máquinas virtuais ou máquinas físicas na maioria dos sistemas operacionais disponíveis. Os contêineres apresentam um ambiente de software consistente e você pode encapsular todas as dependências da sua aplicação como uma unidade implementável. Os contêineres podem ser executados em um notebook, em um bare metal server ou em uma nuvem pública.

Muitas organizações usam Kubernetes para gerenciar contêineres e garantir que não haja downtime. O Kubernetes fornece orquestração de contêineres em vários hosts e é usado para o gerenciamento do ciclo de vida dos contêineres. Você pode automatizar a implementação, dimensionar automaticamente sua aplicação e construir e enviar rapidamente usando o Kubernetes.

Para aprofundar-se no Kubernetes, assista ao nosso vídeo "Kubernetes explicado":

Red Hat OpenShift é uma das principais plataformas de contêineres corporativos de nuvem híbrida mais populares. Muitos provedores de nuvem oferecem contêineres como serviço (CaaS). Alguns dos outros mecanismos do Kubernetes disponíveis são o IBM Cloud Kubernetes Service, o Kubernetes de código aberto, o AWS (EKS, ECS e Fargate), o Google GKS e o Azure AKS.

Normalmente, cada microsserviço é construído por uma pequena equipe diferente, que escolhe sua linguagem de programação e cronograma de implementação. Uma malha de serviço como o Istio é usada pelas empresas para controlar a comunicação entre os microsserviços e o gerenciamento. Em uma malha de serviço, as solicitações são roteadas por meio de proxies (como o Sidecar) entre microsserviços.

2. Arquitetura nativa da nuvem

A arquitetura nativa da nuvem foi projetada especificamente para o planejamento de aplicações a serem implementados na nuvem, e os microsserviços são uma parte crítica.

Nativo da nuvem é uma abordagem de criação e execução de aplicações que explora as vantagens do modelo de fornecimento computação em nuvem. Nativo da nuvem é um termo usado para descrever ambientes baseados em contêineres e se trata de como as aplicações são criadas e implementadas, não onde.

Tecnologias nativas da nuvem nos capacitam a executar aplicação em nuvens públicas, privadas e nuvem híbrida. O desenvolvimento nativo da nuvem é essencial para levar as aplicações ao mercado rapidamente. ele ajuda pessoas, processos e tecnologias a criar, implementar e gerenciar aplicativos prontos para a nuvem.

O modelo de arquitetura nativo da nuvem usa DevOps, integração contínua (CI), entrega contínua (CD), microsserviços e contêineres. A maioria das empresas utiliza a  metodologia de12 fatores para projetar aplicações nativas em nuvem escaláveis e robustas.

Na nuvem, as aplicações devem ser capazes de serem executadas simultaneamente em vários nós, compartilhar um estado de configuração/sessão, ter um mecanismo de registro centralizado e ser capazes de serem implementados usando DevOps e um processo de CI/CD. Muitos provedores de nuvem fornecem diretrizes para o desenvolvimento nativo da nuvem: a Amazon Web Services (AWS) tem seu framework bem arquitetado, o Google tem vários guias sobre como criar aplicações nativas da nuvem e o Microsoft Azure tem seu guia de padrões da nuvem.

Normalmente, aplicações nativas da nuvem são sem estado por natureza. Os serviços se comunicam entre si usando protocolos ou mensagens baseados em REST. API Gateway, Container Registry, middleware orientado a mensagens (MOM: Publicar/Assinar ou Solicitar/Resposta), a malha de serviço e orquestrações podem fazer parte da arquitetura nativa da nuvem.

3. Arquitetura sem servidor orientada a eventos

A arquitetura orientada a eventos (EDA) é baseada em sistemas desacoplados que são executados em resposta a eventos. Uma arquitetura baseada em eventos usa eventos para acionar e comunicar entre serviços desacoplados. A EDA está aqui há muito tempo, mas agora tem mais relevância na nuvem.

Então, o que há de novo? Se usado corretamente, pode proporcionar um aumento significativo na agilidade, economia de custos e benefícios operacionais. A EDA distribuída sem servidor pode executar códigos conhecidos como funções que são dimensionadas automaticamente em resposta a uma API REST ou a um acionador de evento.

O modelo sem servidor não exige gerenciamento de servidor. O modelo sem servidor também é rapidamente escalável (portanto, atualizações e implementações rápidas são possíveis) e é sem estado.

Veja a seguir alguns dos serviços sem servidor em nuvem disponíveis de diferentes provedores de nuvem:

Tipos de sem servidor

  • Funções como serviço (FaaS): Fazer upload de partes da funcionalidade para a nuvem e permitir que essas partes sejam executadas de forma independente.
  • Back-end como serviço (BaaS): Utilizar serviços de terceiros, como gerenciamento de aplicação, gerenciamento de banco de dados e armazenamento de nuvem.
  • Serviço de back-end móvel como serviço (MBaaS): funções para aplicações móveis.

4. Arquitetura baseada em nuvem

Como podemos fazer com que aplicações monolíticas funcionem bem em um ambiente de nuvem? A arquitetura baseada em nuvem é mais adequada para criar uma aplicação web moderna (sites estáticos/dinâmicos), implementar uma aplicação web, conectar-se a um banco de dados e analisar o comportamento do usuário.

Uma arquitetura de aplicação tradicional baseada em nuvem envolve balanceadores de carga, servidores web, servidores de aplicação e bancos de dados. Ela pode se beneficiar de funcionalidades de nuvem, como elasticidade de recursos, rede definida por software, provisionamento automático, alta disponibilidade e escalabilidade.

Esse tipo de arquitetura é ideal para organizações que não precisam se preocupar em manter um servidor. The serverless functions support different programming languages, such as PHP, Java, .NET, Node.js, Python, Ruby, Docker e Go.

O API Gateway é um serviço importante que facilita a criação e publicação de APIs seguras para os desenvolvedores. As APIs atuarão como uma porta de entrada para que as aplicações acessem dados e lógica de negócios. Ele também cuida da autorização e do controle de acesso. Os desenvolvedores usam o API Gateway para invocar diferentes funções sem servidor para diferentes chamadas de API.

Como decidir qual modelo de arquitetura é melhor para sua aplicação

A decisão que você toma ao escolher um modelo de arquitetura pode influenciar o sucesso ou o fracasso de seu projeto. Você deve fazer sua escolha com base na sua aplicação e em requisitos não funcionais. Por exemplo, você não escolhe o transporte aéreo quando deseja viajar apenas alguns quilômetros.

Considere o seguinte antes de escolher uma arquitetura para o projeto do seu aplicativo:

  • A prioridade é monolítica ou microsserviçoa? (Para projetos menores com um requisito simples de aplicação, o monolítico pode ser a escolha certa.)
  • Sua equipe está pronta para utilizar microsserviços?
  • Sua equipe já tem algum processo de DevOps e CI/CD baseado na nuvem?
  • Qual é seu modelo de hospedagem? Privado, público, híbrido?
  • Como a arquitetura das aplicações afeta seu projeto?
  • Uma combinação de vários modelos de arquitetura funciona para você?
  • Você precisa de persistência e sessões para suas aplicações?

Resumo

A arquitetura de aplicação da web continua evoluindo para atender aos requisitos de negócios digitais e ao ambiente de infraestrutura de TI em constante mudança. Tecnologias como inteligência artificial, análise de dados, automação, robótica avançada, edge computing, blockchain, Internet das coisas (IoT), e APIs estão redefinindo o que é possível em muitos setores. A crescente complexidade na infraestrutura, nas aplicações e no tamanho dos dados exige novas abordagens de arquitetura. A maioria das empresas está adotando uma abordagem multinuvem, usando um ou mais provedores de nuvem. As empresas estão consumindo serviços de nuvem por meio de modelos privados, públicos ou híbridos com SaaS, PaaS, ou IaaS.

Anteriormente, a implementação de aplicações era um processo difícil e não podia ser feito durante o horário comercial normal. No entanto, diferentes métodos de implementação (como implementação azul-verde e implementação canário), juntamente com DevOps e CI/CD (integração contínua e entrega contínua), agora permitem a implementação a qualquer momento, sem interrupções de aplicação.

Arquiteturas monolíticas ainda são válidas para muitas aplicações, mas a arquitetura certa deve ser usada para seu caso de uso digital para alcançar agilidade e tempo de lançamento no mercado. Para uma aplicação simples, considere escolher uma abordagem monolítica tradicional. Os padrões nativos da nuvem ou de microsserviços funcionam muito bem para evoluir aplicações com complexidades. Faz sentido usar a arquitetura de microsserviços quando você tem várias equipes experientes que usam vários idiomas e cronogramas de implementação. Uma comparação entre a aplicação tradicional de 3/N camadas e os modelos de arquitetura baseados em nuvem é fornecida abaixo para referência.

Autora

Ravi Saraswathi

IBM Chief Architect

IBM Blog

Soluções relacionadas
IBM Enterprise Application Service for Java

Um serviço de locatário único, totalmente gerenciado, para desenvolver e entregar aplicações Java.

Explore os aplicativos em Java
Soluções de DevOps

Utilize softwares e ferramentas de DevOps para desenvolver, implementar e gerenciar aplicações nativas da nuvem em diversos dispositivos e ambientes.

Explore as soluções de DevOps
Serviços de desenvolvimento de aplicações empresariais

Com o desenvolvimento de aplicações na nuvem você só constrói uma única vez, itera rapidamente e implementa em qualquer lugar.

Serviços de desenvolvimento de aplicações
Dê o próximo passo

Os serviços de consultoria de desenvolvimento de aplicações da IBM® Cloud oferecem orientação de especialistas e soluções inovadoras para simplificar sua estratégia em relação à nuvem. Trabalhe com os especialistas em nuvem e desenvolvimento da IBM para modernizar, escalar e acelerar suas aplicações, trazendo resultados transformadores para os seus negócios.

Explore os serviços de desenvolvimento de aplicações Comece a criar com a IBM® Cloud sem custo