biancarosa.com.br | @__biancarosa
There is no cloud. It's just someone else's computer.
#sóquenão
Cloud computing não é apenas sobre servidores remotos. É também sobre abstrações que tornam a vida dos desenvolvedores mais fácil e ajuda a construir sistemas e arquiteturas com alta qualidade.
Bancos de dados gerenciados
Servidores de arquivos
Serverless
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def hello_world():
return jsonify({
"message": "Hello, World!"
})
pipenv shell
pipenv install
FLASK_APP=hello_world flask run
Legal! Quero colocar esse código em produção!
Geralmente a forma mais simples de subir sua aplicação.
web: gunicorn hello_world:app --workers=4
heroku git:remote -a python-na-cloud
heroku ps:scale web=1
git push heroku master
Como assim serverless? Não tem servidor?!
Calma.
Arquiteturas serverless provêem uma abstração em cima do servidor em que seu código é executado.
gcloud beta functions deploy hello_world --trigger-http --runtime python37
Unidade de software que contém o código e todas as suas dependências para que uma aplicação rode bem e de forma confiável em qualquer ambiente.
Tecnologia de containers open-source.
FROM python:3.7.2-alpine3.7
RUN apk add --no-cache --update git make gcc python3-dev musl-dev && \
set -ex && \
pip install --no-cache-dir pipenv==10.1.2
WORKDIR /app
ADD . .
RUN set -ex && \
pipenv install --system --deploy
CMD exec gunicorn --bind :$PORT hello_world:app
docker build . -t python-na-cloud
docker run -e PORT=8000 -p 5000:8000 python-na-cloud
version: "3"
services:
web:
build:
context: .
command: gunicorn hello_world:app --workers=4 --bind 0.0.0.0:5000 --reload
volumes:
- .:/app
ports:
- "5000:5000"
docker-compose up
É um orquestrador de containers. Ajuda a gerenciar aplicações que rodam em containers em múltiplos nós, provendo mecanismos básicos pra deploy, manutenção e escalabilidade.
Ferramenta para facilitar o teste e desenvolvimento baseado em Kubernetes. Cria uma VM localmente com um cluster de apenas um nó.
minikube start
eval $(minikube docker-env)
kubectl config current-context
kubectl apply -f kubernetes/deployment.yaml
watch kubectl get pods
kubectl get services
minikube service python-na-cloud
demo!
twitter: @__biancarosa
slides: biancarosa.com.br/slides/python-na-cloud.html
codigos: github.com/biancarosa/python-na-cloud
tks :)