Skip to Content
Guia

O que são aplicativos modernos? Um guia definitivo

Os aplicativos modernos aproveitam tecnologias nativas da nuvem, como contêineres, com práticas recomendadas ágeis e DevOps para oferecer portabilidade, confiabilidade e agilidade em grande escala.

O que são Containers?

Um aplicativo moderno é qualquer aplicativo desenvolvido e implantado com as tecnologias, metodologias de desenvolvimento e práticas recomendadas mais recentes disponíveis para oferecer uma experiência de usuário ideal. Os aplicativos modernos de hoje são nativos da nuvem. Eles são desenvolvidos como microsserviços que se comunicam uns com os outros por meio de APIs, em oposição a aplicativos monolíticos fortemente acoplados. Esses aplicativos baseados em microsserviços normalmente aproveitam tecnologias nativas da nuvem, como contêineres e Kubernetes.

Os aplicativos modernos são desenvolvidos com agilidade, escalabilidade, portabilidade e confiabilidade em mente.

São microsserviços em vez de monolíticos, tornando-os expansíveis, reutilizáveis e mais fáceis de usar.

Eles são frequentemente desenvolvidos de acordo com metodologias de desenvolvimento ágeis e práticas recomendadas de DevOps, com grande ênfase na automação em todo o fluxo de integração e entrega integração contínua (CI/CD).

Então, como é isso em termos de tecnologias atuais? Neste guia, veremos mais detalhadamente os vários recursos que tornam um aplicativo moderno.

Leia mais: Desenvolvimento de aplicativos modernos desmistificados.

Artigos relacionados

Artigo de conhecimento
Como os aplicativos modernos reduzem o custo total de propriedade

Quais são os benefícios dos Containers?

Na abordagem tradicional para o desenvolvimento de aplicativos, os aplicativos são desenvolvidos com bases de código únicas e totalmente integradas. Em contraste, uma arquitetura de microsserviços envolve projetar um aplicativo como uma coleção de serviços acoplados livremente.

Essa abordagem de desenvolvimento tem muitas vantagens:

  • Código altamente testável
  • Mais fácil de depurar, manter e atualizar
  • Controle granular sobre o provisionamento de recursos de armazenamento e computação
  • Melhor isolamento de falhas, o que leva a aplicativos mais resilientes
  • Portátil e implantável de forma independente. Os componentes podem ser dissociados de ambientes de software e hardware com tecnologias de virtualização, como contêineres.

Como você está lidando com uma série de serviços modulares implantáveis de forma independente, é possível trabalhar em um serviço sem interromper os outros. A capacidade de criar, testar, implantar, manter e fazer upgrade em um nível de serviço por serviço também reduz consideravelmente o tempo de desenvolvimento.

Quem se beneficia do uso Containers?

A arquitetura de microsserviços permite que os desenvolvedores liberem todo o potencial das tecnologias de virtualização, como contêineres e máquinas virtuais. Vamos dar uma olhada em algumas dessas tecnologias essenciais de virtualização:

  • Máquinas virtuais (VMs, Virtual Machines): Habilite a virtualização no nível de hardware (incluindo OS e hardware). Um hipervisor permite que um único servidor execute vários aplicativos com diferentes dependências do sistema operacional.
  • Containers: Habilite a virtualização no nível do software (ainda dependente de um kernel do OS host). Unidades padronizadas de software que contêm todo o código e dependências, incluindo binários, bibliotecas e arquivos de configuração, são necessárias para que um serviço seja executado.
  • Volumes virtuais (vVols): São datatores dissociados. Os aplicativos em contêiner podem se beneficiar muito do armazenamento em contêiner. Os vVols podem mapear 1:1 para microsserviços em contêiner, evitando gargalos no banco de dados central.

A virtualização pode ajudar a melhorar os benefícios de uma arquitetura de microsserviços para o desenvolvimento de aplicativos modernos, dando granularidade sobre o grau de isolamento que você transmite aos seus microsserviços.

Você pode aproveitar máquinas virtuais para executar serviços com diferentes dependências de OS na mesma máquina. Ou você pode usar contêineres e vVols para aumentar consideravelmente o número de serviços que pode executar em uma única máquina.

Mais importante, a virtualização facilita o dimensionamento automático do provisionamento e da implantação de microsserviços e seus recursos sob demanda.

Saiba mais sobre as desvantagens entre máquinas virtuais e contêineres.

Containers e armazenamento de dados

Para entender por que você pode querer emparelhar contêineres stateless com arquiteturas serverless, precisaremos definir alguns termos:

  • Sem monitoramento de estado: Um aplicativo fica sem estado se não lê ou armazena informações sobre seu estado de um tempo de execução para o próximo (por exemplo, um aplicativo de calculadora lê zero quando você o reabre, sem recordar a última vez que um cálculo foi realizado).
  • Sem servidor: Um aplicativo não tem servidor se um desenvolvedor depender de um terceiro, como um provedor de nuvem, para gerenciar recursos de servidor, abstraindo os detalhes do gerenciamento de servidor.

Por definição, os primeiros contêineres eram stateless porque permitiam que eles entrassem em existência quando necessário, fizessem seu trabalho e desaparecessem, liberando recursos para o restante do aplicativo. Da mesma forma, os aplicativos modernos mantêm os contêineres simples, permitindo que eles entrem em funcionamento conforme a necessidade.

Quando combinado com uma arquitetura serverless, é possível que os desenvolvedores de aplicativos chamem funções que provisionem recursos sob demanda sem ter que gerenciar a infraestrutura subjacente. Combinar contêineres stateless com arquiteturas serverless simplifica muito o desenvolvimento de aplicativos altamente escaláveis. Isso é especialmente adequado para ambientes de computação de borda em que os dispositivos de borda estão constantemente transmitindo dados em resposta a eventos. A combinação stateless/serverless facilita os ajustes dos aplicativos em tempo real em resposta às informações em tempo real.

Dito isso, quanto mais complexo for seu aplicativo, maior a probabilidade de que você ainda precise de armazenamento persistente para seus microsserviços em contêiner. Por esse motivo, as soluções de armazenamento de dados de contêineres, como a Portworx ®, simplificam a entrega de armazenamento persistente para aplicativos stateful em contêiner. O mapeamento individual de armazenamentos de dados ágeis pode melhorar a escalabilidade e permitir que o estado seja preservado conforme seu aplicativo é executado.

O que é orquestração de contêineres e gerenciamento de contêineres?

Aplicativos modernos são aplicativos nativos da nuvem. Com a infraestrutura subjacente necessária para apoiá-los, eles podem colher todos os benefícios dos ecossistemas de nuvem, como Amazon Web Services (AWS), Google Cloud e Microsoft Azure.

Então, o que torna um aplicativo nativo da nuvem? A combinação de uma arquitetura de microsserviços com tecnologias de virtualização e computação sem servidor significa que aplicativos modernos podem ser provisionados dinamicamente com base na demanda do usuário. Esses microsserviços podem se comunicar de forma independente por meio de APIs gerenciadas por meio de uma camada de serviços.

Os aplicativos nativos de nuvem aproveitam ao máximo os modelos de implantação de computação em nuvem, como software como serviço (SaaS), plataforma como serviço (PaaS) e infraestrutura como serviço (IaaS). Esses modelos substituem o modelo tradicional de pagamento CAPEX, no qual você paga um preço fixo pelos recursos que pode ou não usar com modelos de pagamento OPEX, no qual você paga pelos recursos conforme os usa.

Saiba mais sobre o que significa ser nativo da nuvem.

O que é Docker?

Uma grande diferença entre aplicativos modernos e aplicativos legados está em suas filosofias de desenvolvimento e implantação.

Na abordagem tradicional para o desenvolvimento de aplicativos, você começa com um plano abrangente linear e se mantém nele. Fluxos de desenvolvimento desde a coleta de requisitos até fases claramente definidas até a implantação do aplicativo completo na produção. A comunicação entre desenvolvedores, operadores, partes interessadas e usuários finais é limitada por longos ciclos de vida de desenvolvimento de software (SDLC, Software Development Life Cycle). As bases de código são monolíticas; os patches são maiores; e as tentativas de implantar uma correção de bugs, adicionar um novo recurso ou atualizar a tecnologia subjacente são vulneráveis a interrupções demoradas de serviços ou efeitos colaterais inesperados que podem ser difíceis de solucionar.

A solução avançada de aplicativos? Migração de sistemas monolíticos para microsserviços com práticas recomendadas ágeis e DevOps.

O desenvolvimento ágil adota uma abordagem iterativa para o desenvolvimento de software. Quando combinado com microsserviços , isso permite que os desenvolvedores criem, testem e implantem recursos incrementalmente em várias iterações de design. O SDLC é mantido apertado, permitindo ciclos de feedback mais rígidos de comunicação entre usuários finais, partes interessadas e desenvolvedores. As metodologias populares de desenvolvimento ágil incluem Scrum, programação extrema (XP, Extreme Programming) e desenvolvimento orientado por testes (TDD, Test-driven Development).

DevOps é uma prática e cultura de desenvolvimento de software que integra perfeitamente as equipes de desenvolvedores e operações em uma organização. O SDLC é reimaginado como um fluxo de CI/CD que usa gerenciamento de configuração, automação e monitoramento em tempo real para simplificar o desenvolvimento, os testes e a implantação de software.

Os aplicativos modernos devem estar sempre altamente disponíveis e com desempenho. Eles não podem se dar ao luxo de ter interrupções no serviço causadas por patches, atualizações ou bugs monolíticos. Por esse motivo, os aplicativos modernos aproveitam metodologias de desenvolvimento ágeis e práticas recomendadas de DevOps para garantir que permaneçam atualizados e competitivos em um cenário digital em rápida mudança.

Saiba mais sobre como os aplicativos modernos reduzem o tempo de lançamento do produto no mercado.

O que é Kubernetes?

Em um mundo cada vez mais digital, a proteção de dados é prioridade. Os benefícios da proteção de dados dos aplicativos modernos incluem:

  • Isolamento de código, o que dificulta que os hackers comprometam todo o sistema 
  • Arquitetura modular, que permite testes de segurança incrementais mais rigorosos em todo o SDLC. 
  • Os pipelines de CI/CD, que garantem ciclos de feedback mais rígidos entre desenvolvedores e usuários, permitem que  os desenvolvedores corrijam rapidamente as vulnerabilidades conforme elas aparecem
  • Recuperação simplificada de desastres: é possível fazer backup e restaurar os microsserviços de forma independente, sem interrupção ou interrupção de todo o aplicativo
  • Melhores práticas de segurança, como DevSecOps

Os aplicativos modernos estão equipados para lidar com ameaças avançadas à segurança. Ciclos de desenvolvimento e ciclos de feedback de comunicação mais rigorosos permitem que os desenvolvedores identifiquem e resolvam bugs e vulnerabilidades antes que possam ser explorados.

Leia mais: Os benefícios da proteção de dados dos aplicativos modernos

11/2020
VMware Hybrid Cloud Solution Brief | Solution Brief
Hybrid cloud and container adoption are growing rapidly. Advance to an effortless, optimized VMware environment.
Resumo da solução
3 páginas
ENTRE EM CONTATO
Dúvidas ou comentários?

Tem dúvidas ou comentários sobre produtos ou certificações da Pure?  Estamos aqui para ajudar.

Agende uma demonstração

Agende uma demonstração ao vivo e veja você mesmo como a Pure pode ajudar a transformar seus dados em resultados poderosos. 

Telefone: 55-11-2844-8366

Imprensa: pr@purestorage.com

 

Sede da Pure Storage

Av. Juscelino Kubitschek, 2041

Torre B, 5º andar - Vila Olímpia

São Paulo, SP

04543-011 Brasil

info@purestorage.com

FECHAR
Seu navegador não é mais compatível.

Navegadores antigos normalmente representam riscos de segurança. Para oferecer a melhor experiência possível ao usar nosso site, atualize para qualquer um destes navegadores mais atualizados.