Projeto supeior em devops
O desafio que você deve resolver é a implantação da aplicação de Comentários em versão API (backend) usando ferramentas open source da sua preferência.
Você precisa criar o ambiente de execução desta API com o maior número de passos automatizados possível, inclusive a esteira de deploy.
A aplicação será uma API REST que está disponível neste repositório. Através dela os internautas enviam comentários em texto de uma máteria e acompanham o que outras pessoas estão falando sobre o assunto em destaque. O funcionamento básico da API consiste em uma rota para inserção dos comentários e uma rota para listagem.
Os comandos de interação com a API são os seguintes:
*Start da app
cd app
gunicorn --log-level debug api:app
*Criando e listando comentários por matéria
# matéria 1
curl -sv localhost:8000/api/comment/new -X POST -H 'Content-Type: application/json' -d '{"email":"alice@example.com","comment":"first post!","content_id":1}'
curl -sv localhost:8000/api/comment/new -X POST -H 'Content-Type: application/json' -d '{"email":"alice@example.com","comment":"ok, now I am gonna say something more useful","content_id":1}'
curl -sv localhost:8000/api/comment/new -X POST -H 'Content-Type: application/json' -d '{"email":"bob@example.com","comment":"I agree","content_id":1}'
# matéria 2
curl -sv localhost:8000/api/comment/new -X POST -H 'Content-Type: application/json' -d '{"email":"bob@example.com","comment":"I guess this is a good thing","content_id":2}'
curl -sv localhost:8000/api/comment/new -X POST -H 'Content-Type: application/json' -d '{"email":"charlie@example.com","comment":"Indeed, dear Bob, I believe so as well","content_id":2}'
curl -sv localhost:8000/api/comment/new -X POST -H 'Content-Type: application/json' -d '{"email":"eve@example.com","comment":"Nah, you both are wrong","content_id":2}'
# listagem matéria 1
curl -sv localhost:8000/api/comment/list/1
# listagem matéria 2
curl -sv localhost:8000/api/comment/list/2
O que será avaliado na sua solução? Automação da infra, provisionamento dos hosts (IaaS)
Automação de setup e configuração dos hosts (IaC)
Pipeline de deploy automatizado
Monitoramento dos serviços e métricas da aplicação
Dicas Use ferramentas e bibliotecas open source, mas documente as decisões e porquês;
Automatize o máximo possível;
Em caso de dúvidas, pergunte.
*app.py
from flask import Flask
from flask import jsonify
from flask import request
app_name = 'comentarios'
app = Flask(app_name)
app.debug = True
comments = {}
@app.route('/api/comment/new', methods=['POST'])
def api_comment_new():
request_data = request.get_json()
email = request_data['email']
comment = request_data['comment']
content_id = '{}'.format(request_data['content_id'])
new_comment = {
'email': email,
'comment': comment,
}
if content_id in comments:
comments[content_id].append(new_comment)
else:
comments[content_id] = [new_comment]
message = 'comment created and associated with content_id {}'.format(content_id)
response = {
'status': 'SUCCESS',
'message': message,
}
return jsonify(response)
@app.route('/api/comment/list/<content_id>')
def api_comment_list(content_id):
content_id = '{}'.format(content_id)
if content_id in comments:
return jsonify(comments[content_id])
else:
message = 'content_id {} not found'.format(content_id)
response = {
'status': 'NOT-FOUND',
'message': message,
}
return jsonify(response), 404