//Building scalable web sites with tight game integration Johan Mjönes & Joakim Bodin.

Slides:



Advertisements
Similar presentations
Svetlin Nakov Director Training and Consulting Activities National Academy for Software Development (NASD) ASP.NET 3.5 New Features.
Advertisements

AJAX Development By Gary Mandela December 26,
12 October 2011 Andrew Brown IMu Technology EMu Global Users Group 12 October 2011 IMu Technology.
Websydian Anne-Marie Arnvig Manager, Websydian Communications & Relations.
Inner Architecture of a Social Networking System Petr Kunc, Jaroslav Škrabálek, Tomáš Pitner.
Facts about Welcome to this video from Ozeki. In this video I will present what makes Ozeki Phone System XE the Worlds best on-site software PBX for Windows.
Websydian products.
The Holmes Platform and Applications Irisel Consulting Madrid, 2008.
New Release Announcements and Product Roadmap Chris DiPierro, Director of Software Development April 9-11, 2014
© Copyright 2012 STI INNSBRUCK Apache Lucene Ioan Toma based on slides from Aaron Bannert
1 CGICGI Common Gateway Interface Server-side Programming Lecture.
Web Applications Development Using Coldbox Platform Eddie Johnston.
Ellucian Mobile: Don’t text and drive, kids!
ASP.Net, web services--- asynchronous and synchronous and AJAX By Thakur Rashmi Singh.
© 2009 Research In Motion Limited Methods of application development for mobile devices.
VCT May 20, 2009 Sapna Blesson Advisor: Dr.Christopher Pollett.
Cloud Computing Lecture #7 Introduction to Ajax Jimmy Lin The iSchool University of Maryland Wednesday, October 15, 2008 This work is licensed under a.
LHCbPR V2 Sasha Mazurov, Amine Ben Hammou, Ben Couturier 5th LHCb Computing Workshop
Charlie Crocker Vice President Farallon Geographics, Inc. An Overview of Internet Mapping Technology.
Part or all of this lesson was adapted from the University of Washington’s “Web Design & Development I” Course materials.
© 2006 by IBM 1 How to use Eclipse to Build Rich Internet Applications With PHP and AJAX Phil Berkland IBM Software Group Emerging.
Client/Server Architectures
CAEL 5012 Rich Internet Applications. What you need For this part of the course you will need access to a server with PHP and MYSQL which will be supplied.
Lightning Talk Fred Rodriguez Nguyen Do CPSC 473 May 6, 2012.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
AJAX Chat Analysis and Design Rui Zhao CS SPG UCCS.
May 16 – 18, 2007 Copyright 2007, Data Access Worldwide May 16 – 18, 2007 Copyright 2007, Data Access Worldwide Build Great Web Application 'Fast and Easy'
GIS technologies and Web Mapping Services
WEB-ENHANCED INFORMATION MANAGEMENT (COMS E6125) SPRING 2008 (CVN) NAVID AZIMI (NA2258) Web Platforms, or: How I Learned To Stop Worrying And Love Facebook.
M i SMob i S Mob i Store - Mobile i nternet File Storage Platform Chetna Kaur.
Wyatt Pearsall November  HyperText Transfer Protocol.
INFO 344 Web Tools And Development CK Wang University of Washington Spring 2014.
Meet with the AppEngine Márk Gergely eu.edge. What is AppEngine? It’s a tool, that lets you run your web applications on Google's infrastructure. –Google's.
Cross Site Integration “mashups” cross site scripting.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Introducing ASP.NET 2.0. Internet Technologies WWW Architecture Web Server Client Server Request Response Network HTTP TCP/IP PC/Mac/Unix + Browser (IE,
Building Rich Web Applications with Ajax Linda Dailey Paulson IEEE – Computer, October 05 (Vol.38, No.10) Presented by Jingming Zhang.
.  A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate.  Taken advantage of Spring’s multi layer injection.
Department of Computer Science Internet Performance Measurements using Firefox Extensions Scot L. DeDeo Professor Craig Wills.
Team S07. Agenda Scope of project Global use case diagram Analysis use cases High Level design (Software Architecture) Prototype challenges faced and.
HTML5 AND THE FUTURE JAVASCRIPT PLATFORM Marcelo Lopez Ruiz Senior Software Design Engineer Microsoft Corporation.
Facebook API Kelly Orser. Client Libraries Client libraries will simplify the calls to the platform by reducing the amount of code you have to write.
REAL WORLD AJAX MARCH TIBCO USER CONFERENCE / 2004 Enterprise Rich Internet Applications with AJAX Real World Case Studies with TIBCO General Interface™
Web Development Process The Site Development Process Site Construction is one of the last steps.
Strictly Business Using “StrictlyFused” to Create an Extensible Knowledge Portal.
Web Technologies Lecture 8 Server side web. Client Side vs. Server Side Web Client-side code executes on the end-user's computer, usually within a web.
ICM – API Server Gary Ratcliffe. 2 Agenda Webinar Programme API Server Overview JSON-RPC iCM API Service API Server and Forms New services under.
Presentation.
ESG-CET Meeting, Boulder, CO, April 2008 Gateway Implementation 4/30/2008.
Node.Js 1. 2 Contents About Node.Js Web requirement latest trends Introduction Simple web server creation in Node.Js Dynamic Web pages Dynamic web page.
What is Firefly (1) A web UI framework for web applications
Live Mobile and Cloud Hacking by ACEs OGh | Fusion Middleware Experience (FME) 16-feb :45 – 16:45.
Open Map Yamama Dagash & Haitham Khateeb under the supervision of: Benny Daon & Eyal Levin Open Map.
1/7/2016www.infocampus.co.in1. 1/7/2016www.infocampus.co.in2 Web Development training gives you and all-round training in both the design and the development.
/16 Final Project Report By Facializer Team Final Project Report Eagle, Leo, Bessie, Five, Evan Dan, Kyle, Ben, Caleb.
INTRODUCING HYBRID APP KAU with MICT PARK IT COMPANIES Supported by KOICA
Introduction to Node.js® Jitendra Kumar Patel Saturday, January 31, 2015.
IF STARBUCKS USED INSTART LOGIC, THEY WOULD HAVE A FASTER RESPONSIVE WEBSITE BY PETER BLUM.
Ur/Web: A Simple Model for Programming the Web
The Holmes Platform and Applications
Web API - Introduction AJAX, Spring Data REST SoftUni Team Web API
The Share Widget Library
Physics validation database
Open Source distributed document DB for an enterprise
Platform as a Service.
AJAX.
PHP / MySQL Introduction
Prepared for Md. Zakir Hossain Lecturer, CSE, DUET Prepared by Miton Chandra Datta
Back end Development CS Programming Languages for Web Applications
Back end Development CS Programming Languages for Web Applications
Presentation transcript:

//Building scalable web sites with tight game integration Johan Mjönes & Joakim Bodin

What is battlelog? Battlefield 10 year anniversary soon Battlelog becoming the community hangout Integrate game launching for PC players

Features Friend-centric Easy communication Current stats and history Activity log PC Menu News / Forums

ESN PLANET

ESN PLANET OVERVIEW

Languages Developing Battlelog means developing in Python, Java, C++ The Battlelog Web is written primarily using Python Plugin, game components in C++ Python allows for rapid web development (e.g. remote access console)

Horizontal (sharding) Battlelog User DBs (slices and shards)... Vertical Battlelog UserLab Feature Different processes Partitioning

Persistence & Index MySQL No joins Used as indexed KVS Apache Solr Full text search for forums Other uses in the future Fast!

Server to client push Uses ESN Beaconpush Allows delivery of messages from web server to client browser. Uses long polling or websockets (or flash) AV / anti-malware software + push = Blocks all websockets Injects Javascript into the DOM Etc...

Caching with Memcached Great framework support Service methods cached via annotations Invalidation using method signature instead of key Allows populating cache directly after modification Dog pile prevention

EA Services Nucleus Users No user info in Battlelog DB! Success! Personas Soldiers Entitlements Licenses Blaze Game Servers reports to Blaze Events to Battlelog Game Server information Asynchronous responses (e.g. matchmaking) REST Stats

Nucleus Details Nucleus Accounts Entitlements Web Backend Web Soldiers Licenses HTTP

Blaze Details Uses Web Access Layer (WAL) WAL client generated from TDF TDF is a API definition language Blaze events (XML over HTTP) Blaze DB Web BackendWeb Frontend Blaze Game Servers WAL Real-time Events Thrift Events AJAX Web Browser

Friends Started out normalized Unmanagable amount of rows Ended up as one blob per user Packed user ids A lot easier to cache properly

Server Browser Custom search server (Java) Custom query language, minimal message overhead Fast update, fast search

Joining a game

Joining a game: plugin details Web Browser Game Client Plugin Game UI JS Pipe

Battle Reports Game report from Blaze (HTTP XML event) Parse and divide per player One report per player via internal message queue Look for unlocks, rankups, medals, awards etc Add to feed, send real time updates Invalidate player stats caches Compile Battlereport (& pre-cache it) Send notification to involved (logged in) users

Background Load tested using Locust Open Source (MIT License) Built by ESN (& others) Battlelog tested with 2.7 million PSU with 36 million players Thats 40,000 requests per second The tests was successful

Pre-pass Planet dev bar Timing Queries No point in load testing if there are apparent issues with a single user

Realistic load testing Some testing tools simply hammer certain URLs Locust allows for realistic usage scenarios Many players go away for 20 minutes while playing, receiving notifications Updated tests using actual usage data from alpha trial / open beta Coordinated testing Same user spans Overpopulate tables to simulate fragmented MySQL indices

What did we find? Bugs Bottlenecks Never assume where your bottlenecks are Test to find out Network related Saturated network, not CPU Keep the traffic within the rack! Software related Best practices be damned, cheat if neccessary Lazy loading data in controllers Client side rendering Surface + History API + JSON =

Being a part of the pipeline Data driven games Battlelog has its own pipeline Written in Python Imports data from the game pipeline Weapons, vehicles, levels, dog tags, etc Assets include images, text, data Resolving unlocks and dependencies Generates python structs and javascript structs Generates many helper maps. Some might only be used once. DLC friendly! Result of many iterations

User Interface Separate UI from consoles / in game menu Having the same wouldnt make sense, different UX Adapt to different devices Web features Easily accessible, e.g. Sharing Extendability with browser extensions, user styles etc Access on any platform (play on console, have Battlelog on iPad) Easy to iterate over UI changes

Battlelog will evolve Agile: Easy to update Big things: DLC Public APIs Other things we cant talk about Small things Improvements based on community feedback

Johan Joakim The Battlelog team is hiring! Technical Director Development Director Backend Frontend