As organizações lutam constantemente entre adotar mudanças tecnológicas para abrir novas oportunidades de negócios e proteger os negócios de novos desafios e riscos. Neste artigo, examinaremos a conteinerização e como a adoção dessa tecnologia em produtos F5 afeta profissionais de TI, arquitetos e tomadores de decisões de negócios.
Nos últimos 20 anos, a virtualização transformou a computação de servidores, permitindo que vários sistemas operacionais separados sejam executados em uma plataforma de hardware. Uma abordagem mais moderna é a conteinerização (ou virtualização do sistema operacional), que permite que vários aplicativos sejam executados em uma única instância de um sistema operacional host. Cada instância do aplicativo compartilha os binários e bibliotecas instalados na única instância do sistema operacional. A Figura 1 compara essas abordagens.
Figura 1 - Comparando máquinas virtuais com contêineres
Ao contrário das máquinas virtuais (VMs), os contêineres podem compartilhar o mesmo sistema operacional, virtualizando no nível do sistema operacional, em vez do nível do hipervisor.
Não é de surpreender que os desenvolvedores gostem de contêineres porque eles tornam o desenvolvimento e a implantação de aplicativos e a criação de microsserviços rápidos e fáceis. A conteinerização também permite maior portabilidade, pois os aplicativos em contêineres são mais fáceis de implantar em diferentes sistemas operacionais, plataformas de hardware e serviços de nuvem. Os contêineres usam menos recursos do que os aplicativos executados diretamente em sistemas operacionais hospedados em bare metal ou em máquinas virtuais.
Geralmente, a maior parte da discussão (e documentação) sobre contêineres se concentra na perspectiva de programação ou DevOps. Como profissional de TI, arquiteto de sistemas ou tomador de decisões de negócios, embora você aprecie a flexibilidade que a conteinerização pode trazer, você pode ter preocupações genuínas sobre como essa mudança afetará a administração, o gerenciamento e o monitoramento de aplicativos e serviços em seu ambiente. Você também quer garantir que a conteinerização não afete negativamente a segurança da rede e dos aplicativos.
Em um mercado cada vez mais competitivo, os sistemas de TI modernos devem oferecer benefícios comerciais realizáveis. Para atender a esse requisito, é essencial que os departamentos de TI possam aumentar seu capital de aplicativos, projetando e criando arquiteturas que apresentem não apenas mais aplicativos, mas aplicativos com maior funcionalidade, usabilidade aprimorada e integração mais fácil.
O desafio para os diretores de TI é que seus departamentos precisam oferecer maior funcionalidade sem aumentar o número de funcionários. As melhorias na produtividade agora não vêm da contratação de mais pessoas, mas dos avanços em tecnologia e automação que permitem aumentar o número de aplicativos disponíveis para os clientes, gerenciados pela mesma equipe.
A facilidade de implantação de contêineres apresenta um desafio adicional. Os desenvolvedores precisam de educação e orientação para garantir que considerem tanto a escala quanto a segurança ao criar aplicativos, e os profissionais de TI podem ajudá-los a atingir esses resultados. Aqui, você precisa pensar sobre o impacto na produção de plataformas de contêineres como Kubernetes e Docker, e como a necessidade de ser ágil não resulta em resultados indesejáveis de práticas de segurança precárias ou falha em considerar cargas de produção.
O Kubernetes é uma plataforma de código aberto para gerenciar serviços e cargas de trabalho em contêineres. O próprio Kubernetes surgiu como um sistema de orquestração e agendamento de contêineres do Google, que a empresa doou para a Cloud Native Computing Foundation, tornando o código-fonte aberto a todos. O Docker fornece um tipo semelhante de arquitetura e distribuição de código aberto, consistindo em um conjunto de Software como Serviço (SaaS) e Plataforma como Serviço (PaaS) acoplados.
Um fator essencial para proporcionar benefícios comerciais realizáveis é minimizar o tempo de geração de valor. Cada vez mais, fatores como desempenho e latência ficam em segundo plano em relação à facilidade de inserção. Consequentemente, se você tiver dois componentes, ambos com funcionalidade quase idêntica, mas um tiver desempenho mais alto enquanto o outro for mais fácil de integrar, as organizações tendem a escolher o componente que for mais fácil de integrar ao ambiente atual. À medida que a complexidade ambiental aumenta, esse preconceito provavelmente continuará.
Ao procurar implementar uma tecnologia como a conteinerização, você precisa de alguma forma de medir o valor que essa nova abordagem traz. Os fatores que afetam o valor normalmente incluem adequação, capacidade, esforço e custo. A equação a seguir fornece um exemplo de como atribuir valor relativo com base nesses fatores.
As unidades que você usa na equação são irrelevantes; o importante é que elas sejam as mesmas para cada item que você avaliar.
Essa equação destaca que a tecnologia deve ser integrada de forma contínua e que a familiaridade (ou seja, a facilidade de inserção) pode ser mais importante do que os melhores recursos ou desempenho da categoria. Consequentemente, o esforço de implantação tem um efeito de equilíbrio quando se trata de cálculos de valor geral, o que pode resultar em produtos menos capazes sendo mais atraentes para os clientes devido à sua facilidade de inserção.
Um exemplo desse efeito pode ocorrer com duas soluções de monitoramento concorrentes. O produto A tem especificações fantásticas, com os melhores registros e relatórios da categoria. Ele incorpora segurança de nível militar e é altamente gerenciável. Infelizmente, sua interface de linha de comando proprietária, suporte insuficiente para padrões abertos e falta de recursos de integração dificultam a instalação. Também é mais caro do que a maioria dos outros produtos no mercado.
Em comparação, o Produto B não chega nem perto dos recursos do seu rival, embora ainda ofereça níveis aceitáveis de monitoramento e segurança. No entanto, ele supera o produto concorrente em termos de custo e facilidade de instalação. A tabulação das pontuações de cada produto produz a tabela abaixo, com notas atribuídas de 1 a 10 para adequação, capacidade e esforço de instalação, sendo 1 a nota mais baixa e 10 a mais alta.
Produto A |
Produto B |
|
Adequação |
10 |
4 |
Capacidade |
10 |
2 |
Esforço de instalação |
10 |
2 |
Custo |
$ 1.000 |
$ 500 |
Valor |
20 |
60 |
A inserção desses números na equação acima produz a pontuação de valor listada na linha inferior da tabela.
Você pode ver como o produto menos adequado e capaz, que é cinco vezes mais fácil de instalar pela metade do preço, oferece cerca de três vezes mais valor em comparação ao seu melhor rival. Muitas organizações entendem essas considerações e estão cada vez mais usando a facilidade de instalação e integração como um fator-chave ao adotar e implantar novas tecnologias. Abordagens baseadas em contêineres podem reduzir significativamente o esforço de implantação e os custos de controle, mantendo ao mesmo tempo a adequação e a capacidade.
Com os aplicativos gerando cada vez mais valor comercial, a conteinerização fornece uma solução lógica para os desafios das práticas de implementação de TI centradas em DevOps. Os contêineres fornecem isolamento da plataforma na qual são executados e entre si, sem a sobrecarga de gerenciamento da execução de máquinas virtuais. Os desenvolvedores podem facilmente criar ambientes de aplicativos que contenham todos os binários e bibliotecas de que precisam, com os recursos de rede e gerenciamento necessários integrados. A conteinerização também simplifica os testes e a implantação de aplicativos.
Ambientes baseados em contêineres oferecem maior utilização de recursos do que computadores virtuais ao aumentar enormemente o número de instâncias de aplicativos que podem ser executadas em um servidor. Sem a sobrecarga dos sistemas operacionais host e convidado, os ambientes de contêiner fazem uso mais eficiente do tempo do processador e do espaço de memória ao compartilhar o kernel do sistema operacional. A conteinerização também oferece mais flexibilidade arquitetônica, pois a plataforma subjacente pode ser uma máquina virtual ou um servidor físico. Estratégia de produto Red Hat1 indica que quase metade dos clientes do Kubernetes que implantarem aplicativos em contêineres no futuro executarão o mecanismo de contêiner diretamente no bare metal.
A conteinerização representa o próximo avanço no caminho da computação baseada em hardware para a virtualização e multinuvem, permitindo até 100% de automação, tempos de criação de serviços em menos de um segundo e tempos de vida de serviço que podem ser medidos em segundos. É esse provisionamento e desprovisionamento imediato de serviços e microsserviços dentro de uma arquitetura de TI moderna que ambientes de contêiner como Docker, OpenShift e Kubernetes permitem.
É importante ressaltar que a conteinerização oferece um benefício essencial no mundo multiplataforma e multinuvem de hoje: a capacidade de portar aplicativos do local para a nuvem, para outro fornecedor de nuvem e de volta para o local novamente, tudo sem alterações no código subjacente. Com a interoperabilidade sendo um fator-chave que sustenta as decisões arquitetônicas, essa portabilidade permite que os departamentos de TI atinjam marcos importantes para implantações de serviços de aplicativos e oferece suporte às equipes de DevOps para atingir as metas organizacionais. Um relatório recente da IBM2 destaca como o uso de contêineres para implantações de aplicativos também permite que as empresas melhorem a qualidade dos aplicativos, reduzam defeitos e minimizem o tempo de inatividade dos aplicativos e os custos associados.
O mesmo relatório também lista aplicativos que são especialmente adequados para ambientes baseados em contêineres, que incluem análise de dados, serviços web e bancos de dados. Aqui, o fator-chave é o desempenho, mas outros fatores relevantes a serem considerados são se os aplicativos provavelmente serão executados em vários ambientes e se eles usam microsserviços para dar suporte a várias equipes de DevOps trabalhando em paralelo. Com contêineres, você pode resolver problemas de desempenho simplesmente criando mais instâncias de um aplicativo, supondo que você implemente um design de arquitetura sem estado e forneça serviços de aplicativo em escala.
Os contêineres não são totalmente isentos de desafios de implantação e a tecnologia ainda jovem ainda não atingiu o nível de maturidade da virtualização. A seção a seguir destaca alguns dos desafios que os contêineres trazem.
Figura 2 - Alcançando a conteinerização equilibrada
Um critério de design vital na conteinerização é o equilíbrio entre os três vetores de desempenho, densidade e confiabilidade, conforme mostrado na Figura 2.
A abordagem do F5 é focar na conteinerização no nível do componente e não no nível do sistema. Essa abordagem traz diversas vantagens, entre elas:
A conteinerização em nível de componente nos permite atingir esse equilíbrio triplo por meio de desagregação, agendamento e orquestração. Os produtos F5 que implementam contêineres usarão esses recursos para maximizar os benefícios da conteinerização.
Para dar suporte às organizações na adoção de tecnologias baseadas em contêineres, a F5 oferece o F5® Container Ingress Services , uma integração de contêineres de código aberto. O Container Ingress Services fornece serviços de automação, orquestração e rede, como roteamento, descarregamento de SSL, roteamento HTTP e segurança robusta. Mais importante, ele integra nossa gama de serviços BIG-IP com ambientes de contêineres nativos, como Kubernetes e Red Hat OpenShift.
Em termos de arquitetura, o Container Ingress Services ocupa a seguinte posição em relação aos seus aplicativos em contêineres, adicionando serviços de controlador de entrada de front-door e permitindo visibilidade e análise por meio do BIG-IP.
Figura 3 - Serviços de entrada do contêiner F5
O Container Ingress Services aborda dois dos principais problemas identificados anteriormente neste artigo: escalabilidade e segurança. Você pode dimensionar aplicativos para atender às cargas de trabalho do contêiner e proteger os dados do contêiner habilitando serviços de segurança. Com a integração da plataforma BIG-IP, você pode implementar o desempenho de aplicativos de autoatendimento em seu ambiente de orquestração. O uso do Container Ingress Services também reduz a probabilidade de os desenvolvedores implementarem contêineres do Kubernetes com configurações padrão usando gráficos do Helm para implantações e atualizações baseadas em modelos.
Além disso, o Container Ingress Services permite segurança com proteção avançada contra ataques a aplicativos de contêiner e serviços de controle de acesso. Para desenvolvedores de aplicativos e profissionais de DevOps que não estão familiarizados com configurações, os serviços de aplicativos da F5 oferecem políticas prontas para uso e controle de acesso baseado em função (RBAC) com suporte de nível empresarial, além de comunidades de clientes e de código aberto do DevCentral.
Os desafios associados ao Kubernetes nativo estão relacionados ao desenvolvimento e dimensionamento de aplicativos de contêiner modernos sem maior complexidade. Pode haver restrições de desempenho e confiabilidade, e os serviços que fornecem uma porta de entrada para contêineres do Kubernetes podem ser implementados de forma inconsistente, exigindo maior esforço de integração para implantação e configuração.
A solução para esses desafios é o NGINX Kubernetes Ingress Controller , que aprimora o ambiente básico do Kubernetes fornecendo serviços de entrega para aplicativos do Kubernetes. Normalmente, os pods do Kubernetes só podem se comunicar com outros pods no mesmo cluster. A Figura 4 mostra o Kubernetes Ingress Controller fornecendo acesso da rede externa aos pods do Kubernetes, governados usando regras de recursos do Ingress que controlam fatores como o caminho do Universal Resource Identifier (URI), o nome do serviço de suporte e outras informações de configuração. Os serviços disponíveis dependem se você usa o NGINX ou o NGINX Plus.
Figura 4 – Controlador de entrada NGINX para Kubernetes
As empresas que usam o NGINX ganham recursos como balanceamento de carga, terminação de criptografia SSL ou TLS, reescrita de URI e criptografia SSL ou TLS upstream. O NGINX Plus traz recursos adicionais, como persistência de sessão para aplicativos com estado e autenticação de API JSON Web Token (JWT).
À medida que as organizações adotam microsserviços para desbloquear a agilidade do desenvolvedor e a escalabilidade nativa da nuvem, elas encontram uma curva de aprendizado enquanto as capacidades organizacionais acompanham a tecnologia. Essas organizações querem desbloquear rapidamente os benefícios dos microsserviços, preservando ao mesmo tempo a estabilidade que sustenta a experiência do cliente.
O Aspen Mesh é uma versão totalmente compatível com o service mesh de código aberto Istio que ajuda empresas a adotar microsserviços e Kubernetes em escala e obter observabilidade, controle e segurança de arquiteturas de microsserviços. O Aspen Mesh adiciona recursos empresariais essenciais de malha de serviço, incluindo uma interface de usuário que facilita a visualização e a compreensão do status e da integridade dos seus serviços, RBAC detalhado e recursos de política e configuração que facilitam a condução de um comportamento desejado em seus aplicativos em contêineres.
O Aspen Mesh fornece uma implementação nativa do Kubernetes, que é implantada no seu cluster Kubernetes e pode ser executada na sua nuvem privada ou pública, ou no local. Mais importante, ele pode trabalhar cooperativamente com um mecanismo de entrada baseado em F5, usando o Container Ingress Services para provisionar recursos mais profundos da Camada 7.
Em termos de arquitetura, o Aspen Mesh utiliza um modelo de proxy sidecar para adicionar níveis de funcionalidade e segurança a aplicativos em contêineres, como visto na Figura 5.
Figura 5 - Arquitetura Aspen Mesh
A F5 está na vanguarda da adoção de contêineres, fornecendo às organizações a capacidade de executar ambientes de aplicativos em contêineres confiáveis, seguros e de alto desempenho que dimensionam serviços de aplicativos em cargas de trabalho simples e massivas, específicas do setor. A tecnologia de contêineres será um facilitador essencial em futuros ambientes de desenvolvimento e implantação de aplicativos, como implementações sem servidor, arquiteturas de malha de serviço e segurança de ponta móvel. Como empresa, a F5 usa sua própria pesquisa de desenvolvimento e implementações comerciais de contêineres para impulsionar e desenvolver aplicativos e serviços que farão a diferença para o seu negócio.
Assim como na virtualização de produtos existentes, incorporamos a tecnologia de contêineres de maneiras que podem não ser imediatamente óbvias para o administrador, mas serão totalmente transparentes para o usuário final. Como cliente, você verá maior desempenho, flexibilidade e segurança. À medida que implementamos esses novos aplicativos e serviços sem problemas, você pode se concentrar em garantir que tenha a funcionalidade de que precisa.
Também estamos trabalhando para adotar as melhores soluções de código aberto em nossos produtos, estendendo os serviços que essas plataformas de código aberto fornecem e aprimorando os recursos de nossos ambientes de contêiner. Nosso objetivo é sempre criar produtos que sejam mais fáceis de implantar, mais rápidos de integrar às suas redes existentes, mais confiáveis e mais seguros.
Para executar nossa estratégia de adoção de contêineres, estamos nos concentrando nas seguintes abordagens:
A F5 está comprometida com um futuro que vê os contêineres como um mecanismo de entrega fundamental para muitas tecnologias futuras de serviços de aplicativos. Essas tecnologias incluirão serverless, service mesh e mobile edge, mas podem incluir outras abordagens atualmente em desenvolvimento ou ainda não previstas. Estamos redesenhando nossa linha de produtos para incorporar contêineres em nossas soluções sem afetar os aspectos importantes do gerenciamento eficaz de rede.
Assim como ocorre com a virtualização, os próprios contêineres se tornarão mais conscientes dos recursos subjacentes do hardware no qual o mecanismo de contêiner é executado. Multithreading, velocidades de memória, acesso ao armazenamento e rede serão cada vez mais transparentes para os aplicativos executados em cada contêiner, melhorando ainda mais o uso de recursos.
Não vemos os contêineres como um substituto para a virtualização, mas como um complemento a ela. Consequentemente, nossa expectativa é que os contêineres tenham uma vida útil pelo menos igual à da virtualização e que a coexistência continue. Por fim, esperamos que surjam mais níveis de abstração que coexistirão com a virtualização e os contêineres.
Sabemos que uma das principais preocupações dos clientes sempre será a segurança. Consequentemente, a F5 continua a usar sua experiência em dispositivos de hardware e software, firewalls e redes para fornecer a segurança mais rígida possível em todos os seus produtos.
Em resumo, além da nossa tecnologia relacionada a contêineres já existente, a F5 planeja continuar incorporando contêineres à linha de produtos F5, fornecendo a você mais opções de integração, maior confiabilidade, desempenho aprimorado e tempo de implantação reduzido com aplicativos atualizados e futuros.
Para obter mais informações sobre o F5 e o suporte de contêiner para aplicativos, visite f5.com/solutions/bridge-f5-with-container-environments
1 A ascensão dos servidores Kubernetes bare-metal , Container Journal, Mike Vizard, 2019
2 O estado do desenvolvimento de aplicativos baseados em contêineres , IBM Cloud Report, 2018
3 Mal configurado e exposto: Serviços de contêineres , Palo Alto Networks, Nathaniel Quist, 2019