21
March 2014 Case Study: Using WSO2 API Manager to deliver dynamic display advertising Chuck Megivern Senior Software Engineer MyWebGrocer, Inc. [email protected] May 2014

Using WSO2 API Manager to deliver dynamic display advertising

  • Upload
    wso2

  • View
    542

  • Download
    4

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

Case Study: Using WSO2 API Manager to deliver dynamic

display advertisingChuck MegivernSenior Software EngineerMyWebGrocer, [email protected]

May 2014

Page 2: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

Chuck Megivern is a Senior Software Engineer for MyWebGrocer, Inc.

He is the company technical lead for open source technologies. Chuck has been developing advertising applications for MyWebGrocer and before that, Dealer.com, for the last five years.

He has delivered Display Advertising, SEM, SEO and Digital Video applications and APIs. He has also delivered multiple cloud based server deployments.

Earlier in his career, Chuck developed software for IBM and also had a number of engineering assignments there.

Chuck has a BSEE degree from Lehigh University, and an MSEE degree from Syracuse University.

About the author

Page 3: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• MyWebGrocer (MWG) was founded in 1999.• We serve the grocery industry and consumer packaged goods industry. • We provide an online grocery platform used by leading retailers

encompassing over 10,000 retail locations in the US. • Expanding in Asia Pacific and Europe.

• We also have extensive eCommerce and eMarketing solutions. • We provide digital display advertising on our own ad network, as well as on

public internet sites that participate in other online ad networks, such as Google DoubleClick.

• My area provides APIs for internal company use, and for external business partners.

Introducing MyWebGrocer

Page 4: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• Our case study involves using WSO2 API Manager to enrich display advertising served to consumers via the Google DoubleClick ad network.

• The ad network delivers an Adobe Flash based Rich Media ad to consumer’s desktops while they are browsing internet sites.

• The ad campaign lasts for a number of weeks. The Rich Media ad, using Action Script, calls a MWG API and dynamically pulls in data every time the ad is displayed.

• The API delivers product information that updates daily. That data • comes from the retailer’s store that is closest to the consumer, and

• is currently advertising the products of interest.

• Most consumer advertising application use cases involve responding to a consumers 'click' expressing interest.

• However, this high traffic use case invokes the API every time that a display ad is presented to a consumer.

• This presentation discusses our technical approach and application stack used to handle this high volume.

Our case study

Page 5: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

WSO2 Product Usage

• Case study usage • API Manager 1.5• Business Activity Monitor (BAM) 2.4.0

• Current Usage• API Manager 1.6• Business Activity Monitor (BAM) 2.4.1

Types of APIs served

• Case study: very high volume consumer browser API invokations.• At the same time, this distributed API manager installation serves:

• external business partners using MWG API’s• internal MWG servers invoking MWG API’s• Heterogeneous API consumers and API implementing servers

• Java• Java related technologies• Microsoft .NET

• WSO2 is helping us be a “connected enterprise”

MWG WSO2 Product Usage and the MWG API environment

Page 6: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

WSO2 API Manager - Composition

Page 7: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

Three APIM Gateways. Two Primaries, one is a backup without a BAM connection. The F5 has an API health check

nginx: preprocesses static contentLoad balances application servers (APIM 1.5)

API sync: rsync between gateways(not shown)

MySQL DBs withCircular replication (not shown)

F5 load balancer exposed to public internet

APIM Store / Publisher not shown,Not accessible from public internet

Our WSO2 Product Deployment

Page 8: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• Consumer visits a website that is showing ads.• Doubleclick network delivers the ad to the

consumer’s browser. There are multiple ads that can be displayed. Each ad contains a set of keywords relating to the item advertised, and the retailer id.

• Rich media ad determines the consumer’s zip code.• MWG API is called with the zip code, keywords,

retailer id.• The API returned the nearest store and information

on a relevant item for sale. The consumer sees …

An ad is shown: step by step process

Page 9: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

Page 10: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• Geolocation query for a particular retailer.• bounding box by latitude, longitude• Haversine function to sharpen results• Returns a list of stores, ordered by increasing distance.

• Store circulars are queried • keyword search

• Caching: database retrieval results• geolocation query caching• store circular data caching• memcached used

Database loaded via background E-T-L processes

API functionality

Page 11: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• API Manager requires an Authorization header. • The Ad Unit, running Adobe ActionScript, will supply this header only with a

POST command.

• ActionScript also supports client security by demanding a crossdomain.xml file.GET host:port/crossdomain.xml (no context root)

• nginx is used to intercept all the http calls • serves the static crossdomain.xml file• passes all other requests to API Manager. • also used: load balance application server endpoints (needed for APIM 1.5)

Initial Technical Challenges

Page 12: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• Received only a total impression count from marketing. No peak load estimate.

•API Manager / BAM integration vital.

• Essential: Used summarized BAM statistics from the outset.

•Discovered with BAM: Workload was not random, or average. but very “bursty”.

• Bottleneck was our serving infrastructure, not API manager.

• Added a memcached infrastructure on the fly.•essential to boost for application server response time.

Performance challenges

Page 13: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• Uncached API service time is 150 – 200ms.• Object caching brings to 22ms average service time.• Cache hit ratio: 85 – 90%.• Record (with fast average service time): 376

responses per second at 5ms average service time.• Peak responses per second: 402 responses /second

(our throttle).

Performance highlights

Page 14: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• A number of traffic bursts: 100 to 400 responses / second.

• Traffic slows in the overnight.• Traffic peaks in late afternoon, evening.• Hourly, traffic slows 25 minutes after the hour. It

can increase 50% at 55 minutes after the hour.• Assume: ad network serving hourly adjustments or TV commercials.

• Overall mean: 4.5 responses per second.• 90th percentile: 21 responses per second.• Note: performance summarized by minute, based

on the BAM analytics toolbox for API manager.

Performance Highlights, cont’d.

Page 15: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• This plot range: up to 100/sec

Responses per second distribution

Page 16: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• This plot range:100-400 per sec.

• High end bursts• Assume:

Ad network• Few instances.

Responses per second

Page 17: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

Can spike if:• Not enough processing

threads• Cache entries expired.• Many cache misses and

high traffic.• No API Manager

limitation seen.• Note: uncached service is

150ms – 200ms.• With caching design

point, database is not limiting.

Average Service Time

Page 18: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• WSO2 BAM Cassandra storage• Cassandra used as a ‘fast write’ repository for the streams of data

from the API manager gateways.• BAM Hive scripts summarize on a per-minute basis, put summaries in

a relational db for reporting.• Cassandra data does not seem to expire for us, so the Hive scripts

keep resummarizing.• Purging old, already summarized Cassandra data.

• WSO2 Api Manager: Publisher• Provides cool displays of usage right in the publisher from the

summarized statistics.• Publisher had trouble handling the data once we had a lot of data.

We turned off the display inside Publisher.

Issues Encountered

Page 19: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• Key Features• API Design Wizard

• Support for OAuth2 Scopes

• Statistics Dashboard for developers

• Multi tenant workflow support

• Workflow integration for token generation

• URL templating support for API definition

• Customisable Store themes for tenants

• Forum Support - API Store

• Visibility Control for Documentation

• Statistics dashboard for southbound API calls

• Using Windows Authentication for OAuth2 Token generation

API Manager 1.7.0 is coming up...

Page 20: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• The WSO2 API Manager platform is well suited to handle high volume traffic. It was very capable and adaptable.

• Essential: WSO2 Business Activity Monitor, using the WSO2 provided API Manager BAM Analytics toolbox,allowed us to

•Understand our traffic patterns•Tune our server infrastructure•Produce metrics for reporting

Conclusion

Page 21: Using WSO2 API Manager to deliver dynamic display advertising

March 2014

• Thanks for listening.• Thanks: Ad unit graphic development: Kurrent

Interactive: http://www.kurrent.com/• Thanks: WSO2 for a flexible configurable product

set, based on open source standards.

Thanks!