O desenvolvimento de aplicativos ou microservices que serão implantados em uma plataforma container scheduling (agendamento de contêineres) apresenta novos desafios para os engenheiros, especialmente no que diz respeito ao desenvolvimento e testes de serviços locais que exigem várias dependências.
O Kubernetes 1.3 incluiu o lançamento do minikube, uma VM que possui um cluster de nó único que pode ser executado localmente e, embora essa abordagem seja muito útil, pode consumir grandes quantidades de recursos locais. Uma abordagem alternativa é apresentada pela ferramenta open source Telepresence, na qual os desenvolvedores trabalham no seu serviço localmente, mas integram de forma transparente (através de um proxy bidirecional) com outros serviços dependentes executados em um cluster remoto.
O InfoQ conversou recentemente com Abhay Saxena, da Datawire, criador da ferramenta open source Telepresence, e discutiu como o ciclo de vida do desenvolvimento de software mudou ao implantar aplicativos em plataformas de container scheduling - como Kubernetes, porque o Kubernetes tornou-se tão popular, e o papel do CNCF dentre as ferramentas cloud-native.
InfoQ: Olá Abhay, obrigado por conversar com o InfoQ hoje. Você poderia se apresentar brevemente, e à ferramenta de desenvolvimento Kubernetes Telepresence?
Abhay Saxena: Eu sou Abhay Saxena, engenheiro de software da Datawire. Sou responsável pelo projeto open source Telepresence. Estávamos construindo uma aplicação na nuvem em Kubernetes usando uma arquitetura de microservices e descobrimos que o ciclo de desenvolvimento/depuração em Kubernetes era lento. Toda vez que fazíamos uma mudança de código tínhamos que passar por um processo de compilação de contêiner/processo de implantação, e essa latência adicional deixava as coisas mais lentas.
Então nos perguntamos se poderíamos eliminar completamente esse processo do desenvolvimento, e então surgiu a Telepresence. Com a Telepresence, escrevemos e rodamos um serviço localmente, enquanto executamos o resto em um cluster Kubernetes remoto. A Telepresence cria um proxy bidirecional entre o serviço local e o cluster Kubernetes remoto, então o serviço local tem acesso total ao cluster remoto e vice-versa.
O efeito mais claro disto é que agora posso fazer uma mudança de código de duas linhas e testá-lo instantaneamente.
InfoQ: Quais são os casos de uso típicos para a Telepresence? Você vê algum uso que não esperava?
Saxena: O uso mais comum é o desenvolvimento rápido. Uma pipeline de integração contínua / implantação contínua é uma ferramenta importante, mas terrível para o desenvolvimento no dia a dia. Nenhum desenvolvedor quer ter que esperar por CI [Continuous Integration] a cada mudança. O segundo cenário, que foi um pouco surpreendente no início, é a execução de um depurador. Nós temos usuários que querem usar um depurador em seu microservice, e com a Telepresence, é tão simples como executar o depurador em seu código.
InfoQ: Como uma ferramenta como a Telepresence se encaixa no ciclo de vida do desenvolvimento de software usando Kubernetes?
Saxena: Se você pensar no SDLC básico da Kubernetes como "código, implantação (do tipo canary), e monitoramento", a Telepresence é destinada exclusivamente à fase "código". Na fase de código, você tem que escrever e testar seu serviço, e a Telepresence faz você ser mais produtivo durante essa fase. Assim que você implanta em produção, você vai querer usar uma pipeline CI/CD. Dito isto, estamos trabalhando em algumas coisas que permitem à Telepresence trabalhar em alguns cenários relacionados à produção. Fiquem ligados!
InfoQ: Por que você acha que o Kubernetes se tornou tão popular, e o que você acha que o futuro reserva para o Kubernetes?
Saxena: Eu acho que eles começaram com tecnologia e design sólidos e, a partir daí, fizeram um trabalho melhor do que qualquer outro em todos os aspectos de uma comunidade, desde a evangelização até os usuários finais terem um bom processo para obter contribuições adicionais.
A longo prazo, posso ver como o Kubernetes se tornará algo como uma versão na nuvem do POSIX - um padrão para como a infraestrutura na nuvem pode interoperar. O recente anúncio de Kubernetes no DC/OS é um exemplo do que quero dizer. A curto prazo estamos observando de perto o trabalho sobre o gerenciamento declarativo de aplicativos, pois o desenvolvimento de aplicativos é uma das partes imaturas do ecossistema Kubernetes (e a área em que a Datawire está trabalhando duro!).
InfoQ: Quais são os seus pensamentos sobre a Cloud Native Computing Foundation (CNCF), e você consideraria doar uma ferramenta como a Telepresence para eles?
Saxena: Somos grandes fãs da CNCF. Eles fizeram um excelente trabalho de incubação de tecnologias cloud-native. De fato, nós usamos uma série de tecnologias CNCF no nosso dia a dia: Kubernetes, é claro, mas também Envoy, Prometheus, e Docker. Doar a Telepresence para o CNCF é algo que gostaríamos de fazer à medida que o projeto crescer. Estamos vendo de antemão o apoio que a CNCF está dando ao Envoy, e eu adoraria ter o apoio deles para a Telepresence.
InfoQ: Existe algo mais que você gostaria de compartilhar com os leitores do InfoQ? Qual é a melhor forma de se envolver com o projeto da Telepresence?
Saxena: A Telepresence funciona com Kubernetes e o OpenShift. Estamos sempre à procura de mais comentários e sugestões, então se você acha que a Telepresence pode ser útil, visite https://www.telepresence.io e experimente!
Outras plataformas de container scheduling oferecem ferramentas semelhantes para ajudar com o desenvolvimento local, incluindo Docker para Mac / Windows, Red Hat OpenShift minishift, e Apache Mesos minimesos.