/tutorial-python-brasil-2023

Repositório do Tutorial Deploy E Release Contínuos Em Django da Python Brasil 2023

Primary LanguagePythonMIT LicenseMIT

tutorial-python-brasil-2023

Built with

Tutorial curto ministrado na Python Brasil 2023. Deploy e release contínuos em Django.

Slides

Pré-requisitos

Execução com docker-compose

docker build --tag=tutorial-python-brasil-2023/receitas .
docker-compose build
docker-compose up -d

Acesse o locust em http://localhost:8089/ e inicie um teste trocando:

  • Number of users: 10
  • Spawn rate: 10

Verifique na aba "Statistics" que todas as requisições são bem sucedidas e então simule um deploy do componente web:

docker-compose restart web

Verifique que parte das requisições falharam. O motivo da falha pode ser visto na aba "Failures"

Execução com Kubernetes

minikube delete # ensure any previous cluster get deleted
minikube start
eval $(minikube docker-env) # make current session use docker inside minikube, need to run for every terminal session or minikube restart
docker build --tag tutorial_python_brasil_2023 .
kubectl apply -f kubernetes
kubectl get pods
kubectl apply -f kubernetes/locust
minikube service web --url

Copie a URL retornada para usar no parâmetro "Host" do Locust.

minikube service locust-service

Inicie o teste do locust com os seguintes parâmetros:

  • Number of users: 10
  • Spawn rate: 10
  • Host: URL do service web

Verifique na aba "Statistics" que todas as requisições são bem sucedidas e então simule um deploy do componente web:

kubectl rollout restart deployment web

Execute o comando abaixo repetidas vezes para ver os pods sendo criados e terminados sem gerar interrupções.

kubectl get pods

Verifique que não houveram falhas no locust.

Feature flags

Verifique que o estado atual do switch é false: http://{{HOST_WEB}}:{{PORTA_WEB}}/switches/

Para habilitá-lo, crie um superusuário:

make createsuperuser

Vá até o admin de switches: http://{{HOST_WEB}}:{{PORTA_WEB}}/admin/waffle/switch/ e crie o switch MY_AWESOME_SWITCH marcando o checkbox Active.

Verifique que o estado atual do switch mudou para true: http://{{HOST_WEB}}:{{PORTA_WEB}}/switches/

Podemos usar esse switch tanto pra controle de fluxo no próprio Django, quanto para o frontend.

Migrations