No JavaLand 2015, Arun Gupta apresentou diversas 'receitas' para desenvolvimento de aplicações Java EE usando Docker e Kubernetes. Gupta mostra que os containers são benéficos para publicar e gerenciar aplicações, por fornecerem publicação rápida, isolamento e portabilidade. O uso de um gerenciamento de clusters de container, tal como Kubernetes, também permite o gerenciamento de containers Docker como uma única unidade, fornecendo comunicação simplificada entre os hosts e garante a disponibilidade e escalabilidade.
Gupta, Diretor de Evangelismo na Red Hat Software, iniciou sua palestra na JavaLand introduzindo o Docker, um projeto de código aberto que automatiza o desenvolvimento de aplicações com containers de software com base no LXC. As vantagens de usar o Docker sobre os mecanismos mais tradicionais de publicação incluem: publicações rápidas, isolamento, portabilidade, a capacidade para limitar o uso de recursos e fornece uma área de segurança.
Gupta continuou apresentando nove 'receitas' do Docker para empacotar e publicar aplicações Java EE. Essas receitas incluem o uso da Docker Machine para instalar o Docker, o uso de um H2 para montar a base de dados em memória com um único container Docker executando o Wildfly, servidor de aplicações Java EE, e a publicação de dois containers com servidores de aplicações e base de dados separados comunicando via ligação de container.
Receitas adicionais incluíram o uso de ambas ferramentas de orquestração Fig e Docker Compose para definição dos ambientes de multi aplicações e multi containers. Gupta também demonstrou como publicar os dois containers em diferentes hosts usando um endereço IP pré configurado no serviço de descobrimento e como usar a IDE Eclipse para gerenciar as publicações dos desenvolvimentos com base no Docker. Gupta concluiu a sessão de receitas do Docker falando sobre como usar o Arquillian Cube, através plugin surefire da ferramenta de publicações Maven, para controlar o ciclo de vida das imagens do Docker como parte do ciclo de vida dos testes.
Continuando a apresentação, Gupta discutiu o uso do Kubernetes, gerenciamento de clusters do Google, para publicar e gerenciar aplicações Java EE. O Kubernetes é um sistema de orquestração de código aberto para containers Docker, os conceitos principais incluem: pods, que são grupos organizados de containers que compartilham um IP e volume de armazenamento; serviços, que são nomes únicos e estáveis para um conjunto de pods, que também agem como balanceador de carga; e o controle de replicação, que gerencia o ciclo de vida dos pods e garante que um número declarado estará executando a qualquer momento.
Gupta apresentou diversas 'receitas' com base no Kubernetes, incluindo o uso do Vagrant para fornecer e executar um cluster de desenvolvimento local de Kubernetes, a criação de serviços de servidores de aplicações Wildfly comunicando com um serviço MySQL, e o uso de controle de replicação para garantir um número especificado de serviços de servidores de aplicações em execução.
Segundo Gupta, Docker e Kubernetes são ferramentas benéficas para publicação e gerenciamento de aplicações Java EE. Além dos beneficios do Docker mencionados anteriormente, o Kubernetes permite o gerenciamento de containers Docker relacionados como uma única unidade, assistência com comunicação através dos hosts, e garante a disponibilidade e escalabilidade através de publicações automatizadas e monitoramento de pods e suas replicas através dos hosts.
Potenciais desvantagens incluem a falta de provisionamento de alto nível ou uso de rastreamento com Docker (embora isso possa ser feito com ferramentas adicionais), e um ciclo de vida potencialmente complexo para desenvolvimento de aplicações que usam o Kubernetes, incluindo a publicação, desenvolvimento, gerenciamento e promoção (incluindo a adaptação das aplicações existentes para suportar esse processo).
Informações adicionais e os detalhes completos das receitas citadas anteriormente podem ser encontradas no blog "Miles to go 2.0" do Gupta e na sua conta no SlideShare. O JavaLand é uma conferência anual sobre Java organizada em Brühl na Alemanhã, e os detalhes podem ser encontrados no site do evento.