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 pipExecute o seguinte comando:
aws configureExecute o seguinte comando:
apt install python38-envExecute o seguinte comando:
./scripts/docker/create-network.shPara criar o venv e instalar os módulos, execute:
./scripts/venv.shExecute o seguinte comando:
./scripts/flask/run-local.shPara executar a build:
./scripts/runenv.sh --buildExecute o seguinte comando:
./scripts/runenv.shExecute o seguinte comando:
./scripts/fixenv.shA 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.shExecutando os testes:
./scripts/venv-exec.sh ./scripts/tests/unit-tests.shExecutando um arquivo específico:
./scripts/venv-exec.sh ./scripts/tests/unit-tests.sh /tests/unit/test_app.pyInicie os containers de docker:
./scripts/testenv.shExecutando os testes:
./scripts/venv-exec.sh ./scripts/tests/component-tests.shExecutando um arquivo específico:
./scripts/venv-exec.sh ./scripts/tests/component-tests.sh /tests/component/test_app.pyCopie 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.shExecutando um arquivo específico:
./scripts/venv-exec.sh ./scripts/tests/integration-tests.sh /tests/integration/test_app.pyExecutando os testes:
./scripts/venv-exec.sh ./scripts/tests/tests.shPara 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.shExecute o seguinte comando:
./scripts/venv-exec.sh ./scripts/tests/component-coverage.shCopie 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.shObservaçã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.shOu:
./scripts/pylint.sh ./app.pyPara executar o autopep8 no código fonte do projeto, execute o seguinte comando:
./scripts/autopep8.shOu:
./scripts/autopep8.sh ./app.pyPara instalar o pré-commit para executar o ambiente de desenvolvimento local:
./scripts/venv.shos detalhes da biblioteca estão presentes no requirements-local.txt
Depois de você executar:
./scripts/pre-commit-config.shPara executar o build do projeto, execute o seguinte comando:
./scripts/build.shPara executar a validação de guidelines do projeto, execute o seguinte comando:
./scripts/guidelines-checker.py