Visão geral
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.
O serviços de front-end e back-end fazem parte da arquitetura da aplicação. 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 existentes 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.
Atualmente, o uso do JavaScript com HTML e CSS é uma das linguagens de programação mais populares para desenvolvimento de aplicação web.
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 existentes e oferece 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 pelo 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. Ele é fortemente acoplado, tanto na interação entre os serviços como na forma que é desenvolvido e fornecido.
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, podem incluir apenas 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.
Open Technology Sessions
Conheça a série de webinars da Red Hat em português feita para você descobrir como inovar. Aprenda sobre Automação, Infraestrutura, Plataforma de Aplicações, Cloud Services, Inteligência Artificial e muito mais!
Arquitetura orientada por 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ço (SOA) é um tipo de design de software avançado, similar à dos 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, seguem 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.
Você pode fazer muito mais com aplicações nativas em nuvem.
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 qualidade aos clientes com mais rapidez.
Você consegue criar com facilidade novas 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.
Assista a esta série de webinars para ter uma perspectiva dos especialistas sobre como criar, executar, implantar e modernizar aplicações com uma plataforma de dados de nível empresarial no Red Hat® OpenShift®.
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 de tecnologias open source, que inclui o Red Hat® Enterprise Linux®, o Red Hat OpenShift e o Red Hat Application Services, 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.