Slide 1

Slide 1 text

Microservices and Serverless in Python projects José Manuel Ortega Europython 2018 @jmortegac v 0.5

Slide 2

Slide 2 text

Agenda •Microservices in python •Introducing Serverless and Function as a Service •Python frameworks for AWS •AWS Lambda functions with zappa and chalice •Deploy AWS lambda functions from aws console 2 Microservices and Serverless in Python projects

Slide 3

Slide 3 text

Microservices vs Serverless 3 Microservices and Serverless in Python projects

Slide 4

Slide 4 text

Microservices 4 Microservices and Serverless in Python projects

Slide 5

Slide 5 text

Asynchronous calls with asyncio and aiohttp 5 Microservices and Serverless in Python projects

Slide 6

Slide 6 text

REST API Development 6 Microservices and Serverless in Python projects

Slide 7

Slide 7 text

Performance 7 Microservices and Serverless in Python projects 8% less memory 6% faster response times

Slide 8

Slide 8 text

Microservices with graphql 8 Microservices and Serverless in Python projects

Slide 9

Slide 9 text

9 Microservices and Serverless in Python projects

Slide 10

Slide 10 text

10 Microservices and Serverless in Python projects

Slide 11

Slide 11 text

11 Microservices and Serverless in Python projects

Slide 12

Slide 12 text

12 Microservices and Serverless in Python projects

Slide 13

Slide 13 text

13 Microservices and Serverless in Python projects SERVER

Slide 14

Slide 14 text

14 Microservices and Serverless in Python projects CLIENT

Slide 15

Slide 15 text

Microservices benefits •Separation of concerns •Services are decoupled from each other •Managing smaller projects •More scaling and deployment options 15 Microservices and Serverless in Python projects

Slide 16

Slide 16 text

16 Microservices and Serverless in Python projects Serverless

Slide 17

Slide 17 text

Serverless architecture •FaaS - Function as a Service •Fully managed computing • Provisioning • Scalability • Monitoring • Logging •Deploy your code •Pay only for actual usage 17 Microservices and Serverless in Python projects

Slide 18

Slide 18 text

Serverless architecture 18 Microservices and Serverless in Python projects

Slide 19

Slide 19 text

Serverless uses cases ➢ REST API • Stateless services and microservices • Suitable for Chat bots ➢ Events • File processing (S3 event) & Data ingestion • Data/Stream processing • Incidents handling (CloudWatch event log) • IoT ➢ Scheduled tasks • Monitoring, load testing • Periodical jobs 19 Microservices and Serverless in Python projects

Slide 20

Slide 20 text

20 Microservices and Serverless in Python projects

Slide 21

Slide 21 text

Serverless benefits •No server management •Automatic scaling and load balancing •Lower infrastructure costs •Flexibility and high availability •Infrastructure managed by service provider 21 Microservices and Serverless in Python projects

Slide 22

Slide 22 text

Serverless drawbacks • The tools around the deployment automation of serverless functions are still in development. •There is no control over containers when the execution environments are created or destroyed •Debugging, Deploying and monitoring 22 Microservices and Serverless in Python projects

Slide 23

Slide 23 text

Cloud providers •AWS •Microsoft Azure •Cloud platform •OpenWhisk(OS) •Kubeless(OS) 23 Microservices and Serverless in Python projects

Slide 24

Slide 24 text

Aws lambda 24 Microservices and Serverless in Python projects

Slide 25

Slide 25 text

25 Microservices and Serverless in Python projects

Slide 26

Slide 26 text

Aws lambda functions 26 Microservices and Serverless in Python projects

Slide 27

Slide 27 text

Aws lambda functions 27 Microservices and Serverless in Python projects

Slide 28

Slide 28 text

Create lambda function with awscli 28 Microservices and Serverless in Python projects $ aws lambda create-function \ --region eu-west-1 \ --function-name MyHandler\ --zip-file fileb://handler.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

Slide 29

Slide 29 text

29 Microservices and Serverless in Python projects

Slide 30

Slide 30 text

30 Microservices and Serverless in Python projects

Slide 31

Slide 31 text

Frameworks 31 Microservices and Serverless in Python projects python-λ

Slide 32

Slide 32 text

32 Microservices and Serverless in Python projects

Slide 33

Slide 33 text

33 Microservices and Serverless in Python projects

Slide 34

Slide 34 text

Zappa architecture 34 Microservices and Serverless in Python projects

Slide 35

Slide 35 text

Zappa 35 Microservices and Serverless in Python projects

Slide 36

Slide 36 text

36 Microservices and Serverless in Python projects

Slide 37

Slide 37 text

37 Microservices and Serverless in Python projects

Slide 38

Slide 38 text

38 Microservices and Serverless in Python projects

Slide 39

Slide 39 text

39 Microservices and Serverless in Python projects # zappa_settings.json { "dev": { "aws_region": "us-east-1", "django_settings": "hello.settings", "profile_name": "default", "project_name": "hello", "runtime": "python3.6", "s3_bucket": "zappa-huyg6op0s" } }

Slide 40

Slide 40 text

Zappa deploy 40 Microservices and Serverless in Python projects $ zappa deploy •Zips code and dependencies •Create AWS Lambda and deploys the zip •Creates endpoint on API Gateway and links to AWS Lambda

Slide 41

Slide 41 text

Zappa deploy 41 Microservices and Serverless in Python projects

Slide 42

Slide 42 text

Zappa 42 Microservices and Serverless in Python projects

Slide 43

Slide 43 text

Zappa Asynchronous Task 43 Microservices and Serverless in Python projects

Slide 44

Slide 44 text

Chalice 44 Microservices and Serverless in Python projects •Python Serverless Microframework for AWS •Each endpoint is a separate function

Slide 45

Slide 45 text

Chalice 45 Microservices and Serverless in Python projects

Slide 46

Slide 46 text

Chalice 46 Microservices and Serverless in Python projects

Slide 47

Slide 47 text

Chalice example 47 Microservices and Serverless in Python projects

Slide 48

Slide 48 text

Chalice methods 48 Microservices and Serverless in Python projects Resource HTTP Verb AWS Lambda /talks GET get_talks /talk POST add_new_talk /talks/{ID} PUT update_talk /talks/{ID} DELETE delete_talk

Slide 49

Slide 49 text

Chalice methods 49 Microservices and Serverless in Python projects

Slide 50

Slide 50 text

Chalice options 50 Microservices and Serverless in Python projects

Slide 51

Slide 51 text

Chalice deploy 51 Microservices and Serverless in Python projects Updating IAM policy. Updating lambda function... Regen deployment package... Sending changes to lambda. API Gateway rest API already found. Deploying to: dev

Slide 52

Slide 52 text

52 Microservices and Serverless in Python projects

Slide 53

Slide 53 text

https://github.com/lambci/docker-lambda 53 Microservices and Serverless in Python projects

Slide 54

Slide 54 text

http://serverlesscalc.com/ 54 Microservices and Serverless in Python projects

Slide 55

Slide 55 text

55 Microservices and Serverless in Python projects

Slide 56

Slide 56 text

https://github.com/serverless/examples 56 Microservices and Serverless in Python projects

Slide 57

Slide 57 text

References 57 Microservices and Serverless in Python projects •https://aws.amazon.com/blogs/compute/microservic es-without-the-servers •https://github.com/Miserlou/Zappa •https://github.com/pmuens/awesome-serverless •https://github.com/aws/chalice •https://chalice.readthedocs.io/en/latest

Slide 58

Slide 58 text

58 Microservices and Serverless in Python projects Serverless architecture is the next generation of cloud evolution

Slide 59

Slide 59 text

Thank you! José Manuel Ortega jmortega.github.io