• Blog
    • Tecnologia
    • Carreira e Cultura
  • Materiais Gratuitos
  • Podcast
  • Nossas vagas
  • Site Movile
Menu
  • Blog
    • Tecnologia
    • Carreira e Cultura
  • Materiais Gratuitos
  • Podcast
  • Nossas vagas
  • Site Movile
  • Backend, Banco de Dados, Tecnologia

Grupo Movile marca presença na Qcon com a ferramenta Apache Spark

Compartilhe

Compartilhar no facebook
Compartilhar no google
Compartilhar no twitter
Compartilhar no linkedin

Linha fina: Grupo Movile se destaca na terceira edição de 2018 da Qcon São Paulo, um dos maiores eventos de tecnologia do Brasil, apresentando a ferramenta Apache Spark.

O QCon São Paulo é um dos maiores eventos de tecnologia do Brasil e um dos poucos voltado para um público mais sênior. No qual encontram-se as melhores empresas do país, trazendo seus cases. Bem como, palestrantes internacionais de instituições de renome de extrema importância.

Representando o Grupo Movile, O Coordenador de Tecnologia da Wavy Eiti Kimura, apresentou a palestra “Analisador de dados Automatizado utilizando Machine Learning”. Mostrando como a Wavy utiliza análises de dados e Machine Learning para monitorar sistemas distribuídos, gerando impacto financeiro direto.

Os participantes tiveram a oportunidade de conhecer  a ferramenta Apache Spark utilizada para empregar algoritmos de Machine Learning, gerando modelos capazes de fazer a análise dos dados automaticamente. Identificando problemas e notificando os times responsáveis.

Foi  possível identificar como  empregar com sucesso modelos de regressão linear com árvores de decisão. O que possibilita prever os valores de números de transações com sucesso e erros. E a partir disso, determinar se os valores das séries temporais funcionam de acordo com o esperado.

Vem com a gente e entenda o que foi abordado na palestra:

Um pouco sobre a Wavy:

A Wavy possui negócios e produtos com operadoras de telefonia móvel no Brasil e demais países da América Latina. Os clientes são tarifados de forma recorrente pelas assinaturas desses produtos. Em média, geramos em torno de 150 milhões de transações de tentativas de tarifação por dia. Todo esse ecossistema é composto de uma gama de sistemas distribuídos de alto desempenho que funcionam 24h por dia.

Porque a ferramenta Apache Spark?

Utilizamos a ferramenta Apache Spark para empregar algoritmos de Machine Learning, gerando modelos capazes de fazer a análise dos dados automaticamente, dessa forma, conseguindo identificar se temos algum problema em nossos serviços e notificando os times responsáveis. Nessa abordagem, empregamos com sucesso modelos de regressão linear com árvores de decisão, para conseguir prever os valores de números de transações com sucesso, erros e dessa forma, poder determinar se os valores de nossas séries temporais estavam funcionando de acordo com o esperado.

O desafio da Wavy

Na Wavy, existem diversos produtos e serviços, dentre eles: assinatura junto às operadoras de telefonia móvel, tais como, entrega de conteúdo rico no celular, acesso a aplicações móveis, jogos e etc.

As plataformas tratam as assinaturas, a criação e cancelamento dos produtos. E também, o controle do ciclo de renovação, que em termos práticos, significa a cobrança do cliente em sua operadora de telefonia celular.

Essas plataformas funcionam de forma distribuída, ou seja, em diversos computadores diferentes, inclusive em localidades distintas. Seus principais requisitos são: alto desempenho e disponibilidade. Há um grau de criticidade grande envolvido na manutenção operacional das plataformas, pois em caso de indisponibilidade de alguma parte, podemos ficar sem cobrar os usuários, afetando diretamente o faturamento da área como um todo.


Dado esse cenário, temos dois desafios:

  1. Saber se a plataforma está funcionando corretamente; e
  2. Identificar problemas com os produtos e operadora de forma automatizada.

Antes da solução que apresentamos aqui, as análises eram efetuadas manualmente sobre um conjunto de dados consolidados, provenientes do funcionamento da plataforma de tarifação,

veja  a Tabela 1 abaixo:

Imagem12.pngTabela 1. Dados de tentativas de tarifação consolidados para análise

Temos um identificador da operadora (carrier_weigth), a faixa de horários da análise, por exemplo das 0h até as 20h (date_time), algumas informações da operação, como: tempo de resposta da operadora (avg response time), requisições de cobranças com sucesso (succ. charges), número de tentativa de cobrança onde o usuário não possuía crédito suficiente (no credit), erros retornados pela plataforma ou pela operadora (general errors) e o número total de tentativas de cobranças (total attempts).

A análise era realizada comparando-se os dados do dia atual, com os dados dos dias anteriores na média, como mostrado na tabela acima, e não tínhamos um método formal para fazer essa análise. Caso o analista julgasse que os dados eram de alguma forma discrepantes, então iniciavam-se as investigações por problemas na plataforma.

Nossos objetivos com o projeto foram:

 

    • Determinar se a plataforma distribuída estava funcionando adequadamente baseado somente em análise de dados

 

  • Criar uma forma de analisar esses dados automaticamente de forma sistematizada

Em nossa abordagem, preparamos os dados da Tabela 1 para alimentar algoritmos de Machine Learning para experimentar sua capacidade de prever um determinado número contínuo, em nosso caso, queremos prever o número de sucessos de tarifação e o número esperado de tentativas de tarifação dado uma operadora, hora do dia e assim por diante.

Aprendizado Supervisionado é a categoria de problemas de Machine Learning, quando sabemos o que queremos prever, temos os chamados dados rotulados nas nossas amostras. Dentro desse tipo de aprendizado, quando queremos trabalhar para prever números contínuos, em geral, trabalhamos com regressões lineares. Baseado nisso, testamos algumas implementações de algoritmos regressores que o Apache Spark já disponibiliza. Fizemos os testes mudando alguns regularizadores. O resultado do desempenho dos algoritmos pode ser observado na Tabela 2 abaixo:

Imagem13Tabela 2. Desempenho dos algoritmos regressores do Apache Spark

Na Tabela 2 temos as medidas de erro e acurácia dos algoritmos. O critério de avaliação para medir o erro foi a RMSE (Root Mean Square Error), já conhecido para medir desempenho dos algoritmos regressores. A acurácia reflete a capacidade do algoritmo de prever o valor para o número de sucessos, no nosso caso, consideramos uma variação de +/- 15% para considerar que o algoritmo acertou o valor esperado. Todo código da experimentação prática para chegar a esses resultados podem ser replicados através do spark-notebook disponível nesse repositório.

De acordo com os resultados apresentados na Tabela 2, o modelo de árvore de decisão com regressão linear (Decision Tree Model), foi o modelo com o menor erro e também com a maior capacidade de prever os valores, ou seja, acurácia.

Com 93% de acurácia, decidimos colocar o modelo em produção para fazer as análises automaticamente. O modelo serializado com Apache Spark dá bastante flexibilidade de trabalho, os modelos foram treinados em linguagem Scala, entretanto, para usá-lo , podemos escolher entre as linguagens suportadas pelo Apache Spark: Scala, Java, Python e para alguns casos até mesmo R.

Nós batizamos o projeto inicialmente de Watcher-AI. A implantação ocorreu em duas fases distintas. A primeira de treinamento do modelo. A segunda de implantação do modelo onde expomos como um pequeno micro serviço.

Com essa interface de previsões exposta, fizemos então que de hora em hora, os dados fossem coletados de nossas bases de produção e comparamos o valor corrente de tentativas de tarifação, número de sucessos, número de erros e tempos de resposta previstos pelo nosso modelo.  Os detalhes da solução arquitetural podem ser observados na Figura 1.

Imagem14Figura 1. Arquitetura da solução Watcher-AI

Os dados são coletados de nossas bases, treinamos os modelos no Apache Spark. Os modelos são expostos via uma API chamada de Nostradamus, o Watcher-AI por sua vez funciona a cada hora obtendo os dados atuais dos indicadores das plataformas e caso necessário envia mensagens de notificação usando diferentes tipos de canais de comunicação.

Caso o Watcher-AI detecte um valor muito discrepante entre o esperado e o medido, em geral maior que um limiar definido (exemplo: erro maior que 15%), o sistema envia uma série de notificações informando o problema e dando alguns dados adicionais para auxiliar nas investigações.

O sistema foi integrado com uma série de diferentes canais de comunicação, como ferramenta de chat interna da empresa, como o Slack, envio de notificações por push e até envio de mensagens via SMS. Dependendo do problema detectado diferentes times, são acionados e notificados via o canal mais adequado, por exemplo, problema com a operadora, notificamos o time de suporte, problema com a plataforma, número baixo de tentativas, notificamos o time de desenvolvimento e assim por diante.

E como são essas mensagens de notificação do Watcher-AI?  As pessoas tem curiosidade de saber. Essas mensagens são programadas, não temos inteligência artificial envolvida.

Nas mensagens colocamos informações sobre o problema, valores medidos e esperados, erro calculado de forma a auxiliar na análise e diagnóstico do problema. Na Figura 2 mostramos o conteúdo de uma mensagem de exemplo, em cada canal de comunicação a mensagem vai se apresenta em formatos distintos, porém o conteúdo se mantém.

Imagem15Figura 2. Exemplo de conteúdo de uma mensagem de notificação do sistema

Com os resultados práticos desse trabalho, conseguimos treinar um modelo capaz de prever nosso principais indicadores das plataformas. Esse modelo está sendo utilizado em produção no momento com alto impacto financeiro. Uma série de problemas foram descobertos, o sistema agora avisa quando algum número não está na faixa esperada e temos muito mais agilidade na detecção do problema, assim como na atuação para correção do problema.  Em quase 3 anos de funcionamento, estimamos uma economia em custos por volta de 2 milhões de dólares.

Caso queira saber mais detalhes e acessar os slides que apresentei no QConSP 2018, basta clicar aqui.

Dica: tem uma talk também disponível onde apresento alguns pontos da solução:

Have Fun!
#GoMovile
#GoWavy

 

 

Compartilhe isso:

  • Tweet

Curtir isso:

Curtir Carregando...
Matheus Fonseca

Matheus Fonseca

Deixe um comentário

Categorias

Categorias
  • Android
  • Backend
  • Banco de Dados
  • BI
  • Carreira
  • Carreira e Cultura
  • Carreira e Cultura
  • Ciência de Dados
  • Cultura
  • Data Specialist
  • Design
  • Diversidade
  • Front-end
  • Frontend
  • Fundação 1Bi
  • Grupo Movile
  • Histórias
  • iFood
  • Infraestrutura
  • Inteligência Artificial
  • iOS
  • iOS App Development
  • Kotlin
  • kubernetes
  • LeaderShift
  • Material
  • Mobile
  • Mobile Dream
  • Movile
  • Movilian@s
  • News
  • PlayKids
  • Podcast
  • Produto
  • Projetos
  • React
  • RESPECT
  • Software Architecture
  • Software Engineering
  • Solid
  • Swift
  • SwiftUI
  • Sympla
  • Technology
  • Tecnologia
  • testes
  • UX
  • Vagas
  • Wavy
  • Zoop

Posts relacionados

Dart Extension Methods na prática

Leia mais »
Kubernetes

Papo Sobremesa #11 – Chapter Backend

Leia mais »
Jetpack

Utilizando a nova versão do Jetpack Paging

Leia mais »
SOLID

Swift: Princípio de Substituição de Liskov [Artigo 3]

Leia mais »
Tags
Agile Android Apache api App Apps Arquitetura Autoconhecimento Backend Banco de Dados BI Blog bot Bots Cache Carreira Carreira e Cultura Cloud code containers Continuos integration Cultura Dados Dados Probabilísticos data Data Center Data Science Desenvolvimento Design devs digital diversidade DSL Entrevista Evento eventos Experiências Facebook front Front-end Frontend Full-stack Fundação 1Bi Gestão GO google Groovy grupo Grupo Movile histórias home iFood Infraestrutura Inteligencia artificial iOS Java jetpack Json Kotlin kubernetes layout Liderança linguagem loadview Machine Learning marketplace Mobile Movile Movilianos news Objective-C PlayKids podcast produto Projetos pwa python Rapiddo react Reativas Redis research review RH Room spark Spring stack storyboards Superplayer Swift Sympla Talentos tdd Tecnologia Testes transformação digital Unity ux vagas Valores view viewcode viewcontroller viper Voxel vue wavy web Widget Zoop

Siga-nos

Facebook-f
Linkedin
Instagram
Youtube
Twitter

Baixe nosso e-book!

Receba conteúdos exclusivos em seu email!

Seus dados estão protegidos conosco.

Menu

  • Tecnologia
  • Carreira e Cultura
  • Materiais Gratuitos
  • Podcast
Menu
  • Tecnologia
  • Carreira e Cultura
  • Materiais Gratuitos
  • Podcast

principais categorias

  • Tecnologia
  • Carreira e Cultura
  • News
  • Movile
  • Backend
  • Android
Menu
  • Tecnologia
  • Carreira e Cultura
  • News
  • Movile
  • Backend
  • Android

FEED RSS

RSS Feed RSS - Posts

RSS Feed RSS - Comentários

redes sociais

  • Facebook
  • LinkedIn
  • Instagram
  • Youtube
  • Twitter

Copyright 2021 © Todos os direitos reservados. Criação de Site por UpSites & Weblab

  • Novas Vagas!

  • Último Podcast!

%d blogueiros gostam disto: