@jmortegac europython 2018 josé manuel ortega · microservices and serverless in python projects...

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

Upload: others

Post on 21-May-2020

12 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Microservices and Serverless in Python projects

José Manuel OrtegaEuropython 2018

@jmortegac

v 0.5

Page 2: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

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

2Microservices and Serverless in Python projects

Page 3: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Microservices vs Serverless

3Microservices and Serverless in Python projects

Page 4: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Microservices

4Microservices and Serverless in Python projects

Page 5: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Asynchronous calls with asyncio and aiohttp

5Microservices and Serverless in Python projects

Page 6: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

REST API Development

6Microservices and Serverless in Python projects

Page 7: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Performance

7Microservices and Serverless in Python projects

8% less memory6% faster response times

Page 8: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Microservices with graphql

8Microservices and Serverless in Python projects

Page 9: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

9Microservices and Serverless in Python projects

Page 10: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

10Microservices and Serverless in Python projects

Page 11: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

11Microservices and Serverless in Python projects

Page 12: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

12Microservices and Serverless in Python projects

Page 13: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

13Microservices and Serverless in Python projects

SERVER

Page 14: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

14Microservices and Serverless in Python projects

CLIENT

Page 15: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Microservices benefits

•Separation of concerns•Services are decoupled from each other•Managing smaller projects•More scaling and deployment options

15Microservices and Serverless in Python projects

Page 16: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

16Microservices and Serverless in Python projects

Serverless

Page 17: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Serverless architecture

•FaaS - Function as a Service•Fully managed computing

• Provisioning• Scalability• Monitoring• Logging

•Deploy your code•Pay only for actual usage

17Microservices and Serverless in Python projects

Page 18: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Serverless architecture

18Microservices and Serverless in Python projects

Page 19: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

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

19Microservices and Serverless in Python projects

Page 20: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

20Microservices and Serverless in Python projects

Page 21: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Serverless benefits

•No server management•Automatic scaling and load balancing•Lower infrastructure costs•Flexibility and high availability• Infrastructure managed by service provider

21Microservices and Serverless in Python projects

Page 22: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

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

22Microservices and Serverless in Python projects

Page 23: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Cloud providers

•AWS•Microsoft Azure•Cloud platform•OpenWhisk(OS)•Kubeless(OS)

23Microservices and Serverless in Python projects

Page 24: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Aws lambda

24Microservices and Serverless in Python projects

Page 25: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

25Microservices and Serverless in Python projects

Page 26: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Aws lambda functions

26Microservices and Serverless in Python projects

Page 27: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Aws lambda functions

27Microservices and Serverless in Python projects

Page 28: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Create lambda function with awscli

28Microservices 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

Page 29: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

29Microservices and Serverless in Python projects

Page 30: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

30Microservices and Serverless in Python projects

Page 31: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Frameworks

31Microservices and Serverless in Python projects

python-λ

Page 32: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

32Microservices and Serverless in Python projects

Page 33: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

33Microservices and Serverless in Python projects

Page 34: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Zappa architecture

34Microservices and Serverless in Python projects

Page 35: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Zappa

35Microservices and Serverless in Python projects

Page 36: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

36Microservices and Serverless in Python projects

Page 37: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

37Microservices and Serverless in Python projects

Page 38: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

38Microservices and Serverless in Python projects

Page 39: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

39Microservices 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"

}}

Page 40: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Zappa deploy

40Microservices and Serverless in Python projects

$ zappa deploy <env>

•Zips code and dependencies•Create AWS Lambda and deploys the zip•Creates endpoint on API Gateway and links to AWS Lambda

Page 41: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Zappa deploy

41Microservices and Serverless in Python projects

Page 42: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Zappa

42Microservices and Serverless in Python projects

Page 43: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Zappa Asynchronous Task

43Microservices and Serverless in Python projects

Page 44: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Chalice

44Microservices and Serverless in Python projects

•Python Serverless Microframework for AWS•Each endpoint is a separate function

Page 45: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Chalice

45Microservices and Serverless in Python projects

Page 46: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Chalice

46Microservices and Serverless in Python projects

Page 47: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Chalice example

47Microservices and Serverless in Python projects

Page 48: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Chalice methods

48Microservices 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

Page 49: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Chalice methods

49Microservices and Serverless in Python projects

Page 50: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Chalice options

50Microservices and Serverless in Python projects

Page 51: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Chalice deploy

51Microservices 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

Page 52: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

52Microservices and Serverless in Python projects

Page 53: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

https://github.com/lambci/docker-lambda

53Microservices and Serverless in Python projects

Page 54: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

http://serverlesscalc.com/

54Microservices and Serverless in Python projects

Page 55: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

55Microservices and Serverless in Python projects

Page 56: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

https://github.com/serverless/examples

56Microservices and Serverless in Python projects

Page 57: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

References

57Microservices and Serverless in Python projects

•https://aws.amazon.com/blogs/compute/microservices-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

Page 58: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

58Microservices and Serverless in Python projects

Serverless architecture is the next generation of cloud evolution

Page 59: @jmortegac Europython 2018 José Manuel Ortega · Microservices and Serverless in Python projects 19. Microservices and Serverless in Python projects 20. Serverless benefits •No

Thank you!

José Manuel Ortegajmortega.github.io