Propostas sem aluno atribuído

DEI - FCTUC
Gerado a 2024-05-02 20:34:20 (Europe/Lisbon).
Voltar

Titulo Estágio

Scalable Spark-based Backend for PKernel

Áreas de especialidade

Engenharia de Software

Local do Estágio

Coimbra

Enquadramento

A Feedzai é uma empresa especializada no uso de técnicas avançadas de machine learning e big data para detecção e prevenção de fraude em comércio electrónico.
Uma das peças centrais dos produtos da Feedzai chama-se PKernel ("Pulse Kernel"). Este módulo é um motor de Complex Event Processing (CEP, cf. http://en.wikipedia.org/wiki/Complex_event_processing) que permite fazer correlação e agregação de eventos em tempo real, gerando resultados de acordo com as especificações do utilizador. Associado ao motor existe uma linguagem chamada PQL (Pulse Query Language) que permite especificar que tratamento deve ser feito a estes eventos.
Atualmente o compilador de PQL gera código Java, que é depois executado sobre a JVM em forma de bytecode. Essa execução está limitada a uma única máquina e à memória disponível. É nossa intenção dotar o PKernel da capacidade de execução em cluster, de forma distribuída e escalável.

Objetivo

O principal objectivo deste estágio é criar um novo back-end para o compilador de PQL da Feedzai que permita traduzir as AST geradas pelo PKernel após a análise semântica do código para operadores Spark (https://spark.apache.org/). Spark permite a execução distribuída de código, de forma escalável, num cluster de computação distribuída, tendo sido pensado para processar grandes volumes de dados.
Tendo um back-end baseado em Spark será possível ao produto usar a mesma linguagem de alto nível (PQL) tanto para exprimir computações:
1) que necessitem de executar com elevado throughput e muito baixa latência (single machine, in memory, real-time);
2) elevado throughput, mas com latência superior, mas num cluster (multiple-machine, in memory, real-time);
3) em formato batch para grandes volumes de dados.
Uma parte integrante deste estágio será a optimização do sistema desenvolvido e a avaliação da respectiva performance. É objectivo explícito do estágio tentar publicar um artigo com os resultados da investigação a realizar. Em termos tecnológicos, o PKernel está implementado em Scala (front-end/compilador), sendo o
backend/runtime implementado em Java.
Os candidatos a este estágio deverão ter conhecimentos fortes de:
 Scala
 Java
 Compiladores/Linguagens de Programação

Plano de Trabalhos - Semestre 1

Objectivos:
Durante este semestre existem dois objectivos principais:
- Integrar o estagiário na estrutura do PKernel, código, e a forma como este processa dados
- Prototipar o sistema a desenvolver que permite a tradução de PQL para Spark

Abordagem:
O PKernel é um módulo de software bastante complexo no qual está implementado: um compilador, um ambiente de execução e um gerador de código nativo. Para garantir o sucesso do projeto é importante garantir que o estagiário percebe a estrutura interna do módulo, como funciona, e como pode ser estendido. Este semestre tem dois objectivos principais. Por um lado, integrar o estagiário no funcionamento deste módulo. Para isso ser-lhe-á pedido que numa primeira fase estude o código existente e, numa segunda fase, a estenda com funcionalidade simples. Assim, pretende-se que no final do primeiro semestre esteja em condições de poder implementar o suporte necessário. Ao mesmo tempo, durante este semestre, será desenvolvido um pequeno protótipo que permitirá traduzir queries PQL simples para código Spark.
Será adoptada uma abordagem iterativa de desenvolvimento, baseada em Scrum, em que em cada ciclo de desenvolvimento (duas a três semanas) serão definidas experiências ou funcionalidades a implementar, assim como procedimentos de avaliação. Existirão reuniões semanais de acompanhamento do trabalho.
Atividades a desenvolver durante o semestre:
- Integração na empresa e familiarização com o produto Pulse e com o PKernel.
- Estudo detalhado do módulo PKernel e do seu funcionamento
- Extensão do PKernel com novas funcionalidades de complexidade média/reduzida
- Prototipagem do sistema a implementar
- Escrita do relatório intermédio de estágio

Plano de Trabalhos - Semestre 2

Objectivo:
O principal objectivo deste semestre é implementar o backend do sistema que permite tradução de
código PQL para Spark, assim com da biblioteca de runtime que o suportará.
Abordagem:
Será adoptada uma abordagem iterativa de desenvolvimento, baseada em Scrum, em que em cada ciclo
de desenvolvimento (duas a três semanas) serão definidas experiências ou funcionalidades a implementar, assim como procedimentos de avaliação. Existirão reuniões semanais de acompanhamento do trabalho.
Atividades a desenvolver durante o semestre:
- Implementação do backend de tradução para Spark
- Criação de workbench de testes para a linguagem definida
- Avaliação e optimização de performance do sistema
- Escrita do relatório de estágio

Condições

Estágio Remunerado

Observações

É possível encontrar mais informação sobre o produto e a empresa no seguinte link:
http://www.feedzai.com

Orientador

Eng. Ricardo Ferreira
ricardo.ferreira@feedzai.com 📩