Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduciendo Serverless en Proyectos Python

Introduciendo Serverless en Proyectos Python

Charla para Python Madrid, Septiembre de 2017.

En esta charla citaremos las ventajas de Serverless y nos centraremos en las situaciones en las que podemos introducirlo dentro de nuestros proyectos Python. Utilizaremos AWS Lambda para los ejemplos.

Vídeo de la charla en https://youtu.be/BPJI2zApuug

8da980a2f4466f05bf026b18c04984d6?s=128

Carlos Hernando

September 06, 2017
Tweet

Transcript

  1. Introduciendo Serverless en Proyectos Python Carlos Hernando @chernando

  2. Serverless Hype! https://trends.google.com/trends/explore?date=2014-01-01%202017-08-27&q=serverless

  3. None
  4. None
  5. Serverless

  6. Saas / BaaS

  7. Está usted aquí Nuestra Aplicación

  8. def handler(event, context): # PONGA SU CÓDIGO AQUÍ return AWS

    Lambda
  9. Serverless

  10. https://aws.amazon.com/serverless/

  11. Arquitectura Serverless https://medium.com/cloud-academy-inc/serverless-beyond-functions-cd81ee4c6b8d

  12. Escenarios

  13. Scripts de “mantenimiento”

  14. None
  15. AWS Lambda

  16. def handler(event, context): # PONGA SU CÓDIGO AQUÍ return

  17. None
  18. AWS Lambda Desarrolladores Credenciales Base de datos Servidores

  19. Empaquetar $ cd venv/lib/python3.6/site-packages/ $ zip -r9 ../../../../deploy.zip * $

    cd - $ zip -g deploy.zip *.py
  20. Crear Lambda $ aws lambda create-function \ --region eu-west-1 \

    --function-name SimpleScript \ --zip-file fileb://deploy.zip \ --role arn:aws:iam::XXX:role/MyLambdaRole \ --vpc-config SubnetIds=XXX,SecurityGroupIds=XXX \ --handler handler.handler \ --runtime python3.6 \ --profile personal \ --timeout 10 \ --memory-size 512
  21. Actualizar Lambda $ aws lambda update-function-code \ --region eu-west-1 \

    --function-name SimpleScript \ --zip-file fileb://deploy.zip \ --profile personal
  22. Aprendizajes

  23. Tareas periódicas

  24. # Crontab 30 08 10 06 * /root/full-backup 00 11,16

    * * * /root/incremental-backup 00 09-18 * * * /root/check-db-status 00 09-18 * * 1-5 /root/send-updates */10 * * * * /root/consolidate-reports @yearly /root/annual-maintenance @monthly /root/steal-money
  25. Celery workers Celery Beat

  26. None
  27. Celery Beat Celery workers

  28. AWS Lambda Cloudwatch Events Celery workers

  29. def handler(event, context): # PONGA SU CÓDIGO AQUÍ return

  30. >>> from tasks import add >>> add.delay(4, 4)

  31. >>> from celery import Celery >>> app = Celery(broker=broker) >>>

    app.send_task('tasks.add', args=[4,4])
  32. None
  33. https://serverless.com

  34. functions: celeryless: handler: celeryless.handler events: - schedule: rate: rate(10 minutes)

    input: task: tasks.add args: [4, 4]
  35. Aprendizajes

  36. APIs a pequeña escala

  37. None
  38. API Gateway AWS Lambda

  39. None
  40. SAM: Serverless Application Model https://github.com/awslabs/serverless-application-model

  41. https://github.com/aws/chalice

  42. from flask import Flask app = Flask(__name__) @app.route("/") def index():

    return "Hello World!"
  43. from chalice import Chalice app = Chalice(app_name="helloworld") @app.route("/") def index():

    return {"hello": "world"}
  44. Aprendizajes

  45. Eventos encadenados

  46. Serverless Image resizing (AWS Lambda and AWS s3) http://blog.kaliloudiaby.com/index.php/serverless-image-resizing-aws-lambda-and-aws-s3/

  47. De $0,20 a $834

  48. 14 horas $425 25.000.000 GB/s (290 días) 37.000.000 Invocaciones AWS

    Lambda
  49. None
  50. Serverless Scripts Periódicos API HTTP

  51. https://www.wdl.org/en/item/576/

  52. Documentación de la charla: https://bit.ly/pymad0917 Carlos Hernando @chernando

  53. •Photo by Chris Lawton on Unsplash •Photo by Maarten van

    den Heuvel on Unsplash •Photo by Markus Spiske on Unsplash •Photo by Teresa Kluge on Unsplash •Photo by Dan Paul on Unsplash •Photo by Mike Alonzo on Unsplash Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) https://creativecommons.org/licenses/by-sa/4.0/ Imágenes cortesía de: