SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
A Web Widget Platform
Enrique Paz @quiquepaz

1/30
Introduction

Meeting Me

• Software Architect
• Passionate Erlang developer
• Testing enthusiast
• Love beautiful code!

2/30
Introduction

Meeting Spilgames

• Gaming Platform
• Serving data to 190+ countries world-wide
• 180+ million unique users per month

3/30
Introduction

Brands and Sites

• 5 Brands/Channels for target audiences
• 1-15 Sites for different geographical regions
• Strong domains
www.agame.com for teens in the US
www.games.co.uk for families in the UK
www.juegosdechicas.com for girls in Spain
...

4/30
Introduction

Brands and Sites

5/30
Old Portals Landscape

6/30
Old Portals Landscape

• Monolithic portals per brand
• Static pages with lots of AJAX
calls
• Architectural layers developed
independently

7/30
Old Portals Landscape

What Was Good. . .

• Acceptable performance
• Clear layer separation
• Fast growth
• Per brand & site development
• Small learning curve

8/30
Old Portals Landscape

What Was Good. . .

9/30
Old Portals Landscape

. . . And What Wasn’t

• Extensive frontend caching
• No global features
• Lots of logic on the client
• Long time to global market
• Redundant code
• Tiny changes, massive impact

10/30
Wish List

11/30
Wish List

Architectural Wishes

• Isolated requests, features and crashes
• Feature toggling on runtime
• Linear scalability with supermarket hardware

12/30
Wish List

Architectural Wishes

• Isolated requests, features and crashes
• Feature toggling on runtime
• Linear scalability with supermarket hardware

12/30
Wish List

Development Wishes

• One modular codebase
• Explicit component specifications
• Small features, easy to deploy and rollback

13/30
Wish List

Erlang Based Web Platforms?

• Chicago Boss, Zotonic. . .
(+) Nice layer separation
(+) Mature solutions
(+) Easy to use

14/30
Wish List

Erlang Based Web Platforms?

• 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)

14/30
A Widget Platform

Let’s Create Our Own Solution!

15/30
A Widget Platform

Pages Made Out Of Widgets

16/30
A Widget Platform

Pages Made Out Of Widgets

• Path determines an entry widget
• Widgets and their children form a
tree
• Tree generates fully working
HTML
• Page generation time guaranteed!
(timeouts)

17/30
A Widget Platform

What’s A Widget?

• Isolated
• Explicitly specified
• Releasable separately

18/30
A Widget Platform

In Practice

• Feature focused development not brand
• One widget to serve all brands

19/30
A Widget Platform

In Practice

{ themes , [
{ " family " , [
{ template , wdg_featured_games_compact } ,
{ num_games , 3 } ,
{ css , [ " f a m i l y / wdg_featured_games " ] }
]},

• Minimal to no impact on other
features

{ { " f a m i y " , 88 } , [
{ num_games , 5 }
]},

• Configurable per site and brand

{ "women" , [
{ template , wdg_featured_games } ,
{ num_games , 6 } ,
{ css , [ "women / wdg_featured_games " ] }
]}
]}

20/30
Managing Widgets

21/30
Managing Widgets

Deployments

• 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

22/30
Managing Widgets

A Handy Tool

23/30
Managing Widgets

Master & Slaves In 1 Shell

• The platform master node runs:
A web server
A management interface
A specific set of widgets

24/30
Managing Widgets

Master & Slaves In 1 Shell

• 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

24/30
Managing Widgets

spil.com/?origins=w1,preview;w5,preview

• Widgets can be called in any node
• Widgets can fail
• Widgets can be disabled

25/30
The Future

26/30
The Future

Lessons Learned

• Document by example
• Reinforce the concepts adoption often
• Review, review, review
• Measure performance from early stages

27/30
The Future

Coming Up

• Native widget to backend connectivity
• Performance analysis on CI
• Historical imagediff for widgets
• Device/Browser capabilities available for widgets
• Widgets written in Elixir?

28/30
The Future

What We’ve Used

• ErlyDTL for html templating
• Cowboy as a web server
• Lager for logging
• Rebar for build tool
• Lhttpc as HTTP client
• Estatsd for monitoring
• Sass as a CSS pre-processor

29/30
The Future

Questions?

Leave me feedback! http://spkr8.com/t/28371

30/30

Contenu connexe

Similaire à A Widget Based Web Platform

D7 10 modules-in-20mins v2 copy
D7 10 modules-in-20mins v2 copyD7 10 modules-in-20mins v2 copy
D7 10 modules-in-20mins v2 copy
Acquia
 
AggreGate IoT Integration Platform
AggreGate IoT Integration PlatformAggreGate IoT Integration Platform
AggreGate IoT Integration Platform
Tibbo
 
Reusing JavaScript knowledge in Windows Store apps
Reusing JavaScript knowledge in Windows Store appsReusing JavaScript knowledge in Windows Store apps
Reusing JavaScript knowledge in Windows Store apps
Timmy Kokke
 

Similaire à A Widget Based Web Platform (20)

OpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals companyOpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals company
 
Operational Dashboards with FIWARE WireCloud
Operational Dashboards with FIWARE WireCloudOperational Dashboards with FIWARE WireCloud
Operational Dashboards with FIWARE WireCloud
 
D7 10 modules-in-20mins v2 copy
D7 10 modules-in-20mins v2 copyD7 10 modules-in-20mins v2 copy
D7 10 modules-in-20mins v2 copy
 
Font-End Development Tools
Font-End Development ToolsFont-End Development Tools
Font-End Development Tools
 
Optimizing Access with SQL Server
Optimizing Access with SQL ServerOptimizing Access with SQL Server
Optimizing Access with SQL Server
 
Native Code is Dead AKA Cross Platform Development with Unity3D
Native Code is Dead AKA Cross Platform Development with Unity3DNative Code is Dead AKA Cross Platform Development with Unity3D
Native Code is Dead AKA Cross Platform Development with Unity3D
 
Cincom Roadmap ESUG2014
Cincom Roadmap ESUG2014Cincom Roadmap ESUG2014
Cincom Roadmap ESUG2014
 
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
 
Develop For BlackBerry10
Develop For BlackBerry10 Develop For BlackBerry10
Develop For BlackBerry10
 
Enterprise Griffon
Enterprise GriffonEnterprise Griffon
Enterprise Griffon
 
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the BrowserForge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the Browser
 
AggreGate IoT Integration Platform
AggreGate IoT Integration PlatformAggreGate IoT Integration Platform
AggreGate IoT Integration Platform
 
Introducing Sitecore Habitat - SUGCON EU 2016
Introducing Sitecore Habitat - SUGCON EU 2016Introducing Sitecore Habitat - SUGCON EU 2016
Introducing Sitecore Habitat - SUGCON EU 2016
 
Building APIs with Mule and Spring Boot
Building APIs with Mule and Spring BootBuilding APIs with Mule and Spring Boot
Building APIs with Mule and Spring Boot
 
Elm at large (companies)
Elm at large (companies)Elm at large (companies)
Elm at large (companies)
 
Yaniv Brosh (R&D Director, NeoGames) - Angular: Real Life Experience
Yaniv Brosh (R&D Director, NeoGames) - Angular: Real Life ExperienceYaniv Brosh (R&D Director, NeoGames) - Angular: Real Life Experience
Yaniv Brosh (R&D Director, NeoGames) - Angular: Real Life Experience
 
Reusing JavaScript knowledge in Windows Store apps
Reusing JavaScript knowledge in Windows Store appsReusing JavaScript knowledge in Windows Store apps
Reusing JavaScript knowledge in Windows Store apps
 
XM Cloud Demystified - Adam Seabridge
XM Cloud Demystified - Adam SeabridgeXM Cloud Demystified - Adam Seabridge
XM Cloud Demystified - Adam Seabridge
 
Dojo Grids in XPages
Dojo Grids in XPagesDojo Grids in XPages
Dojo Grids in XPages
 
Cincom Smalltalk Roadmap 2010
Cincom Smalltalk Roadmap 2010Cincom Smalltalk Roadmap 2010
Cincom Smalltalk Roadmap 2010
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

A Widget Based Web Platform

  • 1. A Web Widget Platform Enrique Paz @quiquepaz 1/30
  • 2. Introduction Meeting Me • Software Architect • Passionate Erlang developer • Testing enthusiast • Love beautiful code! 2/30
  • 3. Introduction Meeting Spilgames • Gaming Platform • Serving data to 190+ countries world-wide • 180+ million unique users per month 3/30
  • 4. Introduction Brands and Sites • 5 Brands/Channels for target audiences • 1-15 Sites for different geographical regions • Strong domains www.agame.com for teens in the US www.games.co.uk for families in the UK www.juegosdechicas.com for girls in Spain ... 4/30
  • 7. Old Portals Landscape • Monolithic portals per brand • Static pages with lots of AJAX calls • Architectural layers developed independently 7/30
  • 8. Old Portals Landscape What Was Good. . . • Acceptable performance • Clear layer separation • Fast growth • Per brand & site development • Small learning curve 8/30
  • 9. Old Portals Landscape What Was Good. . . 9/30
  • 10. Old Portals Landscape . . . And What Wasn’t • Extensive frontend caching • No global features • Lots of logic on the client • Long time to global market • Redundant code • Tiny changes, massive impact 10/30
  • 12. Wish List Architectural Wishes • Isolated requests, features and crashes • Feature toggling on runtime • Linear scalability with supermarket hardware 12/30
  • 13. Wish List Architectural Wishes • Isolated requests, features and crashes • Feature toggling on runtime • Linear scalability with supermarket hardware 12/30
  • 14. Wish List Development Wishes • One modular codebase • Explicit component specifications • Small features, easy to deploy and rollback 13/30
  • 15. Wish List Erlang Based Web Platforms? • Chicago Boss, Zotonic. . . (+) Nice layer separation (+) Mature solutions (+) Easy to use 14/30
  • 16. Wish List Erlang Based Web Platforms? • 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) 14/30
  • 17. A Widget Platform Let’s Create Our Own Solution! 15/30
  • 18. A Widget Platform Pages Made Out Of Widgets 16/30
  • 19. A Widget Platform Pages Made Out Of Widgets • Path determines an entry widget • Widgets and their children form a tree • Tree generates fully working HTML • Page generation time guaranteed! (timeouts) 17/30
  • 20. A Widget Platform What’s A Widget? • Isolated • Explicitly specified • Releasable separately 18/30
  • 21. A Widget Platform In Practice • Feature focused development not brand • One widget to serve all brands 19/30
  • 22. A Widget Platform In Practice { themes , [ { " family " , [ { template , wdg_featured_games_compact } , { num_games , 3 } , { css , [ " f a m i l y / wdg_featured_games " ] } ]}, • Minimal to no impact on other features { { " f a m i y " , 88 } , [ { num_games , 5 } ]}, • Configurable per site and brand { "women" , [ { template , wdg_featured_games } , { num_games , 6 } , { css , [ "women / wdg_featured_games " ] } ]} ]} 20/30
  • 24. Managing Widgets Deployments • 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 22/30
  • 26. Managing Widgets Master & Slaves In 1 Shell • The platform master node runs: A web server A management interface A specific set of widgets 24/30
  • 27. Managing Widgets Master & Slaves In 1 Shell • 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 24/30
  • 28. Managing Widgets spil.com/?origins=w1,preview;w5,preview • Widgets can be called in any node • Widgets can fail • Widgets can be disabled 25/30
  • 30. The Future Lessons Learned • Document by example • Reinforce the concepts adoption often • Review, review, review • Measure performance from early stages 27/30
  • 31. The Future Coming Up • Native widget to backend connectivity • Performance analysis on CI • Historical imagediff for widgets • Device/Browser capabilities available for widgets • Widgets written in Elixir? 28/30
  • 32. The Future What We’ve Used • ErlyDTL for html templating • Cowboy as a web server • Lager for logging • Rebar for build tool • Lhttpc as HTTP client • Estatsd for monitoring • Sass as a CSS pre-processor 29/30
  • 33. The Future Questions? Leave me feedback! http://spkr8.com/t/28371 30/30