Giter VIP home page Giter VIP logo

template-serverless-service-python's Introduction

template-serverless-service-python

Template para construção de API flexível com serviços ECS AWS.

linting: pylint PEP8 Quality Gate Status Coverage Reliability Rating

Arquitetura de serviços

Diagramas aplicados com o uso desta arquitetura

Mais detalhes aqui.

Arquitetura em nuvem

Exemplo da arquitetura que roda no AWS Cloud.

Service-Arch

Arquitetura de Docker

Exemplo da arquitetura que funciona com o docker. Docker-Service-Arch

Arquitetura Geral de Rotas de Serviço

Exemplo de documentação OpenApi. Swagger

Lista de rotas:

GET / - Root
GET /docs - Swagger docs
GET /alive - Health Check
GET /v1/product - Product List
POST /v1/product - Product Create
DELETE /v1/product/<uuid> - Soft Product Delete
GET /v1/product/<uuid> - Product Get
PATCH /v1/product/<uuid> - Soft Product Update
PUT /v1/product/<uuid> - Complete Product Update

Pré requisitos

  • Python >=3.6
  • docker
  • docker-compose
  • python-dotenv
  • jsonformatter
  • requests
  • pytz
  • redis
  • pyyaml
  • apispec
  • marshmallow
  • Flask

Componentes

  • Projects Guidelines (Best practices)
  • Docker Management (Docker-Compose)
  • Localstack
  • MySQL
  • Redis
  • OpenApi (Swagger)
  • GitHub Actions
  • Tests (Unit, Component, and Integration)
  • Coverage Reports
  • Code formatter (AutoPEP88)
  • Lint (Pylint)
  • Standard commits (Commitizen)
  • Standard files setup (Editorconfig)
  • REST (RESTful & HATEOS)
  • CodeQuality (Sonar)
  • Database Migrations (SQLAlchemy)

Detalhes sobre os arquivos de requirements

requirements.txt

Coleção de módulos de aplicação comum, módulos leves.

requirements-local.txt

Coleção de módulos de desenvolvimento específicos.

requirements-tests.txt

Coleção de módulos de aplicação de testes específicos.

requirements-vendor.txt

Coleção de módulos de aplicação específicos, módulos pesados que podem ser convertidos em níveis, se necessário.

Configuração Kong

Configure o Kong API Gateway para trabalhar compatívelmente com o API Gateway.

Instalação

Instalando AWS CLI

Documentação: https://docs.aws.amazon.com/pt_br/cli/latest/userguide/install-cliv2.html

Execute os seguintes comandos:

apt install python38-env
apt install awscli
apt install zip
app install pip

Execute o seguinte comando:

aws configure

Instalando o suporte python venv

Execute o seguinte comando:

apt install python38-env

Creating the Docker network

Execute o seguinte comando:

./scripts/docker/create-network.sh

Executando Localmente

Para criar o venv e instalar os módulos, execute:

./scripts/venv.sh

Executando somente o framework HTTP

Execute o seguinte comando:

./scripts/flask/run-local.sh

Executando via Docker

Para executar a build:

./scripts/runenv.sh --build

Execute o seguinte comando:

./scripts/runenv.sh

Recuperando o ambiente em casos de erro

Execute o seguinte comando:

./scripts/fixenv.sh

Informações sobre scripts de automação

A seguir descrevemos o uso dos scripts de automação. Estes scripts kebab case ajudam o desenvolvedor nas tarefas em geral.

Scripts gerais

Kebab case scripts para ajudar o desenvolvedor em tarefas gerais.

Script Descrição Contexto
autopep8.sh Executa o code-lint para pep8 Codelint
boot.sh Inicia a aplicação durante a execução do container Local boot
boot-db.sh Inicia os dados para o banco de dados Local boot
boot-queues.sh Inicia as filas de espera da aplicação no localstack Local boot
boot-validate-connection.sh Checa se o localstack esta pronto para conectar Local boot
clean-env.sh Limpar a pasta ./vendor Local install
commit.sh Executa a ferramenta de comunitarização para commitar a mensagem Local development
fixenv.sh Em alguns casos em que a rede é deletada, você pode corrigir as referências dos containers Local install
install.sh Script para instalar as dependências Local install
dev.sh Script para instalar as dependências de ferramentas de dev Local install
openapi.sh Script para gerar o openapi.yaml CI/CD pipeline
pre-commit-config.sh Script para preparar o ambiente local para executar ferramentas de pre-commit Local development
preenv.sh Script para executar os comandos de pré build Local boot
pylint.sh Script para executar a análise pylint Local development
runenv.sh Script para iniciar o projeto localmente Local development
testenv.sh Script para executar o ambiente com foco nos testes de componentes Local development
venv.sh Script para instalar as dependências na pasta venv Local install
venv-exec.sh Script para executar scripts para instalar conteúdo dentro do venv Local install
zip.sh Gera um arquivo zip com o conteúdo da aplicação Other

Docker scripts

Scripts que facilitam as tasks para contexto do docker;

Flask scripts

Scripts que ajudam a executar o flask localmente, não dentro de um container do docker;

Localstack scripts

Scripts que ajudam a executar comandos sobre os recursos Localstack, como S3, SQS, Lambda, etc;

Scripts de migração

Scripts que ajudam a executar migrações;

OpenApi scripts

Scripts que ajudam a gerar diagramas e especificações openapi;

Scripts de testes

Scripts que ajudam a executar testes and gerar relatórios;

Amostras

Veja as amostras do projeto nesta pasta aqui.

Executando testes

Para executar os testes unitários do projeto, você pode executar o seguinte comando:

Primeiro você precisa instalar os requisitos de testes:

./scripts/venv-exec.sh ./scripts/tests/install-tests.sh

Testes unitários:

Executando os testes:

./scripts/venv-exec.sh ./scripts/tests/unit-tests.sh

Executando um arquivo específico:

./scripts/venv-exec.sh ./scripts/tests/unit-tests.sh /tests/unit/test_app.py

Testes de componentes:

Inicie os containers de docker:

./scripts/testenv.sh

Executando os testes:

./scripts/venv-exec.sh ./scripts/tests/component-tests.sh

Executando um arquivo específico:

./scripts/venv-exec.sh ./scripts/tests/component-tests.sh /tests/component/test_app.py

Testes de integração:

Copie o arquivo env/integration.env.example para env/integration.env e edite com os parametros de staging.

Executando os testes:

./scripts/venv-exec.sh ./scripts/tests/integration-tests.sh

Executando um arquivo específico:

./scripts/venv-exec.sh ./scripts/tests/integration-tests.sh /tests/integration/test_app.py

Todos os testes:

Executando os testes:

 ./scripts/venv-exec.sh ./scripts/tests/tests.sh

Geração de relatórios de cobertura

Para executar os testes de cobertura, você pode executar os seguintes comandos:

Cobertura de teste de unidade:

Execute o seguinte comando:

./scripts/venv-exec.sh ./scripts/tests/unit-coverage.sh
```cont

### Cobertura de teste de componente:
Inicie os containers de docker:
```bash
./scripts/testenv.sh

Execute o seguinte comando:

./scripts/venv-exec.sh ./scripts/tests/component-coverage.sh

Cobertura de teste de integração:

Copie o arquivo env/integration.env.example para env/integration.env e edite com os parametros de staging.

Execute o seguinte comando:

./scripts/venv-exec.sh ./scripts/tests/integration-coverage.sh

Observação: O resultado pode ser encontrado na pasta target/*.

Licença

Veja a licença: LICENSE.md.

Contribução

Configuração IDE

  • Para a sintaxe da docstring, por favor use o reStructuredText
  • Para uso de limite de linha 100 caracteres, conforme definido pelo PEP8

Lint

Para executar o pylint no código fonte do projeto, execute o seguinte comando:

./scripts/pylint.sh

Ou:

./scripts/pylint.sh ./app.py

Code Format

Para executar o autopep8 no código fonte do projeto, execute o seguinte comando:

./scripts/autopep8.sh

Ou:

./scripts/autopep8.sh ./app.py

Pre-commit

Para instalar o pré-commit para executar o ambiente de desenvolvimento local:

./scripts/venv.sh

os detalhes da biblioteca estão presentes no requirements-local.txt

Depois de você executar:

./scripts/pre-commit-config.sh

Build

Para executar o build do projeto, execute o seguinte comando:

./scripts/build.sh

Guidelines

Para executar a validação de guidelines do projeto, execute o seguinte comando:

./scripts/guidelines-checker.py

template-serverless-service-python's People

Contributors

andersoncontreira avatar camilamadara avatar portaldx-mm avatar robotmadeiramadeira avatar sonarqubemm avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

template-serverless-service-python's Issues

Docker e Entypoint não são aplicáveis para o contexto staging e prod

Description

Quando estamos a configurar o projeto para staging/production os arquivos atuais da docker não serão uteis para uso.

Link to Reproduction

não há

Steps to reproduce

Revisar dfd

Library Version

1.0.0

Browser

No response

Operating System

  • macOS
  • Windows
  • Linux

Additional Information

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.