essential api facade patterns: session management (episode 2)

56
Apigee @apigee Santanu Dey @Santanu_Dey Essential API Facade Patterns Episode 2 – Session Management

Upload: apigee

Post on 10-May-2015

4.836 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Essential API Facade Patterns: Session Management (Episode 2)

Apigee@apigee

Santanu Dey@Santanu_Dey

Essential API Facade Patterns

Episode 2 – Session Management

Page 2: Essential API Facade Patterns: Session Management (Episode 2)

groups.google.com/group/api-craft

Page 3: Essential API Facade Patterns: Session Management (Episode 2)

slideshare.net/apigee

Page 4: Essential API Facade Patterns: Session Management (Episode 2)

youtube.com/apigee

Page 5: Essential API Facade Patterns: Session Management (Episode 2)

@Santanu_DeySantanu Dey

Page 6: Essential API Facade Patterns: Session Management (Episode 2)

Episode 1Composition

Episode 2Session Management

Episode 3One Phase to Two Phase Conversion

Episode 4Synchronous to Asynchronous

Webcast Series: API Facade Patterns

Page 7: Essential API Facade Patterns: Session Management (Episode 2)

Problem

Solution

Benefits

Considerations

Episode 2 : Session Management

Page 8: Essential API Facade Patterns: Session Management (Episode 2)

Use Session Management to

enable API teams and app developers to implement and improve their API designs and apps

Problem

Page 9: Essential API Facade Patterns: Session Management (Episode 2)

Session Management

Managing the state of dynamically created resources (per client) through a series of client-server interactions

Page 10: Essential API Facade Patterns: Session Management (Episode 2)

Services are best kept stateless

Page 11: Essential API Facade Patterns: Session Management (Episode 2)

But . . . sometimes stateful services are really needed

Page 12: Essential API Facade Patterns: Session Management (Episode 2)

Example: shopping cart

Page 13: Essential API Facade Patterns: Session Management (Episode 2)

Shopping Cart Created Cart updated Order received

Create cartAdd / remove items

Check out Track order

Stateful interaction requires session

Page 14: Essential API Facade Patterns: Session Management (Episode 2)

Example: room booking

Page 15: Essential API Facade Patterns: Session Management (Episode 2)

Example: job application

Page 16: Essential API Facade Patterns: Session Management (Episode 2)

Even OAuth requires a session

Page 17: Essential API Facade Patterns: Session Management (Episode 2)

Session management helps in maintaining client context (on the server)

Page 18: Essential API Facade Patterns: Session Management (Episode 2)

State management and session managementare not the same

Page 19: Essential API Facade Patterns: Session Management (Episode 2)

Session Management is one of the ways of managing client state

Page 20: Essential API Facade Patterns: Session Management (Episode 2)

In the context of APIs

how to design Session Management?

how to implement Session Management?

Page 21: Essential API Facade Patterns: Session Management (Episode 2)

Application Servers solve this issue for the Web by managing client sessions

Page 22: Essential API Facade Patterns: Session Management (Episode 2)

Application servers solved this problem for the Web

Backend ServerApp Server

Users

Browser

Page 23: Essential API Facade Patterns: Session Management (Episode 2)

Order Processing Server• Server is stateless to be scalable• Not designed to handle client specific

resource state

No stored client context on the transaction serverEach request must contain all

state information

Application servers solved this problem for the Web

Backend ServerApp ServerBrowser

Users

Page 24: Essential API Facade Patterns: Session Management (Episode 2)

Order Processing Server• Server is stateless to be

scalable• Not designed to handle

client specific resource state

No stored client context on the

transaction server

Each request must contain all

state information

WebApplicationManages user sessions

Application servers solved this problem for the Web

Users

Backend ServerApp ServerBrowser

Page 25: Essential API Facade Patterns: Session Management (Episode 2)

Order Processing Server• Server is stateless to be

scalable• Not designed to handle

client specific resource state

No stored client context on the

transaction server

Users

Each request must contain all state

information

WebApplicationManages user sessions

Very close to Hypermedia

Interface

Application servers solved this problem for the Web

Backend ServerApp ServerBrowser

Page 26: Essential API Facade Patterns: Session Management (Episode 2)

But, we need an App!

Page 27: Essential API Facade Patterns: Session Management (Episode 2)

Solution

Page 28: Essential API Facade Patterns: Session Management (Episode 2)

Order Processing Server• Server is stateless to be

scalable• Not designed to handle

client specific resource state

No stored client context on the

transaction server

Users

Each request must contain all state

information

WebApplicationManages user sessions

Very close to Hypermedia

Interface

If application servers solved this problem for the Web

Backend ServerApp ServerBrowser

How do we reuse this capability when exposing APIs?

Page 29: Essential API Facade Patterns: Session Management (Episode 2)

In mobile applications parlance managing client state on the device is expensive

Requires more local processing

Requires more local storage

Requires more date exchange over the network

Page 30: Essential API Facade Patterns: Session Management (Episode 2)

Managing client state on the back-end server is expensive too.

Page 31: Essential API Facade Patterns: Session Management (Episode 2)

Stateful interaction with RESTful APIs

App relies on REST

Backend Server

API Façade

Page 32: Essential API Facade Patterns: Session Management (Episode 2)

Example of the API Façade

Backend Server

API Façade

Existing Capabilities

API Exposure &

Mgmt

App relies on REST

Page 33: Essential API Facade Patterns: Session Management (Episode 2)

Stateful interaction with RESTful APIs

Totally Stateless Interface

App relies on REST

Backend Server

API Façade

Page 34: Essential API Facade Patterns: Session Management (Episode 2)

Totally stateless InterfaceProvide HATEOAS

Holds transient state information & provides the hyperlinks for the state transition

Stateful interaction with RESTful APIs

App relies on REST

Backend Server

API Façade

Page 35: Essential API Facade Patterns: Session Management (Episode 2)

View a product

{   "Product":{      "item-name":"MTune MP3 Player",      "description":"2GB MP3 Player",      "unit-price":"34.56",      "sku":"098430",      "link":{         "@attributes":{            "url":"\/cart\/id\/2235\/addProduct\/sku\/098430?user=123"         }      }   }}

Returns the details of a product along with hypermedia to allow interaction with the product resource.

GET http://yourhost/products/sku/098430?user=123&cart=2235

Page 36: Essential API Facade Patterns: Session Management (Episode 2)

Adds a Product to an existing shopping cart & returns the cart.

{   "Cart":{      "id":"2235",      "Name":"Christmas Shopper",      "link":{         "@attributes":{            "url":"\/cart\/id\/2235"         }      },      "items":{         "item":{            "item-name":"MTune 2GB MP3 Player",            "description":"MTune, MP3 player",            "unit-price":"34.56",            "quantity":"1"         }      }   }}

Add a product

POST http://yourhost/cart/2235/addProduct/sku/098430?user=123

Page 37: Essential API Facade Patterns: Session Management (Episode 2)

State of the cart helps represent the shopping session

Page 38: Essential API Facade Patterns: Session Management (Episode 2)

Benefits

Page 39: Essential API Facade Patterns: Session Management (Episode 2)

Manages session state as part of state transition of the resource

Backend Server

API Façade

Page 40: Essential API Facade Patterns: Session Management (Episode 2)

Warning! UML Ahead

Page 41: Essential API Facade Patterns: Session Management (Episode 2)
Page 42: Essential API Facade Patterns: Session Management (Episode 2)

API Façade provides access to transient resources through RESTful APIs

Page 43: Essential API Facade Patterns: Session Management (Episode 2)

App Developer

Doesn’t have to control the state

Doesn’t have to maintain the entire state information

Doesn’t have to resubmit each time

Less programming overhead

App Developers consume REST more easily

Page 44: Essential API Facade Patterns: Session Management (Episode 2)

The API Façade addresses scalability while managing transient resources

Backend Server

API Façade

Page 45: Essential API Facade Patterns: Session Management (Episode 2)

Backend Server

API Façade

The API Façade addresses replay attack, session hijacking concerns

Malicious user

Page 46: Essential API Facade Patterns: Session Management (Episode 2)

Programmable

Page 47: Essential API Facade Patterns: Session Management (Episode 2)

Can capture analytics around session usage

Page 48: Essential API Facade Patterns: Session Management (Episode 2)

Other Considerations

Page 49: Essential API Facade Patterns: Session Management (Episode 2)

When should we really think about Session Management?

Page 50: Essential API Facade Patterns: Session Management (Episode 2)

If it is too much overhead to send back the entire context data each time

Page 51: Essential API Facade Patterns: Session Management (Episode 2)

Information associated with Session or “transit resource” should be minimal

Page 52: Essential API Facade Patterns: Session Management (Episode 2)

Session should be expired within a short time (security concern)

Page 53: Essential API Facade Patterns: Session Management (Episode 2)

Questions?

Page 54: Essential API Facade Patterns: Session Management (Episode 2)

THANK YOUSubscribe to API webcasts at:

youtube.com/apigee

Apigee@apigee

Page 55: Essential API Facade Patterns: Session Management (Episode 2)

THANK YOUQuestions and ideas to:

groups.google.com/group/api-craft

Apigee@apigee

Page 56: Essential API Facade Patterns: Session Management (Episode 2)

THANK YOUContact me at:

@[email protected]

Apigee@apigee