Login / Registre-se Account

Aplicações nativas em nuvem

O que é a arquitetura da aplicação?

Definimos como arquitetura as técnicas e os padrões usados para projetar e desenvolver uma aplicação. Ela fornece um roadmap e práticas recomendadas a serem seguidos durante esse desenvolvimento para que você tenha uma aplicação bem-estruturada.

Os padrões de design de software ajudam no desenvolvimento de uma aplicação. Eles descrevem uma solução reproduzível para um problema.

Os padrões podem ser vinculados para criar arquiteturas de aplicação mais genéricas. Em vez de criar a arquitetura do zero, você pode usar padrões de design existentes, garantindo que tudo funcione da maneira correta.

A arquitetura de uma aplicação inclui serviços de front-end e back-end. O desenvolvimento de front-end tem como foco a experiência do usuário da aplicação, já o de back-end se concentra em fornecer acesso aos dados, serviços e outros sistemas atuais responsáveis pelo funcionamento dela.

A arquitetura é o ponto de partida ou o roadmap para desenvolver uma aplicação. No entanto, você precisa escolher determinados aspectos de implementação não definidos em uma arquitetura. Por exemplo, como uma etapa inicial, escolha a linguagem de programação para escrever a aplicação.

Há muitas linguagens de programação usadas no desenvolvimento de softwares. Algumas delas são utilizadas na criação de determinados tipos de aplicações, como o Swift para aplicações mobile ou o JavaScript para desenvolvimento de front-end.

No desenvolvimento de aplicações web, o JavaScript usado com HTML e CSS é a linguagem de programação mais usada no momento.

Outras linguagens de programação conhecidas incluem o Ruby, Python, TypeScript, Java, PHP, SQL, entre outras. A opção mais apropriada para você depende do tipo da aplicação, dos recursos de desenvolvimento disponíveis e dos requisitos.

Tradicionalmente, as aplicações eram escritas como uma unidade de código em que todos os componentes tinham os mesmos recursos e espaço de memória. Esse tipo de arquitetura é conhecido como um monólito.

Já as arquiteturas modernas de aplicação costumam ser mais levemente acopladas. Elas usam microsserviços e interfaces de programação de aplicações (APIs) para conectar serviços, oferecendo a base para as aplicações nativas em nuvem.

Com o desenvolvimento nativo em nuvem, você acelera a criação de novas aplicações, otimiza as atuais e proporciona uma experiência de gerenciamento automatizada e desenvolvimento consistente em nuvens privadas, públicas e híbridas.

Como escolher uma arquitetura de aplicação

Ao avaliar a arquitetura atual ou decidir qual é a mais adequada para uma nova aplicação, determine primeiro seus objetivos estratégicos.

Depois, crie uma arquitetura que esteja alinhada a esses objetivos, em vez de escolher primeiro a arquitetura e tentar adequar uma aplicação a essa estrutura.

Pense na frequência com que você quer lançar atualizações para atender às necessidades operacionais e dos clientes, além das funcionalidades exigidas pelos objetivos dos negócios e desenvolvimento.

A habilidade de fornecer novos serviços e funcionalidades aos clientes com rapidez é um dos principais diferenciais competitivos que uma empresa pode ter. E, com o desenvolvimento acelerado, as empresas disponibilizam novas funcionalidades com mais frequência e lançam atualizações assim que uma vulnerabilidade é descoberta.

Há muitos tipos diferentes de arquiteturas de aplicação. No entanto, com base na relação entre os serviços, os mais usados hoje em dia são: as monolíticas e em N camadas (fortemente acopladas), microsserviços (desacoplada) e orientada a eventos ou serviços (levemente acopladas).

Arquitetura em camadas ou N camadas

É um tipo de arquitetura tradicional muito usado para desenvolver aplicações empresariais e on-premise. Frequentemente, ele é associado às aplicações legadas.

Para compor a aplicação, esse tipo de arquitetura usa diversas camadas que desempenham as próprias tarefas. Geralmente, são utilizadas três camadas, mas esse número pode ser maior.

Com as camadas, é possível gerenciar dependências e executar funções lógicas. Nesse tipo de arquitetura, as camadas são organizadas na horizontal e só podem chamar uma camada que está abaixo delas.

A camada só poderá chamar aquela que estiver logo abaixo dela ou em posições mais inferiores.

Arquitetura monolítica

Esse tipo de arquitetura também é associado a sistemas legados. Ele é um único stack de aplicações que contém todas as funcionalidades delas. Essa arquitetura é fortemente acoplada, tanto na interação entre os serviços como na forma que eles são desenvolvidos e fornecidos.

Quando você atualiza ou escala um aspecto da aplicação monolítica, isso a afeta inteiramente e impacta sua infraestrutura subjacente.

Para realizar apenas uma alteração no código, você precisa relançar a aplicação inteira. Por isso, as atualizações e os novos lançamentos costumam ocorrer apenas uma ou duas vezes por ano. Além disso, elas incluem somente manutenção geral, em vez do lançamento de novas funcionalidades.

Em comparação, as arquiteturas mais modernas tentam separar os serviços por funcionalidade ou recursos empresariais para fornecer mais agilidade.

Arquitetura de microsserviços

Os microsserviços são uma arquitetura e uma abordagem para escrever software. Com eles, as aplicações são desmembradas em componentes menores e independentes. Cada um dos componentes ou processos é um microsserviço.

Os microsserviços são distribuídos e levemente acoplados, de modo que não impactem uns aos outros. Isso traz benefícios de escalabilidade dinâmica e tolerância a falhas. Logo, os serviços individuais podem executar failover sem afetar os outros e ser escalados conforme necessário, sem precisar de uma infraestrutura pesada.

O objetivo de usar a arquitetura de microsserviços é fornecer software de alta qualidade com mais rapidez. É possível desenvolver vários microsserviços ao mesmo tempo. E, como os serviços são implantados de maneira independente, não é necessário recriar ou reimplantar a aplicação inteira quando alterações são feitas.

Assim, mais desenvolvedores trabalham em serviços separados ao mesmo tempo, em vez de atualizar toda a aplicação. Isso acelera o tempo de desenvolvimento e proporciona a capacidade de lançar novas funcionalidades com mais frequência.

Com as APIs e as equipes de DevOps, os microsserviços em containers são os pilares das aplicações nativas em nuvem.

Arquitetura orientada a eventos

Em um sistema orientado a eventos, os componentes de captura, comunicação, processamento e persistência de eventos formam a estrutura básica da solução. Isso é diferente do modelo tradicional orientado a solicitações.

Um evento é qualquer ocorrência ou mudança de estado significativa no software ou hardware de um sistema. A origem de um evento pode ser interna ou externa.

Com a arquitetura orientada a eventos, você usa uma quantidade mínima de acoplamentos, o que a torna uma boa opção para arquiteturas de aplicações distribuídas modernas.

A arquitetura orientada a eventos é composta de produtores e consumidores de eventos. Um produtor detecta ou percebe um evento e o representa como uma mensagem. Ele não conhece o consumidor nem o resultado do evento.

Após um evento ser detectado, ele é transmitido do produtor para o consumidor por meio de canais, em que uma plataforma processa eventos de maneira assíncrona.

A arquitetura orientada a eventos pode ser baseada em um modelo de publicação/subscrição (pub/sub) ou de transmissão de eventos.

O modelo pub/sub é baseado nas subscrições em uma transmissão de evento. Nesse modelo, após um evento ocorrer ou ser publicado, ele é enviado aos subscritores que precisam ser informados.

Ele é diferente do modelo de transmissão de eventos, em que os consumidores não precisam de subscrição no evento. Na verdade, eles podem ler a partir de qualquer parte da transmissão e ingressar nela a qualquer momento.

À medida que ocorrem, os eventos são capturados a partir de origens como redes, aplicações e dispositivos de Internet das Coisas (IoT). Isso permite que produtores e consumidores de eventos compartilhem informações sobre status e resposta em tempo real.

Arquitetura orientada a serviços

A arquitetura orientada a serviços (SOA) é um tipo de design de software avançado, similar aos microsserviços.

Ela estrutura as aplicações em serviços distintos e reutilizáveis que se comunicam por meio de um Enterprise Service Bus (ESB).

Nessa arquitetura, os serviços individuais, cada um deles organizado em torno de um processo de negócios específico, aderem a um protocolo de comunicação, como SOAP, ActiveMQ ou Apache Thrift, para que sejam expostos por meio de um ESB. Juntos, esse conjunto de serviços integrado por meio de um ESB é usado por uma aplicação de front-end para agregar valor à empresa ou ao cliente.

Como a Red Hat ajuda você no desenvolvimento de aplicações

Com as soluções Red Hat, você aprimora a agilidade dos seus negócios. Isso é possível ao desmembrar as aplicações monolíticas em microsserviços, gerenciá-las, orquestrá-las e processar os dados criados. Assim, suas equipes fornecem soluções de alta qualidade aos clientes com mais rapidez.

Você consegue criar com facilidade aplicações de negócios nativas em nuvem que sejam ágeis e escaláveis, bem como integrá-las desde o início ao restante da infraestrutura empresarial.

Você não precisa reformular totalmente os sistemas atuais para ter benefícios concretos. Com a tecnologia open source, padrões abertos e nossa vasta experiência, ajudamos você a encontrar a melhor solução baseada em microsserviços para sua organização.

Nosso portfólio open source, incluindo o Red Hat® Enterprise Linux®, Red Hat OpenShift® e Red Hat Middleware, dá à Red Hat uma posição privilegiada para formar parcerias com empresas em busca de transformação para competir em mercados dinâmicos e orientados por software.

A base de aplicações nativas em nuvem

Red Hat OpenShift

Execute microsserviços em uma plataforma de containers baseada em nuvem e voltada para desenvolvedores, que proporciona integração contínua com orquestração empresarial por meio de Kubernetes.

Red Hat Middleware

O Red Hat Middleware funciona com o Red Hat OpenShift para fornecer um ambiente integrado e consistente para implantar, entregar e escalar suas aplicações nativas em nuvem em qualquer ambiente e em todo o ciclo de vida da aplicação.

Você pode fazer muito mais com aplicações nativas em nuvem