Neste documento você encontra orientações para o seu projeto ficar de acordo com as guidelines
definidas pelo time de arquitetura, com o objetivo de deixar o seu projeto bem completo.
- Github templates
- Github actions/workflows
- Github docs
- Sonar
- OpenAPI/Swagger
- RESTful e HATEOS
- Healthcheck
- Docker
- Editorconfig
- Serverless
- Logs e monitoramento
- Scripts de automação
- Scripts de configuração de ambiente
- Terraform
- Testes
- Arquivos de CI/CD para AWS
- Meta-arquivos
Incluir templates padronizados para:
- Pull Request
- Issues
- Bug Report
- Documentation Request
- Feature Request
Incluir scripts para as seguintes ações:
- Lint
- Unit Test
- Component Test
- Sonar
- Versioning
Incluir arquivos focados ao uso da comunidade:
- README.md
- CHANGELOG.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- LICENSE.md
É importante que este arquivo contenha os seguintes passos no mesmo:
- Descrição breve
- Requesitos
- Funcionalidades
- Instalação
- Execução
- Execução de testes
- Execução ferramentas para desenvolvimento (opcional)
Seguir o padrão das arquiteturas de referência, você pode copiar os mesmos.
O projeto deve possuir o arquivo de configuração do sonar e action para análise.
- sonar.properties
- .github/workflows/sonar.yml
Quando o projeto for uma API, é necessario que o mesmo tenho a documentação no padrão OpenAPI.
Considerar o uso de:
- UI
- Schemas
- Rotas
Quando o projeto for uma API, é desejável que o mesmo implemente as definições do padrão RESTful. Melhor ainda se puder aplicar conceitos de HATEOS.
Para mais detalhes ver:
- MadeiraMadeira - Guidelines RESTful e HATEOS
- Designing-a-Beautiful-REST%2BJSON-API.pdf
- HTTP Methods for RESTful Services
- RESTful Web Services Resources
- REST-API-Design-Filtering-Sorting-and-Pagination
- HTTP Status Dogs
Quando o projeto for uma API, é requerido que o mesmo implemente um endpoint de healthcheck
, é recomendado que
o projeto aplique o padrão definido da documentação da guideline, para que o mesmo seja um endpoint inteligente.
Para mais detalhes ver:
- MadeiraMadeira - Guideline de Healthcheck
- Microsoft - Monitoramento de integridade
- Microsoft - Exemplo com ASP.NET Core
- Testfully - Artigo Health Check
Arquivos de docker devem estar na pasta docker, sendo organizados por contexto, exemplos:
- docker/
- php/
- Dockerfile
- entrypoint.sh
- nginx/
- logs/*
- Dockerfile
- app.conf
- nginx.conf
- python/
- Dockerfile
- entrypoint.sh
- php/
É de suma importância que o projeto possua um arquivo de configuração universal para que independente da ferramenta que venha a utilizar, o projeto não sofra alterações não desejadas em formatação de arquivos, tipo de quebra de linha etc.
Quando aplicável ao projeto deixar configurado na raiz do projeto seus respectivos arquivos.
É recomendável que o projeto faça de uma interface de log para prover informações de execução do projeto. Também é recomendável que o mesmo envie logs para a NewRelic e que o projeto esteja instrumentado na mesma.
Os scripts de automação de execução de tarefas de desenvolvimento do projeto devem estar na pasta scripts
;
É recomendável que os arquivos de configuração de ambiente estejam salvos na pasta env/
.
Apenas o arquivo de desenvolvimento (com apontamentos para recursos locais via Docker) e exemplo de arquivo de integração,
demais arquivos de configuração não devem ser versionados.
Exemplo:
./env/development.env
./env/integration.env.example
Ou:
./env/.env.development
./env/.env.integration.example
Os arquivos de Terraform se presentes no projeto deverão estar na pasta infrastructure
;
É muito recomendado que o projeto possua testes, principalmente que sigam a abordagem de contexto, como testes de componente, unidade e integração. Para projetos que sejam voltados para front-end é interessante que tenhamos o contexto de usabilidade e teste de componentes da aplicação.
Para mais detalhes ver:
Quando o projeto estiver devidamente configurado, é ideal que o mesmo possua os arquivos de CI/CD para AWS. Estes arquivos devem estar focados principalmente nas ações voltadas para o CD. Futuramente as tarefas focadas no CI vão ser realizadas via Github.
Exemplo:
buildspec.yaml
appspec.yaml
Criar um arquivo de metadados do projeto chamado .projectrc
.
Este arquivo irá conter dados do projeto como nome, versão e docker network,
este poderá ser utilizado para outras finalidades de execução de `scripts de automação,
Além da integração com ferramentas de DX (Developer Experience).
Exemplo:
APP_NAME=project-name-here
APP_VERSION=1.0.0
NETWORK_NAME=docker-network-name-here
Arquivo com as referências de pastas e arquivos que devem ser ignorados pelo docker durante a cópia de conteúdo da pasta do projeto.
Arquivo com as referências de pastas e arquivos que devem ser ignorados pelo git durante o desenvolvimento do projeto.
Arquivo com configurações para gestão de containers no ambiente de desenvolvimento.