Template para construção de API flexível com serviços ECS AWS.
Diagramas aplicados com o uso desta arquitetura
Mais detalhes aqui.
Exemplo da arquitetura que roda no AWS Cloud.
Exemplo da arquitetura que funciona com o docker.
Exemplo de documentação OpenApi.
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
- Python >=3.6
- docker
- docker-compose
- python-dotenv
- jsonformatter
- requests
- pytz
- redis
- pyyaml
- apispec
- marshmallow
- Flask
- 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)
Coleção de módulos de aplicação comum, módulos leves.
Coleção de módulos de desenvolvimento específicos.
Coleção de módulos de aplicação de testes específicos.
Coleção de módulos de aplicação específicos, módulos pesados que podem ser convertidos em níveis, se necessário.
Configure o Kong API Gateway para trabalhar compatívelmente com o API Gateway.
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
Execute o seguinte comando:
apt install python38-env
Execute o seguinte comando:
./scripts/docker/create-network.sh
Para criar o venv
e instalar os módulos, execute:
./scripts/venv.sh
Execute o seguinte comando:
./scripts/flask/run-local.sh
Para executar a build:
./scripts/runenv.sh --build
Execute o seguinte comando:
./scripts/runenv.sh
Execute o seguinte comando:
./scripts/fixenv.sh
A seguir descrevemos o uso dos scripts de automação. Estes scripts kebab case ajudam o desenvolvedor nas tarefas em geral.
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 |
Scripts que facilitam as tasks para contexto do docker;
Scripts que ajudam a executar o flask localmente, não dentro de um container do docker;
Scripts que ajudam a executar comandos sobre os recursos Localstack, como S3, SQS, Lambda, etc;
Scripts que ajudam a executar migrações;
Scripts que ajudam a gerar diagramas e especificações openapi;
Scripts que ajudam a executar testes and gerar relatórios;
Veja as amostras do projeto nesta pasta aqui.
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
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
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
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
Executando os testes:
./scripts/venv-exec.sh ./scripts/tests/tests.sh
Para executar os testes de cobertura, você pode executar os seguintes comandos:
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
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/*
.
Veja a licença: LICENSE.md.
- Anderson de Oliveira Contreira andersoncontreira
- Para a sintaxe da docstring, por favor use o
reStructuredText
- Para uso de limite de linha 100 caracteres, conforme definido pelo PEP8
Para executar o pylint no código fonte do projeto, execute o seguinte comando:
./scripts/pylint.sh
Ou:
./scripts/pylint.sh ./app.py
Para executar o autopep8 no código fonte do projeto, execute o seguinte comando:
./scripts/autopep8.sh
Ou:
./scripts/autopep8.sh ./app.py
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
Para executar o build do projeto, execute o seguinte comando:
./scripts/build.sh
Para executar a validação de guidelines do projeto, execute o seguinte comando:
./scripts/guidelines-checker.py