Introdução

Já teve a sensação de estar tentando encaixar uma peça quadrada num buraco redondo? Dentro do ambiente de dados, existem muitas ferramentas que tem sua valia, como o AWS EMR que facilita a utilização do Spark dentro do ecossistema da AWS. Porém, um dos pontos negativos dela, além do vendor-lockin, é a existência problemas de escalabilidade como, por exemplo, ter dois jobs dentro do mesmo cluster EMR competindo por recurso, o que pode levar a falha no processo. Que é exatamente o problema que eu vejo o time no qual atuo hoje passar.

Sendo assim, o Kubernetes surge como uma alternativa para lidar com a escalabilidade de recursos para diversas cargas de trabalho, incluindo o Apache Spark. Mas, rodar o Spark no Kubernetes é somente o primeiro passo. Um processo de engenharia de dados, como um ETL, envolve a orquestração de pipelines que podem ou não usar Spark, dentre muitas outras necessidades.

Orquestradores de pipeline, como o Airflow já são considerados padrões no mercado. Porém, o Airflow é uma aplicação complexa com diversos componentes, como o Scheduler, Worker e Webserver, além de depender de um banco de dados para salvar o estado e metadados das execuções das DAGs. Por mais que ele possua uma ótima integração com o Kubernetes, que eu cheguei a explorar nesse artigo, ele não parece nativo para o Kubernetes, parecendo que foi parafusado no ecossistema do Kubernetes e exigindo vários workarounds (leia-se gambiarra kkk) para que a integração funcione. Sendo assim, algumas outras soluções kube-native emergem para, talvez, acabar com o reinado do Airflow. Uma dessas ferramentas é o Argo Workflow que eu pretendo explorar de forma introdutória nesse artigo.

Entendendo o ecossistema: Kubernetes, Argo Workflow, ArgoCD, Argo Events e Spark

Vamos a uma pequena introdução dos componentes que iremos ver na prática mais a frente.

Kubernetes: O Alicerce de tudo

O Kubernetes, também chamado de K8S (porque tem 8 letras entre o K e o S), é uma plataforma de código aberto para automatizar a implantação, o escalonamento e o gerenciamento de aplicações em contêineres. Dessa forma, ele é capaz de orquestrar containers em um cluster (conjunto de máquinas), otimizando recursos e garantindo alta disponibilidade das aplicações.

Porém, quando falamos do uso do Kubernetes em um ambiente de dados podemos falar que ele é o sistema operacional da plataforma de dados. Sendo o alicerce ele é capaz de nos fornecer agendamento, gerenciamento de recursos, resiliência e uma API unificada. Dessa forma, quando falamos de soluções kube-native, falamos de soluções que não só utilizam o Kubernetes como plataforma, mas o utilizam como sua fundação, falando sua língua nativa através de Custom Resource Definitions (CRDs).

Argo Workflow: O maestro

Inscreva-se para continuar lendo

Este conteúdo é gratuito, mas você deve estar inscrito em Victor Macedo para continuar lendo.

Already a subscriber?Sign in.Not now

Reply

or to participate

Keep Reading

No posts found