trabalho-individual-gces-thiagooliveira


Nametrabalho-individual-gces-thiagooliveira JSON
Version 0.1.0 PyPI version JSON
download
home_page
SummaryTrabalho individual de GCES 2022/2 de Thiago França
upload_time2023-01-29 21:57:56
maintainer
docs_urlNone
authorYour Name
requires_python>=3.8,<4.0
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Trabalho individual de GCES 2022-2


Os conhecimentos de Gestão de Configuração de Software são fundamentais no ciclo de vida de um produto de software. As técnicas para a gestão vão desde o controle de versão, automação de build e de configuração de ambiente, testes automatizados, isolamento do ambiente até o deploy do sistema. Todo este ciclo nos dias de hoje são integrados em um pipeline de DevOps com as etapas de Integração Contínua (CI) e Deploy Contínuo (CD) implementadas e automatizada.

Para exercitar estes conhecimentos, neste trabalho, você deverá aplicar os conceitos estudados ao longo da disciplina no produto de software contido neste repositório.

O sistema se trata de uma biblioteca python para executar pipelines de dados de forma customizável em bancos de dados.

Para executar a aplicação em sua máquina, basta seguir o passo-a-passo descritos abaixo.

# Resumo da aplicação 

 A biblioteca desenvolvida auxilia desenvolvedores a explorar os dados com funções essenciais para a identificação de outliers e anomalias e uma interface que auxilia a visualizar as informações de acordo com o arquivo de configuração.

 A biblioteca recebe um arquivo yaml com as configurações de cada etapa do pipeline de dados, e do endereço do banco de dados.
 Após a execução do banco de dados, o banco de dados de dados é atualizado com os resultados da análise e os resultados podem ser visualizados por meio de dashboards no metabase.

 # Etapas do Trabalho

 O trabalho deve ser elaborado através de etapas. Cada uma das etapas deve ser realizada em um commit separado com o resultado funcional desta etapa.

As etapas de 1 a 3 são relacionadas ao isolamento do ambiente utilizando a ferramenta Docker e Docker Compose. Neste sentido o tutorial abaixo cobre os conceitos fundamentais para o uso destas tecnologias.

[Tutorial de Docker](https://github.com/FGA-GCES/Workshop-Docker-Entrega-01/tree/main/tutorial_docker)

As etapas de 4 e 5 são relacionadas à configuração do pipeline de CI e CD.

[Tutorial CI - Gitlab](https://github.com/FGA-GCES/Workshop-CI-Entrega-02/tree/main/gitlab-ci_tutorial)


## Containerização do Banco


A versão inicial do sistema contém o metabase no backend cujo funcionamento requer uma instalação de um banco de dados Mongo. A primeira etapa do trabalho é de configurar um container somente para o banco de dados com as credenciais especificadas na descrição da aplicação e testar o funcionamento do mesmo.

## Containerização da aplicação + metabase

Nesta etapa, tanto o a aplicação python quanto o metabase/banco deverão estar funcionando em containers individuais.

Deverá ser utilizado um orquestrador (Docker Compose) para gerenciar comunicação entre os containers além do uso de credenciais, networks, volumes, entre outras configurações necessárias para a correta execução da aplicação.

## Gestão de dependencias e pacotes python

Configurar o gerenciador de dependencias e pacotes python, o poetry, para gerar um pacote pip da solução. Publicar a biblioteca

https://python-poetry.org

## Documentação automatizada

Gerar a documentação da biblioteca de forma automatizada utilizando o doxygen para gerar informacoes da biblioteca e o sphinx para criar documentação https://www.sphinx-doc.org



##  Integração Contínua (CI)

Para a realização desta etapa, a aplicação já deverá ter seu ambiente completamente containerizado.

Deverá ser utilizada uma ferramenta de Integração Contínua para garantir o build, os testes e o deploy para o https://pypi.org .

Esta etapa do trabalho poderá ser realizada utilizado os ambientes de CI do GitLab-CI ou Github Actions.

Requisitos da configuração da Integração Contínua (Gitlab ou Github) incluem:

Build (Poetry)
Test - unitários
Lint - 
Documentação (sphinx)


## Avaliação

A avaliação do trabalho será feita à partir da correta implementação de cada etapa. A avaliação será feita de maneira **quantitativa** (se foi realizado a implementação + documentação), e **qualitativa** (como foi implementado, entendimento dos conceitos na prática, complexidade da solução). Para isso, faça os **commits atômicos, bem documentados, completos** a fim de facilitar o entendimento e avaliação do seu trabalho. Lembrando o trabalho é individual.

**Observações**: 
1. A data final de entrega do trabalho é o dia 28/01/2023;
2. O trabalho deve ser desenvolvido em um **repositório PESSOAL e PRIVADO** que deverá ser tornado público somente após a data de entrega do trabalho (no dia 28/01/2023);
3. Cada etapa do trabalho deverá ser entregue em commits progressivos (pendendo ser mais de um commit por etapa);
4. Os **commits devem estar espaçados em dias ao longo do desenvolvimento do trabalho**. Commits feitos todos juntos na data de entrega não serão descontados da nota final.

| Item | Peso |
|---|---|
| 1. Containerização do Banco                      | 1.0 |
| 2. Containerização da biblioteca + Banco          | 1.5 |
| 3. Publicação da biblioteca  | 1.5 |
| 4. Documentação automatiza | 1.5 |
| 5. Integração Contínua (Build, Test, Lint, documentacao)       | 3.0 |
| 6. Deploy Contínuo                               | 1.5 |


##  Exemplo de Trabalhos Anteriores

Alguns trabalhos de trabalhos anteriores:

- [2020/2](https://github.com/FGA-GCES/Trabalho-Individual-2020-2)
- [2021/1](https://github.com/FGA-GCES/Workshop-Docker-Entrega-01)
- [2021/2](https://github.com/FGA-GCES/Trabalho-Individual-2021-2)



### Requisitos de instação

```
python -m venv env
source env/bin/activate
pip install -r requirements.txt
```

### Rodando a aplicação

```
python src/main.py
```

### Testando

```
pytest --cov
```

### Metabase

O metabase ajuda a visualizar e a modelar o processamento dos dados, a engenharia de features e monitoramento do modelo.



| Keywords  | Descrição |
|-----------|-------------|
|   CSV     | Um arquivo CSV é um arquivo de texto simples que armazena informações de tabelas e planilhas. Os arquivos CSV podem ser facilmente importados e exportados usando programas que armazenam dados em tabelas.|
| Collection (coleção)| Uma coleção é um agrupamento de documentos do MongoDB. Os documentos dentro de uma coleção podem ter campos diferentes. Uma coleção é o equivalente a uma tabela em um sistema de banco de dados relacional.|
|  Database | Um banco de dados armazena uma ou mais coleções de documentos.|
| Mongo| É um banco de dados NoSQL desenvolvido pela MongoDB Inc. O banco de dados MongoDB foi criado para armazenar uma grande quantidade de dados e também executar rapidamente.|



**Connect the database to the metabase**

- step 1: Open localhost:3000
- step 2: Click Admin setting
- step 3: Click Database
- step 4: Adicione os dados de autenticação de  banco de dados 


**Exemplo da conexão mongo  metabase**
|  metabase  | credential  |
|------------|-------------|
|    host    |  mongo  |
|dabase_name | use the name you define in make migrate|
|    user    |   lappis    |
|  password  |   lappis    |


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "trabalho-individual-gces-thiagooliveira",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8,<4.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "Your Name",
    "author_email": "you@example.com",
    "download_url": "https://files.pythonhosted.org/packages/cf/74/1a477f040d720ee6bf462ed3e561010da8337381f5f410efa61dba10b637/trabalho_individual_gces_thiagooliveira-0.1.0.tar.gz",
    "platform": null,
    "description": "# Trabalho individual de GCES 2022-2\n\n\nOs conhecimentos de Gest\u00e3o de Configura\u00e7\u00e3o de Software s\u00e3o fundamentais no ciclo de vida de um produto de software. As t\u00e9cnicas para a gest\u00e3o v\u00e3o desde o controle de vers\u00e3o, automa\u00e7\u00e3o de build e de configura\u00e7\u00e3o de ambiente, testes automatizados, isolamento do ambiente at\u00e9 o deploy do sistema. Todo este ciclo nos dias de hoje s\u00e3o integrados em um pipeline de DevOps com as etapas de Integra\u00e7\u00e3o Cont\u00ednua (CI) e Deploy Cont\u00ednuo (CD) implementadas e automatizada.\n\nPara exercitar estes conhecimentos, neste trabalho, voc\u00ea dever\u00e1 aplicar os conceitos estudados ao longo da disciplina no produto de software contido neste reposit\u00f3rio.\n\nO sistema se trata de uma biblioteca python para executar pipelines de dados de forma customiz\u00e1vel em bancos de dados.\n\nPara executar a aplica\u00e7\u00e3o em sua m\u00e1quina, basta seguir o passo-a-passo descritos abaixo.\n\n# Resumo da aplica\u00e7\u00e3o \n\n A biblioteca desenvolvida auxilia desenvolvedores a explorar os dados com fun\u00e7\u00f5es essenciais para a identifica\u00e7\u00e3o de outliers e anomalias e uma interface que auxilia a visualizar as informa\u00e7\u00f5es de acordo com o arquivo de configura\u00e7\u00e3o.\n\n A biblioteca recebe um arquivo yaml com as configura\u00e7\u00f5es de cada etapa do pipeline de dados, e do endere\u00e7o do banco de dados.\n Ap\u00f3s a execu\u00e7\u00e3o do banco de dados, o banco de dados de dados \u00e9 atualizado com os resultados da an\u00e1lise e os resultados podem ser visualizados por meio de dashboards no metabase.\n\n # Etapas do Trabalho\n\n O trabalho deve ser elaborado atrav\u00e9s de etapas. Cada uma das etapas deve ser realizada em um commit separado com o resultado funcional desta etapa.\n\nAs etapas de 1 a 3 s\u00e3o relacionadas ao isolamento do ambiente utilizando a ferramenta Docker e Docker Compose. Neste sentido o tutorial abaixo cobre os conceitos fundamentais para o uso destas tecnologias.\n\n[Tutorial de Docker](https://github.com/FGA-GCES/Workshop-Docker-Entrega-01/tree/main/tutorial_docker)\n\nAs etapas de 4 e 5 s\u00e3o relacionadas \u00e0 configura\u00e7\u00e3o do pipeline de CI e CD.\n\n[Tutorial CI - Gitlab](https://github.com/FGA-GCES/Workshop-CI-Entrega-02/tree/main/gitlab-ci_tutorial)\n\n\n## Containeriza\u00e7\u00e3o do Banco\n\n\nA vers\u00e3o inicial do sistema cont\u00e9m o metabase no backend cujo funcionamento requer uma instala\u00e7\u00e3o de um banco de dados Mongo. A primeira etapa do trabalho \u00e9 de configurar um container somente para o banco de dados com as credenciais especificadas na descri\u00e7\u00e3o da aplica\u00e7\u00e3o e testar o funcionamento do mesmo.\n\n## Containeriza\u00e7\u00e3o da aplica\u00e7\u00e3o + metabase\n\nNesta etapa, tanto o a aplica\u00e7\u00e3o python quanto o metabase/banco dever\u00e3o estar funcionando em containers individuais.\n\nDever\u00e1 ser utilizado um orquestrador (Docker Compose) para gerenciar comunica\u00e7\u00e3o entre os containers al\u00e9m do uso de credenciais, networks, volumes, entre outras configura\u00e7\u00f5es necess\u00e1rias para a correta execu\u00e7\u00e3o da aplica\u00e7\u00e3o.\n\n## Gest\u00e3o de dependencias e pacotes python\n\nConfigurar o gerenciador de dependencias e pacotes python, o poetry, para gerar um pacote pip da solu\u00e7\u00e3o. Publicar a biblioteca\n\nhttps://python-poetry.org\n\n## Documenta\u00e7\u00e3o automatizada\n\nGerar a documenta\u00e7\u00e3o da biblioteca de forma automatizada utilizando o doxygen para gerar informacoes da biblioteca e o sphinx para criar documenta\u00e7\u00e3o https://www.sphinx-doc.org\n\n\n\n##  Integra\u00e7\u00e3o Cont\u00ednua (CI)\n\nPara a realiza\u00e7\u00e3o desta etapa, a aplica\u00e7\u00e3o j\u00e1 dever\u00e1 ter seu ambiente completamente containerizado.\n\nDever\u00e1 ser utilizada uma ferramenta de Integra\u00e7\u00e3o Cont\u00ednua para garantir o build, os testes e o deploy para o https://pypi.org .\n\nEsta etapa do trabalho poder\u00e1 ser realizada utilizado os ambientes de CI do GitLab-CI ou Github Actions.\n\nRequisitos da configura\u00e7\u00e3o da Integra\u00e7\u00e3o Cont\u00ednua (Gitlab ou Github) incluem:\n\nBuild (Poetry)\nTest - unit\u00e1rios\nLint - \nDocumenta\u00e7\u00e3o (sphinx)\n\n\n## Avalia\u00e7\u00e3o\n\nA avalia\u00e7\u00e3o do trabalho ser\u00e1 feita \u00e0 partir da correta implementa\u00e7\u00e3o de cada etapa. A avalia\u00e7\u00e3o ser\u00e1 feita de maneira **quantitativa** (se foi realizado a implementa\u00e7\u00e3o + documenta\u00e7\u00e3o), e **qualitativa** (como foi implementado, entendimento dos conceitos na pr\u00e1tica, complexidade da solu\u00e7\u00e3o). Para isso, fa\u00e7a os **commits at\u00f4micos, bem documentados, completos** a fim de facilitar o entendimento e avalia\u00e7\u00e3o do seu trabalho. Lembrando o trabalho \u00e9 individual.\n\n**Observa\u00e7\u00f5es**: \n1. A data final de entrega do trabalho \u00e9 o dia 28/01/2023;\n2. O trabalho deve ser desenvolvido em um **reposit\u00f3rio PESSOAL e PRIVADO** que dever\u00e1 ser tornado p\u00fablico somente ap\u00f3s a data de entrega do trabalho (no dia 28/01/2023);\n3. Cada etapa do trabalho dever\u00e1 ser entregue em commits progressivos (pendendo ser mais de um commit por etapa);\n4. Os **commits devem estar espa\u00e7ados em dias ao longo do desenvolvimento do trabalho**. Commits feitos todos juntos na data de entrega n\u00e3o ser\u00e3o descontados da nota final.\n\n| Item | Peso |\n|---|---|\n| 1. Containeriza\u00e7\u00e3o do Banco                      | 1.0 |\n| 2. Containeriza\u00e7\u00e3o da biblioteca + Banco          | 1.5 |\n| 3. Publica\u00e7\u00e3o da biblioteca  | 1.5 |\n| 4. Documenta\u00e7\u00e3o automatiza | 1.5 |\n| 5. Integra\u00e7\u00e3o Cont\u00ednua (Build, Test, Lint, documentacao)       | 3.0 |\n| 6. Deploy Cont\u00ednuo                               | 1.5 |\n\n\n##  Exemplo de Trabalhos Anteriores\n\nAlguns trabalhos de trabalhos anteriores:\n\n- [2020/2](https://github.com/FGA-GCES/Trabalho-Individual-2020-2)\n- [2021/1](https://github.com/FGA-GCES/Workshop-Docker-Entrega-01)\n- [2021/2](https://github.com/FGA-GCES/Trabalho-Individual-2021-2)\n\n\n\n### Requisitos de insta\u00e7\u00e3o\n\n```\npython -m venv env\nsource env/bin/activate\npip install -r requirements.txt\n```\n\n### Rodando a aplica\u00e7\u00e3o\n\n```\npython src/main.py\n```\n\n### Testando\n\n```\npytest --cov\n```\n\n### Metabase\n\nO metabase ajuda a visualizar e a modelar o processamento dos dados, a engenharia de features e monitoramento do modelo.\n\n\n\n| Keywords  | Descri\u00e7\u00e3o |\n|-----------|-------------|\n|   CSV     | Um arquivo CSV \u00e9 um arquivo de texto simples que armazena informa\u00e7\u00f5es de tabelas e planilhas. Os arquivos CSV podem ser facilmente importados e exportados usando programas que armazenam dados em tabelas.|\n| Collection (cole\u00e7\u00e3o)| Uma cole\u00e7\u00e3o \u00e9 um agrupamento de documentos do MongoDB. Os documentos dentro de uma cole\u00e7\u00e3o podem ter campos diferentes. Uma cole\u00e7\u00e3o \u00e9 o equivalente a uma tabela em um sistema de banco de dados relacional.|\n|  Database | Um banco de dados armazena uma ou mais cole\u00e7\u00f5es de documentos.|\n| Mongo| \u00c9 um banco de dados NoSQL desenvolvido pela MongoDB Inc. O banco de dados MongoDB foi criado para armazenar uma grande quantidade de dados e tamb\u00e9m executar rapidamente.|\n\n\n\n**Connect the database to the metabase**\n\n- step 1: Open localhost:3000\n- step 2: Click Admin setting\n- step 3: Click Database\n- step 4: Adicione os dados de autentica\u00e7\u00e3o de  banco de dados \n\n\n**Exemplo da conex\u00e3o mongo  metabase**\n|  metabase  | credential  |\n|------------|-------------|\n|    host    |  mongo  |\n|dabase_name | use the name you define in make migrate|\n|    user    |   lappis    |\n|  password  |   lappis    |\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Trabalho individual de GCES 2022/2 de Thiago Fran\u00e7a",
    "version": "0.1.0",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1d8dc5b9eb0f1b3142fe02022207dde81670918e691e4379d1dbd126f89df571",
                "md5": "bda1d1fd1a32da586a168bac739b1460",
                "sha256": "4c03c59671c7695f39f9dcc13dba01892bce38b0986ab19db703dbd2a44f226c"
            },
            "downloads": -1,
            "filename": "trabalho_individual_gces_thiagooliveira-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bda1d1fd1a32da586a168bac739b1460",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8,<4.0",
            "size": 13294,
            "upload_time": "2023-01-29T21:57:54",
            "upload_time_iso_8601": "2023-01-29T21:57:54.713835Z",
            "url": "https://files.pythonhosted.org/packages/1d/8d/c5b9eb0f1b3142fe02022207dde81670918e691e4379d1dbd126f89df571/trabalho_individual_gces_thiagooliveira-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cf741a477f040d720ee6bf462ed3e561010da8337381f5f410efa61dba10b637",
                "md5": "54531d3095a37f3c589a18260f2b42aa",
                "sha256": "5fadd4df5f27836955e0d49269813529004eafaead81dd69c6cfba6a4dd7bfce"
            },
            "downloads": -1,
            "filename": "trabalho_individual_gces_thiagooliveira-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "54531d3095a37f3c589a18260f2b42aa",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8,<4.0",
            "size": 18486,
            "upload_time": "2023-01-29T21:57:56",
            "upload_time_iso_8601": "2023-01-29T21:57:56.276423Z",
            "url": "https://files.pythonhosted.org/packages/cf/74/1a477f040d720ee6bf462ed3e561010da8337381f5f410efa61dba10b637/trabalho_individual_gces_thiagooliveira-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-01-29 21:57:56",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "trabalho-individual-gces-thiagooliveira"
}
        
Elapsed time: 0.13972s