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

Building Everything on Serverless

Noah Bass
January 17, 2019

Building Everything on Serverless

Serverless is a form of cloud computing that’s changing the way software is delivered. The talk introduces key characteristics of serverless and serverless apps, how serverless compute works, and then dives into a live demo.

Video: https://www.youtube.com/watch?v=BRFd-PHyu7g&t=324s

Noah Bass

January 17, 2019
Tweet

More Decks by Noah Bass

Other Decks in Technology

Transcript

  1. @n_bass
    Building Everything on Serverless

    View Slide

  2. @n_bass
    λ

    View Slide

  3. @n_bass
    Cloud App / Hobby Projects
    Enter Serverless + Serverless Compute
    Examples
    Under the Hood
    AWS Lambda
    Serverless Framework
    Live Demo

    View Slide

  4. @n_bass
    How do you write + run cloud apps?

    View Slide

  5. @n_bass
    Code
    Test
    Deploy
    Monitor
    Provision
    Infrastructure

    View Slide

  6. @n_bass
    Your Code!
    Virtual Machine (or maybe PaaS)
    ?
    Your Code!
    Database/Datastore
    Logs
    Cron
    HTTP/S
    SSH

    View Slide

  7. @n_bass
    Infrastructure and Management

    View Slide

  8. @n_bass
    Infrastructure and Management

    View Slide

  9. @n_bass
    Infrastructure is an implementation detail.

    View Slide

  10. @n_bass
    Developers should care about only their code.

    View Slide

  11. @n_bass
    Drop the infrastructure.

    View Slide

  12. @n_bass
    Code
    Test
    Deploy
    Monitor
    Provision
    Infrastructure

    View Slide

  13. @n_bass
    Idle Code == Idle Servers

    View Slide

  14. @n_bass
    Serverless?

    View Slide

  15. @n_bass
    HTTP API for Web/Mobile App
    HTTPS Trigger
    Event
    Your Code!
    Function
    Database/
    Datastore
    Services
    Other
    Functions,
    APIs
    APIs
    Logs, …
    Monitoring

    View Slide

  16. @n_bass
    Serverless == BaaS

    View Slide

  17. @n_bass
    Serverless Compute == FaaS

    View Slide

  18. @n_bass
    Serverless Function

    View Slide

  19. @n_bass
    Serverless (BaaS)
    Serverless Compute (FaaS)
    Serverless Function

    View Slide

  20. @n_bass
    Serverless is another abstraction.

    View Slide

  21. @n_bass
    FaaS
    PaaS
    IaaS

    View Slide

  22. @n_bass
    But there are servers?!?!?!

    View Slide

  23. @n_bass
    Good Use Cases

    View Slide

  24. @n_bass
    HTTP API for Web/Mobile App
    HTTPS Call
    Event
    Your Code!
    Function
    Database/
    Datastore
    Service

    View Slide

  25. @n_bass
    Example: ACM@UC Slack Badge

    View Slide

  26. @n_bass
    Scheduled
    Event
    Event
    Your Code!
    Function
    Messaging,
    Reporting, etc.
    API
    Automated Tasks
    Data
    API

    View Slide

  27. @n_bass
    New Image/
    Video in S3
    Bucket
    Event
    Your Code!
    Function
    S3 Bucket
    Service
    Image and Video Resizing

    View Slide

  28. @n_bass
    Bad Use Cases
    Persistent Connections, State Sharing

    View Slide

  29. @n_bass
    Building Everything on Serverless

    View Slide

  30. @n_bass
    Building Everything on Serverless
    Some Things

    View Slide

  31. @n_bass
    Containers

    View Slide

  32. @n_bass
    Simple Function: Availability
    Event
    Instance
    Function
    HTTPS GET
    Instance
    Instance
    Instance
    https://martinfowler.com/articles/serverless.html

    View Slide

  33. @n_bass
    Containers
    Package code into an image that can be run (almost anywhere)

    View Slide

  34. @n_bass
    Container Reuse
    aws.amazon.com/blogs/compute/container-reuse-in-lambda/

    View Slide

  35. @n_bass

    View Slide

  36. @n_bass
    HTTP Call
    Event Stream
    S3 Bucket
    Database
    Queue (SQS)
    Logs
    And more…

    View Slide

  37. @n_bass
    Cost
    Serverless Computing for College Students?

    View Slide

  38. @n_bass
    $ = Number Requests +
    Compute Time (gb-sec)

    View Slide

  39. @n_bass
    Pricing on AWS Lambda
    • $0.2 per 1 million requests
    • $0.00001667 per gb-sec

    View Slide

  40. @n_bass
    Sample Function
    1 million requests

    800ms per request

    256mb (0.25gb) memory
    -> $0.2
    -> 1M * 0.8sec -> 0.8M sec
    -> 0.8M sec * 0.25gb = 200,000 gb-sec

    200,000 * $0.00001667 = $3.34

    Total = $0.2 + $3.34 = $3.54/month

    View Slide

  41. @n_bass
    AWS Free Tier
    aws.amazon.com/free/

    View Slide

  42. @n_bass
    λ

    View Slide

  43. @n_bass
    Serverless Framework
    (serverless.com)

    View Slide

  44. @n_bass
    Serverless != Serverless Framework

    View Slide

  45. @n_bass

    View Slide

  46. @n_bass
    Serverless Framework is Cloud Agnostic

    View Slide

  47. @n_bass
    Why A Framework?

    View Slide

  48. @n_bass
    Live Demo

    View Slide

  49. @n_bass
    Simple HTTP Endpoint (hello world)
    Event
    Our Code!
    Respond 200 OK
    Function
    HTTPS GET

    View Slide

  50. @n_bass
    Scheduled Event: Weather Report
    Scheduled
    Event (1d)
    Event
    Our Code!
    Get data, then send
    email
    Function
    darksky.net
    API
    API
    AWS SES
    API

    View Slide

  51. @n_bass
    Building Some Things on Serverless

    View Slide

  52. @n_bass
    Resources
    • serverless.com
    • serverless.com/framework/docs/providers/aws/guide/quick-start/
    • aws.amazon.com/lambda
    • aws.amazon.com/free
    • cloud.google.com/free
    • github.com/serverless/examples
    • github.com/anaibol/awesome-serverless
    • martinfowler.com/articles/serverless.html
    • www.youtube.com/watch?v=Y6B3Eqlj9Fw
    • github.com/openfaas/faas

    View Slide