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

Python Serverless Microservices

Python Serverless Microservices

Microservices and serverless are hot topics in web development communities that when combined increase the potential for developers to make software faster and to host it much cheaper than traditional virtual private servers. This talk aims to present a minimal set of tools to start developing Serverless Microservices using Python. With the serverless framework configured for Python, developing a new microservice API becomes very easy. The framework provides a set of tools to pack Python dependencies and also deploys the required infrastructure to the cloud, enabling infrastructure as code since the start of the project. Although the serverless framework is used during this presentation, no other Python framework is required, making it as easy as possible to start with plain Python code.

Nilo Ney Coutinho Menezes

October 03, 2020
Tweet

More Decks by Nilo Ney Coutinho Menezes

Other Decks in Programming

Transcript

  1. Serverless Application Framework • Written in Javascript, but works with

    multiple languages • Uses Node, Python and Chocolatey (alternative Windows Package Manager) • Deploys the serverless infrastructure in the cloud. Compatible with Amazon Web Services, Google Cloud, Microsoft Azure and others • Simplifies configuration and application updates • Configuration files written in YAML • https://www.serverless.com/
  2. Server less? • We know the server still there •

    But we don’t have to keep it running • We don’t have to update it frequently • We can have more as we need them (autoscaling) • We only pay if we use them • So, it is an industry term to say somebody else is taking care of the server for you.
  3. Microservices • Microservices are an architecture for development and deployment

    of new systems • It antagonizes the traditional monolithic architecture that deploys the full system in a single application • Microservices means we should split our systems into smaller ones • Smaller parts are easy to understand, can be deployed independently • Share no database with other parts • Share data and services via a well-defined API • Can be rewritten one by one (less coupling)
  4. Lambdas • Lambdas are Functions as a Service (FaaS) provided

    by Amazon Web Services (AWS) • We will be using AWS as our example provider • You need to have an account to test the code shown in this presentation • You can create a free account on their web site: https://aws.amazon.com/es • If it is your first time on AWS, I strongly suggest you check their web site and documentation, as you will be paying for the resources used beyond the free tier. • To start using AWS with Python, install their command-line client: pip install awscli
  5. Python Serverless Microservices • Because we use Python • Because

    we use AWS Lambdas, FaaS, serverless • And we would divide each API call in a different lambda, grouped in a domain, following the directives of Microservices and Domain-Driven Design (DDD). Check these books for more info:
  6. Installing • Download and install node.js from https://nodejs.org/en/ • Install

    the Serverless Application Framework: npm install –g serverless • Let’s created the application stub type: serverless • Try to answer the questions as in the image below:
  7. Serverless.yaml • This is all the configuration we need for

    our simple function. • It says we are going to deploy a Python 3.8 Lambda Function • It defines the handler (the module and function name) • It also specifies the URL path to use and the http method
  8. What is in this json? • In the input field,

    all parameters passed to your function • Copy and paste it to your preferred text editor that supports JSON. Reformat the code to make it easier to read. • You get user location with IP and country information • The URL and path used on this call • Any parameter used (query string and path) if any • You can access all these values as in simple python dictionary
  9. Wait, no huge framework? • Nope • You have a

    very simple function deployed to the cloud • You choose the batteries • You can combine multiple Python libraries depending on your needs • Leverage the cloud provider services like databases, api gateways, queues, etc
  10. Advantages • Simple, you can read the function from top

    to bottom, no hidden magic code • Cheap, millions of invocations for less than 1 euro • Pays as you go (no upfront costs, if you don’t use, you won’t pay either) • Functions can be deployed independently • No downtime, old version keeps running until the new one is deployed
  11. Disadvantages • As any new thing can be difficult at

    the beginning • You get dependent to a cloud provider • More tools to use • Lack of framework to start with
  12. What’s next • Create a DynamoDB table • Add more

    functions • Play with AWS Cognito to support authenticated users • Read about lambda layers • Check serverless-python-requirements, a serverless plugin to create dependencies packages for Python • Other frameworks to help with Lambdas and Python:  AWS Chalice https://github.com/aws/chalice  AWS SAM https://aws.amazon.com/serverless/sam/
  13. Thank you • If you have any questions, do not

    hesitate to contact me: [email protected] • You can also visit my book’s website (Python for Beginners): https://librodepython.com/ • See you later this year on Python Brasil and Python Sweden