Meet & Greet trip to Zurich, for you and

homelybrrrInternet and Web Development

Dec 4, 2013 (3 years and 9 months ago)

95 views

Predict the FIFA
FIFPro

World XI and win a
Meet & Greet trip to Zurich, for you and
10 of your friends.


A Facebook campaign with great
potential on going viral


We
´
ll go under
the hood on this solution architecture
and talk about the benefits and some of
the challenges using Windows Azure.

FIFA
FIFPro

World XI

Facebook Champaign


Carlos Sardo

Senior Professional
Developer

Tam
Tam

www.tamtam.nl

@
TamTamNL

carlos.sardo@tamtam.nl

http://nl.linkedin.com/in/carlossardo

Who are we?

Full
-
service Internet Company

Headquarters in Delft, Utrecht and Amsterdam

http://www.tamtam.nl

Specialized in the development of widgets for
the Web, Desktop, Mobile and TV.

Headquarters in Amsterdam

http://www.thewidgetcompany.com

Who is
FIFPro
?

International Federation of Professional Footballers
,
usually known by the abbreviation
FIFPro
, is a
worldwide representative organization for
professional football player.

Compared to:

http://www.vvcs.nl

The Facebook Campaign

The Facebook Campaign


Promote the FIFA
FIFPro

World XI election to the general public
as main purpose


Because: Everyone knows the Golden
B
all (3x
Messi
), no one
knows the FIFA
FIFPro

World XI


Prizes:


1
st

Meet & Greet trip to the FIFA gala
,
for you and



10 of your friends, in
Zurich


Ja湵慲礠
9
th


2
nd

11 Signed shirts


3
rd

Signed
footbals



The Facebook Campaign

The Facebook Campaign

The Facebook Campaign

The Facebook Campaign

The Facebook Campaign

The Overall Goals


Scalable


Instant Global Availability


Survive the
Messi

Facebook Post!!

The Scenario

Unpredictable Bursting

?

?

Platform Choice


Why Azure?


Very experienced with Microsoft Solutions


Previous knowledge about WA


Platform as a Service, focus on the App!


CDN is requirement


Near
-
instant scaling



Google App Engine?


CDN was unknown to us


No
.net



Amazon Simple E
-
mail Service


High level stuff you already know

Web Roles

Worker Roles

Table Storage

Blob Storage

SQL Azure

Web Services

Web Roles

LOTS of
users

Architecture

Principals



Separte Frontend from backend services


HMTL/CSS/JS strict Frontend + WCF JSON Web Services


Delivery all static items (including Frontend WebApp) via CDN

Web Services

Table Storage

Azure Queues

Worker Processors

Architecture

Principals



Async whatever can be asynched: queuing mechanism for photoprocessing


Ensure High
-
Availability with AppFabric, pre
-
computing as much data as
possible

Web Roles

Architecture

Principals



Security: HTTPS (Frontend and Backend)


Facebook authentication (Token)


Validate user with AppSecret + FacebookSignedRequest


If valid, user redirected to CDN Index.html, wiht some QS Parameters

Table Storage

Architecture

Tuning and Optimization



Table Storage Partitioning: very important!


Save Methods with retry policies


Optimized Storage Service Endpoints:


UseNagleAlgorithm = false;


Expect100Continue = false;

Table Storage

Architecture

Monitoring & Logging



Windows Azure Diagnostics (separate storage account)


Custom Error/Exception Logging, in the Backend

Architecture

Autoscalling considerations



Paraleap Azure Watch


Enterprise Library Integration pack for Windows Azure:


Windows Azure Autoscaling block (WASABi)

Architecture

How did it look?

MVC3 Web Role

MVC3 Web Role

MVC3 Web Role

Azure

Queue

Table Storage

LOTS
of users

JSON Web Service

JSON Web Service

JSON Web Service

JSON Web Service

2
nd
) Redirect to

CDN index.html

3
rd

) CDN serves

HTML/CSS/JS to the clients

4
th

) Invoke/Consume

JSON WCF Web Service

Initial Instance Count, Go Live!

MVC3
WebRole
: 4x Small


JSON WCF WS
WebRole
: 10x Medium (20
cores)


WorkerRole
: 4x Medium (8 cores)

Performance

JSON Web Services

JMeter

33 requests per core per second

1.980 requests per core per
minute


20 cores = 660 requests/sec

20 cores = 39.600 requests/min

Outcome

Outcome


Over 18.000 FB Likes, 1
-
month
Campaign!


Over 15.000 Participants


Over 8.000 Team Predictions


But, No Winners!


“Football Celebrities” FB Posts

“Football Celebrities” FB Posts

“Football Celebrities” FB Posts

“Football
Celebreties
” FB Posts

No viral effect, why?

1.
No “real celebrity” FB Post: i.e. CR7 has over 38
million followers (Factor 10, compared do D. Villa)

2.
Organization by
FIFPro
… not so good…

3.
No viral effect: main viral driver, photo tagging, was
cut
-
off by Facebook, due to spam
-
complaints

4.
No ad
-
campaign kick
-
off for the FB campaign

Sebastián

Yalle

Vásquez
, 13 year
-
old
Schoolboy from Lima, Peru

“The Lucky Looser”

Lessons learned and Conclusions


Microsoft Tech Support:


CDN Endpoint issues


Azure Subscription boos maximum core count to 100


Extra Small instances are not viable for this production scenario:


1 shared compute core


Be careful: Don’t let your credit card be the bottleneck.


Ensure that your 3
rd

party services can keep up! (Amazon SES)


Performing counts and aggregations on Table Storage are tricky
and can be “painful”


Azure is Great for Campaigns! Never slept better, knowing we
would survive the
Messi

FB post, if it would come.

Credits & Special Thanks


Tam
Tam
: Bart M., Carlos S., Jasper
v.d
. S., Ruben V., Ronald S.,
Dimi

A., Max P.,
Marit

H.


TWC:
Asit

v.d
. H., Michel
K.,
Dione

v. D.





Microsoft NL: Dennis Mulder


Amazon FR:
Matthieu

Bienvenu

Thanks!







www.tamtam.nl

@
TamTamNL

carlos.sardo@tamtam.nl

Want to
know more
about
FIFPro

World XI?
Mail me.

Any Qs?
Get us on
Twitter

http://nl.linkedin.com/in/carlossardo

All artwork on this slide deck created by
Josh
Twist
. If you steal it please provide credit and a
link to
http://www.thejoyofcode.com/cloud_artwork.
aspx


Thanks!