$30 off During Our Annual Pro Sale. View Details »

Serverless: State of the Union

Serverless: State of the Union

Builders' Day, Edinburgh, February 21st, 2018

Danilo Poccia

February 21, 2018
Tweet

More Decks by Danilo Poccia

Other Decks in Programming

Transcript

  1. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Serverless:
    State of the Union
    Danilo Poccia
    Technical Evangelist
    [email protected]
    @danilop
    danilop

    View Slide

  2. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    A typical day for a developer…
    Manager “We need an app to let our customers update preference
    settings – our competitors just launched the same thing, so I need it
    fast. I don’t want to pay a lot for it, especially when no one is using it.
    But remember that we’re growing, so make sure it scales great and is
    easy to manage and operate. And you’re on your own – sorry!”
    Developer “Not a problem. I’ll make it serverless…”

    View Slide

  3. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Serverless means…
    No Server Management
    The picture can't be displayed.
    Flexible Scaling
    No Idle Capacity
    $
    High Availability

    View Slide

  4. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Joe promised his boss an app.
    Now what?
    Step 1: Find a working example!
    Serverless web app with
    …an API hosted on Amazon API Gateway
    …access to existing data stored in Amazon DynamoDB
    …static content served by Amazon S3 and Amazon CloudFront
    …dynamic content/business logic encoded as Lambda functions
    What we need

    View Slide

  5. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    View Slide

  6. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    View Slide

  7. • Search and browse ready-made apps
    and samples
    • Customize open source apps to get
    started quickly
    • Share apps privately or publically
    •Monetize APIs using theAWS
    Marketplace
    • Powered by AWS Serverless
    Application Model (AWS SAM)!
    AWS Serverless Application Repository
    (preview)
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.

    View Slide

  8. Lambda Function Editor
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.
    • Edit multiple files at once!
    • Create new files for existing
    packages
    • Run tests and view results
    and logs without leaving the
    editor
    • Save test inputs and reuse
    them later

    View Slide

  9. Serverless app benefits
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.
    Go from concept to working code in under 5 minutes. And
    your app isn’t just a prototype…
    • 1,000 concurrent executions (10K TPS) by default.
    • Every account in good standing is automatically
    approved to 3X the default!

    View Slide

  10. • 1,000 concurrent executions (10K
    TPS) by default. Auto-approvals for
    everyone to triple.
    Faster perf with
    cold-start
    optimization!
    Up to 80% reduction in start
    times for larger functions
    Serverless app benefits
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.

    View Slide

  11. • 1,000 concurrent executions (10K
    TPS) by default. Auto-approvals for
    everyone to triple.
    • Up to 80% faster cold start times
    Built-in logging and
    monitoring, now with:
    “grab-n-go” logs in the
    Lambda console
    Serverless app benefits
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.

    View Slide

  12. • 1,000 concurrent executions (10K
    TPS) by default. Auto-approvals for
    everyone to triple.
    • Up to 80% faster cold start times
    • Find Lambda logs instantly 1.5GB
    Serverless app benefits
    3GB
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.
    Top memory size
    of…

    View Slide

  13. • 1,000 concurrent executions (10K
    TPS) by default. Auto-approvals for
    everyone to triple.
    • Up to 80% faster cold start times
    • Find Lambda logs instantly
    • Top memory size of 3GB
    Go
    Serverless!
    Serverless app benefits
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.

    View Slide

  14. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Next, Joe needs to make some changes.
    Step 2: Customize and share
    Need an IDE for local dev/test/debug
    Customize the app we deployed in step 1
    Set up a CI/CD pipeline for the team
    Deploy (safely!)
    What we need
    to do

    View Slide

  15. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Easy-to-use IDE in the cloud
    Builtin GitHub support
    Builtin Lambda blueprint support
    Builtin SAM Local:
    Local testing!
    IDE debugging!
    Deploy directly to Lambda and/or
    push updates to GitHub
    New
    AWS Cloud9

    View Slide

  16. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Automated CI/CD process
    Git push your changes from Cloud9
    when ready to share…
    Set up an AWS CodePipeline to
    build automatically on updates
    Local Testing

    View Slide

  17. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    I need to deploy Lambda functions
    safely and incrementally.
    Customer feedback
    How can I deploy multiple
    functions and APIs in a
    coordinated way?
    How do I roll back
    automatically?
    How can I shape traffic
    between two versions of
    an API?

    View Slide

  18. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Safe, incremental serverless deployment
    Lambda: Weighted aliases
    • Set percentage of traffic between two versions of the same
    function
    API Gateway: Sub-stages for incremental deployments
    • Share traffic between two stages
    AWS CodeDeploy: Automated support for safe serverless
    deployments
    • Amazon CloudWatch metrics-driven rollout/rollback

    View Slide

  19. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    View Slide

  20. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    View Slide

  21. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    View Slide

  22. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    View Slide

  23. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    View Slide

  24. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    View Slide

  25. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    View Slide

  26. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Another typical day…
    Manager: “That app you built is working great, but now we need to
    include data from a relational DB and one of our legacy services in our
    VPC. Is your serverless architecture going to handle that?”
    Developer “Not a problem.”

    View Slide

  27. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Next up: Deal with legacy stuff.
    Step 3: Connect to enterprise systems
    Monitor concurrency
    Limit concurrency for legacy connectivity
    Hook up APIs to VPC-based services
    Audit and log all invocations
    What we need
    to do

    View Slide

  28. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    I need a way to protect the capacity of a
    Lambda function from others running in
    the same account.
    Customer feedback
    I want to temporarily disable
    a function.
    Can you create a “dev mode”
    for functions?
    Lambda can overwhelm
    my legacy systems with
    too many calls

    View Slide

  29. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    I need a way to protect the capacity of a
    Lambda function from others running in
    the same account.
    Customer Feedback
    I want to temporarily disable
    a function.
    Can you create a “dev mode”
    for functions?
    Lambda can overwhelm
    my legacy systems with
    too many calls
    Insight: Concurrency control is a key
    element of managing functions in a
    serverless app.

    View Slide

  30. Lambda: Concurrency metric
    Lambda: Per-function concurrency throttles
    Enterprise connectivity
    What you can do with it
    1. Limit concurrency to legacy systems
    2. Protect serverless production services from
    other functions in the same account
    3. Temporarily disable a function
    4. Develop functions with limited billing and
    “runaway” protection
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.

    View Slide

  31. VPC (PrivateLink) integrations
    Access services and data in
    your VPC from an API
    Regional endpoints
    Fast, region-specific API
    endpoints
    Enterprise connectivity: API Gateway
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.

    View Slide

  32. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

    View Slide

  33. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    API Gateway connectivity solutions
    To
    From
    Internet
    Regional
    AWS Service
    Customer VPC
    Internet
    Regional
    AWS Service
    Existing Service
    (Edge-optimized, public integrations)
    Private VPC
    Region-optimized Endpoints
    Region Endpoints
    +Private VPC
    Recent
    New

    View Slide

  34. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Log and audit
    Structured logging for APIs
    AWS CloudTrail support for
    Lambda functions

    View Slide

  35. Serverless for the enterprise: checklist
    Uptime
    Scale
    Performance
    Management
    Safe deploys
    Concurrency controls
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.

    View Slide

  36. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    What about GraphQL?

    View Slide

  37. GraphQL
    Open, declarative data-fetching specification
    != Graph database
    Use NoSQL, Relational, HTTP, etc.
    Traditional data-fetching GraphQL
    /posts
    /postInfo
    /postJustTitle
    /postsByAuthor
    /postNameStartsWithX
    /commentsOnPost

    View Slide

  38. How does GraphQL work?
    {
    "id": "1",
    "name": "Get Milk",
    “priority": "1"
    },
    {
    "id": “2",
    "name": “Go to gym",
    “priority": “5"
    },…
    type Query {
    getTodos: [Todo]
    }
    type Todo {
    id: ID!
    name: String
    description: String
    priority: Int
    duedate: String
    }
    query {
    getTodos {
    id
    name
    priority
    }
    }
    Model data with
    application schema
    Client requests what it
    needs
    Only that data is
    returned

    View Slide

  39. GraphQL
    Schema
    type Event {
    id: ID!
    name: String
    where: String
    when: String
    description: String
    comments: [Comment]
    }
    type Comment {
    commentId: String!
    eventId: ID!
    content: String!
    createdAt: String!
    }

    View Slide

  40. GraphQL
    Schema
    Mutation
    type Mutation {
    createEvent(
    name: String!,
    when: String!,
    where: String!,
    description: String!
    ): Event
    deleteEvent(id: ID!): Event
    commentOnEvent(
    eventId: ID!,
    content: String!,
    createdAt: String!
    ): Comment
    }

    View Slide

  41. GraphQL
    Schema
    Mutation
    Query
    type Query {
    getEvent(id: ID!): Event
    listEvents(
    limit: Int,
    nextToken: String
    ): EventConnection
    }

    View Slide

  42. GraphQL
    Schema
    Mutation
    Query
    Subscription
    type Subscription {
    subscribeToEventComments(eventId: String!): Comment
    @aws_subscribe(mutations: ["commentOnEvent"])
    }

    View Slide

  43. GraphQL
    Schema
    Mutation
    Query
    Subscription
    Realtime? YES
    Batching? YES
    Pagination? YES
    Relations? YES
    Aggregations? YES
    Search? YES
    Offline? YES

    View Slide

  44. AWS AppSync
    DynamoDB
    Table
    Lambda
    Function Elasticsearch
    Service
    GraphQL
    Schema
    Upload
    Schema
    GraphQL
    Query
    Mutation
    Subscription
    Real-time
    Offline
    AppSync
    API
    Cognito
    User Pool

    View Slide

  45. AWS AppSync
    DynamoDB
    Table
    Lambda
    Function Elasticsearch
    Service
    GraphQL
    Schema
    Upload
    Schema
    GraphQL
    Query
    Mutation
    Subscription
    Real-time
    Offline
    AppSync
    API
    Cognito
    User Pool
    Legacy
    Application

    View Slide

  46. AWS AppSync
    DynamoDB
    Table
    Lambda
    Function Elasticsearch
    Service
    GraphQL
    Schema
    Upload
    Schema
    GraphQL
    Query
    Mutation
    Subscription
    Real-time
    Offline
    DynamoDB to Elasticsearch
    Sync Function
    AppSync
    API
    Cognito
    User Pool

    View Slide

  47. AWS AppSync
    DynamoDB
    Table
    Lambda
    Function Elasticsearch
    Service
    GraphQL
    Schema
    Autogenerate
    Schema
    GraphQL
    Query
    Mutation
    Subscription
    Real-time
    Offline
    AppSync
    API
    Cognito
    User Pool

    View Slide

  48. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Demo:
    AWS AppSync & GraphQL

    View Slide

  49. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Serverless for everything
    Lambda and API Gateway in every commercial AWS Region +
    AWS GovCloud
    Lambda@Edge new features:
    • Content-based Dynamic Origin Selection
    • Network Calls from Viewer Events
    • Advanced Response Generation

    View Slide

  50. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Serverless for everything
    • Faster cold start performance
    • Assurance programs: ISO, PCI, HIPAA
    • …and now SOC 1, SOC 2, and SOC 3
    • Lambda for devices (AWS Greengrass, AWS Snowball Edge)
    • Lambda for Windows – CoreCLR 2.0

    View Slide

  51. An expanding Serverless ecosystem
    Build and CI/CD
    Logging and Monitoring
    Applications and Deployment
    Chalice Framework Serverless Java Container
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.

    View Slide

  52. • Turn any Go program into a
    Lambda function by adding 2
    lines
    • Open source connector
    • Now available!
    Golang in Lambda
    © 2017, Amazon Web Services, Inc. or its Affiliates.All rights reserved.

    View Slide

  53. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
    Serverless:
    State of the Union
    Danilo Poccia
    Technical Evangelist
    [email protected]
    @danilop
    danilop

    View Slide