Colocações MEI 2012/2013

DEI - FCTUC
Gerado a 2024-04-28 21:41:30 (Europe/Lisbon).
Voltar

Titulo Estágio

Pulse Performance Optimization Project (POP)

Área Tecnológica

Engenharia de Software

Local do Estágio

Coimbra (Opcionalmente poderá ser em Lisboa)

Enquadramento

A FeedZai S.A. é uma empresa de software especializada em processamento de dados em tempo real, sendo um spin-off tecnológico da Universidade de Coimbra. Em particular, a FeedZai desenvolve um produto chamado FeedZai Pulse que permite o tratamento de grandes volumes de dados em tempo real. Atestando o potencial disruptivo da sua tecnologia, foi em 2011 selecionada pela Gartner Research, uma das maiores empresas de análise do mercado de IT a nível mundial, entre várias centenas de empresas avaliadas de todo o mundo, como "Cool Vendor 2011", na área de "Analytics and Business Intelligence", tendo sido também reconhecida como uma das "Top-20 Smart Companies in Europe".

O produto Pulse é composto de vários módulos com alguma complexidade. A título de exemplo, existe um motor de processamento de eventos em tempo real que produz resultados de acordo com um conjunto de queries que foram compiladas e posteriormente executadas. Existe um sistema de alarmista baseado em regras que podem ser definidas comparando baselines históricas com valores em tempo real ou contra valores pré-definidos. Existe uma componente forte de visualização web baseada em interfaces REST, HTML5 e JavaScript. Estes são apenas alguns dos módulos, existindo outros.

Atualmente, o produto como um todo possui um determinado envelope de performance ao processar eventos em tempo real. Isto tanto em termos de throughput como de latência do processamento. Neste estágio pretende-se fazer uma avaliação exaustiva da performance do produto e, simultaneamente, aferir quais os componentes limitantes. Após esta fase pretende-se optimizar cada um dos componentes que se encontre no caminho crítico aumentando significativamente o envelope de performance do produto como um todo.

É de notar que este projeto tem uma importância importante para a empresa e os seus clientes pois aumentos de desempenho significativos querem dizer que é possível executar o sistema em hardware com requisitos menos exigentes ou, alternativamente, processar maiores volumes de dados com menos latências no mesmo hardware.

Objetivo

Tal como foi descrito anteriormente, o produto FeedZai Pulse possui um determinado envelope de performance ao processar eventos em tempo real. Isto tanto em termos de throughput como de latência do processamento. Neste estágio pretende-se fazer uma avaliação exaustiva da performance do produto e, simultaneamente, aferir quais os componentes limitantes. Esta avaliação incluirá a definição de uma workload representativa, baseada no perfil de utilização real do produto por parte dos clientes da empresa, a criação de todo um ambiente de testes e avaliação de performance, assim como a execução dos testes necessários. Após esta fase pretende-se optimizar cada um dos componentes que se encontre no caminho crítico aumentando significativamente o envelope de performance do produto como um todo.

Assim, os principais objetivos do estágio são:
1) Criação de um workload/benchmark representativo da utilização do produto Pulse
2) A criação de um ambiente de testes para a execução dos benchmarks assim como a instrumentação interna do produto por forma a encontrar os factores limitantes de processamento
3) Execução dos benchmarks e identificação dos factores limitantes.
4) Optimização e/ou paralisação dos principais componentes do Pulse que sejam limitantes ao processamento

É de notar que na parte de optimização das componentes limitantes será necessário perceber a usar organização interna, como funcionam e definir abordagens de como as optimizar. As técnicas de optimização podem variar de caso para caso. A título de exemplo:
1) Reformulação do código a nível de algoritmos e estruturas de dados para ser mais eficiente.
2) Paralelização do processamento para tirar partido dos vários CPUs/cores existentes numa máquina
3) Distribuição do processamento para tirar partido de várias máquinas existentes numa rede.

Dados os objetivos deste projeto o estagiário deverá ter conhecimentos fortes de algoritmos e estruturas de dados assim como conhecimentos de programação concorrente (multi-core) e distribuída. Conhecimentos sobre bases-de-dados e desenvolvimento web são também importantes pois uma parte significativa do produto exercita o sistema de armazenamento e IO, sendo outra componente relevante a parte de visualização em ambiente web que necessita também de ser escalável.

Plano de Trabalhos - Semestre 1

Objectivo:
O principal objectivo deste semestre é analisar a performance do produto e as componentes limitantes a nível de performance.

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:
- Integração na empresa e familiarização com o produto Pulse.
- Criação de uma workload representativo da utilização do produto Pulse
- Instrumentação interna do produto por forma a encontrar os factores limitantes de processamento
- Criação de um ambiente de testes para a execução dos benchmarks
- Execução dos benchmarks e identificação dos factores limitantes
- Escrita do relatório intermédio de estágio

Plano de Trabalhos - Semestre 2

Objectivo:
O principal objectivo deste semestre é optimizar as componentes críticas a nível de performance identificadas no semestre anterior.

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:
- Para cada uma das componentes identificadas ter-se-á de:
a) Análise detalhada do código numa abordagem white-box
b) Definição de uma estratégia de optimização, paralelização ou distribuição
c) Implementação das melhorias
d) Realização de novos testes de performance
e) Implementação de testes funcionais caso existam alterações funcionais dos módulos
- 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 nos seguintes links:
www.feedzai.com
https://docs.feedzai.com/display/pulse/

Orientador

Eng. António Alegria
antonio.alegria@feedzai.com 📩