| (40 revisões intermediárias por 4 usuários não estão sendo mostradas) | |||
| Linha 74: | Linha 74: | ||
** Machine Learning | ** Machine Learning | ||
<br> | <br> | ||
==Esboços== | |||
[[Arquivo:rascunho.png|center]] | |||
<br> | |||
[[Arquivo:rascunho2.png|center]] | |||
<br> | |||
[[Arquivo:esboço3.PNG|center]] | |||
= Fase II - Ensino = | = Fase II - Ensino = | ||
| Linha 94: | Linha 106: | ||
[[Arquivo:interfaceflow1.png|center]] | [[Arquivo:interfaceflow1.png|center]] | ||
<br> | |||
== Apresentação == | |||
[[Arquivo:FlowGraphApresentação.pdf]] | |||
<br> | |||
== Metodologia == | |||
<br> | |||
*Scrum | |||
<br> | |||
Scrum é uma metodologia ágil para gestão e planejamento de projetos. No scrum os projetos são divididos em ciclos, com determinado tempo de execução, são os chamados sprints. As funcionalidades a serem implementadas em um projeto são mantidas em uma lista que é conhecida como Product Backlog. | |||
<br> | <br> | ||
Essa metodologia é marcada por reuniões constantes e com funções diversificadas dentro do projeto ao todo, como por exemplo as daily scrum, que são reuniões rápidas e diárias entre os participantes do projeto, com o intuito de especificar o que cada um têm feito e caso possui algum impedimento para execução do mesmo; outra reunião é a chamada sprint planning meeting, na qual se trata de uma priorização do que deve ser feito e também o planejamento das outras atividades para os próximos sprints, levando sempre em conta o que está especificado no Product Backlog; e por último e não menos importante temos a chamada sprint review meeting, onde a equipe apresenta todas as funcionalidades implementadas das sprints que decorrem do projeto. | |||
<br> | |||
Na metodoligia scrum, os participantes do projeto se dividem de acordo com a seguinte forma: Cliente, Product Owner, Scrum Master, Time Scrum. | |||
<br> | <br> | ||
*Trello | |||
Trello é uma ferramenta conhecida por auxiliar no gerenciamento de projetos por meio de listas que se mostram extremamente versáteis e que são facilmente alteradas de acordo com a necessidade do usuário. Trata-se de um site que possui um layout específico capaz de dispor no mesmo informações necessárias relacionadas ao serviço. A aplicação é disposta por diferentes boards, que diz respeito a quadros que contém especificidades do projeto, dividos em o que se deve entregar, o que está sendo feito e o que já foi entregue. Um exemplo do utilizado em nosso projeto pode ser visto logo em seguida: | |||
<br> | |||
[[Arquivo:TRELLO.png|center]] | |||
<br> | <br> | ||
A interface do trello é um ambiente muito útil para o trabalho em equipe, em que, os quadros são compartilhados com todos os membros inseridos no projeto, e cada um recebe marcações em diversos cartões com respeito as suas respectivas funções para que o objetivo possa ser alcançado. | |||
*GitHub | |||
O GitHub é um sistema de gerenciamento de projetos e versões de códigos, assim como também, um tipo de rede social criado para os desenvolvedores. O GitHub permite trabalhar em projetos colaborativos com desenvolvedores de todo o mundo, além de planejar os projetos e acompanhar os trabalhos. No GitHub é possível uma interação grande com relação aos participantes de cada projeto no que diz respeito ao processo de desenvolvimento de um código e também da atualização do mesmo para diferentes versões. | |||
<br> | |||
<br> | <br> | ||
| Linha 131: | Linha 154: | ||
== Benefícios para quem for oferecer esta solução == | == Benefícios para quem for oferecer esta solução == | ||
*Praticidade na visualização de todos os equipamentos da rede backbone | |||
*Atualização em tempo real dos dados da rede | |||
*Possibilidade de inserção de novos equipamentos de maneira otimizada | |||
*Conhecimento mais rápido a respeito dos elementos de rede | |||
*Facilidade de acesso para mostrar a viabilidade do produto para quem for utilizar | |||
<br> | <br> | ||
| Linha 139: | Linha 166: | ||
== Benefícios para o usuário == | == Benefícios para o usuário == | ||
*Facilidade de acesso a informação a respeito da rede | |||
*Otimização de esforço e tempo | |||
*Análise rápida para soluções rápidas | |||
*Configurações de maneira remota | |||
<br> | <br> | ||
== Direcionadores chave para esta iniciativa == | == Direcionadores chave para esta iniciativa == | ||
A iniciativa do Flow Graph pode ser uma aplicação que venha a unificar as informações em uma única plataforma. As informações a respeito da rede são de extrema importância e muito utilizadas, dessa forma, com uma aplicação que otimize a interpretação dessas, seria de grande utilidade e garantiria uma maior eficiência em várias necessidades dentro da própria empresa, assim como também pesquisas científicas, que poderiam utilizar a tecnologia desenvolvida. A aplicação deste projeto pode ser bem ampla, desde um incentivo a uma unificação de todas as informações a respeito da rede em uma única plataforma, assim como, o auxílio às atividades rotineiras dos especialistas que precisam coletar e lidar com as informações que a interface fornece, além de, proporcionar a capacidade de alterações de maneira remota na rede em questão, como inserção de novos roteadores e possíveis outras propostas a serem desenvolvidas com o decorrer do tempo. | |||
<br><br> | <br><br> | ||
== Possíveis modelos de negócios == | == Possíveis modelos de negócios == | ||
| Linha 163: | Linha 192: | ||
<br> | <br> | ||
Ao longo do desenvolvimento do projeto, nos deparamos com as seguintes barreiras, ao passo que nos levaram a avaliar quais as possíveis soluções e caminhos alternativos que poderiam ser seguidos. | |||
*Conseguir fazer um display (front) de um banco de dados em formato tabela HTML, usando um script JS para acessar o banco no servidor interno; | |||
*A ferramenta do JavaScript não possui nativamente acesso ao host local, sendo necessário um framework para conseguir ter acesso ao banco; | |||
*Uma ferramenta avaliada seria o Node Js, porém se trata de um side-server, ou seja, não é capaz de rodar em browser, onde seria o destino da informação; | |||
* Exemplificando: | |||
** A ferramenta que consegue usar o JS para buscar a informação no banco, não pode ser usada para exibir a informação que pegou. | |||
<br> | <br> | ||
| Linha 289: | Linha 324: | ||
<br> | <br> | ||
= | = Kanban = | ||
<br> | |||
<br> | * https://trello.com/b/SwbRrjI0/flow-graph | ||
<br> | |||
= Histórico = | = Histórico = | ||
| Linha 300: | Linha 337: | ||
= Pesquisadores = | = Pesquisadores = | ||
* Paulo Latado | |||
*<br> | * Gustavo Gardusi | ||
* Pedro Diogo Machado | |||
* Aymen Ghannouchi | |||
* Hugo Barbosa Silva | |||
* Paulo Vitor Costa Lima | |||
<br> | |||
Edição atual tal como às 22h50min de 24 de agosto de 2020
Título da Idéia
- Portal de coletas
Objetivos
- Criar uma solução que facilite a visualização de informações sobre os equipamentos e também realize configurações automáticas.
- Criação de túneis LSP entre os roteadores.
- Representar toda a planta da empresa por meio de técnicas como Graph Theory, Network Flow e Parallel computing.
- Criar uma API capaz de executar uma série de comandos pré definidas em um conjunto de equipamentos, baseado na autenticação de uma lista de usuários.
Conceito
Uma rede de telecomunicações é composta por diversos equipamentos interligados, formando uma estrutura que pode ser representada por um grafo. Essa complexa estrutura é capaz de enviar e receber milhares de informações, as quais podem ser utilizadas em diversas aplicações, porém ainda requer um esforço desnecessário para obter, processar e utilizar.
Ao esquematizar essa rede como um grafo, é possível utilizá-la da forma que for mais conveniente para cada objetivo, seja em forma de backups, ocorrências, monitoramento, etc.
Para isso, é necessário que exista um sistema capaz de percorrer por todos os mínimos detalhes de forma eficaz e precisa, caso contrário, seria uma ferramenta inviável.
Fase I - Estudo
Estudo Dirigido
- Redes de computadores
- MPLS (Multiprotocol Label Switching)
- Túneis LSP (Label-Switched Paths)
- SSH
- Telnet
- SNMP
- Equipamentos
- Juniper
- Cisco
- Huawei
- Teoria dos Grafos
- DFS (Depth-first search)
- BFS (Breadth-first search)
- Conectividade
- Ciclo
- Caminho
- Subgrafo
- Coloração
- Dijkstra
- Bipartição
- Árvores
- Grafos dinâmicos
- Fluxo máximo
- Ford-Fulkerson
- Edmonds-Karp
- Dinic
- Min cost max flow
- Programação:
- Raciocínio lógico (maratonas de programação)
- Estruturas de dados
- Programação dinâmica
- Processamento paralelo
- Processamento remoto
- Interface Gráfica:
- Gephi
- Inteligência artificial
- Redes neurais
- Deep Learning
- Machine Learning
Esboços


Fase II - Ensino
Conteúdo
Basicamente o projeto se baseia no conceito de realizar o acesso a uma interface gráfica, em que, a mesma contém informações a respeito de todos os equipamentos que constituem o backbone da rede Algar. Informações essas, que antes não eram tão simples a sua visualização, tornando assim a aplicação bastante importante, justamente pelo fato de ter em si um banco de dados com as principais informações dos equipamentos e dessa forma, essas informações serão filtradas da tabela de acordo com o que for solicitado pelo usuário da interface.
O projeto se constitui basicamente da estrutura mostrada logo abaixo:

A aplicação utiliza de uma tabela base para acessar todas as informações necessárias a respeito dos equipamentos no backbone da rede, como por exemplo, a cidade onde se encontra, o site a qual está associado, seu determinado fabricante, seu respectivo IP e o seu modelo específico.
O projeto trará como resultado uma aplicação que por meio de uma interface com o usuário, o mesmo terá acesso a informações de maneira bastante otimizada e consequentemente um acesso facilitado ao usuário no backbone da rede. Segue a seguir um template da própria aplicação a ser desenvolvida:

Apresentação
Arquivo:FlowGraphApresentação.pdf
Metodologia
- Scrum
Scrum é uma metodologia ágil para gestão e planejamento de projetos. No scrum os projetos são divididos em ciclos, com determinado tempo de execução, são os chamados sprints. As funcionalidades a serem implementadas em um projeto são mantidas em uma lista que é conhecida como Product Backlog.
Essa metodologia é marcada por reuniões constantes e com funções diversificadas dentro do projeto ao todo, como por exemplo as daily scrum, que são reuniões rápidas e diárias entre os participantes do projeto, com o intuito de especificar o que cada um têm feito e caso possui algum impedimento para execução do mesmo; outra reunião é a chamada sprint planning meeting, na qual se trata de uma priorização do que deve ser feito e também o planejamento das outras atividades para os próximos sprints, levando sempre em conta o que está especificado no Product Backlog; e por último e não menos importante temos a chamada sprint review meeting, onde a equipe apresenta todas as funcionalidades implementadas das sprints que decorrem do projeto.
Na metodoligia scrum, os participantes do projeto se dividem de acordo com a seguinte forma: Cliente, Product Owner, Scrum Master, Time Scrum.
- Trello
Trello é uma ferramenta conhecida por auxiliar no gerenciamento de projetos por meio de listas que se mostram extremamente versáteis e que são facilmente alteradas de acordo com a necessidade do usuário. Trata-se de um site que possui um layout específico capaz de dispor no mesmo informações necessárias relacionadas ao serviço. A aplicação é disposta por diferentes boards, que diz respeito a quadros que contém especificidades do projeto, dividos em o que se deve entregar, o que está sendo feito e o que já foi entregue. Um exemplo do utilizado em nosso projeto pode ser visto logo em seguida:

A interface do trello é um ambiente muito útil para o trabalho em equipe, em que, os quadros são compartilhados com todos os membros inseridos no projeto, e cada um recebe marcações em diversos cartões com respeito as suas respectivas funções para que o objetivo possa ser alcançado.
- GitHub
O GitHub é um sistema de gerenciamento de projetos e versões de códigos, assim como também, um tipo de rede social criado para os desenvolvedores. O GitHub permite trabalhar em projetos colaborativos com desenvolvedores de todo o mundo, além de planejar os projetos e acompanhar os trabalhos. No GitHub é possível uma interação grande com relação aos participantes de cada projeto no que diz respeito ao processo de desenvolvimento de um código e também da atualização do mesmo para diferentes versões.
Fase III - Exemplo de Caso de Negócio
Benefícios para quem for oferecer esta solução
- Praticidade na visualização de todos os equipamentos da rede backbone
- Atualização em tempo real dos dados da rede
- Possibilidade de inserção de novos equipamentos de maneira otimizada
- Conhecimento mais rápido a respeito dos elementos de rede
- Facilidade de acesso para mostrar a viabilidade do produto para quem for utilizar
Benefícios para o usuário
- Facilidade de acesso a informação a respeito da rede
- Otimização de esforço e tempo
- Análise rápida para soluções rápidas
- Configurações de maneira remota
Direcionadores chave para esta iniciativa
A iniciativa do Flow Graph pode ser uma aplicação que venha a unificar as informações em uma única plataforma. As informações a respeito da rede são de extrema importância e muito utilizadas, dessa forma, com uma aplicação que otimize a interpretação dessas, seria de grande utilidade e garantiria uma maior eficiência em várias necessidades dentro da própria empresa, assim como também pesquisas científicas, que poderiam utilizar a tecnologia desenvolvida. A aplicação deste projeto pode ser bem ampla, desde um incentivo a uma unificação de todas as informações a respeito da rede em uma única plataforma, assim como, o auxílio às atividades rotineiras dos especialistas que precisam coletar e lidar com as informações que a interface fornece, além de, proporcionar a capacidade de alterações de maneira remota na rede em questão, como inserção de novos roteadores e possíveis outras propostas a serem desenvolvidas com o decorrer do tempo.
Possíveis modelos de negócios
Descrever em tópicos os possíveis modelos de negócios
Business Case
Descrever um exemplo de negócio que permita avaliar a solução comercialmente
Barreiras encontradas
Ao longo do desenvolvimento do projeto, nos deparamos com as seguintes barreiras, ao passo que nos levaram a avaliar quais as possíveis soluções e caminhos alternativos que poderiam ser seguidos.
- Conseguir fazer um display (front) de um banco de dados em formato tabela HTML, usando um script JS para acessar o banco no servidor interno;
- A ferramenta do JavaScript não possui nativamente acesso ao host local, sendo necessário um framework para conseguir ter acesso ao banco;
- Uma ferramenta avaliada seria o Node Js, porém se trata de um side-server, ou seja, não é capaz de rodar em browser, onde seria o destino da informação;
- Exemplificando:
- A ferramenta que consegue usar o JS para buscar a informação no banco, não pode ser usada para exibir a informação que pegou.
Fase IV - Protótipo orientado ao Negócio
Escopo
Explique o escopo deste protótipo
Product Backlog
- https://docs.google.com/spreadsheets/d/1uMzWBxdoGnWcQ47jG-44_XluX4UdHEskFHr6UV0bHbU/edit?usp=sharing
- 01 Estudar Teoria dos Grafos - Depth-first search, Breadth-first search, Subgrafos, Conectividade, Network Flow
- 02 Estudar Gephi - Ferramenta utilizada como interface gráfica para representar os grafos
- 03 Estudar Processamento Paralelo - Executar comandos simultaneamente em diversos equipamentos
- 04 Estudar MPLS (Multiprotocol Label Switching) - Um dos protocolos utilizado para comunicação entre os equipamentos de transporte
- 05 Estudar LSP (Label-switched path) - Criação de túneis entre roteadores (como arestas em um grafo)
- 06 Estudar acesso remoto a sistemas - Executar comandos via SSH / Telnet / SNMP
- 07 Estudar lógica de programação - Melhor conhecimento lógico ajuda em diversas atividades, recomendo praticar em maratonas de programação
- 08 Estudar Github - Aprender como importar, exportar e usar o sistema git para versionamento. No caso utilizar github
- 09 Implementar Gephi - Visualizar qualquer tipo de grafo com informações variadas
- 10 Testar Gephi - Avaliar viabilidade da ferramenta
- 11 Implementar Discovery - Mapear todos os equipamentos na planta da algar de forma automática e eficiente
- 12 Testar Discovery - Avaliar viablidade da ferramenta
- 13 Integração discovery com gephi - Representar as informações do discovery no Gephi
- 14 Teste da integração - Avaliar viablidade da ferramenta
- 15 Resolver identificação do tipo de roteador - P, PE ou BORDA
- 16 Implementar criação de LSP tunnels - Implementar a criação de túneis de forma automática e eficaz, baseado na documentação
- 17 Testar criação de LSP tunnels - Avaliar viablidade da ferramenta
- 18 Implementar interface web para utilização da ferramenta de criação de túneis - Facilitar o uso
- 19 Testar interface web - Avaliar viablidade da ferramenta
- 20 Implementar API capaz de executar comandos simultaneamente - Executar comandos remotos de forma simultanea em diversos equipamentos com confiabilidade
- 21 Testar API - Avaliar viablidade da ferramenta
Limitações
Informe sobre as limitações técnicas, comerciais, operacionais, recursos, etc.
PoC
Desenvolva um PoC (Proof of Concept)
Requisitos Funcionais
- What it should do?
- Input
- List of IP prefixes
- Credentials to enter in equipments
- Output
- List of equipments in network
- Loopback IP
- LSP
- OS
- List of equipments in network
- Input
- What do I need to know?
- Linux / Windows
- Run commands mannually
- Run local / remote command
- SSH
- Telnet
- Ping
- Files
- Read
- Write
- Delete
- Create
- Threads / Process
- Semaphore
- Deadlock
- ThreadPool
- Sweet Spot in concurrent threads/processes
- Data Structures
- Arrays
- Hash Table
- Exceptions
- Handle errors
- Create Logs
- Functions
- Global variables
- Local variables
- Paramiko?
- Help using SSH in python
- Linux / Windows
- What should I do?
- some_constants
- main()
- ping(hostname)
- run_local_command(command)
- run_remote_command(hostname, command)
- get_loopback_ip(hostname)
- get_lsp(hostname)
- get_os(hostname)
- get_info(hostname)
- build_ips_ping(prefixes)
- build_database(credentials_path)
Detalhamento Técnico
Descreva especificamente os aspectos técnicos desta pesquisa
Kanban
Histórico
Pesquisadores
- Paulo Latado
- Gustavo Gardusi
- Pedro Diogo Machado
- Aymen Ghannouchi
- Hugo Barbosa Silva
- Paulo Vitor Costa Lima