Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Proprietary + Confidential
Scale a Swagger-based Web API
with Google Cloud Endpoints
Guillaume Laforge
Staff Developer Adv...
Proprietary + Confidential
Scale a Swagger-based Web API
with Google Cloud Endpoints
Guillaume Laforge
Staff Developer Adv...
Proprietary + Confidential
Scale a Swagger-based Web API
with Google Cloud Endpoints
Guillaume Laforge
Staff Developer Adv...
Proprietary + Confidential
Scale a Swagger-based Web API
with Google Cloud Endpoints
Guillaume Laforge
Staff Developer Adv...
Proprietary + Confidential
@glaforge
Ok, OpenAPI Specs!
Proprietary + Confidential
@glaforge
Ok, OpenAPI Specs!
Cloud
Endpoints
mastermind!
Proprietary + Confidential
Benefits of OpenAPI Specs
Contract
First is
Trendy ! @glaforge
Contract as
the Source
of Truth
Facilitates Team
Communication,
Collaboration
Great for Tooling
Great for Tooling
Client SDKs
Server skeletons
Great for Tooling
Client SDKs
Server skeletons
Test stubs
Static & live mocks
Great for Tooling
Client SDKs
Server skeletons
Test stubs
Static & live mocks
Static documentation
Great for Tooling
Client SDKs
Server skeletons
Test stubs
Static & live mocks Sandbox & live playground
Static documentati...
Great for Tooling
Client SDKs
Server skeletons
Test stubs
Static & live mocks Sandbox & live playground
Static documentati...
Proprietary + Confidential
Scale a Swagger-based Web API
with Google Cloud Endpoints
Guillaume Laforge
Staff Developer Adv...
Proprietary + Confidential
The various compute options
on Google Cloud Platform
@glaforge
Proprietary + Confidential
Google App Engine — GAE
Flex and Standard
“Deploy your code,
we’ll scale it
for you!”
@glaforge
Proprietary + Confidential
Google Container Engine — GKE
Powered by Kubernetes & Docker
OSS Kubernetes
based container
clu...
Proprietary + Confidential
Google Compute Engine — GCE
Customize your VM images
Full control:
Reusable and
customisable VM...
Proprietary + Confidential
Scale a Swagger-based Web API
with Google Cloud Endpoints
Guillaume Laforge
Staff Developer Adv...
Proprietary + Confidential
Cloud Endpoints
API Management on Google Cloud Platform
@glaforge
Proprietary + Confidential
What is API Management?
@glaforge
Proprietary + Confidential
● API Management from Google
● This architecture serves hundreds
of billions of requests per da...
Proprietary + Confidential
Three key aspects
For public / private / mobile / µ-services use cases
@glaforge
Proprietary + Confidential
Three key aspects
For public / private / mobile / µ-services use cases
Control access,
authenti...
Proprietary + Confidential
Three key aspects
For public / private / mobile / µ-services use cases
Logging and monitoring
o...
Proprietary + Confidential
Three key aspects
For public / private / mobile / µ-services use cases
Speed and scalability
SE...
Proprietary + Confidential
@glaforge
Proprietary + Confidential
Extensible Service Proxy
Why a server-local proxy?
Extremely thin
Eliminates network hop
Simple...
Proprietary + Confidential
Extensible Service Proxy
Why a server-local proxy?
Extremely thin
Eliminates network hop
Simple...
Pancake
DEMO
Proprietary + Confidential
Proprietary + Confidential
What else?
@glaforge
Proprietary + Confidential
JSON-HTTP/1.1
Use Open API specs
to manage RESTful
APIs written in any
language and with
any fr...
Proprietary + Confidential
Write once; serve twice
● At Google, our gRPC APIs serve both gRPC and
REST/JSON surfaces
● Pro...
Proprietary + Confidential
Summary
Guillaume Laforge
Staff Developer Advocate
Google Cloud Platform
@glaforge
Summary
Manage
Open
Choice
JSON Web Tokens,
Auth0, Firebase
API Keys, Custom...
Secure
Monitor
Scale
Summary
Manage
Open
Choice
Secure
Monitor
Scale
Dashboard with
API Metrics
and API Logs
Summary
Manage
Open
Choice
Secure
Monitor
Scale
Summary
Manage
Open
Choice
Protocol
Tech
Scale
JSON / HTTP
Or gRPC
Summary
Manage
Open
Choice
Protocol
Tech
Scale
Any Language
Any Framework
Summary
Manage
Open
Choice
Protocol
Tech
Scale
3rd party cloud,
or on-premise
Summary
Manage
Open
Choice
Standard
OSS
Summary
Manage
Open
Choice
Standard
OSS
Current state & supported platforms
● BETA: Cloud Endpoints for JSON / HTTP REST APIs
○ App Engine Flex, Container Engine,...
Proprietary + Confidential
Thanks for
your attention!
Guillaume Laforge
Staff Developer Advocate
Google Cloud Platform
@gl...
References
Slides of this presentation
http://bit.ly/nordic-endpoints
Google Cloud Endpoints
https://cloud.google.com/endp...
Picture credits — public domain images
Truth newspaper
https://pixabay.com/fr/v%C3%A9rit%C3%A9-journal-actualit%C3%A9s-imp...
Proprietary + Confidential
Appendix
Proprietary + Confidential
---
swagger: "2.0"
info:
description: "No description"
version: "1.0.0"
title: "pancakes-api"
c...
Proprietary + Confidential
/pancakes/{pancakeId}:
get:
summary: "Retrieve a particular pancake"
operationId: "getPancakeBy...
Proprietary + Confidential
FROM gcr.io/google_appengine/openjdk8
VOLUME /tmp
ADD build/distributions/pancakes.tar /
ENV JA...
Proprietary + Confidential
kube-cfg.yaml
apiVersion: v1
kind: Service
metadata:
name: esp-pancakes
spec:
ports:
- port: 80...
Proprietary + Confidential
SERVICE: “esp-pancakes”
CONTAINER: “esp” APP-CONTAINER:
“pancakes-image”
APP
80 8080 8081 8081
Prochain SlideShare
Chargement dans…5
×

Scale a Swagger based Web API (Guillaume Laforge)

1 551 vues

Publié le

This is a session given by Guillaume Laforge at Nordic APIs 2016 Platform Summit on October 26th, in Stockholm Sweden.

Description:

Web APIs are and more often specified with API definition languages like Swagger (now named Open API Spec), as it can help you generate nice interactive documentation, server skeletons, and client SDKs, mocks, and more, making it simpler to get started both producing and consuming an API.

In this session, Guillaume will demonstrate how to define a Web API with Swagger / Open API Spec, and scale it using Cloud Endpoints, on the Google Cloud Platform.

Publié dans : Technologie
  • Identifiez-vous pour voir les commentaires

Scale a Swagger based Web API (Guillaume Laforge)

  1. 1. Proprietary + Confidential Scale a Swagger-based Web API with Google Cloud Endpoints Guillaume Laforge Staff Developer Advocate Google Cloud Platform @glaforge Slides available here: bit.ly/endpoints-nordic Cloud Endpoints https://cloud.google.com/endpoints/
  2. 2. Proprietary + Confidential Scale a Swagger-based Web API with Google Cloud Endpoints Guillaume Laforge Staff Developer Advocate Google Cloud Platform @glaforge What does Swagger bring to the table?
  3. 3. Proprietary + Confidential Scale a Swagger-based Web API with Google Cloud Endpoints Guillaume Laforge Staff Developer Advocate Google Cloud Platform @glaforge How do we Scale in the Cloud? Google-style!
  4. 4. Proprietary + Confidential Scale a Swagger-based Web API with Google Cloud Endpoints Guillaume Laforge Staff Developer Advocate Google Cloud Platform @glaforge So what’s Cloud Endpoints
  5. 5. Proprietary + Confidential @glaforge Ok, OpenAPI Specs!
  6. 6. Proprietary + Confidential @glaforge Ok, OpenAPI Specs! Cloud Endpoints mastermind!
  7. 7. Proprietary + Confidential Benefits of OpenAPI Specs Contract First is Trendy ! @glaforge
  8. 8. Contract as the Source of Truth
  9. 9. Facilitates Team Communication, Collaboration
  10. 10. Great for Tooling
  11. 11. Great for Tooling Client SDKs Server skeletons
  12. 12. Great for Tooling Client SDKs Server skeletons Test stubs Static & live mocks
  13. 13. Great for Tooling Client SDKs Server skeletons Test stubs Static & live mocks Static documentation
  14. 14. Great for Tooling Client SDKs Server skeletons Test stubs Static & live mocks Sandbox & live playground Static documentation API Portal w/ provisioning
  15. 15. Great for Tooling Client SDKs Server skeletons Test stubs Static & live mocks Sandbox & live playground Static documentation API Portal w/ provisioning Be careful with code generation overwriting customisations
  16. 16. Proprietary + Confidential Scale a Swagger-based Web API with Google Cloud Endpoints Guillaume Laforge Staff Developer Advocate Google Cloud Platform @glaforge How do we Scale in the Cloud? Google-style!
  17. 17. Proprietary + Confidential The various compute options on Google Cloud Platform @glaforge
  18. 18. Proprietary + Confidential Google App Engine — GAE Flex and Standard “Deploy your code, we’ll scale it for you!” @glaforge
  19. 19. Proprietary + Confidential Google Container Engine — GKE Powered by Kubernetes & Docker OSS Kubernetes based container clustering @glaforge
  20. 20. Proprietary + Confidential Google Compute Engine — GCE Customize your VM images Full control: Reusable and customisable VMs @glaforge
  21. 21. Proprietary + Confidential Scale a Swagger-based Web API with Google Cloud Endpoints Guillaume Laforge Staff Developer Advocate Google Cloud Platform @glaforge So what’s Cloud Endpoints
  22. 22. Proprietary + Confidential Cloud Endpoints API Management on Google Cloud Platform @glaforge
  23. 23. Proprietary + Confidential What is API Management? @glaforge
  24. 24. Proprietary + Confidential ● API Management from Google ● This architecture serves hundreds of billions of requests per day ● All configuration happens through Open API Spec (JSON/HTTP & gRPC) Cloud Endpoints @glaforge
  25. 25. Proprietary + Confidential Three key aspects For public / private / mobile / µ-services use cases @glaforge
  26. 26. Proprietary + Confidential Three key aspects For public / private / mobile / µ-services use cases Control access, authenticate users SECURE @glaforge
  27. 27. Proprietary + Confidential Three key aspects For public / private / mobile / µ-services use cases Logging and monitoring of key metrics SECURE MONITOR @glaforge
  28. 28. Proprietary + Confidential Three key aspects For public / private / mobile / µ-services use cases Speed and scalability SECURE MONITOR SCALE @glaforge
  29. 29. Proprietary + Confidential @glaforge
  30. 30. Proprietary + Confidential Extensible Service Proxy Why a server-local proxy? Extremely thin Eliminates network hop Simpler, better security Scales with your app <1 ms latency @glaforge
  31. 31. Proprietary + Confidential Extensible Service Proxy Why a server-local proxy? Extremely thin Eliminates network hop Simpler, better security Scales with your app <1 ms latency Will be Open Sourced @glaforge
  32. 32. Pancake DEMO
  33. 33. Proprietary + Confidential Proprietary + Confidential What else? @glaforge
  34. 34. Proprietary + Confidential JSON-HTTP/1.1 Use Open API specs to manage RESTful APIs written in any language and with any framework. Proto-HTTP/2 Use gRPC to build highly efficient HTTP/2-based APIs Choose your protocol @glaforge
  35. 35. Proprietary + Confidential Write once; serve twice ● At Google, our gRPC APIs serve both gRPC and REST/JSON surfaces ● Proxy allows you to write a gRPC backend and serve both REST/JSON and gRPC ● The only API management product that allows managing gRPC-based APIs @glaforge
  36. 36. Proprietary + Confidential Summary Guillaume Laforge Staff Developer Advocate Google Cloud Platform @glaforge
  37. 37. Summary Manage Open Choice JSON Web Tokens, Auth0, Firebase API Keys, Custom... Secure Monitor Scale
  38. 38. Summary Manage Open Choice Secure Monitor Scale Dashboard with API Metrics and API Logs
  39. 39. Summary Manage Open Choice Secure Monitor Scale
  40. 40. Summary Manage Open Choice Protocol Tech Scale JSON / HTTP Or gRPC
  41. 41. Summary Manage Open Choice Protocol Tech Scale Any Language Any Framework
  42. 42. Summary Manage Open Choice Protocol Tech Scale 3rd party cloud, or on-premise
  43. 43. Summary Manage Open Choice Standard OSS
  44. 44. Summary Manage Open Choice Standard OSS
  45. 45. Current state & supported platforms ● BETA: Cloud Endpoints for JSON / HTTP REST APIs ○ App Engine Flex, Container Engine, Compute Engine ○ Other clouds + on premise via Kubernetes ● ALPHA: Cloud Endpoints for gRPC ○ Same (except GAE Flex w/ HTTP/1.1 support only) @glaforge
  46. 46. Proprietary + Confidential Thanks for your attention! Guillaume Laforge Staff Developer Advocate Google Cloud Platform @glaforge Slides available here: bit.ly/endpoints-nordic Cloud Endpoints https://cloud.google.com/endpoints/
  47. 47. References Slides of this presentation http://bit.ly/nordic-endpoints Google Cloud Endpoints https://cloud.google.com/endpoints/ Managing gRPC APIs with Google Cloud Endpoints http://www.slideshare.net/WenchengLu/managing-grpc-apis-with-google-cloud-endpoints Choosing a compute option on Google Cloud Platform https://cloud.google.com/docs/choosing-a-compute-option @glaforge
  48. 48. Picture credits — public domain images Truth newspaper https://pixabay.com/fr/v%C3%A9rit%C3%A9-journal-actualit%C3%A9s-imprim%C3%A9-166853/ Women working together https://pixabay.com/fr/femmes-travail-d-%C3%A9quipe-l-%C3%A9quipe-1209678/ Drill https://pixabay.com/fr/t%C3%AAte-de-forage-foret-perceuse-m%C3%A9tal-444504/ Pancakes https://pixabay.com/fr/cr%C3%AApe-cr%C3%AApes-manger-alimentaire-640865/ Room service icon https://pixabay.com/fr/service-de-chambre-serviteur-service-297071/ @glaforge
  49. 49. Proprietary + Confidential Appendix
  50. 50. Proprietary + Confidential --- swagger: "2.0" info: description: "No description" version: "1.0.0" title: "pancakes-api" contact: {} host: "pancakes-endpoint-demo.appspot.com" paths: /pancakes: get: summary: "Retrieve the pancakes" operationId: "getAllPancakes" produces: - "application/json" parameters: [] responses: 200: description: "Status 200" schema: type: "array" items: $ref: "#/definitions/Pancake" security: - api_key: [] swagger2.yaml post: summary: "Add a new pancake" operationId: "createPancake" consumes: - "application/json" produces: - "application/json" parameters: - in: "body" name: "body" required: false schema: $ref: "#/definitions/Pancake" responses: 201: description: "Status 201" schema: $ref: "#/definitions/Pancake" security: - api_key: []
  51. 51. Proprietary + Confidential /pancakes/{pancakeId}: get: summary: "Retrieve a particular pancake" operationId: "getPancakeById" produces: - "application/json" parameters: - name: "pancakeId" in: "path" description: "The unique pancake ID" required: true type: "string" responses: 200: description: "Status 200" schema: $ref: "#/definitions/Pancake" security: - api_key: [] swagger2.yaml securityDefinitions: api_key: type: "apiKey" name: "key" in: "query" definitions: Pancake: type: "object" required: - "title" properties: id: type: "string" description: "The unique pancake ID" title: type: "string" description: "Pancake title"
  52. 52. Proprietary + Confidential FROM gcr.io/google_appengine/openjdk8 VOLUME /tmp ADD build/distributions/pancakes.tar / ENV JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom' ENTRYPOINT ["/pancakes/bin/start"] EXPOSE 8081 Dockerfile
  53. 53. Proprietary + Confidential kube-cfg.yaml apiVersion: v1 kind: Service metadata: name: esp-pancakes spec: ports: - port: 80 targetPort: 8080 protocol: TCP name: http selector: app: esp-pancakes type: LoadBalancer --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: esp-pancakes spec: replicas: 1 template: metadata: labels: app: esp-pancakes spec: containers: - name: esp image: b.gcr.io/endpoints/endpoints-runtime:0.3 args: [ "-p", "8080", "-a", "127.0.0.1:8081", "-s", "pancakes-endpoint-demo.appspot.com", "-v", "2016-10-24r0", ] ports: - containerPort: 8080 - name: pancakes-image image: gcr.io/pancakes-endpoint-demo/pancakes-image:latest ports: - containerPort: 8081
  54. 54. Proprietary + Confidential SERVICE: “esp-pancakes” CONTAINER: “esp” APP-CONTAINER: “pancakes-image” APP 80 8080 8081 8081

×