Serverless GraphQL with AzureFunctions

@michael_staib

What is Serverless?

  • Serverless still uses servers!

  • Build and run applications without
    thinking about servers.

What is Serverless?

  • No server is provisioned or managed

  • Scales with usage

  • High availability

  • Never pay for idle

Function as form of abstraction

Companies using Serverless

Frameworks

  • Serverless (OSS Framework for AWS)

  • AWS Lambda

  • Azure Functions

  • Google Cloud Functions

Consumption plan

Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.

Premium plan

While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs.

Azure App Service plan

Run Functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required.

Functions on Kubernetes

Now in Preview, Functions can run on pre-provisioned Kubernetes clusters in Azure Kubernetes Service or on Arc-enabled clusters on-premises and in other clouds. This capability is currently free* during Preview.

Hosting Models

  • Class library

  • Integrated into function host

  • DryIoc DI

  • .NET Runtime of host process

  • HttpRequest

  • Standard startup times

  • Cancellations allowed

In-process

Out-of-process

  • Fewer conflicts

  • Full control of the process

  • Standard DI

  • .NET Runtime Flexibility

  • HttpRequestData

  • Longer startup times

  • No cancellations

{
  me {
    name
  }
}
{
  "me": {
    "name": "Michael Staib"
  }
}
{
  me {
    name
  }
}
{
  me {
    name
    image {
      width
      height
      url
    }
  }
}
{
  "me": {
    "name": "Michael Staib",
    "image": {
      "width": 200,
      "height": 300,
      "url": "http://some/images/123.png"
    }
  }
}
{
  me {
    name
    image {
      width
      height
      url
    }
  }
}
{
  me {
    name
    lastSeen
    friends {
      name
      lastSeen
    }
  }
}
{
  "me": {
    "name": "Michael Staib",
    "lastSeen": "2018-05-19T18:45",
    "friends": [
      {
        "name": "Rafael Staib",
        "lastSeen": "2018-05-24T12:37"
      },
      {
        "name": "Pascal Senn",
        "lastSeen": "2018-06-07T17:13"
      }
    ]
  }
}
{
  me {
    name
    lastSeen
    friends {
      name
      lastSeen
    }
  }
}
{
  "me": {
    "name": "Michael Staib",
    "lastSeen": "2018-05-19T18:45",
    "friends": [
      {
        "name": "Rafael Staib",
        "lastSeen": "2018-05-24T12:37"
      },
      {
        "name": "Pascal Senn",
        "lastSeen": "2018-06-07T17:13"
      }
    ]
  }
}
{
  me {
    ... PersonInfo
    friends {
      ... PersonInfo
    }
  }
}
fragment PersonInfo on Person {
  name
  lastSeen
}

GraphQL gives clients the power to ask for exactly what they need and nothing more.

Demo

GraphQL

Business Layer

Data Layer

Typical Layers

HTTP

Parse

Validate

Compile

Plan

Execute

GraphQL Request Pipeline

Demo

GraphQL

GraphQL
Services

GraphQL
Services

Rest
Services

Client

Serverless GraphQL Gateway

GraphQL Shop API

Accounts

Product

Reviews

Client

Serverless GraphQL Gateway

Inventor

Demo

GraphQL Subscriptions

GraphQL Subscriptions

Azure Web PubSub

GraphQL Subscriptions

Trigger

Messages

Trigger

Trigger

https://bit.ly/graphql-github

If you like what we do give us a star on GitHub

https://chillicream.com

@michael_staib

Serverless GraphQL with AzureFunctions

By Michael Ingmar Staib

Serverless GraphQL with AzureFunctions

  • 533