API Flask RESTFul que pode ser integrada ao seu pipeline de deployment para monitorar tempos de deployment.
Para executar localmente em seu computador, é necessário ter instalados os seguintes requisitos:
- Python versão 3.6+
- Pacotes listados em requirements_local.txt com o comando
pip install -r requirements_local.txt - Git, apenas para clonar o repositório. Alternativamente, você pode baixar o .zip desse repositório e extrai-lo, ignorando o primeiro comando das instruções abaixo.
Se esses requisitos estão atendidos, para iniciar a api em execução manual, abra sua command line e execute os seguintes comandos:
git clone https://github.com/automa7/deployWatcher.git
cd deployWatcher
flask run
git clone https://github.com/automa7/deployWatcher.git
cd deployWatcher
flask run
Para fazer o deploy do app em modo development, será necessário primeiro possuir os seguintes requisitos em seu computador:
- Python 3.6+
- Docker
- Git, apenas para clonar o repositório. Alternativamente, você pode baixar o .zip desse repositório e extrai-lo, ignorando o primeiro comando das instruções abaixo.
Com esses requisitos instalados e funcionais em seu computador, basta abrir um prompt de comando e executar os seguintes comandos:
git clone https://github.com/automa7/deployWatcher.git
cd deployWatcher
docker build . -t deploywatcher
docker run -d -p 5000:5000 deploywatcher
Um ambiente de simulação foi criado para produção, aonde o aplicativo é integrado a um host http (nginx+uwsgi) e um banco de dados MySQL via docker.
Algumas considerações a serem feitas: como é visado apenas uma demonstração da flexibilidade do aplicativo em ambiente de produção, não foi adicionado camadas de segurança nem de escalabilidade ao deployment.
Pré-requisitos para instalação desse ambiente:
- Docker (linux host)
- Docker-compose ou Docker-Stack
- Git, apenas para clonar o repositório. Alternativamente, você pode baixar o .zip desse repositório e extrai-lo, ignorando o primeiro comando das instruções abaixo.
Tendo esses requisitos instalados, abra um prompt de comando do seu sistema operacional e execute os seguintes comandos:
OBS: substituir os comandos docker-compose por docker stack deploy --compose-file docker-compose.yml
git clone https://github.com/automa7/deployWatcher.git
cd deployWatcher/prod_simulation
docker-compose build
docker-compose up
Para confirmar que a execução foi bem sucedida, acesse seu navegador no endereço https://127.0.0.1:5000/transitions. Uma mensagem indicando o status OK da api deverá aparecer na tela, como no exemplo abaixo:
- Comandos
- GET: retorna JSON com mensagem { "API": "OK"}
- POST: insere evento no banco de dados. Retorna mensagem informando que a inserção ocorreu com sucesso e qual o id
da inserção. Aceita JSON como corpo, contendo parametros:
- component: String => Contém o nome do component que está sendo registrado
- version: Float(2) => Indica a versão do componente que está subindo.
- author: String => Indica o responsável pelo deployment do componente.
- status: String => Indica o status da transação do deployment que está sendo registrada.
- sent_timestamp: String => Paramêtro opcioonal em formato "yyyy-mm-dd hh:mm:ss.fff" que é convertida datetime para inserção em tabela.
Exemplo de comando post utilizando a ferramenta curl:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"component":"testApp","version":1.0, "author": "automa7", "status": "started", "sent_timestamp": "2020-01-01 10:10:50.555"}' \
http://127.0.0.1:5000/transitions
As seguintes suposições são consideradas para execução e desenvolvimento desse software:
- O sistema miolo deve permanecer agnóstico a provedores de nuvem e bancos de dados, permitindo assim flexibilidade na sua integração.
- O Padrão RESTful será respeitado.
- O tratamento de inputs se dará por parte do sistema originário. Isso é assumido para que haja flexibilidade na tradução dos dados para a API.
- Os ambientes Local e Dev não levam em consideração a persistência dos dados, e foram criados apenas para fornecer um ambiente de desenvolvimento fácil.
