Tokyo Azure Meetup #14 - Azure Functions Proxies

24
Azure Functions Proxies Kanio Dimitrov

Transcript of Tokyo Azure Meetup #14 - Azure Functions Proxies

Page 1: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Azure Functions Proxies

Kanio Dimitrov

Page 2: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Process events with Serverless code architecture

An event-based Serverless compute experiences to accelerate your development. It can scale on demand and

you pay only for the resource you consume.

Page 3: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Main Characteristics• Serverless

• Accelerate development

• Bind to Services

• Rich Language Support

• Pay only for what you use

Page 4: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Scenarios• Time-based

Processing

• Azure Service Event Processing

Page 5: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Scenarios

• SaaS Event Processing

• Serverless web app

Page 6: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Scenarios

• Serverless Mobile Backend

• Real-time stream processing

Page 7: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Scenarios

• Real-time bot messaging

Page 8: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Azure Functions vs Web Jobs

Triggers Binging Outputs Dynamic Plan Serverless -> Azure Functions

Page 9: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Comparison

Page 10: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Monolith

Client app.js

GET /games

GET /users

Pros:• Speed of

development

Cons:• Tighter coupling• Complexity

Page 11: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Microservices

Client users.js

GET /users

POST /users

DELETE /users/:id

Client games.js

GET /games

POST /games

DELETE /games/:id

Pros:• Separation of

concerns• Less Complexity

Cons:• Slower deployments

Page 12: Tokyo Azure Meetup #14  -  Azure Functions Proxies

NanoservicesClient get_users.js

GET /users Pros:• Greater separation

of concerns• Even Less

Complexity

Cons:• Event Slower

deployments

Client delete_users.jsDELETE /users/:id

Client get_games.jsGET /games

Client delete_game.jsDELETE /games/:id

Page 13: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Hybrid

Client users.jsGET /users

DELETE /users/:id

Client get_games.jsGET /games

Client delete_game.jsDELETE /games/:id

Page 14: Tokyo Azure Meetup #14  -  Azure Functions Proxies

API Development with Azure Functions• Difficult to manage large solution in single function app

• Deployment isolation between individual components

• Works for triggers, but difficult for APIs

• Each app has a host name, difficult to track

• Difficult for clients, especially when switching for testing

Page 15: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Azure Functions Proxies (Preview)• Easier to develop APIs by using Azure Functions• Define API surface for multiple functions apps • Any endpoint can endpoint as reverse proxy to another

API:• Same function app• Another function app• API App• Any API

Page 16: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Demo – Create First Azure Functions Proxy

Page 17: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Modifying Backend Requests - Request Parameters

• Parmeters from route template as inputs for backend URL property

• User “{}”:• Proxy - /pets/{petId}• Backend – https://<app>.azurewebsites.net/api/pets/{petId}

• Wildcard• Proxy - /api/{*restOfPath}• restOfPath – string representation of the remaining path segments from

incoming request

Page 18: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Modifying backend requests - Using application settings

• Reference app settings by surrounding the setting name with ‘%’

• In https://%ORDER_PROCESSING_HOST%/api/orders, ORDER_PROCESSING_HOST is coming from app settings

• Use app settings for backend hosts when multiple deployments or test environments

Page 19: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Demo – Modifying Backend Requests

Page 20: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Demo – Versioning

Page 21: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Deployment • Configuration stored in proxies.json

Page 22: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Azure Functions Proxies vs API Management

Topic Azure Functions Proxies

API Management

Focus API Development Packaging and Selling APIs

Features Routing (for now) Advanced (throttling,

security, caching)Price Cheaper (pay per

use)Monthly Fee

Page 23: Tokyo Azure Meetup #14  -  Azure Functions Proxies

Architecture

Mobile AppAPI

Management

Azure Functions

ProxyAPI APP

Function App

REST Endpoint

Page 24: Tokyo Azure Meetup #14  -  Azure Functions Proxies