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
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.
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, há 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.
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.
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.
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:
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.
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.
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.
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.