SlideShare a Scribd company logo
1 of 35
Download to read offline
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
A Web Widget Platform
Enrique Paz
Senior Backend Developer
13/06/2013
1/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
About Me
• Passionate Erlang developer
• Testing enthusiast
• Love beautiful code!
2/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Spilgames
• Gaming Platform
• Serving data to 190+ countries world-wide
• 180+ million unique users per month
• Multiple Platforms: Desktop, Mobile Native & Web
• 300+ employees
• Offices in The Netherlands & China
• Revenue: Advertising & EUM
3/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Old Portals Landscape
4/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Brands and Sites
• 5 Brands/Channels for target audiences
• 1-15 Sites for different geographical regions
• Strong domains
www.spel.se for teens in Sweden
www.ojogos.pt for families in Portugal and Brazil
. . .
5/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Gaming Portals
6/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Architectural Overview
• Monolithic portals per
brand
• Static pages with lots of
AJAX calls
• Architectural layers
developed independently
7/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
The Good
• Ability to develop per brand and site
• Acceptable performance
• Clear layer separation
• Fast growth
8/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
The Bad
• Inability to share features between brand codebases
• Aggressive multi-level caching needed to perform decently
• Lots of logic on the client
• Developers can’t switch brands easily
• Long time to market
9/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Wish List
10/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Isolation & Performance
• Isolated requests, features and crashes
• Feature toggling on runtime
• Decent number of requests/s with linear
scalability
• Technology aligned application and storage
layers
11/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Increase Development Speed
• Only one modular codebase
• Small features, easy to deploy and rollback
• Changes testable in isolation
12/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
What’s out there
• MVC Frameworks (Chicago Boss, Zotonic. . . )
(+) Nice layer separation
(+) Mature solutions
(+) Easy to use
13/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
What’s out there
• MVC Frameworks (Chicago Boss, Zotonic. . . )
(+) Nice layer separation
(+) Mature solutions
(+) Easy to use
• But. . .
(-) Feature isolation not key in their design
(-) A VC framework fits better (abstracted model)
13/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
A Widget Platform
14/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
A Widget Platform
15/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Widgets
• Isolated
• Independent Erlang
applications
• Use ErlyDTL for the view
• Specification in the .app.src
• Can only use what they
specify
16/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Widgets: declaring everything
• Children
• Public properties
• Private properties
• Themes
• JS decoration
• CSS decoration
{ env , [
{ children , [ wdg_game_list_breadcrumb ] } ,
{ interface , [
{ page , "1" } ,
{ pageSize , " 20 " }
] } ,
{ private_interface , [
{ template , wdg_game_list } ,
{ css , [ " wdg_game_list " ] } ,
{ js , [ " i n i t . j s " ] } ,
{games , [ ] } ,
{ pagination_bar , [ ] }
] } ,
{ themes , [
{ " teens " , [
{ template , wdg_game_list_teens } ,
{ css , [ " teens / wdg_game_list_teens " ] } ,
{ js , [ " teens / i n i t . j s " ] }
] }
] } ,
{ js_modules , [ ] } ,
{ js_event_config , [
{ l i s t e n , [ ’ system . user . search . request ’ ] } ,
{ emit , [ ] }
] }
] }
17/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Widget Libraries
• Widget type definitions
• Widget behaviour
• Wrappers for common actions
• Connection to the application
layer
• ErlyDTL custom tags
18/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Widget Platform
• Widget dependencies
• Path to widget mapping
• Erlang web server
• Request Flow
• Global error pages
19/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
NGINX Virtual Host declaration
• Domain mapping
• Widget static files
• Static error pages
• URL rewriting
20/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Request Flow
21/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Sets Of Widgets In One Platform
• Allows the cration of small deltas
• Different prearranged sets can be requested
• Different sets can be built per request
22/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Master & Slaves In 1 VM
• The platform master node runs:
A web server
A management interface
A specific set of widgets
23/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Master & Slaves In 1 VM
• The platform master node runs:
A web server
A management interface
A specific set of widgets
• Each slave node runs:
Its own specific set of widgets
23/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
wdg1/?origins=w1,preview;w5,preview
• Widgets can be called in any
node
• Widgets can fail
• Widgets can be disabled
24/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Managing Widgets
25/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
The Need For A Widget Manager
• To manage widgets and versions in the platform nodes
• To keep the clustered platforms in sync
• To make changes in the cluster in an easy way
26/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
How does it work
• SWIFT as a central widget
repository
• HTTP interface with simple
GUI
• Uses the platform
management interface:
List nodes
List widgets in a node
Enable/disable widget in a
node
Change widget version in a
node
• Enforces configuration to new
cluster members
27/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
What’s in the Future?
28/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Lessons Learned
• Reinforce the concepts adoption often
• Review, review, review
• Measure performance from early
stages
29/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Coming in H2
• Native widget to backend connectivity
• Per widget render timeout
• In req caching of the BE calls
• Performance analysis and improvements
• Router to be open sourced
30/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
What We’ve Used
• ErlyDTL
• Cowboy
• Lager
• Rebar
(*) semantic versioning, i.e. [">=1.3.1", "<2.0.0"]
(*) shared dependencies
(*) xref fixes
• Lhttpc
• Estatsd
31/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
Questions?
32/33
Introduction
Spilgames & Me
Old Portals
Landscape
Overview
Evaluation
Wish List
Tech Wishes
Taskforce Wishes
Available
Frameworks
A Widget
Platform
Components
The Flow
Testing &
Deploying
Managing
Widgets
Holding Control
Next Steps
Summary
Contributions
See You Around!
Thanks!
33/33

More Related Content

Similar to A Web Widget Platform

Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...Theo Jungeblut
 
Node.js BFFs - our way to the better/micro frontends
Node.js BFFs - our way to the better/micro frontendsNode.js BFFs - our way to the better/micro frontends
Node.js BFFs - our way to the better/micro frontendsEugene Fidelin
 
2016 Federal User Group Conference - TeamForge Capabilities and Directions
2016 Federal User Group Conference - TeamForge Capabilities and Directions2016 Federal User Group Conference - TeamForge Capabilities and Directions
2016 Federal User Group Conference - TeamForge Capabilities and DirectionsCollabNet
 
Zibrasoft | Software QA Testing Company Inida
Zibrasoft | Software QA Testing Company InidaZibrasoft | Software QA Testing Company Inida
Zibrasoft | Software QA Testing Company InidaZibraSoft Technologies
 
Sitecore upgrade best practices
Sitecore upgrade best practicesSitecore upgrade best practices
Sitecore upgrade best practicesedynamic
 
Architecture Enforcement Aspects Itarc2009
Architecture Enforcement Aspects Itarc2009Architecture Enforcement Aspects Itarc2009
Architecture Enforcement Aspects Itarc2009Srini Penchikala
 
Architecture Enforcement Aspects Itarc2009
Architecture Enforcement Aspects Itarc2009Architecture Enforcement Aspects Itarc2009
Architecture Enforcement Aspects Itarc2009guest2b8cd
 
Continuous Performance Testing and Monitoring in Agile Development
Continuous Performance Testing and Monitoring in Agile DevelopmentContinuous Performance Testing and Monitoring in Agile Development
Continuous Performance Testing and Monitoring in Agile DevelopmentDynatrace
 
Kubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemKubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemTomoya Fujita
 
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...Lucas Jellema
 
Accelerating Time To Market with Sitecore & Helix
Accelerating Time To Market with Sitecore & HelixAccelerating Time To Market with Sitecore & Helix
Accelerating Time To Market with Sitecore & HelixVarunNehra
 
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...Agile Testing Alliance
 
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...Jean Vanderdonckt
 
college website project report
college website project reportcollege website project report
college website project reportMahendra Choudhary
 
Micro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JETMicro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JETVijay Nair
 
APEX Office Hours Interactive Grid Deep Dive
APEX Office Hours Interactive Grid Deep DiveAPEX Office Hours Interactive Grid Deep Dive
APEX Office Hours Interactive Grid Deep DiveJohnSnyders
 

Similar to A Web Widget Platform (20)

Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
 
AngularJS Basics
AngularJS BasicsAngularJS Basics
AngularJS Basics
 
Node.js BFFs - our way to the better/micro frontends
Node.js BFFs - our way to the better/micro frontendsNode.js BFFs - our way to the better/micro frontends
Node.js BFFs - our way to the better/micro frontends
 
Ionic vancouver 201604
Ionic vancouver 201604Ionic vancouver 201604
Ionic vancouver 201604
 
2016 Federal User Group Conference - TeamForge Capabilities and Directions
2016 Federal User Group Conference - TeamForge Capabilities and Directions2016 Federal User Group Conference - TeamForge Capabilities and Directions
2016 Federal User Group Conference - TeamForge Capabilities and Directions
 
Zibrasoft | Software QA Testing Company Inida
Zibrasoft | Software QA Testing Company InidaZibrasoft | Software QA Testing Company Inida
Zibrasoft | Software QA Testing Company Inida
 
Sitecore upgrade best practices
Sitecore upgrade best practicesSitecore upgrade best practices
Sitecore upgrade best practices
 
Architecture Enforcement Aspects Itarc2009
Architecture Enforcement Aspects Itarc2009Architecture Enforcement Aspects Itarc2009
Architecture Enforcement Aspects Itarc2009
 
Architecture Enforcement Aspects Itarc2009
Architecture Enforcement Aspects Itarc2009Architecture Enforcement Aspects Itarc2009
Architecture Enforcement Aspects Itarc2009
 
Continuous Performance Testing and Monitoring in Agile Development
Continuous Performance Testing and Monitoring in Agile DevelopmentContinuous Performance Testing and Monitoring in Agile Development
Continuous Performance Testing and Monitoring in Agile Development
 
Kubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemKubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster System
 
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
 
Accelerating Time To Market with Sitecore & Helix
Accelerating Time To Market with Sitecore & HelixAccelerating Time To Market with Sitecore & Helix
Accelerating Time To Market with Sitecore & Helix
 
GenericFrame Technology
GenericFrame TechnologyGenericFrame Technology
GenericFrame Technology
 
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
 
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
 
college website project report
college website project reportcollege website project report
college website project report
 
Profile summary
Profile summaryProfile summary
Profile summary
 
Micro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JETMicro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JET
 
APEX Office Hours Interactive Grid Deep Dive
APEX Office Hours Interactive Grid Deep DiveAPEX Office Hours Interactive Grid Deep Dive
APEX Office Hours Interactive Grid Deep Dive
 

Recently uploaded

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Recently uploaded (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

A Web Widget Platform

  • 1. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions A Web Widget Platform Enrique Paz Senior Backend Developer 13/06/2013 1/33
  • 2. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions About Me • Passionate Erlang developer • Testing enthusiast • Love beautiful code! 2/33
  • 3. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Spilgames • Gaming Platform • Serving data to 190+ countries world-wide • 180+ million unique users per month • Multiple Platforms: Desktop, Mobile Native & Web • 300+ employees • Offices in The Netherlands & China • Revenue: Advertising & EUM 3/33
  • 4. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Old Portals Landscape 4/33
  • 5. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Brands and Sites • 5 Brands/Channels for target audiences • 1-15 Sites for different geographical regions • Strong domains www.spel.se for teens in Sweden www.ojogos.pt for families in Portugal and Brazil . . . 5/33
  • 6. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Gaming Portals 6/33
  • 7. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Architectural Overview • Monolithic portals per brand • Static pages with lots of AJAX calls • Architectural layers developed independently 7/33
  • 8. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions The Good • Ability to develop per brand and site • Acceptable performance • Clear layer separation • Fast growth 8/33
  • 9. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions The Bad • Inability to share features between brand codebases • Aggressive multi-level caching needed to perform decently • Lots of logic on the client • Developers can’t switch brands easily • Long time to market 9/33
  • 10. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Wish List 10/33
  • 11. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Isolation & Performance • Isolated requests, features and crashes • Feature toggling on runtime • Decent number of requests/s with linear scalability • Technology aligned application and storage layers 11/33
  • 12. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Increase Development Speed • Only one modular codebase • Small features, easy to deploy and rollback • Changes testable in isolation 12/33
  • 13. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions What’s out there • MVC Frameworks (Chicago Boss, Zotonic. . . ) (+) Nice layer separation (+) Mature solutions (+) Easy to use 13/33
  • 14. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions What’s out there • MVC Frameworks (Chicago Boss, Zotonic. . . ) (+) Nice layer separation (+) Mature solutions (+) Easy to use • But. . . (-) Feature isolation not key in their design (-) A VC framework fits better (abstracted model) 13/33
  • 15. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions A Widget Platform 14/33
  • 16. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions A Widget Platform 15/33
  • 17. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Widgets • Isolated • Independent Erlang applications • Use ErlyDTL for the view • Specification in the .app.src • Can only use what they specify 16/33
  • 18. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Widgets: declaring everything • Children • Public properties • Private properties • Themes • JS decoration • CSS decoration { env , [ { children , [ wdg_game_list_breadcrumb ] } , { interface , [ { page , "1" } , { pageSize , " 20 " } ] } , { private_interface , [ { template , wdg_game_list } , { css , [ " wdg_game_list " ] } , { js , [ " i n i t . j s " ] } , {games , [ ] } , { pagination_bar , [ ] } ] } , { themes , [ { " teens " , [ { template , wdg_game_list_teens } , { css , [ " teens / wdg_game_list_teens " ] } , { js , [ " teens / i n i t . j s " ] } ] } ] } , { js_modules , [ ] } , { js_event_config , [ { l i s t e n , [ ’ system . user . search . request ’ ] } , { emit , [ ] } ] } ] } 17/33
  • 19. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Widget Libraries • Widget type definitions • Widget behaviour • Wrappers for common actions • Connection to the application layer • ErlyDTL custom tags 18/33
  • 20. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Widget Platform • Widget dependencies • Path to widget mapping • Erlang web server • Request Flow • Global error pages 19/33
  • 21. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions NGINX Virtual Host declaration • Domain mapping • Widget static files • Static error pages • URL rewriting 20/33
  • 22. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Request Flow 21/33
  • 23. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Sets Of Widgets In One Platform • Allows the cration of small deltas • Different prearranged sets can be requested • Different sets can be built per request 22/33
  • 24. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Master & Slaves In 1 VM • The platform master node runs: A web server A management interface A specific set of widgets 23/33
  • 25. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Master & Slaves In 1 VM • The platform master node runs: A web server A management interface A specific set of widgets • Each slave node runs: Its own specific set of widgets 23/33
  • 26. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions wdg1/?origins=w1,preview;w5,preview • Widgets can be called in any node • Widgets can fail • Widgets can be disabled 24/33
  • 27. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Managing Widgets 25/33
  • 28. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions The Need For A Widget Manager • To manage widgets and versions in the platform nodes • To keep the clustered platforms in sync • To make changes in the cluster in an easy way 26/33
  • 29. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions How does it work • SWIFT as a central widget repository • HTTP interface with simple GUI • Uses the platform management interface: List nodes List widgets in a node Enable/disable widget in a node Change widget version in a node • Enforces configuration to new cluster members 27/33
  • 30. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions What’s in the Future? 28/33
  • 31. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Lessons Learned • Reinforce the concepts adoption often • Review, review, review • Measure performance from early stages 29/33
  • 32. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Coming in H2 • Native widget to backend connectivity • Per widget render timeout • In req caching of the BE calls • Performance analysis and improvements • Router to be open sourced 30/33
  • 33. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions What We’ve Used • ErlyDTL • Cowboy • Lager • Rebar (*) semantic versioning, i.e. [">=1.3.1", "<2.0.0"] (*) shared dependencies (*) xref fixes • Lhttpc • Estatsd 31/33
  • 34. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions Questions? 32/33
  • 35. Introduction Spilgames & Me Old Portals Landscape Overview Evaluation Wish List Tech Wishes Taskforce Wishes Available Frameworks A Widget Platform Components The Flow Testing & Deploying Managing Widgets Holding Control Next Steps Summary Contributions See You Around! Thanks! 33/33