Postagens

Criando um data source personalizado para o Apache Spark

Imagem
O Spark é uma ferramenta de processamento para grandes volumes de dados que permite o uso de diversas fontes de dados. É uma plataforma muito flexível, onde conseguimos ler e escrever arquivos em diversos formatos (CSV, JSON, Parquet, etc.), bancos de dados (MySQL, SQL Server, DynamoDB, etc.) e até ferramentas de streaming / mensageria (Kafka, etc.). Esses providers podem ser adicionados como bibliotecas externas ao Spark e, caso você não encontre nenhum que atenda os seus requisitos, o Spark permite a criação dos seus próprios data sources implementando a API DataSourceV2, introduzida na versão 2.3 do Spark. É com a ideia de exercitar esse conceito que eu resolvi criar um data source para escrever em uma fila da AWS (SQS). O código fonte pode ser encontrado em  https://github.com/fabiogouw/spark-aws-messaging e o componente foi disponibilizado como uma biblioteca pública no repositório central do Maven . Criando seu próprio data source O diagrama abaixo mostra as classes que foram ne

.NET com Apache Spark

Imagem
Olá, pessoal! Este final de semana tive a honra de participar de uma live no canal DX Lab para falar um pouco sobre Apache Spark e como podemos utilizar .NET com essa ferramenta. Sim, não é apenas de Scala e Python que vive essa plataforma de processamento distribuído que é o Spark! No vídeo, comentamos um pouco dos cenários de uso onde o Spark nos auxilia, um pouco da sua arquitetura e demonstramos dois exemplos de uso: um para processamento batch (ETL) e outro para processamento de fluxo contínuo de eventos (streaming). []'s

Impressões sobre a prova SAA-C02 (AWS Solutions Architect Associate)

Há algumas semanas atrás eu passei na prova de certificação de arquiteto da AWS, a SAA-C02, e como de costume eu gostaria de relatar aqui as impressões que eu tive com a prova pra ajudar um pouco quem está se preparando para tirar este exame. Meu objetivo aqui não é fazer uma análise profunda dos tópicos e das questões, mas sim passar alguns pontos que entendo serem importantes receber um reforço e atenção durante os estudos. Estrutura da Prova Como várias provas de certificação, o exame consiste em questões do tipo múltipla escolha, a maioria delas com apenas uma alternativa correta, mas outras com mais de uma opção para selecionar. Não existe separação de seções na prova, ou seja, não existem partes da prova que você não consiga voltar quando terminar de responder todas as questões e for começar as revisões. Tópicos Relacionados Todo o material requisitado para a prova pode ser consultado neste link  https://aws.amazon.com/pt/certification/certified-solutions-architect-associate/ . D

Os 8 Princípios Reativos de uma Arquitetura Distribuída

A construção de aplicações em ambiente cloud traz alguns desafios que precisam ser endereçados para o sucesso de um produto: estado inconsistente, rede muitas vezes não confiável, quedas de serviços, tudo isso são exemplos de problemas que o desenvolvedor de hoje deve se preocupar para conseguir tirar o máximo de proveito dos benefícios das plataformas de nuvem, como elasticidade, uso eficiente de recursos, custos adaptáveis, entre outros. Esses problemas não devem ser endereçados exclusivamente nos serviços de infraestrutura já disponibilizados pelas plataformas de cloud (containers, bancos de dados, balanceadores de carga, etc.), mas também é uma preocupação que deve ser tratada na arquitetura e na codificação das aplicações. Recentemente foi publicado um guia contendo alguns princípios e padrões que definem uma arquitetura reativa e complementa o que foi descrito no Manifesto Reativo . Esse material escrito por Jonas Bonér, criador do framework Akka, traz os princípios que habilitam

Microsoft Orleans: uma introdução ao modelo de atores

Imagem
Olá, pessoal! Na semana passada eu tive a oportunidade e honra de participar de uma live no Canal .NET  onde conversamos sobre o modelo de atores e o framework Orleans. O modelo de atores permite que sejam criadas aplicações distribuídas e com o conceito de stateful, onde o estado é armazenado diretamente nos servidores de aplicação. Com o auxílio do framework Orleans, podemos trazer elasticidade e resiliência para este modelo de arquitetura.

Testes automatizados em sistemas autenticados com certificados digitais, usando Selenium e PhantomJS

Imagem
A automatização de testes é uma disciplina muito importante hoje em dia. Entre várias técnicas e ferramentas diferentes, uma das que podemos utilizar para termos um conjunto de testes funcionais que possam ser facilmente repetidos é o Selenium. O Selenium é uma ferramenta que permite que a execução de passos que uma pessoa faria em um browser web (Chrome, Edge, etc.) possa ser programada. Com isso, toda vez que for necessária a validação de uma nova versão de sistema ou correção, este grupo de testes pode ser rodado de forma automática. Ainda falando sobre a execução do Selenium, ele trabalha criando uma instância do respectivo browser e enviando comandos para ele. Dessa forma é feita a simulação de preenchimento de caixas de texto, cliques em botões, etc. Quando um teste automatizado com Selenium é rodado, pode-se ver todo o teste acontecendo. Entretanto, há um problema nesta abordagem. Caso a sessão do usuário que está executando os testes seja bloqueada, o Selenium não consegue

Impressões sobre a prova 70-532 (Developing Microsoft Azure Solutions)

Hoje passei na prova 70-532 da Microsoft, sobre desenvolvimento na plataforma Azure. Essa prova é um dos pré-requisitos para a certificação Microsoft Certified Solutions Associate: Cloud Platform. Vou aqui passar um pouco da minha experiência com a prova, como eu me preparei e algumas dicas. Estrutura da prova Já fazia algum tempo que eu não fazia uma prova de certificação da Microsoft e o formato da prova mudou um pouco. Nesta seção aqui vou explicar como é a dinâmica da prova, que provavelmente vale para outros testes de certificação da Microsoft também. Foram 48 perguntas de vários tipos para um teste de tempo limite de 150 minutos. Essas perguntas são divididas em várias seções isoladas mas que compartilham o tempo geral. Quando eu digo isolada, quer dizer que uma vez respondidas as questões da seção, não se pode voltar nelas para se alterar. Ou seja, deve-se terminar por completo uma seção para que se possa acessar a próxima. Existem dois tipos de seção: casos de es