Documento de Arquitetura
Histórico de Revisão
Data | Versão | Modificação | Autor |
---|---|---|---|
03/04/2019 | 0.1 | Criação do documento e Metas e Restrições de Arquitetura | Ernando |
04/04/2019 | 0.2 | Tópico 2 | Davi Alves |
05/04/2019 | 0.3 | Tópico 3 | Ernando |
06/04/2019 | 0.3.1 | Finalização topico 2, revisão topico 3 | Davi Alves |
06/04/2019 | 0.4 | Tópico 1 | Álex Porto |
07/04/2019 | 0.5 | Tópico 4 | Eugênio Sales |
14/04/2019 | 0.5.1 | Revisão de ortografia e correção do diretório da imagem | Álex Porto |
1. Introdução
Este documento apresenta a arquitetura de software utilizada no desenvolvimento do ChatBot PyLearner, visando uma visualização dos requisitos e da estrutura com os desenvolvedores.
1.1 Finalidade
Este documento tem como objetivo esboçar uma visão ampla da arquitetura do PyLearner e porque cada decisão arquitetural foi tomada
1.2 Escopo
o Pylearner propõe-se a ajudar programadores a aprender de uma maneira mais interativa e dinâmica, através de uma plataforma que integra tutoriais e chatbot,sobre Machine Learning,podendo tirar dúvidas e orientar a direção em que se deve seguir no assunto .
1.3 Referências
2018.2-Lino: Documento de Arquitetura. 2018. Disponível em: https://github.com/fga-eps-mds/2018.2-Lino/blob/master/docs/documento-de-arquitetura.md. Acesso em: 6 de abril de 2019;
2018.2-IncluCare_API: Documento de Arquitetura. 2018. Disponível em: https://github.com/fga-eps-mds/2018.1-IncluCare_API/blob/master/docs/ARCHITECTURE_DOCUMENT.md. Acesso em: 6 de abril de 2019;
1.4 Definições, Acrônimos e Abreviações
2. Representação da Arquitetura
- Jupyter Notebook
O Jupyter Notebook é um aplicativo Web de código aberto que permite criar e compartilhar documentos que contêm código ativo, equações, visualizações e texto narrativo. Os usos incluem: limpeza e transformação de dados, simulação numérica, modelagem estatística, visualização de dados, aprendizado de máquina e muito mais.
- Rocket Chat
Rocket.Chat é uma solução em software de chat de código aberto. Gratuito, ilimitado e totalmente personalizável com hospedagem em nuvem local. Excelente para a integração com chatbot.
- Rasa
Rasa é um conjunto de ferramentas de aprendizado de máquina de código aberto para os desenvolvedores criarem chatbots e assistentes contextuais baseados em texto e voz. Ele é dividido em duas principais ferramentas: >Rasa NLU que é uma ferramenta open source para processamento de linguagem natural, sendo focada em classificação de intenções e extração de identidades. >Rasa Core que é uma ferramenta livre para construção de sistemas de conversação, como messengers e chat bots.
- Mongo DB
Mongo DB é um programa de banco de dados orientado a documentos de plataforma cruzada gratuito e de código aberto.
- Docker
Docker é um projeto de código aberto que automatiza a implantação de aplicativos dentro de recipientes de software, fornecendo uma camada adicional de abstração e automação de virtualização de sistema de nível operacional em Linux, Mac OS e Windows.
- Microserviços
A arquitetura de microserviços representa um estilo de arquitetura que é uma abordagem desenvolvida com a finalidade de criar um aplicativo único como uma suite de pequenos serviços, cada um executando seu próprio processo e se comunicando através de mecanismos leves, muitas vezes em uma API com recursos HTTP.
No software descrito neste documento a arquitetura de microsserviços será bastante utilizada. Os módulos serão:
-
Busca no StackOverflow: Módulo responsável por efetuar uma busca de uma mensagem de erro gerado na output da celula executada no jupyter.
-
Sugestões para exercicios: Módulo responsável por propor exercicios de plataforma externa.
-
Busca de Datasets: Módulo responsavel por efetuar busca de datasets especificos na area de machine learning.
-
Gateway: Módulo responsável por intermediar a comunicação entre o Back-end e o Front-end.
-
Comunicação entre os serviços
Comunicação entre os serviços será feita por meio de uma API Gateway, a qual será responsável por fazer o intermédio entre os microsserviços por meio de métodos do protocolo HTTP.
- Amazon API Gateway: O Amazon API Gateway é um serviço totalmente gerenciado que facilita para os desenvolvedores criar, publicar, manter, monitorar e proteger APIs em qualquer escala.
3. Metas e Restrições de Arquitetura
Restrições de arquitetura do projeto:
- Utilização da ferramenta Jupyter Notebook para computar os códigos gerados pelo usuário e tornar o ambiente mais propício a aprendizagem de forma mais interativa.
- Utilização da ferramenta Docker para a virtualização de ambientes, voltado para o desenvolvimento da arquitetura de microserviços do projeto.
- Utilização do Mongo DB para criação de um banco de dados relacional.
- Utilização do Rasa para a criação e contextualização do Chatbot.
- Necessário conexão com a internet por se tratar de uma aplicação web.
Metas do projeto:
- Tirar duvidas de Machine Learning com o intuito de aprimorar conhecimento nessa área e auxiliar o usuario com tutoriais.