Serverless vs Containers

Serverless e conteinerização têm sido dois dos maiores chavões de DevOps nos últimos anos, e por um bom motivo. Nos casos de uso certos, ambos podem melhorar o desempenho e reduzir os custos. No entanto, apesar de sua popularidade, nem todos entendem as diferenças entre a computação sem servidor e os contêineres.

Aqui, para ajudá-lo a começar a trabalhar com as duas tecnologias, veremos o que cada uma delas é, compararemos, explicaremos como elas se complementam e exploraremos o tópico crítico de segurança de contêineres e sem servidor.

Avaliação gratuita do Workload Protection Baixar o EBook Serverless

O que são contêineres?

Os contêineres são unidades leves e imutáveis de software que incluem todas as dependências e o código para executar um aplicativo.

Os contêineres são executados em cima de "tempos de execução de contêineres" (às vezes chamados de mecanismos de contêineres) que podem ser executados em uma ampla variedade de sistemas operacionais e plataformas. Como os tempos de execução do contêiner fornecem todos os recursos do sistema de que um contêiner precisa, as complexidades operacionais da implantação de um aplicativo em um sistema operacional tradicional são minimizadas.

Os contêineres também são altamente portáteis. Em qualquer lugar em que exista o tempo de execução do contêiner, as equipes podem implementar uma imagem de contêiner. Além disso, como os contêineres incluem apenas o que é necessário para executar um aplicativo, eles são mais leves e mais rápidos do que alternativas como a máquina virtual (virtual machine, VM).

O exemplo mais popular de uma plataforma de contêineres é o Docker. No entanto, o Docker não é a única plataforma de contêineres. Por exemplo, o Linux Container (LXC) é anterior ao Docker e ainda é usado atualmente. Além disso, há muitas ferramentas que complementam os contêineres, como o Kubernetes (K8s), que é usado para orquestrar e gerenciar a implantação de contêineres em escala.

O que é Serverless?

Sem servidor é um modelo de computação que executa código sob demanda sem a necessidade de provisionar ou gerenciar a infraestrutura.

Apesar do que o nome indica, servidores envolvidos na computação sem servidor. No entanto, as empresas não precisam se preocupar com a infraestrutura do servidor. Em vez disso, as equipes de desenvolvimento simplesmente implantam seu código em uma plataforma sem servidor e só são cobradas quando esse código é executado e consome recursos do servidor.

Como as empresas pagam apenas pelo tempo em que estão usando os recursos do servidor (por exemplo, Unidade de processamento central, CPU), o serverless pode ser uma ótima maneira de minimizar o custo de implementação de aplicativos com grandes picos e quedas de uso. Essa é uma mudança fundamental em relação à execução de servidores bare-metal, máquina virtual (VM) ou contêineres. Não há custo para nenhum tempo ocioso, as cobranças só ocorrem quando um aplicativo está ativamente em execução e usando recursos.

Além disso, a complexidade operacional diminui porque toda a infraestrutura é abstraída pelo provedor da plataforma sem servidor. As equipes de DevOps simplesmente se concentram em seu código. Exemplos populares de plataformas de computação sem servidor incluem o AWS Lambda, o Azure App Service e o nuvem Run do Google.

Casos de uso comuns

Agora que entendemos o que são a computação sem servidor e os contêineres, vamos dar uma olhada em alguns dos casos de uso mais populares.

Os casos populares de uso de contêineres incluem:

  • microsserviço. Os contêineres são os blocos de construção da arquitetura de microsserviço. Como os contêineres são portáteis, leves e fáceis de implantar, eles são uma excelente opção para criar microsserviços com acoplamento frouxo.
  • CI/CD. Os contêineres oferecem às equipes de DevOps uma maneira de eliminar as diferenças de ambiente entre desenvolvimento, controle de qualidade, preparação e implantação de produção. Como resultado, eles são muito úteis em fluxos de trabalho de integração contínua/implantação contínua(CI/CD).
  • "Implantar em qualquer lugar". A maioria das empresas modernas opera em ambientes híbridos de nuvem e multinuvem. Se as empresas precisam executar um aplicativo no local ou em vários nuvens, os contêineres podem fazer o trabalho.
  • Migração de aplicativos legados. Em muitos casos, os aplicativos monolíticos legados precisam ser migrados para a nuvem. O armazenamento em contêineres facilita esse processo.

Alguns dos casos de uso sem servidor mais populares são:

  • API. As interfaces de programação de aplicativos (API), como a API REST e as implementações GraphQL, são um caso de uso muito difundido da computação sem servidor. Como as transações de API são de curta duração e podem aumentar e diminuir rapidamente, o serverless oferece uma plataforma sólida para criar back-ends de API.
  • Processamento de dados. O Serverless pode permitir o processamento de dados de várias fontes usando funções simples. Como resultado, a computação sem servidor funciona bem para equipes que precisam processar e analisar dados em escala, mas querem evitar o gerenciamento da infraestrutura.
  • IoT. A computação sem servidor oferece uma maneira direta e orientada por eventos para que os dispositivos de IoT e os sistemas externos se comuniquem de forma assíncrona.
  • Conteúdo dinâmico do site. Uma das funções de livro-texto do serverless é adicionar conteúdo dinâmico e lógica a sites estáticos. Por exemplo, o AWS Lambda é frequentemente usado para adicionar funcionalidade dinâmica a um site estático hospedado no S3.

 

Obviamente, essas são apenas algumas amostras do que é possível fazer com contêineres e computação sem servidor. De modo geral, os contêineres são úteis em qualquer lugar em que imagens portáteis, leves e imutáveis precisem ser implantadas de forma confiável. A computação sem servidor é útil em uma variedade de aplicativos em que as cargas de trabalho são altamente variáveis e a minimização do esforço de gerenciamento da infraestrutura é uma prioridade.

Computação sem servidor versus contêineres: Diferenças e como elas podem se complementar

Como podemos ver, a computação sem servidor e os contêineres têm algumas semelhanças de alto nível. Eles eliminam a complexidade e facilitam a implantação e o dimensionamento do aplicativo pelas equipes. No entanto, há várias diferenças importantes a serem consideradas, inclusive:

  • Estrutura de custos. Com os contêineres, sejam eles executados na empresa ou na nuvem, as empresas pagam por eles enquanto estiverem ativos. Com a computação sem servidor, as empresas pagam apenas pelo que usam. Para cargas de trabalho com demanda consistente, isso pode não fazer muita diferença. No caso de cargas de trabalho altamente expansíveis, isso pode levar a uma economia significativa de custos com o serverless.
  • Testabilidade. Com os contêineres, as equipes podem testar facilmente seu aplicativo em qualquer lugar. Com o serverless, as equipes ficam limitadas à plataforma de nuvem que executa as funções e não podem realizar o mesmo nível de teste em relação às funções serverless.
  • implantação. Para aumentar ou diminuir a escala de um aplicativo baseado em contêiner, os contêineres devem ser implantados ou redimensionados de alguma forma (por exemplo, usando o Kubernetes). Com o severless, o ylcode simplesmente é executado em uma plataforma "caixa preta" fornecida por um fornecedor.
  • Complexidade operacional. Esse paradigma de "caixa preta" com o serverless pode ser um grande benefício para as equipes que buscam minimizar a complexidade operacional. Na verdade, não há infraestrutura para gerenciar com o serverless. Com os contêineres, é possível transferir o gerenciamento da infraestrutura para um provedor, mas nem sempre é esse o caso.
  • Bloqueio do fornecedor. Os contêineres podem ser "executados em qualquer lugar", mas com o serverless, as empresas são altamente dependentes da plataforma que executa seu código. Por exemplo, o uso das funções do AWS Lambda torna um aplicativo mais dependente da plataforma AWS, enquanto os contêineres do Docker podem ser implantados em qualquer plataforma que possa executar o Docker.

Apesar das diferenças, os contêineres e a computação sem servidor não são necessariamente mutuamente exclusivos. Por exemplo, é possível usar o Docker para colocar funções sem servidor em contêineres. Além disso, plataformas como a nuvem Run do Google foram projetadas para implementar contêineres usando o modelo serverless de pagamento por uso.

Entendendo a segurança sem servidor versus contêineres

Como as próprias tecnologias, a segurança de contêineres vs. sem servidor é um tópico de DevSecOps com nuances.

O Serverless elimina muitas das preocupações de segurança associadas ao gerenciamento da infraestrutura, mas ainda há muitas considerações importantes sobre Segurança sem servidor envolvidas. Por exemplo, configurações inseguras de privilégios sem servidor podem criar vulnerabilidade no aplicativo. Além disso, mais funções e protocolos para permitir fluxos de trabalho sem servidor significam mais vetores de ataque em potencial a serem protegidos. O descarregamento da complexidade também vem com uma compensação de segurança: como os provedores de serviços lidam com grande parte da infraestrutura, a visibilidade da implantação sem servidor é limitada.

Por outro lado, a segurança de contêineres tem seu próprio conjunto exclusivo de desafios. Por exemplo, obter e implantar com segurança apenas contêineres confiáveis e mantê-los corrigidos pode ser um desafio operacional. Além disso, o gerenciamento de identidade e acesso (IAM) e o gerenciamento de configuração de contêineres são aspectos importantes de uma postura de segurança sólida.

Melhorando sua segurança sem servidor e de contêineres com a CheckPoint

Embora ambas as abordagens de desenvolvimento de aplicativos reduzam a complexidade, elas não eliminam a necessidade de uma postura de segurança forte, e o senhor precisa integrar a segurança aos seus processos de desenvolvimento. Seguir o princípio do menor privilégio e adotar políticas de "confiança zero" é uma parte importante para manter sua infraestrutura segura, mas as equipes de desenvolvimento também precisam da tecnologia e do conhecimento especializado para implementar as soluções de segurança corretas.

O software da CheckPoint foi criado especificamente para enfrentar esses desafios. Por exemplo, o CloudGuard oferece multi-segurança de nuvem de ponta a ponta para todos os ativos de nuvem da empresa, incluindo implantação sem servidor e baseada em contêiner. O CloudGuard oferece recursos como prevenção de ameaças, gerenciamento de postura de segurança de nuvem, proteção de carga de trabalho na nuvem (para contêineres e aplicativos sem servidor) e busca inteligente de ameaças.

Próximas etapas: Saiba mais sobre a segurança de contêineres e sem servidor

Se o senhor quiser começar a melhorar sua postura de contêiner ou de Segurança sem servidor, inscreva-se hoje mesmo para uma verificação de segurança instantânea e gratuita. A verificação pode ajudá-lo a identificar configurações incorretas que podem comprometer a segurança e a conformidade em ambientes de nuvem. Como alternativa, se quiser experimentar o CloudGuard por conta própria, o senhor pode se inscrever para uma avaliação gratuita.

Se estiver interessado em saber mais sobre a segurança de contêineres vs. sem servidor, o

O eBook Segurança sem servidor Advantage e o Guide to Container Security são um ótimo ponto de partida.

×
  Opinião
Este site usa cookies para sua funcionalidade e para fins de análise e marketing. Ao continuar a usar este site, você concorda com o uso de cookies. Para mais informações, leia o nosso Aviso de Cookies.
OK